CqlParser.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Common / EntitySql / CqlParser.cs / 1 / CqlParser.cs

                            //### This file created by BYACC 1.9(/C# extension  0.9) 
//### C# capabilities added 11 Sep 2000
//### static char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";

 

// the current file was generated on 01/26/2008 at 16:59 
 

//#line 2 "CqlGrammar.y" 

/*#define YYDEBUG*/

/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
!!                                                                           !!
!!         ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION       !! 
!!                                                                           !! 
!!                 DO NOT CHANGE THIS FILE (CqlParser.cs) BY HAND!!!!        !!
!!                          YOU HAVE BEEN WARNED !!!!                        !! 
!!                                                                           !!
!!         ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION       !!
!!                                                                           !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ 

 
/*------------------------------------------------------------------------------ 
//
//  
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//
// @owner [....] [....] 
//
//---------------------------------------------------------------------------*/ 
 
using System;
 
/* /////////////////////////////////////////////////////////////////////////////

 This pragma is needed since symbols used for defining precedence are not always
 code generated by yacc 

** ///////////////////////////////////////////////////////////////////////////*/ 
#pragma warning disable 414 

 



//##################################################################### 
// namespace: System.Data.Common.EntitySql
//##################################################################### 
namespace System.Data.Common.EntitySql { 
//#####################################################################
// class: CqlParser 
// does : encapsulates yacc() parser functionality in a C# class
//#####################################################################
internal partial class CqlParser{
 
Boolean yydebug;        //do I want debug output?
static int YYMAJOR = 1; 
static int YYMINOR = 9; 
int yynerrs;            //number of errors so far
int yyerrflag;          //was there an error? 
int yychar;             //the current working character

//########## MESSAGES ##########
//############################################################### 
// method: debug
//############################################################### 
void debug(String msg) 
{
  if (yydebug) 
    Console.WriteLine(msg);
}

//########## STATE STACK ########## 
static int YYSTACKSIZE = 500;  //maximum stack size
int[] statestk; int stateptr;             //state stack 
//############################################################### 
// methods: state stack push,pop,drop,peek
//############################################################### 
void state_push(int state)
{
  if (stateptr>=YYSTACKSIZE-1)         //overflowed?
    yyerror_stackoverflow(); 
  statestk[++stateptr]=state;
} 
int state_pop() 
{
  if (stateptr<0)                    //underflowed? 
    return -1;
  return statestk[stateptr--];
}
void state_drop(int cnt) 
{
int ptr; 
  ptr=stateptr-cnt; 
  if (ptr<0)
    return; 
  stateptr = ptr;
}
int state_peek(int relative)
{ 
int ptr;
  ptr=stateptr-relative; 
  if (ptr<0) 
    return -1;
  return statestk[ptr]; 
}
//###############################################################
// method: init_stacks : allocate and prepare stacks
//############################################################### 
Boolean init_stacks()
{ 
  statestk = new int[YYSTACKSIZE]; 
  stateptr = -1;
  val_init(); 
  return true;
}
//###############################################################
// method: dump_stacks : show n levels of the stacks 
//###############################################################
void dump_stacks(int count) 
{ 
int i;
  Console.WriteLine("=index==state====value=     s:"+stateptr+"  v:"+valptr); 
  for (i=0;i=YYSTACKSIZE)
    return; 
  valstk[++valptr]=val;
}
object val_pop()
{ 
  if (valptr<0)
    return (object)-1; 
  return valstk[valptr--]; 
}
void val_drop(int cnt) 
{
int ptr;
  ptr=valptr-cnt;
  if (ptr<0) 
    return;
  valptr = ptr; 
} 
object val_peek(int relative)
{ 
int ptr;
  ptr=valptr-relative;
  if (ptr<0)
    return (object)-1; 
  return valstk[ptr];
} 
//#### end semantic value section #### 
public static short IDENTIFIER=257;
public static short ESCAPED_IDENTIFIER=258; 
public static short PARAMETER=259;
public static short LITERAL=260;
public static short ALL=261;
public static short AND=262; 
public static short ANYELEMENT=263;
public static short APPLY=264; 
public static short AS=265; 
public static short ASC=266;
public static short BETWEEN=267; 
public static short BY=268;
public static short CASE=269;
public static short CAST=270;
public static short COLLATE=271; 
public static short CROSS=272;
public static short CREATEREF=273; 
public static short DEREF=274; 
public static short DESC=275;
public static short DISTINCT=276; 
public static short ELEMENT=277;
public static short ELSE=278;
public static short END=279;
public static short EXCEPT=280; 
public static short EXISTS=281;
public static short ESCAPE=282; 
public static short FLATTEN=283; 
public static short FROM=284;
public static short FULL=285; 
public static short GROUP=286;
public static short HAVING=287;
public static short IN=288;
public static short INNER=289; 
public static short INTERSECT=290;
public static short IS=291; 
public static short JOIN=292; 
public static short KEY=293;
public static short LEFT=294; 
public static short LIKE=295;
public static short LIMIT=296;
public static short MULTISET=297;
public static short NOT=298; 
public static short OF=299;
public static short OFTYPE=300; 
public static short ON=301; 
public static short OR=302;
public static short ORDER=303; 
public static short OUTER=304;
public static short OVERLAPS=305;
public static short ONLY=306;
public static short REF=307; 
public static short RELATIONSHIP=308;
public static short RIGHT=309; 
public static short ROW=310; 
public static short SELECT=311;
public static short SET=312; 
public static short SKIP=313;
public static short THEN=314;
public static short TOP=315;
public static short TREAT=316; 
public static short UNION=317;
public static short USING=318; 
public static short VALUE=319; 
public static short WHEN=320;
public static short WHERE=321; 
public static short WITH=322;
public static short COMMA=323;
public static short COLON=324;
public static short SCOLON=325; 
public static short DOT=326;
public static short EQUAL=327; 
public static short L_PAREN=328; 
public static short R_PAREN=329;
public static short L_BRACE=330; 
public static short R_BRACE=331;
public static short L_CURLY=332;
public static short R_CURLY=333;
public static short PLUS=334; 
public static short MINUS=335;
public static short STAR=336; 
public static short FSLASH=337; 
public static short PERCENT=338;
public static short OP_EQ=339; 
public static short OP_NEQ=340;
public static short OP_LT=341;
public static short OP_LE=342;
public static short OP_GT=343; 
public static short OP_GE=344;
public static short QMARK=345; 
public static short NAVIGATE=346; 
public static short NULL=347;
public static short UNARYPLUS=348; 
public static short UNARYMINUS=349;
public static short YYERRCODE=256;
static short [] yylhs = {                           -1,
    0,    0,    1,    2,    2,    4,    4,    5,    5,    5, 
    3,    3,   10,   10,    9,   19,   12,   22,   12,   18,
   18,   18,   20,   20,   13,   23,   23,   24,   24,   24, 
   24,   24,   26,   26,   27,   28,   28,   28,   28,   28, 
   28,   28,   28,   28,   28,   29,   29,   14,   14,   30,
   15,   15,   31,   16,   16,   33,   32,   17,   17,   36, 
   34,   37,   37,   38,   38,   35,   35,   39,   39,   40,
   40,   40,   42,   42,   11,   11,   11,   11,   11,   11,
   11,   11,   11,   11,   11,   11,   11,   43,   53,   54,
   44,   44,   44,   44,   44,   44,   44,   44,   44,   44, 
   44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
   44,   44,   44,   44,   44,   44,   44,   44,   44,   44, 
   44,   44,   44,   44,   44,   44,   44,   44,   44,   44, 
   44,   44,   44,   44,   44,   57,   57,    8,   58,   25,
   25,   21,   21,   55,   55,   59,   59,   60,   49,   49, 
   49,    7,   45,   50,   46,   46,   47,   48,   48,   48,
   48,   48,   48,   51,   51,   51,   51,   51,   51,   61,
   61,   62,   62,   63,   63,   63,   63,   63,   63,   56,
   56,   56,   56,   56,    6,    6,   41,   52,   52, 
};
static short [] yylen = {                            2, 
    0,    1,    2,    0,    1,    1,    2,    3,    3,    3, 
    2,    2,    0,    1,    6,    0,    5,    0,    6,    0,
    1,    1,    0,    4,    2,    1,    3,    1,    3,    1, 
    3,    1,    3,    5,    3,    2,    3,    2,    3,    2,
    1,    2,    2,    3,    2,    2,    2,    0,    1,    2,
    0,    1,    3,    0,    1,    0,    3,    0,    1,    0,
    6,    0,    2,    0,    2,    1,    3,    2,    4,    0, 
    1,    1,    1,    3,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    3,    3,    4, 
    3,    3,    3,    3,    3,    2,    2,    3,    3,    3, 
    3,    3,    3,    3,    4,    3,    3,    3,    4,    4,
    4,    4,    4,    4,    3,    4,    1,    6,    6,    6, 
    7,    6,    7,    7,    8,    3,    4,    5,    6,    3,
    3,    3,    2,    3,    1,    1,    1,    3,    3,    3,
    1,    1,    3,    3,    4,    4,    5,    2,    4,    4,
    3,    3,    4,    2,    6,    8,    2,    3,    6,    6, 
    3,    6,    6,    6,    6,    8,    8,   10,   10,    0,
    1,    2,    2,    6,    6,    8,    8,   10,   10,    1, 
    1,    2,    2,    1,    1,    1,    1,    1,    1, 
};
static short [] yydefred = {                         0, 
    0,    0,    2,    0,    0,    6,  187,  185,   76,  188,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  189,    0,    0,    0,    0,  186,   75,   78,   80, 
   81,   82,   83,   84,   85,   86,   87,    0,    0,  117,
  135,  137,    0,    3,    0,    0,  136,    0,    0,    0, 
    7,    0,    0,    0,    0,    0,  154,    0,    0,    0, 
  157,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    8,    0,    9,    0,   10,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   14,   11,   12,
    0,    0,    0,    0,    0,  144,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,  142,    0,
    0,   88,    0,  151,    0,   21,   22,  161,    0,  158, 
    0,    0,    0,    0,    0,    0,    0,    0,  115,    0, 
    0,    0,    0,    0,    0,    0,    0,  152,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,   28,   30,   32,
    0,    0,   49,  111,    0,    0,    0,  145,    0,    0,
  112,  110,  113,  150,    0,  153,    0,    0,  149,  114,
    0,    0,    0,    0,    0,    0,    0,    0,  116,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   41,    0,    0,    0, 
    0,    0,    0,    0,    0,   52,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,  140,  143,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,   29,   31,    0,   46,   36,   43,    0,   42,
   38,    0,   47,   40,    0,    0,   35,    0,   56,    0,
   55,    0,  182,  183,  119,    0,  155,    0,  120,  118,
    0,  165,    0,  164,    0,  163,    0,  162,  160,  159, 
    0,    0,    0,  122,    0,    0,    0,   44,   37,   39,
    0,    0,    0,    0,   15,   59,    0,  121,    0,    0, 
    0,  172,  173,    0,  123,  124,   24,    0,    0,   60, 
  156,    0,  167,    0,  166,    0,  125,    0,    0,    0,
    0,    0,    0,   66,  169,  168,    0,   71,    0,   72, 
   68,    0,    0,    0,    0,    0,    0,    0,   67,    0,
   61,    0,  175,    0,  174,   69,    0,    0,    0,    0,
  177,    0,  176,    0,    0,  179,  178,
}; 
static short [] yydgoto = {                          2,
    3,    4,   79,    5,    6,   55,   56,   57,   58,  120, 
   36,   60,  122,  192,  245,  290,  325,  149,  116,  227, 
  138,  117,  186,  187,  188,  189,  190,  241,  242,  193,
  246,  291,  323,  326,  353,  348,  364,  371,  354,  361, 
   37,   81,   38,   39,   40,   41,   42,   43,   44,   45,
   46,   47,   48,   49,   50,  252,   51,   52,   64,  128,
  306,  307,  332,
}; 
static short [] yysindex = {                      -310,
 3546,    0,    0, 2931, -310,    0,    0,    0,    0,    0, 
 -319, -258, -216, -182, -176, -171, -145, -141, -176, -140, 
 3546, -123, -100,  -95,  -79,  -77, 2931, 3546, 3546, 3546,
  -62,    0, -157,  -89, -229, 5009,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,  -93,    6,    0,
    0,    0,    0,    0,  -52,  -49,    0,  -45, 4019,    5,
    0, 2931, 3546, -242, 3546, 3546,    0, 2931, 2931, 2931,
    0, 3546, 5403, 3546, 3546, 3546, 2931, 3546,  -44, 5009, 
 -209,  -40,  -40, 3546,    0, -249,    0, -241,    0, 3546,
 3546, 3546, 3546, 3546, -277, 3546, -177, 3546, 3546, 3010, 
    2, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 
 3546, 3546, 3546, 3546, 3546, -245,  -25,    0,    0,    0,
 3613,  -18,  -23, 4085, 3546,    0, 3546,   30, 4151, 4217, 
  -21,  -17,  -14, -300, 4283, 4349, 4415, -283,    0,  -13,
 4481,    0, 3546,    0, 4547,    0,    0,    0, 2931,    0,
 2931, 5403, 5338, 5565, 5499, 5612, -280,  -10,    0, 5431,
 3546, 3546, 3546, 5273, 5537, 3546, 5593,    0, 2914, -178, 
 -178,  -40,  -40,  -40, 2914, 2914,  -92,  -92,  -92,  -92,
 5403, 5403,   -4, -245, 3077,   31,  -37,    0,    0,    0, 
 3546,   33,    0,    0, 3546, 5009, 4613,    0, 3546, 3546, 
    0,    0,    0,    0, 3144,    0,    2, 3546,    0,    0,
 3546, 5009, 3546,   24, -274,   40, -236,   55,    0, 3211, 
 3546, 5338, 5499, 5471, 5593,   57, 3546,   -4, 3887,  -37,
   58,   66, 3613, -226, -279,   42,    0, -232,   96, -227,
 3613, 3613, 5009,   94,  110,    0, 5009, 3546, -253, -252,
    0,   72, 3953, 3546,   77,    0,    0,   80, -129, -126, 
   88,   88,   88,   88, 3278, 3546,   82, 5499, 3546, 3546,
   89, 3546,    0,    0,  -37,    0,    0,    0,  121,    0, 
    0,  124,    0,    0,  125,  120,    0, 3546,    0,  122, 
    0, 5009,    0,    0,    0, 3546,    0,  101,    0,    0,
    2,    0,    2,    0,  115,    0,  115,    0,    0,    0, 
 3546,  102,  103,    0, 5499, 4679,   89,    0,    0,    0,
 3546,   89, 3546,  165,    0,    0,  106,    0, -153, -116,
  108,    0,    0,  111,    0,    0,    0, 5009, 5009,    0,
    0,    2,    0,    2,    0, 3546,    0, 3546,  112,  117, 
 4745, 3821, -197,    0,    0,    0, 3546,    0,  177,    0,
    0, 3546, 3546,  141,  -98,  -54, -212, 5009,    0, 3546, 
    0,    2,    0,    2,    0,    0, 5009, -114, -106,    2, 
    0,    2,    0,  118,  119,    0,    0,
}; 
static short [] yyrindex = {                       145,
    0,    0,    0,    0, 3345,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0, 5075, 5141, 5207,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0, 2864,    0,  222,  305,    0,    3,    3,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0, 2410,    0,    0,    0,    0,    0,    0, -168, 
    0,  554,  637,    0,    0, 3412,    0, 3412,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0, 3479,    0,    0,    0,    0, 
    0,   34,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0, 2736,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0, 2480,  187, 1851, 2134, 1428,    0,    0,    0, 2274,
    0,    0,    0, 2686, 1921,    0, 1711,    0, 1498,  969, 
 1052,  720,  803,  886, 1568, 1638, 1135, 1205, 1275, 1345,
 2550, 2620, 3680, 3479,    0,   10,    1,    0,    0,    0,
    0,   64,    0,    0,    0,  171,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0, -144,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  189, 2204, 2344, 1781,    0,    0, 3680, -108,    0, 
  -31,  135,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,   61,    0,   11,    0, -234,    0, 4811, 4877,
 4943,    0,    0,    0,    0,    0,    0,    0, 5075, 5141, 
  388,  388,  388,  388,    0,    0,    0, 1994,    0,    0,
  169,    0,    0,    0,    4,    0,    0,    0, 3747,    0,
    0,    0,    0,    0,    0, 2807,    0,    0,    0,   17,
    0, -231,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,  471,    0,    0,    0,
    0,    0,    0,    0, 2064,    0,  170,    0,    0,    0, 
    0,   71,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0, 2777,   41,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,   32,   53,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   43, 5075, 5141,   32,   69,    0,    0,
    0,    0,    0,    0,    0,    0,   51,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0, 
};
static short [] yygindex = {                         0, 
    0,    0,  105,    0,  453,   -1,   27,  458,   67,  402, 
   29,    0,    0,    0,    0,    0,    0,  -74,    0,  234,
 -220,    0,    0, -159,  -61,  278,  279,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,  104,   98,
  107,  -70,  134,    0,    0,    0,    0, -181,    0,    0,
    0,    0,    0,    0,    0, -103,    0,    0,    0,    0,
   20,    0,  161, 
};
static int YYTABLESIZE=5956; 
static short[] yytable = {                         33, 
   26,  134,   13,   27,  293,  294,  271,    1,   62,   25,
   54,  146,  278,  151,  139,  146,   58,  251,  218,  146, 
  157,  158,  143,  251,  279,  230,  147,   34,  204,  251,
  147,   70,   59,   48,  147,  125,  126,  276,  251,  208,
   57,  183,   64,  146,  146,  209,  147,  147,  143,   73,
   65,  317,   62,  358,  262,   59,   80,   82,   83,  281, 
   50,   63,  360,   51,  284,  277,  219,  322,   63,  159,
   53,  282,  251,  275,   86,   88,  285,  127,  215,  148, 
  217,  286,  287,  251,  251,  146,  143,  150,  147,  161, 
   59,  124,  264,  129,  130,   89,   59,   59,   59,  168,
   80,  255,  135,  136,  137,   59,  141,  258,   54,  228, 
  162,   65,  145,  143,  251,  362,  267,  163,  152,  153,
  154,  155,  156,  144,  160,  363,  164,  165,  167,  251,
  169,  170,  171,  172,  173,  174,  175,  176,  177,  178,
  179,  180,  181,  182,    1,   66,  257,  101,   67,  137, 
  298,   27,   71,  196,   73,  197,   68,  105,  106,  107,
   73,  312,  313,  141,   73,  139,  123,   85,  114,  342, 
   86,  212,  131,  132,  133,  343,  141,   80,   74,   80, 
  141,  140,   69,  141,   74,  141,   70,   72,   74,  222,
  223,  224,  327,  301,  225,  141,  303,  249,   86,  302, 
  141,   88,  304,  249,   74,  256,  344,  334,  380,  249,
  139,  259,  345,  229,  381,  214,  382,  216,  249,  243,
   13,   77,  383,  247,  372,  250,  139,   75,  253,   86,
  373,  250,   76,  101,  234,   87,  137,  250,   88,  260, 
   30,  103,  104,  105,  106,  107,  250,  235,   77,  268,
   78,  236,  249,   30,  237,  137,  238,   30,    7,    8, 
   30,  137,   30,  249,  249,   84,  239,  115,  374,  137, 
  137,  240,   30,   88,  375,   86,  292,   30,   88,  118,
  250,  308,  309,  310,  142,  101,   26,   26,  121,   27, 
   27,  250,  250,  184,  249,   25,   25,  315,  316,  329,
  137,  330,  191,   26,   79,  194,   27,  201,  198,  249,
  226,  202,   25,   54,  203,  210,  137,  220,  244,   48,
   48,   26,  250,   26,   27,   26,   27,   70,   27,   26, 
   25,   13,   27,  280,   25,   54,   48,  250,   25,   54,
  349,   58,  350,   57,   70,   58,   50,   50,   62,  338, 
   51,  339,  261,  233,   70,  365,   70,   53,   48,  283, 
   70,  288,   48,   50,   63,   57,   51,   64,  263,   57,
  378,   64,  379,   53,  351,   65,  352,   62,  384,   65, 
  385,   62,  265,  366,  270,   50,  273,  170,   51,   50,
  368,  352,   51,   63,  274,   53,  289,   63,  377,   53,
  295,    4,    4,    4,    4,  299,   32,    4,  300,  305,
  314,  208,  318,    4,    4,  319,  320,    4,    4,   32, 
  321,    4,  331,   32,  324,    4,   32,    4,   32,  328,
  335,  336,  340,    7,  341,  346,  370,    4,   32,  347, 
  355,    4,    4,   32,    4,  356,  386,  387,   89,  148, 
   90,    4,   17,   19,    4,    4,    4,   61,   35,  119,
    4,  272,  231,  232,  376,  367,  369,  333,    0,    0, 
  171,    0,    4,    0,    0,    0,    4,    0,    4,    4,
    0,    0,    0,   77,    0,    0,   77,   77,   77,    0,
    4,    4,   77,   77,    0,    0,   77,    0,    0,   77,
   77,   77,    0,   77,    0,   77,   77,   77,   77,   77, 
   77,   77,   77,   77,    0,   77,   77,   77,    0,   77,
    0,    0,   77,   77,   77,   77,   77,    0,    0,    0, 
   77,    0,    0,    0,   77,   77,    0,    0,   77,    0, 
    0,   77,   77,    0,   77,    0,   77,   77,   77,    0,
   77,    0,    0,   97,   77,   77,   77,   77,   77,   77, 
   77,   77,   77,   77,   77,   77,   79,    0,    0,   79,
   79,   79,    0,    0,    0,   79,   79,    0,    0,   79,
    0,    0,   79,   79,   79,    0,   79,    0,   79,   79,
   79,   79,   79,   79,   79,   79,   79,    0,   79,   79, 
   79,    0,   79,    0,    0,   79,   79,   79,   79,   79,
    0,    0,    0,   79,    0,    0,    0,   79,   79,    0, 
    0,   79,    0,    0,   79,   79,    0,   79,    0,   79, 
   79,   79,    0,   79,    0,    0,   96,   79,   79,   79,
   79,   79,   79,   79,   79,   79,   79,   79,   79,  170, 
    0,    0,  170,  170,  170,    0,    0,    0,  170,  170,
    0,    0,  170,    0,    0,  170,  170,  170,    0,  170,
    0,  170,  170,  170,  170,  170,  170,  170,  170,  170,
    0,  170,  170,  170,    0,  170,    0,    0,  170,  170, 
  170,  170,  170,    0,    0,    0,  170,    0,    0,    0,
  170,  170,    0,    0,  170,    0,    0,  170,  170,    0, 
  170,    0,  170,  170,  170,    0,  170,    0,    0,   93, 
  170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
  170,  170,  171,    0,    0,  171,  171,  171,    0,    0, 
    0,  171,  171,    0,    0,  171,    0,    0,  171,  171,
  171,    0,  171,    0,  171,  171,  171,  171,  171,  171,
  171,  171,  171,    0,  171,  171,  171,    0,  171,    0,
    0,  171,  171,  171,  171,  171,    0,    0,    0,  171, 
    0,    0,    0,  171,  171,    0,    0,  171,    0,    0,
  171,  171,    0,  171,    0,  171,  171,  171,    0,  171, 
    0,    0,   94,  171,  171,  171,  171,  171,  171,  171, 
  171,  171,  171,  171,  171,   97,    0,    0,   97,   97,
   97,    0,    0,    0,   97,   97,    0,    0,   97,    0, 
    0,   97,   97,   97,    0,   97,    0,   97,   97,   97,
   97,   97,   97,   97,   97,   97,    0,   97,   97,   97,
    0,   97,    0,    0,   97,   97,   97,   97,   97,    0,
    0,    0,   97,    0,    0,    0,   97,   97,    0,    0, 
   97,    0,    0,   97,   97,    0,   97,    0,   97,    0,
   97,    0,   97,    0,    0,   95,   97,   97,   97,   97, 
   97,   97,   97,   97,   97,   97,   97,   97,   96,    0, 
    0,   96,   96,   96,    0,    0,    0,   96,   96,    0,
    0,   96,    0,    0,   96,   96,   96,    0,   96,    0, 
   96,   96,   96,   96,   96,   96,   96,   96,   96,    0,
   96,   96,   96,    0,   96,    0,    0,   96,   96,   96,
   96,   96,    0,    0,    0,   96,    0,    0,    0,   96,
   96,    0,    0,   96,    0,    0,   96,   96,    0,   96, 
    0,   96,    0,   96,    0,   96,    0,    0,   91,   96,
   96,   96,   96,   96,   96,   96,   96,   96,   96,   96, 
   96,   93,    0,    0,   93,   93,   93,    0,    0,    0, 
   93,   93,    0,    0,   93,    0,    0,   93,   93,   93,
    0,   93,    0,   93,   93,   93,   93,   93,   93,   93, 
   93,   93,    0,   93,   93,   93,    0,   93,    0,    0,
   93,   93,   93,   93,   93,    0,    0,    0,   93,    0,
    0,    0,   93,   93,    0,    0,   93,    0,    0,   93,
   93,    0,   93,    0,   93,    0,   93,    0,   93,    0, 
    0,   92,   93,   93,   93,   93,   93,   93,   93,   93,
   93,   93,   93,   93,   94,    0,    0,   94,   94,   94, 
    0,    0,    0,   94,   94,    0,    0,   94,    0,    0, 
   94,   94,   94,    0,   94,    0,   94,   94,   94,   94,
   94,   94,   94,   94,   94,    0,   94,   94,   94,    0, 
   94,    0,    0,   94,   94,   94,   94,   94,    0,    0,
    0,   94,    0,    0,    0,   94,   94,    0,    0,   94,
    0,    0,   94,   94,    0,   94,    0,   94,    0,   94,
    0,   94,    0,    0,  101,   94,   94,   94,   94,   94, 
   94,   94,   94,   94,   94,   94,   94,   95,    0,    0,
   95,   95,   95,    0,    0,    0,   95,   95,    0,    0, 
   95,    0,    0,   95,   95,   95,    0,   95,    0,   95, 
   95,   95,   95,   95,   95,   95,   95,   95,    0,   95,
   95,   95,    0,   95,    0,    0,   95,   95,   95,   95, 
   95,    0,    0,    0,   95,    0,    0,    0,   95,   95,
    0,    0,   95,    0,  102,   95,   95,    0,   95,    0,
   95,    0,   95,    0,   95,    0,    0,    0,   95,   95,
   95,   95,   95,   95,   95,   95,   95,   95,   95,   95, 
   91,    0,    0,   91,   91,   91,    0,    0,    0,   91,
   91,    0,    0,   91,    0,    0,   91,   91,   91,    0, 
   91,    0,   91,   91,   91,   91,   91,   91,   91,   91, 
   91,    0,   91,   91,   91,    0,   91,    0,    0,   91,
   91,   91,   91,   91,   99,    0,    0,   91,    0,    0, 
    0,   91,   91,    0,    0,   91,    0,    0,   91,   91,
    0,   91,    0,   91,    0,   91,    0,   91,    0,    0,
    0,   91,   91,   91,    0,    0,    0,   91,   91,   91,
   91,   91,   91,   92,    0,    0,   92,   92,   92,    0, 
    0,    0,   92,   92,    0,    0,   92,    0,    0,   92,
   92,   92,    0,   92,    0,   92,   92,   92,   92,   92, 
   92,   92,   92,   92,  100,   92,   92,   92,    0,   92, 
    0,    0,   92,   92,   92,   92,   92,    0,    0,    0,
   92,    0,    0,    0,   92,   92,    0,    0,   92,    0, 
    0,   92,   92,    0,   92,    0,   92,    0,   92,    0,
   92,    0,    0,    0,   92,   92,   92,    0,    0,    0,
   92,   92,   92,   92,   92,   92,  101,    0,    0,  101,
  101,  101,    0,    0,    0,  101,  101,    0,    0,  101, 
    0,    0,  101,  101,  101,    0,  101,    0,  101,  101,
  101,  101,  101,  101,  101,  101,  101,  103,  101,  101, 
  101,    0,  101,    0,    0,  101,  101,  101,  101,  101, 
    0,    0,    0,  101,    0,    0,    0,  101,  101,    0,
    0,  101,    0,    0,  101,  101,    0,  101,    0,  101, 
    0,  101,    0,  101,    0,    0,  102,  101,    0,  102,
  102,  102,    0,  101,  101,  102,  102,    0,    0,  102,
    0,    0,  102,  102,  102,    0,  102,    0,  102,  102,
  102,  102,  102,  102,  102,  102,  102,  138,  102,  102, 
  102,    0,  102,    0,    0,  102,  102,  102,  102,  102,
    0,    0,    0,  102,    0,    0,    0,  102,  102,    0, 
    0,  102,    0,    0,  102,  102,    0,  102,    0,  102, 
    0,  102,    0,  102,    0,    0,   99,  102,    0,   99,
   99,   99,    0,  102,  102,   99,   99,    0,    0,   99, 
    0,    0,   99,   99,   99,    0,   99,    0,   99,   99,
   99,   99,   99,   99,   99,   99,   99,  139,   99,   99,
   99,    0,   99,    0,    0,   99,   99,   99,   99,   99,
    0,    0,    0,   99,    0,    0,    0,   99,   99,    0, 
    0,   99,    0,    0,   99,   99,    0,   99,    0,   99,
    0,   99,    0,   99,    0,    0,  100,   99,    0,  100, 
  100,  100,    0,   99,   99,  100,  100,    0,    0,  100, 
    0,    0,  100,  100,  100,    0,  100,    0,  100,  100,
  100,  100,  100,  100,  100,  100,  100,   98,  100,  100, 
  100,    0,  100,    0,    0,  100,  100,  100,  100,  100,
    0,    0,    0,  100,    0,    0,    0,  100,  100,    0,
    0,  100,    0,    0,  100,  100,    0,  100,    0,  100,
    0,  100,    0,  100,    0,    0,    0,  100,    0,    0, 
    0,    0,    0,  100,  100,    0,    0,    0,    0,  103,
    0,    0,  103,  103,  103,    0,    0,    0,  103,  103, 
    0,    0,  103,    0,    0,  103,  103,  103,    0,  103, 
  104,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    0,  103,  103,  103,    0,  103,    0,    0,  103,  103, 
  103,  103,  103,    0,    0,    0,  103,    0,    0,    0,
  103,  103,    0,    0,  103,    0,    0,  103,  103,    0,
  103,    0,  103,    0,    0,    0,  103,    0,    0,  138,
  103,    0,  138,  138,  138,    0,    0,    0,  138,  138, 
    0,    0,  138,    0,    0,  138,  138,  138,    0,  138,
  105,  138,  138,  138,  138,  138,  138,  138,  138,  138, 
    0,  138,  138,  138,    0,  138,    0,    0,  138,  138, 
  138,  138,  138,    0,    0,    0,  138,    0,    0,    0,
  138,  138,    0,    0,  138,    0,    0,  138,  138,    0, 
  138,    0,  138,    0,    0,    0,  138,    0,    0,  139,
  138,    0,  139,  139,  139,    0,    0,    0,  139,  139,
    0,    0,  139,    0,    0,  139,  139,  139,    0,  139,
  106,  139,  139,  139,  139,  139,  139,  139,  139,  139, 
    0,  139,  139,  139,    0,  139,    0,    0,  139,  139,
  139,  139,  139,    0,    0,    0,  139,    0,    0,    0, 
  139,  139,    0,    0,  139,    0,    0,  139,  139,    0, 
  139,    0,  139,    0,    0,    0,  139,    0,    0,   98,
  139,    0,   98,   98,   98,    0,    0,    0,   98,   98, 
    0,    0,   98,    0,    0,   98,   98,   98,    0,   98,
  107,   98,   98,   98,   98,   98,   98,   98,   98,   98,
    0,   98,   98,   98,    0,   98,    0,    0,   98,   98,
   98,   98,   98,    0,    0,    0,   98,    0,    0,    0, 
   98,   98,    0,    0,   98,    0,    0,   98,   98,    0,
   98,    0,   98,    0,    0,    0,   98,    0,    0,    0, 
   98,    0,  104,    0,    0,  104,  104,  104,    0,    0, 
    0,  104,  104,    0,    0,  104,    0,    0,  104,  104,
  104,    0,  104,  128,  104,  104,  104,  104,  104,  104, 
    0,  104,  104,    0,  104,  104,  104,    0,  104,    0,
    0,  104,  104,  104,  104,  104,    0,    0,    0,  104,
    0,    0,    0,  104,  104,    0,    0,  104,    0,    0,
  104,  104,    0,  104,    0,  104,    0,    0,    0,  104, 
    0,    0,  105,  104,    0,  105,  105,  105,    0,    0,
    0,  105,  105,    0,    0,  105,    0,    0,  105,  105, 
  105,    0,  105,  129,  105,  105,  105,  105,  105,  105, 
    0,  105,  105,    0,  105,  105,  105,    0,  105,    0,
    0,  105,  105,  105,  105,  105,    0,    0,    0,  105, 
    0,    0,    0,  105,  105,    0,    0,  105,    0,    0,
  105,  105,    0,  105,    0,  105,    0,    0,    0,  105,
    0,    0,  106,  105,    0,  106,  106,  106,    0,    0,
    0,  106,  106,    0,    0,  106,    0,    0,  106,  106, 
  106,    0,  106,  108,  106,  106,  106,  106,  106,  106,
    0,  106,  106,    0,  106,  106,  106,    0,  106,    0, 
    0,  106,  106,  106,  106,  106,    0,    0,    0,  106, 
    0,    0,    0,  106,  106,    0,    0,    0,    0,    0,
  106,  106,    0,  106,    0,  106,    0,    0,    0,  106, 
    0,    0,  107,  106,    0,  107,  107,  107,    0,    0,
    0,  107,  107,    0,    0,  107,    0,    0,  107,  107,
    0,    0,  107,  109,  107,  107,  107,  107,  107,  107,
    0,  107,  107,    0,  107,  107,  107,    0,  107,    0, 
    0,  107,  107,  107,  107,  107,    0,    0,    0,  107,
    0,    0,    0,  107,  107,    0,    0,    0,    0,    0, 
  107,  107,    0,  107,    0,  107,    0,    0,    0,  107, 
    0,    0,    0,  107,    0,  128,    0,    0,  128,  128,
  128,    0,    0,    0,  128,  128,    0,    0,  128,    0, 
    0,  128,  128,  126,    0,  128,    0,  128,  128,  128,
  128,  128,  128,    0,  128,  128,    0,  128,  128,  128,
    0,  128,    0,    0,  128,  128,  128,  128,    0,    0,
    0,    0,  128,    0,    0,    0,  128,  128,    0,    0, 
    0,    0,    0,  128,  128,    0,  128,    0,  128,    0,
    0,    0,  128,    0,    0,  129,  128,    0,  129,  129, 
  129,    0,    0,    0,  129,  129,    0,    0,  129,    0, 
    0,  129,  129,  127,    0,  129,    0,  129,  129,  129,
  129,  129,  129,    0,  129,  129,    0,  129,  129,  129, 
    0,  129,    0,    0,  129,  129,  129,  129,    0,    0,
    0,    0,  129,    0,    0,    0,  129,  129,    0,    0,
    0,    0,    0,  129,  129,    0,  129,    0,  129,    0,
    0,    0,  129,    0,    0,  108,  129,    0,  108,  108, 
  108,    0,    0,    0,  108,  108,    0,    0,  108,  133,
    0,  108,  108,    0,    0,  108,    0,  108,  108,  108, 
  108,    0,  108,    0,  108,  108,    0,  108,    0,  108, 
    0,  108,    0,    0,  108,  108,  108,  108,    0,    0,
    0,    0,  108,    0,    0,    0,  108,  108,    0,    0, 
    0,    0,    0,  108,  108,    0,  108,    0,  108,    0,
    0,    0,  108,    0,    0,  109,  108,    0,  109,  109,
  109,    0,    0,    0,  109,  109,    0,    0,  109,  134,
    0,  109,  109,    0,    0,  109,    0,  109,  109,  109, 
  109,    0,  109,    0,  109,  109,    0,  109,    0,  109,
    0,  109,    0,    0,  109,  109,  109,  109,    0,    0, 
    0,    0,  109,    0,    0,    0,  109,  109,    0,    0, 
    0,    0,    0,  109,  109,    0,  109,    0,  109,    0,
    0,    0,  109,    0,    0,  126,  109,    0,  126,  126, 
  126,    0,    0,    0,  126,  126,    0,    0,  126,  130,
    0,  126,  126,    0,    0,    0,    0,  126,  126,  126,
  126,    0,  126,    0,  126,  126,    0,  126,    0,  126,
    0,  126,    0,    0,  126,  126,  126,  126,    0,    0, 
    0,    0,  126,    0,    0,    0,  126,  126,    0,    0,
    0,    0,    0,  126,  126,    0,  126,    0,  126,    0, 
    0,    0,  126,    0,    0,  127,  126,    0,  127,  127, 
  127,    0,    0,    0,  127,  127,    0,    0,  127,  131,
    0,  127,  127,    0,    0,    0,    0,  127,  127,  127, 
  127,    0,  127,    0,  127,  127,    0,  127,    0,  127,
    0,  127,    0,    0,  127,  127,  127,  127,    0,    0,
    0,    0,  127,    0,    0,    0,  127,  127,    0,    0,
    0,    0,    0,  127,  127,    0,  127,    0,  127,    0, 
    0,  133,  127,    0,  133,  133,  127,    0,    0,    0,
  133,  133,    0,    0,  133,  132,    0,  133,  133,    0, 
    0,  133,    0,  133,  133,  133,  133,    0,  133,    0, 
    0,  133,    0,  133,    0,  133,    0,    0,    0,    0,
  133,  133,  133,  133,    0,    0,    0,    0,  133,    0, 
    0,    0,  133,  133,    0,    0,    0,    0,    0,  133,
  133,    0,  133,    0,  133,  141,    0,    0,  133,    0,
    0,  134,  133,    0,  134,  134,    0,    0,    0,    0,
  134,  134,    0,    0,  134,    0,    0,  134,  134,    0, 
    0,  134,    0,  134,  134,  134,  134,    0,  134,    0,
    0,  134,    0,  134,    0,  134,   34,    0,    0,    0, 
  134,  134,  134,  134,    0,    0,    0,    0,  134,    0, 
    0,    0,  134,  134,    0,    0,    0,    0,    0,  134,
  134,    0,  134,    0,  134,    0,   33,    0,  134,    0, 
    0,  130,  134,    0,  130,  130,    0,    0,    0,    0,
  130,  130,    0,    0,  130,    0,    0,  130,  130,    0,
    0,  130,    0,  130,  130,  130,  130,    0,  130,    0,
    0,  130,    0,  130,    0,  130,    0,    0,    0,    0, 
  130,  130,  130,  130,    0,    0,    0,    0,  130,    0,
    0,    0,  130,  130,    0,    0,    0,    0,    0,  130, 
  130,    0,  130,    0,  130,    0,    0,    0,  130,    0, 
    0,  131,  130,    0,  131,  131,    0,    0,    0,    0,
  131,  131,    0,    0,  131,    0,    0,  131,  131,    0, 
    0,  131,    0,  131,  131,  131,  131,    0,  131,    0,
    0,  131,    0,  131,    0,  131,    0,    0,    0,    0,
  131,  131,  131,  131,    0,    0,    0,    0,  131,    0,
    0,    0,  131,  131,    0,    0,    0,    0,    0,  131, 
  131,    0,  131,    0,  131,    0,    0,    0,  131,    0,
  132,  132,  131,    0,    0,    0,  132,  132,    0,    0, 
  132,    0,    0,  132,  132,    0,    0,  132,    0,  132, 
  132,  132,  132,    0,  132,    0,    0,  132,    0,  132,
    0,  132,    0,    0,    0,    0,  132,  132,  132,  132, 
    0,    0,    0,    0,  132,    0,    0,    0,  132,  132,
    0,    0,    0,    0,    0,  132,  132,  141,  132,    0,
  132,    0,    0,    0,  132,    0,    0,    0,  132,  141,
  141,  141,  141,    0,  141,    0,    0,  141,    0,  141, 
    0,    0,    0,    0,    0,    0,  141,    0,  141,  141,
    0,    0,    0,    0,  141,    0,    0,    0,   34,    0, 
    0,    0,    0,    0,    0,    0,  141,    0,  141,    0, 
  141,   34,   34,   34,  141,   34,    0,    0,   34,    0,
   34,    0,    0,    0,    0,    0,    0,   34,   33,   34, 
   34,    0,    0,    0,    0,   34,    0,    0,    0,    0,
    0,   33,   33,   33,    0,   33,    0,   34,   33,   34,
   33,   34,    0,    0,    0,   34,    0,    0,    0,   33,
   33,    0,    0,    0,    0,   33,    0,    0,    0,    0, 
   16,   16,   16,   16,   16,    0,   16,   33,    0,   33,
    0,   33,   16,   16,    0,   33,   16,   16,    0,   16, 
   16,    0,    0,    0,   16,    0,   16,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,   16,    0,    0,    0,
   16,   16,    0,   16,    0,    0,    0,    0,    0,    0, 
   16,    0,    0,   16,    0,   16,    0,    0,   16,   16,
    0,    0,   18,    0,    0,    0,    0,    7,    8,    9,
   10,   16,    0,   11,    0,   16,    0,   16,   16,   12,
   13,    0,    0,   14,   15,    0,    0,   16,    0,   16, 
   16,   17,    0,   18,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   19,    0,    0,    0,   20,   21,    0, 
   22,    0,    0,    0,    0,    0,    0,   23,    0,  101, 
   24,   53,   25,    0,    0,    0,   26,  103,  104,  105,
  106,  107,    0,    0,  110,  111,  112,  113,   27,    0, 
    0,    0,   28,    0,   29,   30,    7,    8,    9,   10,
  166,    0,   11,    0,    0,    0,   31,   32,   12,   13,
    0,    0,   14,   15,    0,    0,   16,    0,    0,    0,
   17,    0,   18,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,   19,    0,    0,    0,   20,   21,    0,   22,
    0,    0,    0,    0,    0,    0,   23,    0,    0,   24, 
    0,   25,    0,    0,    0,   26,    0,    0,    0,    0, 
    0,    0,    0,    7,    8,    9,   10,   27,    0,   11,
    0,   28,    0,   29,   30,   12,   13,    0,    0,   14, 
   15,    0,    0,   16,    0,   31,   32,   17,    0,   18,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   19,
    0,    0,    0,   20,   21,    0,   22,    0,    0,    0,
    0,    0,    0,   23,    0,    0,   24,   53,   25,    0, 
    0,    0,   26,    0,    0,    0,    0,    0,    0,    0,
    7,    8,    9,   10,  185,    0,   11,    0,   28,    0, 
   29,   30,   12,   13,    0,    0,   14,   15,    0,    0, 
   16,    0,   31,   32,   17,    0,   18,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   19,    0,    0,    0, 
   20,   21,    0,   22,    0,    0,    0,    0,    0,  254,
   23,    0,    0,   24,    0,   25,    0,    0,    0,   26,
    0,    0,    0,    0,    0,    0,    0,    7,    8,    9,
   10,   27,    0,   11,    0,   28,    0,   29,   30,   12, 
   13,    0,    0,   14,   15,    0,    0,   16,    0,   31,
   32,   17,    0,   18,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,   19,    0,    0,    0,   20,   21,    0, 
   22,    0,    0,    0,    0,    0,  266,   23,    0,    0,
   24,    0,   25,    0,    0,    0,   26,    0,    0,    0, 
    0,    0,    0,    0,    7,    8,    9,   10,   27,    0,
   11,    0,   28,    0,   29,   30,   12,   13,    0,    0,
   14,   15,    0,    0,   16,    0,   31,   32,   17,    0,
   18,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
   19,    0,    0,    0,   20,   21,    0,   22,    0,    0,
    0,    0,    0,  311,   23,    0,    0,   24,    0,   25, 
    0,    0,    0,   26,    0,    0,    0,    0,    0,    0, 
    0,    5,    5,    5,    5,   27,    0,    5,    0,   28,
    0,   29,   30,    5,    5,    0,    0,    5,    5,    0, 
    0,    5,    0,   31,   32,    5,    0,    5,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    5,    0,    0,
    0,    5,    5,    0,    5,    0,    0,    0,    0,    0,
    0,    5,    0,    0,    5,    5,    5,    0,    0,    0, 
    5,    0,    0,    0,    0,    0,    0,    0,   20,   20,
   20,   20,    5,    0,   20,    0,    5,    0,    5,    5, 
   20,   20,    0,    0,   20,   20,    0,    0,   20,    0, 
    5,    5,   20,    0,   20,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   20,    0,    0,    0,   20,   20, 
    0,   20,    0,    0,    0,    0,    0,    0,   20,    0,
    0,   20,   20,   20,    0,    0,    0,   20,    0,    0,
    0,    0,    0,    0,    0,   20,   20,   20,   20,   20,
    0,   20,    0,   20,    0,   20,   20,   20,   20,    0, 
    0,   20,   20,    0,    0,   20,    0,   20,   20,   20,
    0,   20,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,   20,    0,    0,    0,   20,   20,    0,   20,    0, 
    0,    0,    0,    0,    0,   20,    0,    0,   20,    0,
   20,    0,    0,   20,   20,    0,    0,    0,    0,    0, 
    0,    0,    7,    8,    9,   10,   20,    0,   11,    0,
   20,    0,   20,   20,   12,   13,    0,    0,   14,   15,
    0,    0,   16,    0,   20,   20,   17,    0,   18,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   19,    0, 
    0,    0,   20,   21,    0,   22,    0,    0,    0,    0,
    0,    0,   23,    0,    0,   24,    0,   25,    0,    0, 
    0,   26,    0,    0,    0,    0,    0,    0,    0,    7, 
    8,    9,   10,   27,    0,   11,    0,   28,    0,   29,
   30,   12,   13,    0,    0,   14,   15,    0,    0,   16, 
    0,   31,   32,   17,    0,   18,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   19,    0,    0,    0,   20,
   21,    0,   22,    0,    0,    0,    0,    0,    0,   23,
    0,    0,   24,    0,   25,    0,    0,    0,   26,    0, 
    0,    0,    0,    0,    0,    0,   23,   23,   23,   23,
  185,    0,   23,    0,   28,    0,   29,   30,   23,   23, 
    0,    0,   23,   23,    0,    0,   23,    0,   31,   32, 
   23,    0,   23,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   23,    0,    0,    0,   23,   23,    0,   23, 
    0,    0,    0,    0,    0,    0,   23,    0,    0,   23,
    0,   23,    0,    0,    0,   23,    0,    0,    0,    0,
    0,    0,    0,   45,   45,   45,   45,   23,    0,   45,
    0,   23,    0,   23,   23,   45,   45,    0,    0,   45, 
   45,    0,    0,   45,    0,   23,   23,   45,    0,   45,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   45, 
    0,    0,    0,   45,   45,    0,   45,    0,    0,    0, 
    0,    0,    0,   45,    0,    0,   45,    0,   45,    0,
    0,    0,   45,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,    0,   45,    0,    0,    0,   45,    0,
   45,   45,   90,    0,    0,    0,  358,   91,    0,    0,
    0,  359,   45,   45,    0,  360,    0,    0,    0,    0,
   92,    0,    0,    0,    0,    0,    0,    0,   93,    0, 
   94,   95,    0,    0,    0,   96,    0,    0,   97,    0,
    0,    0,   98,    0,    0,   99,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,  100,    0,    0, 
    0,    0,    0,    0,    0,    0,  101,  102,   90,    0,
    0,  207,    0,   91,  103,  104,  105,  106,  107,  108, 
  109,  110,  111,  112,  113,    0,   92,    0,    0,    0,
    0,    0,    0,    0,   93,    0,   94,   95,    0,    0,
    0,   96,    0,    0,   97,    0,    0,    0,   98,    0,
    0,   99,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,  100,    0,    0,    0,    0,    0,    0,
    0,  118,  101,  102,   90,    0,    0,    0,    0,   91, 
  103,  104,  105,  106,  107,  108,  109,  110,  111,  112, 
  113,    0,   92,    0,    0,    0,    0,    0,    0,    0,
   93,    0,   94,   95,    0,    0,    0,   96,    0,    0, 
   97,    0,    0,    0,   98,    0,    0,   99,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  100,
    0,    0,    0,    0,    0,  296,    0,    0,  101,  102,
   90,  297,    0,    0,    0,   91,  103,  104,  105,  106, 
  107,  108,  109,  110,  111,  112,  113,    0,   92,    0,
    0,    0,    0,    0,    0,    0,   93,    0,   94,   95, 
    0,    0,    0,   96,    0,    0,   97,    0,    0,    0, 
   98,    0,    0,   99,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  100,    0,    0,    0,    0, 
    0,    0,    0,  118,  101,  102,   90,    0,    0,    0,
    0,   91,  103,  104,  105,  106,  107,  108,  109,  110,
  111,  112,  113,    0,   92,    0,    0,    0,    0,    0,
    0,    0,   93,    0,   94,   95,    0,    0,    0,   96, 
    0,    0,   97,    0,    0,    0,   98,    0,    0,   99,
    0,    0,    0,    0,    0,    0,    0,    0,  195,    0, 
    0,  100,    0,    0,    0,    0,    0,    0,    0,    0, 
  101,  102,   90,    0,    0,  199,    0,   91,  103,  104,
  105,  106,  107,  108,  109,  110,  111,  112,  113,    0, 
   92,    0,    0,    0,    0,    0,    0,    0,   93,    0,
   94,   95,    0,    0,    0,   96,    0,    0,   97,    0,
    0,    0,   98,    0,    0,   99,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  100,    0,    0, 
    0,    0,    0,    0,    0,    0,  101,  102,   90,    0,
    0,    0,    0,   91,  103,  104,  105,  106,  107,  108, 
  109,  110,  111,  112,  113,    0,   92,    0,    0,    0, 
    0,    0,    0,    0,   93,    0,   94,   95,    0,    0,
    0,   96,    0,    0,   97,    0,    0,    0,   98,    0, 
    0,   99,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  100,    0,    0,    0,    0,    0,  200,
    0,    0,  101,  102,   90,    0,    0,    0,    0,   91,
  103,  104,  105,  106,  107,  108,  109,  110,  111,  112, 
  113,    0,   92,    0,    0,    0,    0,    0,    0,    0,
   93,    0,   94,   95,    0,    0,    0,   96,    0,    0, 
   97,    0,    0,    0,   98,    0,    0,   99,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,  100,
    0,    0,    0,    0,    0,  205,    0,    0,  101,  102, 
   90,    0,    0,    0,    0,   91,  103,  104,  105,  106,
  107,  108,  109,  110,  111,  112,  113,    0,   92,    0,
    0,    0,    0,    0,    0,    0,   93,    0,   94,   95,
    0,    0,    0,   96,    0,    0,   97,    0,    0,    0, 
   98,    0,    0,   99,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  100,    0,    0,    0,    0, 
    0,    0,    0,    0,  101,  102,   90,  206,    0,  207, 
    0,   91,  103,  104,  105,  106,  107,  108,  109,  110,
  111,  112,  113,    0,   92,    0,    0,    0,    0,    0, 
    0,    0,   93,    0,   94,   95,    0,    0,    0,   96,
    0,    0,   97,    0,    0,    0,   98,    0,    0,   99,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  100,    0,    0,    0,    0,    0,    0,    0,    0, 
  101,  102,   90,    0,    0,  211,    0,   91,  103,  104,
  105,  106,  107,  108,  109,  110,  111,  112,  113,    0, 
   92,    0,    0,    0,    0,    0,    0,    0,   93,    0, 
   94,   95,    0,    0,    0,   96,    0,    0,   97,    0,
    0,    0,   98,    0,    0,   99,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,  100,    0,    0,
    0,    0,    0,    0,    0,    0,  101,  102,   90,    0,
    0,    0,    0,   91,  103,  104,  105,  106,  107,  108,
  109,  110,  111,  112,  113,    0,   92,    0,    0,    0, 
    0,    0,    0,    0,   93,    0,   94,   95,    0,    0,
    0,   96,    0,    0,   97,    0,    0,    0,   98,    0, 
    0,   99,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,  100,    0,    0,    0,    0,    0,  213,
    0,    0,  101,  102,   90,    0,    0,    0,    0,   91, 
  103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
  113,    0,   92,    0,    0,    0,    0,    0,    0,    0,
   93,    0,   94,   95,    0,    0,    0,   96,    0,    0,
   97,    0,    0,    0,   98,    0,    0,   99,    0,    0, 
    0,    0,    0,    0,    0,    0,  248,    0,    0,  100,
    0,    0,    0,    0,    0,    0,    0,    0,  101,  102, 
   90,    0,    0,    0,    0,   91,  103,  104,  105,  106, 
  107,  108,  109,  110,  111,  112,  113,    0,   92,    0,
    0,    0,    0,    0,    0,    0,   93,    0,   94,   95, 
    0,    0,    0,   96,    0,    0,   97,    0,    0,    0,
   98,    0,    0,   99,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  100,    0,    0,    0,    0,
    0,    0,    0,    0,  101,  102,   90,  337,    0,    0, 
    0,   91,  103,  104,  105,  106,  107,  108,  109,  110,
  111,  112,  113,    0,   92,    0,    0,    0,    0,    0, 
    0,    0,   93,    0,   94,   95,    0,    0,    0,   96, 
    0,    0,   97,    0,    0,    0,   98,    0,    0,   99,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,  100,    0,    0,    0,    0,    0,  357,    0,    0,
  101,  102,   77,    0,    0,    0,    0,   77,  103,  104,
  105,  106,  107,  108,  109,  110,  111,  112,  113,    0,
   77,    0,    0,    0,    0,    0,    0,    0,   77,    0, 
   77,   77,    0,    0,    0,   77,    0,    0,   77,    0,
    0,    0,   77,    0,    0,   77,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,   77,    0,    0, 
    0,    0,    0,    0,    0,    0,   77,   77,   79,  180,
    0,    0,    0,   79,   77,   77,   77,   77,   77,   77, 
   77,   77,   77,   77,   77,    0,   79,    0,    0,    0,
    0,    0,    0,    0,   79,    0,   79,   79,    0,    0,
    0,   79,    0,    0,   79,    0,    0,    0,   79,    0,
    0,   79,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,   79,    0,    0,    0,    0,    0,    0,
    0,    0,   79,   79,   83,  181,    0,    0,    0,   83, 
   79,   79,   79,   79,   79,   79,   79,   79,   79,   79, 
   79,    0,   83,    0,    0,    0,    0,    0,    0,    0,
   83,    0,   83,   83,    0,    0,    0,   83,    0,    0, 
   83,    0,    0,    0,   83,    0,    0,   83,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   83,
    0,    0,    0,    0,    0,    0,    0,    0,   83,   83,
   90,  184,    0,    0,    0,   91,   83,   83,   83,   83, 
   83,   83,   83,   83,   83,   83,   83,    0,   92,    0,
    0,    0,    0,    0,    0,    0,   93,    0,   94,   95, 
    0,    0,    0,   96,    0,    0,   97,    0,    0,    0, 
   98,    0,    0,   99,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  100,    0,    0,    0,    0, 
    0,    0,    0,    0,  101,  102,   77,    0,    0,    0,
    0,   77,  103,  104,  105,  106,  107,  108,  109,  110,
  111,  112,  113,    0,   77,    0,    0,    0,    0,    0,
    0,    0,   77,    0,   77,   77,    0,    0,    0,   77, 
    0,    0,   77,    0,    0,    0,   77,    0,    0,   77,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,   77,    0,    0,    0,    0,    0,    0,    0,    0, 
   77,   77,   79,    0,    0,    0,    0,   79,   77,   77,
   77,   77,   77,   77,   77,   77,   77,   77,   77,    0, 
   79,    0,    0,    0,    0,    0,    0,    0,   79,    0,
   79,   79,    0,    0,    0,   79,    0,    0,   79,    0,
    0,    0,   79,    0,    0,   79,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   79,    0,    0, 
    0,    0,    0,    0,    0,    0,   79,   79,  136,    0,
    0,    0,    0,  136,   79,   79,   79,   79,   79,   79, 
   79,   79,   79,   79,   79,    0,  136,    0,    0,    0, 
    0,    0,    0,    0,  136,    0,  136,  136,    0,    0,
    0,  136,    0,    0,  136,    0,    0,    0,  136,    0, 
    0,  136,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  136,    0,    0,    0,    0,    0,    0,
    0,    0,  136,  136,   90,    0,    0,    0,    0,   91,
  136,  136,  136,  136,  136,  136,  136,  136,  136,  136, 
  136,    0,   92,    0,    0,    0,    0,    0,    0,    0,
   93,    0,   94,   95,    0,    0,    0,   96,    0,    0, 
   97,    0,    0,    0,    0,    0,    0,   99,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,  100,
    0,    0,    0,    0,    0,    0,    0,    0,  101,  102, 
    0,    0,    0,    0,   91,    0,  103,  104,  105,  106,
  107,  108,  109,  110,  111,  112,  113,   92,    0,    0,
    0,    0,    0,    0,    0,   93,    0,   94,   95,    0,
    0,    0,   96,    0,    0,   97,    0,    0,    0,   98, 
    0,    0,   99,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  100,    0,    0,    0,    0,    0, 
    0,    0,    0,  101,  102,    0,    0,    0,    0,   91, 
    0,  103,  104,  105,  106,  107,  108,  109,  110,  111,
  112,  113,   92,    0,    0,    0,    0,    0,    0,    0, 
   93,    0,   94,   95,    0,    0,    0,   96,    0,    0,
   97,    0,    0,    0,    0,    0,    0,   99,    0,    0,
   92,    0,  221,    0,    0,    0,    0,    0,    0,  100,
   94,    0,    0,    0,    0,    0,    0,    0,  101,  102, 
    0,    0,    0,    0,    0,   99,  103,  104,  105,  106,
  107,  108,  109,  110,  111,  112,  113,  100,    0,    0, 
   92,    0,  269,    0,    0,    0,  101,  102,    0,    0, 
   94,    0,    0,    0,  103,  104,  105,  106,  107,  108,
  109,  110,  111,  112,  113,   99,    0,    0,   92,    0, 
    0,    0,    0,    0,    0,    0,    0,  100,   94,    0,
    0,    0,    0,    0,    0,    0,  101,  102,    0,    0,
    0,    0,    0,   99,  103,  104,  105,  106,  107,  108,
  109,  110,  111,  112,  113,  100,   92,    0,    0,    0, 
    0,    0,    0,    0,  101,  102,   94,    0,    0,    0,
    0,    0,  103,  104,  105,  106,  107,  108,  109,  110, 
  111,  112,  113,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,  100,   94,    0,    0,    0,    0,    0,
    0,    0,  101,  102,    0,    0,    0,    0,    0,    0, 
  103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
  113,  100,   94,    0,    0,    0,    0,    0,    0,    0,
  101,  102,    0,    0,    0,    0,    0,    0,  103,  104,
  105,  106,  107,  108,  109,  110,  111,  112,  113,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,  101,  102,
    0,    0,    0,    0,    0,    0,  103,  104,  105,  106, 
  107,  108,  109,  110,  111,  112,  113,  101,  102,    0, 
    0,    0,    0,    0,    0,  103,  104,  105,  106,  107,
  108,  109,  110,  111,  112,  113, 
};
static short [] yycheck = {                          1,
    0,   72,    0,    0,  258,  258,  227,  318,  328,    0,
    0,  261,  292,   88,   76,  261,    0,  199,  299,  261, 
  298,  299,  323,  205,  304,  185,  276,    1,  329,  211,
  276,    0,    4,    0,  276,  278,  279,  264,  220,  323, 
    0,  116,    0,  278,  279,  329,  278,  279,  323,   21, 
    0,  272,    0,  266,  329,   27,   28,   29,   30,  292,
    0,  320,  275,    0,  292,  292,  347,  288,    0,  347, 
    0,  304,  254,  233,  328,  328,  304,  320,  149,  329,
  151,  241,  242,  265,  266,  320,  323,  329,  320,  267,
   62,   63,  329,   65,   66,  325,   68,   69,   70,  101,
   72,  205,   74,   75,   76,   77,   78,  211,    4,  184, 
  288,  328,   84,  323,  296,  313,  220,  295,   90,   91,
   92,   93,   94,  333,   96,  323,   98,   99,  100,  311, 
  102,  103,  104,  105,  106,  107,  108,  109,  110,  111, 
  112,  113,  114,  115,    0,  328,  208,  326,   15,  121,
  254,  328,   19,  125,  323,  127,  328,  336,  337,  338, 
  329,  265,  266,  272,  333,  227,   62,  325,  262,  323,
  328,  143,   68,   69,   70,  329,  285,  149,  323,  151,
  289,   77,  328,  292,  329,  294,  328,  328,  333,  161,
  162,  163,  296,  323,  166,  304,  323,  199,  328,  329, 
  309,  328,  329,  205,  328,  207,  323,  311,  323,  211,
  272,  213,  329,  185,  329,  149,  323,  151,  220,  191, 
  329,    0,  329,  195,  323,  199,  288,  328,  200,  328, 
  329,  205,  328,  326,  272,  325,  208,  211,  328,  213,
  272,  334,  335,  336,  337,  338,  220,  285,  328,  221, 
  328,  289,  254,  285,  292,  227,  294,  289,  257,  258,
  292,  233,  294,  265,  266,  328,  304,  262,  323,  241,
  242,  309,  304,  328,  329,  328,  248,  309,  328,  325,
  254,  262,  263,  264,  329,  326,  286,  287,  284,  286, 
  287,  265,  266,  319,  296,  286,  287,  269,  270,  301,
  272,  303,  321,  303,    0,  329,  303,  329,  279,  311, 
  315,  329,  303,  303,  329,  329,  288,  328,  286,  286, 
  287,  321,  296,  323,  321,  325,  323,  296,  325,  329,
  321,  329,  329,  292,  325,  325,  303,  311,  329,  329, 
  342,  325,  344,  303,  313,  329,  286,  287,  296,  321,
  287,  323,  329,  323,  323,  357,  325,  287,  325,  264,
  329,  268,  329,  303,  296,  325,  303,  325,  329,  329,
  372,  329,  374,  303,  346,  325,  348,  325,  380,  329, 
  382,  329,  328,  357,  328,  325,  329,    0,  325,  329,
  362,  363,  329,  325,  329,  325,  287,  329,  370,  329, 
  329,  257,  258,  259,  260,  329,  272,  263,  329,  322, 
  329,  323,  292,  269,  270,  292,  292,  273,  274,  285,
  301,  277,  308,  289,  303,  281,  292,  283,  294,  329, 
  329,  329,  268,  257,  329,  328,  296,  293,  304,  329,
  329,  297,  298,  309,  300,  329,  329,  329,  262,  279,
  262,  307,  284,  284,  310,  311,  312,    5,    1,   58,
  316,  228,  185,  185,  367,  359,  363,  307,   -1,   -1, 
    0,   -1,  328,   -1,   -1,   -1,  332,   -1,  334,  335,
   -1,   -1,   -1,  262,   -1,   -1,  265,  266,  267,   -1, 
  346,  347,  271,  272,   -1,   -1,  275,   -1,   -1,  278, 
  279,  280,   -1,  282,   -1,  284,  285,  286,  287,  288,
  289,  290,  291,  292,   -1,  294,  295,  296,   -1,  298, 
   -1,   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,
  309,   -1,   -1,   -1,  313,  314,   -1,   -1,  317,   -1,
   -1,  320,  321,   -1,  323,   -1,  325,  326,  327,   -1,
  329,   -1,   -1,    0,  333,  334,  335,  336,  337,  338, 
  339,  340,  341,  342,  343,  344,  262,   -1,   -1,  265,
  266,  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275, 
   -1,   -1,  278,  279,  280,   -1,  282,   -1,  284,  285, 
  286,  287,  288,  289,  290,  291,  292,   -1,  294,  295,
  296,   -1,  298,   -1,   -1,  301,  302,  303,  304,  305, 
   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,
   -1,  317,   -1,   -1,  320,  321,   -1,  323,   -1,  325,
  326,  327,   -1,  329,   -1,   -1,    0,  333,  334,  335,
  336,  337,  338,  339,  340,  341,  342,  343,  344,  262, 
   -1,   -1,  265,  266,  267,   -1,   -1,   -1,  271,  272,
   -1,   -1,  275,   -1,   -1,  278,  279,  280,   -1,  282, 
   -1,  284,  285,  286,  287,  288,  289,  290,  291,  292, 
   -1,  294,  295,  296,   -1,  298,   -1,   -1,  301,  302,
  303,  304,  305,   -1,   -1,   -1,  309,   -1,   -1,   -1, 
  313,  314,   -1,   -1,  317,   -1,   -1,  320,  321,   -1,
  323,   -1,  325,  326,  327,   -1,  329,   -1,   -1,    0,
  333,  334,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  344,  262,   -1,   -1,  265,  266,  267,   -1,   -1, 
   -1,  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,
  280,   -1,  282,   -1,  284,  285,  286,  287,  288,  289, 
  290,  291,  292,   -1,  294,  295,  296,   -1,  298,   -1, 
   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,  309,
   -1,   -1,   -1,  313,  314,   -1,   -1,  317,   -1,   -1, 
  320,  321,   -1,  323,   -1,  325,  326,  327,   -1,  329,
   -1,   -1,    0,  333,  334,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,  262,   -1,   -1,  265,  266,
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,   -1, 
   -1,  278,  279,  280,   -1,  282,   -1,  284,  285,  286,
  287,  288,  289,  290,  291,  292,   -1,  294,  295,  296, 
   -1,  298,   -1,   -1,  301,  302,  303,  304,  305,   -1, 
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1,
  317,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1, 
  327,   -1,  329,   -1,   -1,    0,  333,  334,  335,  336,
  337,  338,  339,  340,  341,  342,  343,  344,  262,   -1,
   -1,  265,  266,  267,   -1,   -1,   -1,  271,  272,   -1,
   -1,  275,   -1,   -1,  278,  279,  280,   -1,  282,   -1, 
  284,  285,  286,  287,  288,  289,  290,  291,  292,   -1,
  294,  295,  296,   -1,  298,   -1,   -1,  301,  302,  303, 
  304,  305,   -1,   -1,   -1,  309,   -1,   -1,   -1,  313, 
  314,   -1,   -1,  317,   -1,   -1,  320,  321,   -1,  323,
   -1,  325,   -1,  327,   -1,  329,   -1,   -1,    0,  333, 
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,  262,   -1,   -1,  265,  266,  267,   -1,   -1,   -1,
  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,  280,
   -1,  282,   -1,  284,  285,  286,  287,  288,  289,  290, 
  291,  292,   -1,  294,  295,  296,   -1,  298,   -1,   -1,
  301,  302,  303,  304,  305,   -1,   -1,   -1,  309,   -1, 
   -1,   -1,  313,  314,   -1,   -1,  317,   -1,   -1,  320, 
  321,   -1,  323,   -1,  325,   -1,  327,   -1,  329,   -1,
   -1,    0,  333,  334,  335,  336,  337,  338,  339,  340, 
  341,  342,  343,  344,  262,   -1,   -1,  265,  266,  267,
   -1,   -1,   -1,  271,  272,   -1,   -1,  275,   -1,   -1,
  278,  279,  280,   -1,  282,   -1,  284,  285,  286,  287,
  288,  289,  290,  291,  292,   -1,  294,  295,  296,   -1, 
  298,   -1,   -1,  301,  302,  303,  304,  305,   -1,   -1,
   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1,  317, 
   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1,  327, 
   -1,  329,   -1,   -1,    0,  333,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,  262,   -1,   -1, 
  265,  266,  267,   -1,   -1,   -1,  271,  272,   -1,   -1,
  275,   -1,   -1,  278,  279,  280,   -1,  282,   -1,  284,
  285,  286,  287,  288,  289,  290,  291,  292,   -1,  294,
  295,  296,   -1,  298,   -1,   -1,  301,  302,  303,  304, 
  305,   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,
   -1,   -1,  317,   -1,    0,  320,  321,   -1,  323,   -1, 
  325,   -1,  327,   -1,  329,   -1,   -1,   -1,  333,  334, 
  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
  262,   -1,   -1,  265,  266,  267,   -1,   -1,   -1,  271, 
  272,   -1,   -1,  275,   -1,   -1,  278,  279,  280,   -1,
  282,   -1,  284,  285,  286,  287,  288,  289,  290,  291,
  292,   -1,  294,  295,  296,   -1,  298,   -1,   -1,  301,
  302,  303,  304,  305,    0,   -1,   -1,  309,   -1,   -1, 
   -1,  313,  314,   -1,   -1,  317,   -1,   -1,  320,  321,
   -1,  323,   -1,  325,   -1,  327,   -1,  329,   -1,   -1, 
   -1,  333,  334,  335,   -1,   -1,   -1,  339,  340,  341, 
  342,  343,  344,  262,   -1,   -1,  265,  266,  267,   -1,
   -1,   -1,  271,  272,   -1,   -1,  275,   -1,   -1,  278, 
  279,  280,   -1,  282,   -1,  284,  285,  286,  287,  288,
  289,  290,  291,  292,    0,  294,  295,  296,   -1,  298,
   -1,   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,
  309,   -1,   -1,   -1,  313,  314,   -1,   -1,  317,   -1, 
   -1,  320,  321,   -1,  323,   -1,  325,   -1,  327,   -1,
  329,   -1,   -1,   -1,  333,  334,  335,   -1,   -1,   -1, 
  339,  340,  341,  342,  343,  344,  262,   -1,   -1,  265, 
  266,  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,
   -1,   -1,  278,  279,  280,   -1,  282,   -1,  284,  285, 
  286,  287,  288,  289,  290,  291,  292,    0,  294,  295,
  296,   -1,  298,   -1,   -1,  301,  302,  303,  304,  305,
   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,
   -1,  317,   -1,   -1,  320,  321,   -1,  323,   -1,  325, 
   -1,  327,   -1,  329,   -1,   -1,  262,  333,   -1,  265,
  266,  267,   -1,  339,  340,  271,  272,   -1,   -1,  275, 
   -1,   -1,  278,  279,  280,   -1,  282,   -1,  284,  285, 
  286,  287,  288,  289,  290,  291,  292,    0,  294,  295,
  296,   -1,  298,   -1,   -1,  301,  302,  303,  304,  305, 
   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,
   -1,  317,   -1,   -1,  320,  321,   -1,  323,   -1,  325,
   -1,  327,   -1,  329,   -1,   -1,  262,  333,   -1,  265,
  266,  267,   -1,  339,  340,  271,  272,   -1,   -1,  275, 
   -1,   -1,  278,  279,  280,   -1,  282,   -1,  284,  285,
  286,  287,  288,  289,  290,  291,  292,    0,  294,  295, 
  296,   -1,  298,   -1,   -1,  301,  302,  303,  304,  305, 
   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,
   -1,  317,   -1,   -1,  320,  321,   -1,  323,   -1,  325, 
   -1,  327,   -1,  329,   -1,   -1,  262,  333,   -1,  265,
  266,  267,   -1,  339,  340,  271,  272,   -1,   -1,  275,
   -1,   -1,  278,  279,  280,   -1,  282,   -1,  284,  285,
  286,  287,  288,  289,  290,  291,  292,    0,  294,  295, 
  296,   -1,  298,   -1,   -1,  301,  302,  303,  304,  305,
   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1, 
   -1,  317,   -1,   -1,  320,  321,   -1,  323,   -1,  325, 
   -1,  327,   -1,  329,   -1,   -1,   -1,  333,   -1,   -1,
   -1,   -1,   -1,  339,  340,   -1,   -1,   -1,   -1,  262, 
   -1,   -1,  265,  266,  267,   -1,   -1,   -1,  271,  272,
   -1,   -1,  275,   -1,   -1,  278,  279,  280,   -1,  282,
    0,  284,  285,  286,  287,  288,  289,  290,  291,  292,
   -1,  294,  295,  296,   -1,  298,   -1,   -1,  301,  302, 
  303,  304,  305,   -1,   -1,   -1,  309,   -1,   -1,   -1,
  313,  314,   -1,   -1,  317,   -1,   -1,  320,  321,   -1, 
  323,   -1,  325,   -1,   -1,   -1,  329,   -1,   -1,  262, 
  333,   -1,  265,  266,  267,   -1,   -1,   -1,  271,  272,
   -1,   -1,  275,   -1,   -1,  278,  279,  280,   -1,  282, 
    0,  284,  285,  286,  287,  288,  289,  290,  291,  292,
   -1,  294,  295,  296,   -1,  298,   -1,   -1,  301,  302,
  303,  304,  305,   -1,   -1,   -1,  309,   -1,   -1,   -1,
  313,  314,   -1,   -1,  317,   -1,   -1,  320,  321,   -1, 
  323,   -1,  325,   -1,   -1,   -1,  329,   -1,   -1,  262,
  333,   -1,  265,  266,  267,   -1,   -1,   -1,  271,  272, 
   -1,   -1,  275,   -1,   -1,  278,  279,  280,   -1,  282, 
    0,  284,  285,  286,  287,  288,  289,  290,  291,  292,
   -1,  294,  295,  296,   -1,  298,   -1,   -1,  301,  302, 
  303,  304,  305,   -1,   -1,   -1,  309,   -1,   -1,   -1,
  313,  314,   -1,   -1,  317,   -1,   -1,  320,  321,   -1,
  323,   -1,  325,   -1,   -1,   -1,  329,   -1,   -1,  262,
  333,   -1,  265,  266,  267,   -1,   -1,   -1,  271,  272, 
   -1,   -1,  275,   -1,   -1,  278,  279,  280,   -1,  282,
    0,  284,  285,  286,  287,  288,  289,  290,  291,  292, 
   -1,  294,  295,  296,   -1,  298,   -1,   -1,  301,  302, 
  303,  304,  305,   -1,   -1,   -1,  309,   -1,   -1,   -1,
  313,  314,   -1,   -1,  317,   -1,   -1,  320,  321,   -1, 
  323,   -1,  325,   -1,   -1,   -1,  329,   -1,   -1,   -1,
  333,   -1,  262,   -1,   -1,  265,  266,  267,   -1,   -1,
   -1,  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,
  280,   -1,  282,    0,  284,  285,  286,  287,  288,  289, 
   -1,  291,  292,   -1,  294,  295,  296,   -1,  298,   -1,
   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,  309, 
   -1,   -1,   -1,  313,  314,   -1,   -1,  317,   -1,   -1, 
  320,  321,   -1,  323,   -1,  325,   -1,   -1,   -1,  329,
   -1,   -1,  262,  333,   -1,  265,  266,  267,   -1,   -1, 
   -1,  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,
  280,   -1,  282,    0,  284,  285,  286,  287,  288,  289,
   -1,  291,  292,   -1,  294,  295,  296,   -1,  298,   -1,
   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,  309, 
   -1,   -1,   -1,  313,  314,   -1,   -1,  317,   -1,   -1,
  320,  321,   -1,  323,   -1,  325,   -1,   -1,   -1,  329, 
   -1,   -1,  262,  333,   -1,  265,  266,  267,   -1,   -1, 
   -1,  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,
  280,   -1,  282,    0,  284,  285,  286,  287,  288,  289, 
   -1,  291,  292,   -1,  294,  295,  296,   -1,  298,   -1,
   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,  309,
   -1,   -1,   -1,  313,  314,   -1,   -1,   -1,   -1,   -1,
  320,  321,   -1,  323,   -1,  325,   -1,   -1,   -1,  329, 
   -1,   -1,  262,  333,   -1,  265,  266,  267,   -1,   -1,
   -1,  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279, 
   -1,   -1,  282,    0,  284,  285,  286,  287,  288,  289, 
   -1,  291,  292,   -1,  294,  295,  296,   -1,  298,   -1,
   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,  309, 
   -1,   -1,   -1,  313,  314,   -1,   -1,   -1,   -1,   -1,
  320,  321,   -1,  323,   -1,  325,   -1,   -1,   -1,  329,
   -1,   -1,   -1,  333,   -1,  262,   -1,   -1,  265,  266,
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,   -1, 
   -1,  278,  279,    0,   -1,  282,   -1,  284,  285,  286,
  287,  288,  289,   -1,  291,  292,   -1,  294,  295,  296, 
   -1,  298,   -1,   -1,  301,  302,  303,  304,   -1,   -1, 
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1,
   -1,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1, 
   -1,   -1,  329,   -1,   -1,  262,  333,   -1,  265,  266,
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,   -1,
   -1,  278,  279,    0,   -1,  282,   -1,  284,  285,  286,
  287,  288,  289,   -1,  291,  292,   -1,  294,  295,  296, 
   -1,  298,   -1,   -1,  301,  302,  303,  304,   -1,   -1,
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1, 
   -1,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1, 
   -1,   -1,  329,   -1,   -1,  262,  333,   -1,  265,  266,
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,    0, 
   -1,  278,  279,   -1,   -1,  282,   -1,  284,  285,  286,
  287,   -1,  289,   -1,  291,  292,   -1,  294,   -1,  296,
   -1,  298,   -1,   -1,  301,  302,  303,  304,   -1,   -1,
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1, 
   -1,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1,
   -1,   -1,  329,   -1,   -1,  262,  333,   -1,  265,  266, 
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,    0, 
   -1,  278,  279,   -1,   -1,  282,   -1,  284,  285,  286,
  287,   -1,  289,   -1,  291,  292,   -1,  294,   -1,  296, 
   -1,  298,   -1,   -1,  301,  302,  303,  304,   -1,   -1,
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1,
   -1,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1,
   -1,   -1,  329,   -1,   -1,  262,  333,   -1,  265,  266, 
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,    0,
   -1,  278,  279,   -1,   -1,   -1,   -1,  284,  285,  286, 
  287,   -1,  289,   -1,  291,  292,   -1,  294,   -1,  296, 
   -1,  298,   -1,   -1,  301,  302,  303,  304,   -1,   -1,
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1, 
   -1,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1,
   -1,   -1,  329,   -1,   -1,  262,  333,   -1,  265,  266,
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,    0,
   -1,  278,  279,   -1,   -1,   -1,   -1,  284,  285,  286, 
  287,   -1,  289,   -1,  291,  292,   -1,  294,   -1,  296,
   -1,  298,   -1,   -1,  301,  302,  303,  304,   -1,   -1, 
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1, 
   -1,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1,
   -1,  262,  329,   -1,  265,  266,  333,   -1,   -1,   -1, 
  271,  272,   -1,   -1,  275,    0,   -1,  278,  279,   -1,
   -1,  282,   -1,  284,  285,  286,  287,   -1,  289,   -1,
   -1,  292,   -1,  294,   -1,  296,   -1,   -1,   -1,   -1,
  301,  302,  303,  304,   -1,   -1,   -1,   -1,  309,   -1, 
   -1,   -1,  313,  314,   -1,   -1,   -1,   -1,   -1,  320,
  321,   -1,  323,   -1,  325,    0,   -1,   -1,  329,   -1, 
   -1,  262,  333,   -1,  265,  266,   -1,   -1,   -1,   -1, 
  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,   -1,
   -1,  282,   -1,  284,  285,  286,  287,   -1,  289,   -1, 
   -1,  292,   -1,  294,   -1,  296,    0,   -1,   -1,   -1,
  301,  302,  303,  304,   -1,   -1,   -1,   -1,  309,   -1,
   -1,   -1,  313,  314,   -1,   -1,   -1,   -1,   -1,  320,
  321,   -1,  323,   -1,  325,   -1,    0,   -1,  329,   -1, 
   -1,  262,  333,   -1,  265,  266,   -1,   -1,   -1,   -1,
  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,   -1, 
   -1,  282,   -1,  284,  285,  286,  287,   -1,  289,   -1, 
   -1,  292,   -1,  294,   -1,  296,   -1,   -1,   -1,   -1,
  301,  302,  303,  304,   -1,   -1,   -1,   -1,  309,   -1, 
   -1,   -1,  313,  314,   -1,   -1,   -1,   -1,   -1,  320,
  321,   -1,  323,   -1,  325,   -1,   -1,   -1,  329,   -1,
   -1,  262,  333,   -1,  265,  266,   -1,   -1,   -1,   -1,
  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,   -1, 
   -1,  282,   -1,  284,  285,  286,  287,   -1,  289,   -1,
   -1,  292,   -1,  294,   -1,  296,   -1,   -1,   -1,   -1, 
  301,  302,  303,  304,   -1,   -1,   -1,   -1,  309,   -1, 
   -1,   -1,  313,  314,   -1,   -1,   -1,   -1,   -1,  320,
  321,   -1,  323,   -1,  325,   -1,   -1,   -1,  329,   -1, 
  265,  266,  333,   -1,   -1,   -1,  271,  272,   -1,   -1,
  275,   -1,   -1,  278,  279,   -1,   -1,  282,   -1,  284,
  285,  286,  287,   -1,  289,   -1,   -1,  292,   -1,  294,
   -1,  296,   -1,   -1,   -1,   -1,  301,  302,  303,  304, 
   -1,   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,
   -1,   -1,   -1,   -1,   -1,  320,  321,  272,  323,   -1, 
  325,   -1,   -1,   -1,  329,   -1,   -1,   -1,  333,  284, 
  285,  286,  287,   -1,  289,   -1,   -1,  292,   -1,  294,
   -1,   -1,   -1,   -1,   -1,   -1,  301,   -1,  303,  304, 
   -1,   -1,   -1,   -1,  309,   -1,   -1,   -1,  272,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  321,   -1,  323,   -1,
  325,  285,  286,  287,  329,  289,   -1,   -1,  292,   -1,
  294,   -1,   -1,   -1,   -1,   -1,   -1,  301,  272,  303, 
  304,   -1,   -1,   -1,   -1,  309,   -1,   -1,   -1,   -1,
   -1,  285,  286,  287,   -1,  289,   -1,  321,  292,  323, 
  294,  325,   -1,   -1,   -1,  329,   -1,   -1,   -1,  303, 
  304,   -1,   -1,   -1,   -1,  309,   -1,   -1,   -1,   -1,
  257,  258,  259,  260,  261,   -1,  263,  321,   -1,  323, 
   -1,  325,  269,  270,   -1,  329,  273,  274,   -1,  276,
  277,   -1,   -1,   -1,  281,   -1,  283,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  293,   -1,   -1,   -1,
  297,  298,   -1,  300,   -1,   -1,   -1,   -1,   -1,   -1, 
  307,   -1,   -1,  310,   -1,  312,   -1,   -1,  315,  316,
   -1,   -1,  319,   -1,   -1,   -1,   -1,  257,  258,  259, 
  260,  328,   -1,  263,   -1,  332,   -1,  334,  335,  269, 
  270,   -1,   -1,  273,  274,   -1,   -1,  277,   -1,  346,
  347,  281,   -1,  283,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,  293,   -1,   -1,   -1,  297,  298,   -1,
  300,   -1,   -1,   -1,   -1,   -1,   -1,  307,   -1,  326,
  310,  311,  312,   -1,   -1,   -1,  316,  334,  335,  336,
  337,  338,   -1,   -1,  341,  342,  343,  344,  328,   -1, 
   -1,   -1,  332,   -1,  334,  335,  257,  258,  259,  260,
  261,   -1,  263,   -1,   -1,   -1,  346,  347,  269,  270, 
   -1,   -1,  273,  274,   -1,   -1,  277,   -1,   -1,   -1, 
  281,   -1,  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  293,   -1,   -1,   -1,  297,  298,   -1,  300, 
   -1,   -1,   -1,   -1,   -1,   -1,  307,   -1,   -1,  310,
   -1,  312,   -1,   -1,   -1,  316,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  257,  258,  259,  260,  328,   -1,  263,
   -1,  332,   -1,  334,  335,  269,  270,   -1,   -1,  273, 
  274,   -1,   -1,  277,   -1,  346,  347,  281,   -1,  283,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  293, 
   -1,   -1,   -1,  297,  298,   -1,  300,   -1,   -1,   -1, 
   -1,   -1,   -1,  307,   -1,   -1,  310,  311,  312,   -1,
   -1,   -1,  316,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  257,  258,  259,  260,  328,   -1,  263,   -1,  332,   -1,
  334,  335,  269,  270,   -1,   -1,  273,  274,   -1,   -1,
  277,   -1,  346,  347,  281,   -1,  283,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  293,   -1,   -1,   -1, 
  297,  298,   -1,  300,   -1,   -1,   -1,   -1,   -1,  306,
  307,   -1,   -1,  310,   -1,  312,   -1,   -1,   -1,  316, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259, 
  260,  328,   -1,  263,   -1,  332,   -1,  334,  335,  269,
  270,   -1,   -1,  273,  274,   -1,   -1,  277,   -1,  346, 
  347,  281,   -1,  283,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  293,   -1,   -1,   -1,  297,  298,   -1,
  300,   -1,   -1,   -1,   -1,   -1,  306,  307,   -1,   -1,
  310,   -1,  312,   -1,   -1,   -1,  316,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,  257,  258,  259,  260,  328,   -1,
  263,   -1,  332,   -1,  334,  335,  269,  270,   -1,   -1, 
  273,  274,   -1,   -1,  277,   -1,  346,  347,  281,   -1, 
  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  293,   -1,   -1,   -1,  297,  298,   -1,  300,   -1,   -1, 
   -1,   -1,   -1,  306,  307,   -1,   -1,  310,   -1,  312,
   -1,   -1,   -1,  316,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  257,  258,  259,  260,  328,   -1,  263,   -1,  332,
   -1,  334,  335,  269,  270,   -1,   -1,  273,  274,   -1, 
   -1,  277,   -1,  346,  347,  281,   -1,  283,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  293,   -1,   -1, 
   -1,  297,  298,   -1,  300,   -1,   -1,   -1,   -1,   -1, 
   -1,  307,   -1,   -1,  310,  311,  312,   -1,   -1,   -1,
  316,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258, 
  259,  260,  328,   -1,  263,   -1,  332,   -1,  334,  335,
  269,  270,   -1,   -1,  273,  274,   -1,   -1,  277,   -1,
  346,  347,  281,   -1,  283,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  293,   -1,   -1,   -1,  297,  298, 
   -1,  300,   -1,   -1,   -1,   -1,   -1,   -1,  307,   -1,
   -1,  310,  311,  312,   -1,   -1,   -1,  316,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,  328, 
   -1,  263,   -1,  332,   -1,  334,  335,  269,  270,   -1,
   -1,  273,  274,   -1,   -1,  277,   -1,  346,  347,  281, 
   -1,  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  293,   -1,   -1,   -1,  297,  298,   -1,  300,   -1,
   -1,   -1,   -1,   -1,   -1,  307,   -1,   -1,  310,   -1,
  312,   -1,   -1,  315,  316,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  257,  258,  259,  260,  328,   -1,  263,   -1,
  332,   -1,  334,  335,  269,  270,   -1,   -1,  273,  274, 
   -1,   -1,  277,   -1,  346,  347,  281,   -1,  283,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  293,   -1,
   -1,   -1,  297,  298,   -1,  300,   -1,   -1,   -1,   -1, 
   -1,   -1,  307,   -1,   -1,  310,   -1,  312,   -1,   -1,
   -1,  316,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
  258,  259,  260,  328,   -1,  263,   -1,  332,   -1,  334,
  335,  269,  270,   -1,   -1,  273,  274,   -1,   -1,  277, 
   -1,  346,  347,  281,   -1,  283,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  293,   -1,   -1,   -1,  297, 
  298,   -1,  300,   -1,   -1,   -1,   -1,   -1,   -1,  307, 
   -1,   -1,  310,   -1,  312,   -1,   -1,   -1,  316,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260, 
  328,   -1,  263,   -1,  332,   -1,  334,  335,  269,  270,
   -1,   -1,  273,  274,   -1,   -1,  277,   -1,  346,  347,
  281,   -1,  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  293,   -1,   -1,   -1,  297,  298,   -1,  300, 
   -1,   -1,   -1,   -1,   -1,   -1,  307,   -1,   -1,  310,
   -1,  312,   -1,   -1,   -1,  316,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,  257,  258,  259,  260,  328,   -1,  263, 
   -1,  332,   -1,  334,  335,  269,  270,   -1,   -1,  273,
  274,   -1,   -1,  277,   -1,  346,  347,  281,   -1,  283, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  293,
   -1,   -1,   -1,  297,  298,   -1,  300,   -1,   -1,   -1,
   -1,   -1,   -1,  307,   -1,   -1,  310,   -1,  312,   -1,
   -1,   -1,  316,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,  328,   -1,   -1,   -1,  332,   -1,
  334,  335,  262,   -1,   -1,   -1,  266,  267,   -1,   -1, 
   -1,  271,  346,  347,   -1,  275,   -1,   -1,   -1,   -1, 
  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,
  290,  291,   -1,   -1,   -1,  295,   -1,   -1,  298,   -1, 
   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,  262,   -1,
   -1,  265,   -1,  267,  334,  335,  336,  337,  338,  339, 
  340,  341,  342,  343,  344,   -1,  280,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  288,   -1,  290,  291,   -1,   -1, 
   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,   -1, 
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,  325,  326,  327,  262,   -1,   -1,   -1,   -1,  267,
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,   -1,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  288,   -1,  290,  291,   -1,   -1,   -1,  295,   -1,   -1, 
  298,   -1,   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317, 
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,  326,  327, 
  262,  329,   -1,   -1,   -1,  267,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  280,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,  290,  291,
   -1,   -1,   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,
  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,  325,  326,  327,  262,   -1,   -1,   -1,
   -1,  267,  334,  335,  336,  337,  338,  339,  340,  341, 
  342,  343,  344,   -1,  280,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  288,   -1,  290,  291,   -1,   -1,   -1,  295,
   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,  305, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  314,   -1,
   -1,  317,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  326,  327,  262,   -1,   -1,  265,   -1,  267,  334,  335,
  336,  337,  338,  339,  340,  341,  342,  343,  344,   -1, 
  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,
  290,  291,   -1,   -1,   -1,  295,   -1,   -1,  298,   -1, 
   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,  262,   -1, 
   -1,   -1,   -1,  267,  334,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,   -1,  280,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  288,   -1,  290,  291,   -1,   -1,
   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,   -1, 
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,   -1,  323, 
   -1,   -1,  326,  327,  262,   -1,   -1,   -1,   -1,  267, 
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,   -1,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  288,   -1,  290,  291,   -1,   -1,   -1,  295,   -1,   -1,
  298,   -1,   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,  326,  327, 
  262,   -1,   -1,   -1,   -1,  267,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  280,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,  290,  291, 
   -1,   -1,   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,
  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  326,  327,  262,  329,   -1,  265,
   -1,  267,  334,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,   -1,  280,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  288,   -1,  290,  291,   -1,   -1,   -1,  295,
   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,  305, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,  317,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  326,  327,  262,   -1,   -1,  265,   -1,  267,  334,  335, 
  336,  337,  338,  339,  340,  341,  342,  343,  344,   -1,
  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,
  290,  291,   -1,   -1,   -1,  295,   -1,   -1,  298,   -1,
   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,  262,   -1, 
   -1,   -1,   -1,  267,  334,  335,  336,  337,  338,  339, 
  340,  341,  342,  343,  344,   -1,  280,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  288,   -1,  290,  291,   -1,   -1, 
   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,   -1,  323,
   -1,   -1,  326,  327,  262,   -1,   -1,   -1,   -1,  267, 
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,   -1,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  288,   -1,  290,  291,   -1,   -1,   -1,  295,   -1,   -1, 
  298,   -1,   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  314,   -1,   -1,  317, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,
  262,   -1,   -1,   -1,   -1,  267,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  280,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,  290,  291, 
   -1,   -1,   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,
  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,  326,  327,  262,  329,   -1,   -1,
   -1,  267,  334,  335,  336,  337,  338,  339,  340,  341, 
  342,  343,  344,   -1,  280,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  288,   -1,  290,  291,   -1,   -1,   -1,  295,
   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,  305,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,  317,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,
  326,  327,  262,   -1,   -1,   -1,   -1,  267,  334,  335, 
  336,  337,  338,  339,  340,  341,  342,  343,  344,   -1, 
  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,
  290,  291,   -1,   -1,   -1,  295,   -1,   -1,  298,   -1, 
   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,  262,  329,
   -1,   -1,   -1,  267,  334,  335,  336,  337,  338,  339, 
  340,  341,  342,  343,  344,   -1,  280,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  288,   -1,  290,  291,   -1,   -1, 
   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,   -1, 
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  326,  327,  262,  329,   -1,   -1,   -1,  267,
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,   -1,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  288,   -1,  290,  291,   -1,   -1,   -1,  295,   -1,   -1, 
  298,   -1,   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  326,  327, 
  262,  329,   -1,   -1,   -1,  267,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  280,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,  290,  291,
   -1,   -1,   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,
  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,  326,  327,  262,   -1,   -1,   -1,
   -1,  267,  334,  335,  336,  337,  338,  339,  340,  341, 
  342,  343,  344,   -1,  280,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  288,   -1,  290,  291,   -1,   -1,   -1,  295,
   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,  305, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  317,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  326,  327,  262,   -1,   -1,   -1,   -1,  267,  334,  335,
  336,  337,  338,  339,  340,  341,  342,  343,  344,   -1, 
  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,
  290,  291,   -1,   -1,   -1,  295,   -1,   -1,  298,   -1, 
   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,  262,   -1, 
   -1,   -1,   -1,  267,  334,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,   -1,  280,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  288,   -1,  290,  291,   -1,   -1,
   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,   -1, 
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  326,  327,  262,   -1,   -1,   -1,   -1,  267, 
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,   -1,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  288,   -1,  290,  291,   -1,   -1,   -1,  295,   -1,   -1,
  298,   -1,   -1,   -1,   -1,   -1,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  326,  327, 
   -1,   -1,   -1,   -1,  267,   -1,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,  280,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,  288,   -1,  290,  291,   -1, 
   -1,   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,
   -1,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  326,  327,   -1,   -1,   -1,   -1,  267,
   -1,  334,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  344,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  288,   -1,  290,  291,   -1,   -1,   -1,  295,   -1,   -1,
  298,   -1,   -1,   -1,   -1,   -1,   -1,  305,   -1,   -1, 
  280,   -1,  282,   -1,   -1,   -1,   -1,   -1,   -1,  317, 
  290,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,
   -1,   -1,   -1,   -1,   -1,  305,  334,  335,  336,  337, 
  338,  339,  340,  341,  342,  343,  344,  317,   -1,   -1,
  280,   -1,  282,   -1,   -1,   -1,  326,  327,   -1,   -1,
  290,   -1,   -1,   -1,  334,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,  305,   -1,   -1,  280,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,  290,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,   -1,   -1, 
   -1,   -1,   -1,  305,  334,  335,  336,  337,  338,  339, 
  340,  341,  342,  343,  344,  317,  280,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  326,  327,  290,   -1,   -1,   -1, 
   -1,   -1,  334,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  317,  290,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  326,  327,   -1,   -1,   -1,   -1,   -1,   -1, 
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,  317,  290,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  326,  327,   -1,   -1,   -1,   -1,   -1,   -1,  334,  335, 
  336,  337,  338,  339,  340,  341,  342,  343,  344,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  326,  327, 
   -1,   -1,   -1,   -1,   -1,   -1,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,  326,  327,   -1,
   -1,   -1,   -1,   -1,   -1,  334,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344, 
};
static short YYFINAL=2; 
static short YYMAXTOKEN=349; 
static String [] yyname = {
"end-of-file",null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,"IDENTIFIER","ESCAPED_IDENTIFIER","PARAMETER","LITERAL","ALL", 
"AND","ANYELEMENT","APPLY","AS","ASC","BETWEEN","BY","CASE","CAST","COLLATE",
"CROSS","CREATEREF","DEREF","DESC","DISTINCT","ELEMENT","ELSE","END","EXCEPT", 
"EXISTS","ESCAPE","FLATTEN","FROM","FULL","GROUP","HAVING","IN","INNER",
"INTERSECT","IS","JOIN","KEY","LEFT","LIKE","LIMIT","MULTISET","NOT","OF",
"OFTYPE","ON","OR","ORDER","OUTER","OVERLAPS","ONLY","REF","RELATIONSHIP",
"RIGHT","ROW","SELECT","SET","SKIP","THEN","TOP","TREAT","UNION","USING", 
"VALUE","WHEN","WHERE","WITH","COMMA","COLON","SCOLON","DOT","EQUAL","L_PAREN",
"R_PAREN","L_BRACE","R_BRACE","L_CURLY","R_CURLY","PLUS","MINUS","STAR", 
"FSLASH","PERCENT","OP_EQ","OP_NEQ","OP_LT","OP_LE","OP_GT","OP_GE","QMARK", 
"NAVIGATE","NULL","UNARYPLUS","UNARYMINUS",
}; 
static String [] yyrule = {
"$accept : commandStart",
"commandStart :",
"commandStart : command", 
"command : optNamespaceDeclList generalExpr",
"optNamespaceDeclList :", 
"optNamespaceDeclList : namespaceDeclList", 
"namespaceDeclList : namespaceDecl",
"namespaceDeclList : namespaceDeclList namespaceDecl", 
"namespaceDecl : USING identifier SCOLON",
"namespaceDecl : USING dotExpr SCOLON",
"namespaceDecl : USING assignExpr SCOLON",
"generalExpr : queryExpr optSemiColon", 
"generalExpr : Expr optSemiColon",
"optSemiColon :", 
"optSemiColon : SCOLON", 
"queryExpr : selectClause fromClause optWhereClause optGroupByClause optHavingClause optOrderByClause",
"$$1 :", 
"selectClause : SELECT $$1 optAllOrDistinct optTopClause aliasExprList",
"$$2 :",
"selectClause : SELECT $$2 VALUE optAllOrDistinct optTopClause aliasExprList",
"optAllOrDistinct :", 
"optAllOrDistinct : ALL",
"optAllOrDistinct : DISTINCT", 
"optTopClause :", 
"optTopClause : TOP L_PAREN Expr R_PAREN",
"fromClause : FROM fromClauseList", 
"fromClauseList : fromClauseItem",
"fromClauseList : fromClauseList COMMA fromClauseItem",
"fromClauseItem : aliasExpr",
"fromClauseItem : L_PAREN joinClauseItem R_PAREN", 
"fromClauseItem : joinClauseItem",
"fromClauseItem : L_PAREN applyClauseItem R_PAREN", 
"fromClauseItem : applyClauseItem", 
"joinClauseItem : fromClauseItem joinType fromClauseItem",
"joinClauseItem : fromClauseItem joinType fromClauseItem ON Expr", 
"applyClauseItem : fromClauseItem applyType fromClauseItem",
"joinType : CROSS JOIN",
"joinType : LEFT OUTER JOIN",
"joinType : LEFT JOIN", 
"joinType : RIGHT OUTER JOIN",
"joinType : RIGHT JOIN", 
"joinType : JOIN", 
"joinType : INNER JOIN",
"joinType : FULL JOIN", 
"joinType : FULL OUTER JOIN",
"joinType : FULL OUTER",
"applyType : CROSS APPLY",
"applyType : OUTER APPLY", 
"optWhereClause :",
"optWhereClause : whereClause", 
"whereClause : WHERE Expr", 
"optGroupByClause :",
"optGroupByClause : groupByClause", 
"groupByClause : GROUP BY aliasExprList",
"optHavingClause :",
"optHavingClause : havingClause",
"$$3 :", 
"havingClause : HAVING $$3 Expr",
"optOrderByClause :", 
"optOrderByClause : orderByClause", 
"$$4 :",
"orderByClause : ORDER BY $$4 orderByItemList optSkipSubClause optLimitSubClause", 
"optSkipSubClause :",
"optSkipSubClause : SKIP Expr",
"optLimitSubClause :",
"optLimitSubClause : LIMIT Expr", 
"orderByItemList : orderByClauseItem",
"orderByItemList : orderByItemList COMMA orderByClauseItem", 
"orderByClauseItem : Expr optAscDesc", 
"orderByClauseItem : Expr COLLATE simpleIdentifier optAscDesc",
"optAscDesc :", 
"optAscDesc : ASC",
"optAscDesc : DESC",
"exprList : Expr",
"exprList : exprList COMMA Expr", 
"Expr : parenExpr",
"Expr : PARAMETER", 
"Expr : identifier", 
"Expr : builtInExpr",
"Expr : dotExpr", 
"Expr : refExpr",
"Expr : createRefExpr",
"Expr : keyExpr",
"Expr : methodExpr", 
"Expr : ctorExpr",
"Expr : derefExpr", 
"Expr : navigateExpr", 
"Expr : literalExpr",
"parenExpr : L_PAREN generalExpr R_PAREN", 
"betweenPrefix : Expr BETWEEN Expr",
"notBetweenPrefix : Expr NOT BETWEEN Expr",
"builtInExpr : Expr PLUS Expr",
"builtInExpr : Expr MINUS Expr", 
"builtInExpr : Expr STAR Expr",
"builtInExpr : Expr FSLASH Expr", 
"builtInExpr : Expr PERCENT Expr", 
"builtInExpr : MINUS Expr",
"builtInExpr : PLUS Expr", 
"builtInExpr : Expr OP_NEQ Expr",
"builtInExpr : Expr OP_GT Expr",
"builtInExpr : Expr OP_GE Expr",
"builtInExpr : Expr OP_LT Expr", 
"builtInExpr : Expr OP_LE Expr",
"builtInExpr : Expr INTERSECT Expr", 
"builtInExpr : Expr UNION Expr", 
"builtInExpr : Expr UNION ALL Expr",
"builtInExpr : Expr EXCEPT Expr", 
"builtInExpr : Expr OVERLAPS Expr",
"builtInExpr : Expr IN Expr",
"builtInExpr : Expr NOT IN Expr",
"builtInExpr : EXISTS L_PAREN generalExpr R_PAREN", 
"builtInExpr : ANYELEMENT L_PAREN generalExpr R_PAREN",
"builtInExpr : ELEMENT L_PAREN generalExpr R_PAREN", 
"builtInExpr : FLATTEN L_PAREN generalExpr R_PAREN", 
"builtInExpr : SET L_PAREN generalExpr R_PAREN",
"builtInExpr : Expr IS NULL", 
"builtInExpr : Expr IS NOT NULL",
"builtInExpr : searchedCaseExpr",
"builtInExpr : TREAT L_PAREN Expr AS typeIdentifier R_PAREN",
"builtInExpr : CAST L_PAREN Expr AS typeIdentifier R_PAREN", 
"builtInExpr : OFTYPE L_PAREN Expr COMMA typeIdentifier R_PAREN",
"builtInExpr : OFTYPE L_PAREN Expr COMMA ONLY typeIdentifier R_PAREN", 
"builtInExpr : Expr IS OF L_PAREN typeIdentifier R_PAREN", 
"builtInExpr : Expr IS NOT OF L_PAREN typeIdentifier R_PAREN",
"builtInExpr : Expr IS OF L_PAREN ONLY typeIdentifier R_PAREN", 
"builtInExpr : Expr IS NOT OF L_PAREN ONLY typeIdentifier R_PAREN",
"builtInExpr : Expr LIKE Expr",
"builtInExpr : Expr NOT LIKE Expr",
"builtInExpr : Expr LIKE Expr ESCAPE Expr", 
"builtInExpr : Expr NOT LIKE Expr ESCAPE Expr",
"builtInExpr : betweenPrefix AND Expr", 
"builtInExpr : notBetweenPrefix AND Expr", 
"builtInExpr : Expr OR Expr",
"builtInExpr : NOT Expr", 
"builtInExpr : Expr AND Expr",
"builtInExpr : equalsOrAssignExpr",
"equalsOrAssignExpr : assignExpr",
"equalsOrAssignExpr : equalsExpr", 
"assignExpr : Expr EQUAL Expr",
"equalsExpr : Expr OP_EQ Expr", 
"aliasExpr : Expr AS identifier", 
"aliasExpr : Expr",
"aliasExprList : aliasExpr", 
"aliasExprList : aliasExprList COMMA aliasExpr",
"searchedCaseExpr : CASE whenThenExprList END",
"searchedCaseExpr : CASE whenThenExprList caseElseExpr END",
"whenThenExprList : WHEN Expr THEN Expr", 
"whenThenExprList : whenThenExprList WHEN Expr THEN Expr",
"caseElseExpr : ELSE Expr", 
"ctorExpr : ROW L_PAREN aliasExprList R_PAREN", 
"ctorExpr : MULTISET L_PAREN exprList R_PAREN",
"ctorExpr : L_CURLY exprList R_CURLY", 
"dotExpr : Expr DOT identifier",
"refExpr : REF L_PAREN Expr R_PAREN",
"derefExpr : DEREF parenExpr",
"createRefExpr : CREATEREF L_PAREN Expr COMMA Expr R_PAREN", 
"createRefExpr : CREATEREF L_PAREN Expr COMMA Expr COMMA typeIdentifier R_PAREN",
"keyExpr : KEY parenExpr", 
"methodExpr : dotExpr L_PAREN R_PAREN", 
"methodExpr : dotExpr L_PAREN optAllOrDistinct exprList R_PAREN optWithRelationship",
"methodExpr : dotExpr L_PAREN optAllOrDistinct queryExpr R_PAREN optWithRelationship", 
"methodExpr : identifier L_PAREN R_PAREN",
"methodExpr : identifier L_PAREN optAllOrDistinct exprList R_PAREN optWithRelationship",
"methodExpr : identifier L_PAREN optAllOrDistinct queryExpr R_PAREN optWithRelationship",
"navigateExpr : NAVIGATE L_PAREN Expr COMMA dotExpr R_PAREN", 
"navigateExpr : NAVIGATE L_PAREN Expr COMMA identifier R_PAREN",
"navigateExpr : NAVIGATE L_PAREN Expr COMMA dotExpr COMMA identifier R_PAREN", 
"navigateExpr : NAVIGATE L_PAREN Expr COMMA identifier COMMA identifier R_PAREN", 
"navigateExpr : NAVIGATE L_PAREN Expr COMMA dotExpr COMMA identifier COMMA identifier R_PAREN",
"navigateExpr : NAVIGATE L_PAREN Expr COMMA identifier COMMA identifier COMMA identifier R_PAREN", 
"optWithRelationship :",
"optWithRelationship : relationshipList",
"relationshipList : WITH relationshipExpr",
"relationshipList : relationshipList relationshipExpr", 
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA dotExpr R_PAREN",
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA identifier R_PAREN", 
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA dotExpr COMMA identifier R_PAREN", 
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA identifier COMMA identifier R_PAREN",
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA dotExpr COMMA identifier COMMA identifier R_PAREN", 
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA identifier COMMA identifier COMMA identifier R_PAREN",
"typeIdentifier : identifier",
"typeIdentifier : dotExpr",
"typeIdentifier : identifier ESCAPED_IDENTIFIER", 
"typeIdentifier : dotExpr ESCAPED_IDENTIFIER",
"typeIdentifier : methodExpr", 
"identifier : ESCAPED_IDENTIFIER", 
"identifier : simpleIdentifier",
"simpleIdentifier : IDENTIFIER", 
"literalExpr : LITERAL",
"literalExpr : NULL",
};
 
//#line 1455 "CqlGrammar.y"
 
 

#pragma warning restore 414 
//###############################################################
// method: yylexdebug : check lexer state
//###############################################################
void yylexdebug(int state,int ch) 
{
String s=null; 
  if (ch < 0) ch=0; 
  if (ch <= YYMAXTOKEN) //check index bounds
     s = yyname[ch];    //now get it 
  if (s==null)
    s = "illegal-symbol";
  debug("state "+state+", reading "+ch+" ("+s+")");
} 

 
 
//###############################################################
// method: yyparse : parse input and execute indicated items 
//###############################################################
int yyparse()
{
    int yyn;       //next thing to do 
    int yym;       //
    int yystate;   //current parsing state from state table 
#if YYDEBUG 
    String yys;    //current token string
#endif 
    init_stacks();
    yynerrs = 0;
    yyerrflag = 0;
    yychar = (-1); 

    yystate = 0; 
 	 state_push(yystate); 

yyloop: 
#if YYDEBUG
    debug("yyloop");
#endif
	yyn = yydefred[yystate]; 
    if (yyn!=0) goto yyreduce;
#if YYDEBUG 
	debug("yyn:"+yyn+"  state:"+yystate+"  char:"+yychar); 
#endif
    if (yychar < 0) 
    {
        yychar = yylex();
		if (yychar < 0) yychar = 0;
    } 
 	yyn = yysindex[yystate];
    if ((yyn!=0) && (yyn += yychar) >= 0 && 
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 
    {
#if YYDEBUG 
        debug("state "+yystate+", shifting to state "+yytable[yyn]+"");
#endif
	     yystate = yytable[yyn];
 		 state_push(yystate); 
        val_push( yylval );
        yychar = (-1); 
        if (yyerrflag > 0)  --yyerrflag; 
        goto yyloop;
    } 
 	yyn = yyrindex[yystate];
    if ((yyn!=0) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    { 
        yyn = yytable[yyn];
#if YYDEBUG 
	     debug("reduce"); 
#endif
        goto yyreduce; 
    }
    if (yyerrflag!=0) goto yyinrecovery;
    yyerror("syntax error");
 
    ++yynerrs;
yyinrecovery: 
    if (yyerrflag < 3) 
    {
        yyerrflag = 3; 
        for (;;)
        {
            if (stateptr < 0)
            { 
                goto yyoverflow;
            } 
 			 yyn = yysindex[state_peek(0)]; 
            if ((yyn!=0) && (yyn += YYERRCODE) >= 0 &&
                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 
            {
                if (stateptr < 0)
                {
                    goto yyoverflow; 
                }
#if YYDEBUG 
                debug("state "+state_peek(0)+", error recovery shifting to state "+yytable[yyn]+" "); 
#endif
                yystate = yytable[yyn]; 
        		 state_push(yystate);
                val_push( yylval );
                goto yyloop;
            } 
            else
            { 
                if (stateptr < 0) 
                {
                    goto yyoverflow; 
                }
#if YYDEBUG
                debug("error recovery discarding state "+state_peek(0)+" ");
#endif 
        		 state_pop();
                val_pop(); 
            } 
        }
    } 
    else
    {
        if (yychar == 0) goto yyabort;
#if YYDEBUG 
        if (yydebug)
        { 
            yys = null; 
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (yys == null) yys = "illegal-symbol"; 
            debug("state "+yystate+", error recovery discards token "+yychar+" ("+yys+")");
        }
#endif
        yychar = (-1); 
        goto yyloop;
    } 
yyreduce: 
    yym = yylen[yyn];
#if YYDEBUG 
      debug("state "+yystate+", reducing "+yym+" by rule "+yyn+" ("+yyrule[yyn]+")");
#endif
    yyval = val_peek(yym-1);
    switch (yyn) 
    {
//########## USER-SUPPLIED ACTIONS ########## 
case 1: 
//#line 135 "CqlGrammar.y"
{ 
                        yyval = _parsedTree = null;
                    }
break;
case 2: 
//#line 139 "CqlGrammar.y"
{ 
                        yyval = _parsedTree = (Expr)val_peek(0); 
                    }
break; 
case 3:
//#line 147 "CqlGrammar.y"
{
                        yyval = new CommandExpr(ToExprList(val_peek(1)),(Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), (val_peek(1) != null) ? AstNodePos(val_peek(1)) : AstNodePos(val_peek(0)), EntityRes.CtxCommandExpression);
                    } 
break; 
case 4:
//#line 161 "CqlGrammar.y" 
{
                        yyval = null;
                    }
break; 
case 5:
//#line 165 "CqlGrammar.y" 
{ 
                        yyval = val_peek(0);
                    } 
break;
case 6:
//#line 173 "CqlGrammar.y"
{ 
                        yyval = new ExprList((NamespaceExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); 
                    } 
break;
case 7: 
//#line 178 "CqlGrammar.y"
{
                        yyval = ToExprList(val_peek(1)).Add((NamespaceExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxNamespaceDeclaration); 
                    }
break; 
case 8: 
//#line 187 "CqlGrammar.y"
{ 
                        yyval = new NamespaceExpr((Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceDeclaration);
                    }
break; 
case 9:
//#line 192 "CqlGrammar.y" 
{ 
                        yyval = new NamespaceExpr((DotExpr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceDeclaration); 
                    }
break;
case 10:
//#line 197 "CqlGrammar.y" 
{
                        yyval = new NamespaceExpr((BuiltInExpr)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxAliasedNamespaceDeclaration); 
                    }
break; 
case 11:
//#line 219 "CqlGrammar.y"
{
                        yyval = val_peek(1); 
                    }
break; 
case 12: 
//#line 223 "CqlGrammar.y"
{ 
                        yyval = val_peek(1);
                    }
break;
case 13: 
//#line 229 "CqlGrammar.y"
{ 
                        yyval = null; 
                    }
break; 
case 14:
//#line 233 "CqlGrammar.y"
{
                        yyval = null; 
                    }
break; 
case 15: 
//#line 242 "CqlGrammar.y"
{ 
                         yyval = new QueryExpr( (SelectClause)val_peek(5)    ,
                                             (FromClause)val_peek(4)      ,
                                             (Expr)val_peek(3)            ,
                                             (GroupByClause)val_peek(2)   , 
                                             (HavingClause)val_peek(1)    ,
                                             (OrderByClause)val_peek(0)   ); 
 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxQueryExpression);
                    } 
break;
case 16:
//#line 257 "CqlGrammar.y"
{ 
                          ResetMethodCallCount();
                      } 
break; 
case 17:
//#line 263 "CqlGrammar.y" 
{
                        yyval = new SelectClause(ToExprList(val_peek(0)), (DistinctKind)val_peek(2), (Expr)val_peek(1), MethodCallCount);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxSelectRowClause);
                    } 
break;
case 18: 
//#line 268 "CqlGrammar.y" 
{
                        ResetMethodCallCount(); 
                      }
break;
case 19:
//#line 275 "CqlGrammar.y" 
{
                        ExprList exprList = ToExprList(val_peek(0)); 
                        if (exprList.Count != 1) 
                        {
                            throw EntityUtil.EntitySqlError(exprList.ErrCtx, System.Data.Entity.Strings.InvalidSelectValueList); 
                        }

                        if (exprList.Expressions[0].HasAlias)
                        { 
                            throw EntityUtil.EntitySqlError(exprList.ErrCtx, System.Data.Entity.Strings.InvalidSelectValueAliasedExpression);
                        } 
 
                        yyval = new SelectClause(exprList.Expressions[0].Expr, (DistinctKind)val_peek(2), (Expr)val_peek(1), MethodCallCount);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxSelectValueClause); 
                    }
break;
case 20:
//#line 295 "CqlGrammar.y" 
{
                        yyval = DistinctKind.None; 
                    } 
break;
case 21: 
//#line 299 "CqlGrammar.y"
{
                        yyval = DistinctKind.All;
                    } 
break;
case 22: 
//#line 303 "CqlGrammar.y" 
{
                        yyval = DistinctKind.Distinct; 
                    }
break;
case 23:
//#line 310 "CqlGrammar.y" 
{
                        yyval = null; 
                    } 
break;
case 24: 
//#line 314 "CqlGrammar.y"
{
                        if ( val_peek(1) is Parameter || val_peek(1) is Literal )
                        { 
                            yyval = (Expr)val_peek(1);
                            SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTopSubClause); 
                        } 
                        else
                        { 
                            throw EntityUtil.EntitySqlError(((Expr)val_peek(1)).ErrCtx, System.Data.Entity.Strings.TopExpressionMustBeParamOrLiteral);
                        }
                    }
break; 
case 25:
//#line 330 "CqlGrammar.y" 
{ 
                        yyval = new FromClause(ToExprList(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxFromClause); 
                    }
break;
case 26:
//#line 339 "CqlGrammar.y" 
{
                        yyval = new ExprList((FromClauseItem)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); 
                    }
break; 
case 27:
//#line 344 "CqlGrammar.y"
{
                        yyval = ToExprList(val_peek(2)).Add((FromClauseItem)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxFromClauseList);
                    } 
break; 
case 28:
//#line 353 "CqlGrammar.y" 
{
                        yyval = new FromClauseItem((AliasExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromClauseItem);
                    } 
break;
case 29: 
//#line 358 "CqlGrammar.y" 
{
                        yyval = new FromClauseItem((JoinClauseItem)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromJoinClause);
                    }
break;
case 30: 
//#line 363 "CqlGrammar.y"
{ 
                        yyval = new FromClauseItem((JoinClauseItem)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromJoinClause);
                    } 
break;
case 31:
//#line 368 "CqlGrammar.y"
{ 
                        yyval = new FromClauseItem((ApplyClauseItem)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromApplyClause); 
                    } 
break;
case 32: 
//#line 373 "CqlGrammar.y"
{
                        yyval = new FromClauseItem((ApplyClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromApplyClause); 
                    }
break; 
case 33: 
//#line 382 "CqlGrammar.y"
{ 
                        yyval = new JoinClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (JoinKind)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxJoinClause);
                    }
break; 
case 34:
//#line 387 "CqlGrammar.y" 
{ 
                        yyval = new JoinClauseItem((FromClauseItem)val_peek(4), (FromClauseItem)val_peek(2), (JoinKind)val_peek(3), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(4)), EntityRes.CtxJoinOnClause); 
                    }
break;
case 35:
//#line 396 "CqlGrammar.y" 
{
                        yyval = new ApplyClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (ApplyKind)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxApplyClause); 
                    }
break; 
case 36:
//#line 405 "CqlGrammar.y"
{
                        yyval = JoinKind.Cross; 
                    }
break; 
case 37: 
//#line 409 "CqlGrammar.y"
{ 
                        yyval = JoinKind.LeftOuter;
                    }
break;
case 38: 
//#line 413 "CqlGrammar.y"
{ 
                        yyval = JoinKind.LeftOuter; 
                    }
break; 
case 39:
//#line 417 "CqlGrammar.y"
{
                        yyval = JoinKind.RightOuter; 
                    }
break; 
case 40: 
//#line 421 "CqlGrammar.y"
{ 
                        yyval = JoinKind.RightOuter;
                    }
break;
case 41: 
//#line 425 "CqlGrammar.y"
{ 
                        yyval = JoinKind.Inner; 
                    }
break; 
case 42:
//#line 429 "CqlGrammar.y"
{
                        yyval = JoinKind.Inner; 
                    }
break; 
case 43: 
//#line 433 "CqlGrammar.y"
{ 
                        yyval = JoinKind.FullOuter;
                    }
break;
case 44: 
//#line 437 "CqlGrammar.y"
{ 
                        yyval = JoinKind.FullOuter; 
                    }
break; 
case 45:
//#line 441 "CqlGrammar.y"
{
                        yyval = JoinKind.FullOuter; 
                    }
break; 
case 46: 
//#line 449 "CqlGrammar.y"
{ 
                        yyval = ApplyKind.Cross;
                    }
break;
case 47: 
//#line 453 "CqlGrammar.y"
{ 
                        yyval = ApplyKind.Outer; 
                    }
break; 
case 48:
//#line 460 "CqlGrammar.y"
{
                        yyval = null; 
                    }
break; 
case 49: 
//#line 464 "CqlGrammar.y"
{ 
                        yyval = val_peek(0);
                    }
break;
case 50: 
//#line 472 "CqlGrammar.y"
{ 
                        yyval = (Expr)val_peek(0); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxWhereClause);
                    } 
break;
case 51:
//#line 481 "CqlGrammar.y"
{ 
                        yyval = null;
                    } 
break; 
case 52:
//#line 485 "CqlGrammar.y" 
{
                        yyval = val_peek(0);
                    }
break; 
case 53:
//#line 493 "CqlGrammar.y" 
{ 
                        yyval = new GroupByClause(ToExprList(val_peek(0)), new Identifier( "group", false, _query, Terminal(val_peek(2)).IPos ) );
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxGroupByClause); 
                    }
break;
case 54:
//#line 501 "CqlGrammar.y" 
{
                        yyval = null; 
                    } 
break;
case 55: 
//#line 505 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    } 
break;
case 56: 
//#line 513 "CqlGrammar.y" 
{
                        ResetMethodCallCount(); 
                      }
break;
case 57:
//#line 517 "CqlGrammar.y" 
{
                        yyval = new HavingClause((Expr)val_peek(0), MethodCallCount); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxHavingClause); 
                    }
break; 
case 58:
//#line 526 "CqlGrammar.y"
{
                        yyval = null; 
                    }
break; 
case 59: 
//#line 530 "CqlGrammar.y"
{ 
                        yyval = val_peek(0);
                    }
break;
case 60: 
//#line 537 "CqlGrammar.y"
{ 
                        ResetMethodCallCount(); 
                      }
break; 
case 61:
//#line 543 "CqlGrammar.y"
{
                        yyval = new OrderByClause(ToExprList(val_peek(2)), (Expr)val_peek(1), (Expr)val_peek(0), MethodCallCount); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOrderByClauseItem);
                    } 
break; 
case 62:
//#line 551 "CqlGrammar.y" 
{
                        yyval = null;
                    }
break; 
case 63:
//#line 555 "CqlGrammar.y" 
{ 
                        if ( val_peek(0) is Parameter || val_peek(0) is Literal )
                        { 
                            yyval = (Expr)val_peek(0);
                            SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxSkipSubClause);
                        }
                        else 
                        {
                            throw EntityUtil.EntitySqlError(((Expr)val_peek(0)).ErrCtx, System.Data.Entity.Strings.SkipExpressionMustBeParamOrLiteral); 
                        } 
                    }
break; 
case 64:
//#line 570 "CqlGrammar.y"
{
                        yyval = null; 
                    }
break; 
case 65: 
//#line 574 "CqlGrammar.y"
{ 
                        if ( val_peek(0) is Parameter || val_peek(0) is Literal )
                        {
                            yyval = (Expr)val_peek(0);
                            SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxLimitSubClause); 
                        }
                        else 
                        { 
                            throw EntityUtil.EntitySqlError(((Expr)val_peek(0)).ErrCtx, System.Data.Entity.Strings.LimitExpressionMustBeParamOrLiteral);
                        } 
                    }
break;
case 66:
//#line 589 "CqlGrammar.y" 
{
                        yyval = new ExprList((OrderByClauseItem)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); 
                    }
break; 
case 67:
//#line 594 "CqlGrammar.y"
{
                        yyval = ToExprList(val_peek(2)).Add((OrderByClauseItem)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxOrderByClause);
                    } 
break; 
case 68:
//#line 603 "CqlGrammar.y" 
{
                        yyval = new OrderByClauseItem((Expr)val_peek(1), (OrderKind)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxOrderByClauseItem);
                    } 
break;
case 69: 
//#line 608 "CqlGrammar.y" 
{
                        yyval = new OrderByClauseItem((Expr)val_peek(3), (OrderKind)val_peek(0), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(3)), EntityRes.CtxCollatedOrderByClauseItem);
                    }
break;
case 70: 
//#line 617 "CqlGrammar.y"
{ 
                        yyval = OrderKind.None; 
                    }
break; 
case 71:
//#line 621 "CqlGrammar.y"
{
                        yyval = OrderKind.Asc; 
                    }
break; 
case 72: 
//#line 625 "CqlGrammar.y"
{ 
                        yyval = OrderKind.Desc;
                    }
break;
case 73: 
//#line 638 "CqlGrammar.y"
{ 
                        yyval = new ExprList((Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    } 
break;
case 74:
//#line 643 "CqlGrammar.y"
{ 
                        yyval = ToExprList(val_peek(2)).Add((Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxExpressionList); 
                    } 
break;
case 75: 
//#line 651 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    } 
break;
case 76: 
//#line 655 "CqlGrammar.y" 
{
                        yyval = (Parameter)val_peek(0); 
                    }
break;
case 77:
//#line 659 "CqlGrammar.y" 
{
                        yyval = (Identifier)val_peek(0); 
                    } 
break;
case 78: 
//#line 663 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    } 
break;
case 79: 
//#line 667 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                        if (((DotExpr)val_peek(0)).IsDottedIdentifier)
                        {
                            SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxMultipartIdentifier);
                        } 
                    }
break; 
case 80: 
//#line 675 "CqlGrammar.y"
{ 
                        yyval = val_peek(0);
                    }
break;
case 81: 
//#line 679 "CqlGrammar.y"
{ 
                        yyval = val_peek(0); 
                    }
break; 
case 82:
//#line 683 "CqlGrammar.y"
{
                        yyval = val_peek(0); 
                    }
break; 
case 83: 
//#line 687 "CqlGrammar.y"
{ 
                        yyval = val_peek(0);

                        IncrementMethodCallCount();
                    } 
break;
case 84: 
//#line 693 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                    }
break;
case 85:
//#line 697 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                    } 
break;
case 86: 
//#line 701 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    } 
break;
case 87: 
//#line 705 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                    }
break;
case 88:
//#line 712 "CqlGrammar.y" 
{
                        yyval = val_peek(1); 
                    } 
break;
case 89: 
//#line 719 "CqlGrammar.y"
{
                        yyval = new ExprList((Expr)val_peek(2)).Add((Expr)val_peek(0));
                    } 
break;
case 90: 
//#line 726 "CqlGrammar.y" 
{
                        yyval = new ExprList((Expr)val_peek(3)).Add((Expr)val_peek(0)); 
                    }
break;
case 91:
//#line 736 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Plus, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxPlus); 
                    }
break; 
case 92:
//#line 741 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Minus, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMinus);
                    } 
break; 
case 93:
//#line 746 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Multiply, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMultiply);
                    } 
break;
case 94: 
//#line 751 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Divide, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxDivide);
                    }
break;
case 95: 
//#line 756 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Modulus, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxModulus);
                    } 
break;
case 96:
//#line 761 "CqlGrammar.y"
{ 
                        Literal literal = val_peek(0) as Literal;
                        if ( null != literal && literal.IsNumberKind && !literal.IsSigned ) 
                        { 
                            literal.PrefixSign(Terminal(val_peek(1)).Token);
                            yyval = val_peek(0); 
                        }
                        else
                        {
                            yyval = new BuiltInExpr(BuiltInKind.UnaryMinus, Terminal(val_peek(1)).Token, (Expr)val_peek(0)); 
                            SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryMinus);
                        } 
 
                    }
break; 
case 97:
//#line 776 "CqlGrammar.y"
{
                        Literal literal = val_peek(0) as Literal; 
                        if ( null != literal && literal.IsNumberKind && !literal.IsSigned )
                        { 
                            literal.PrefixSign(Terminal(val_peek(1)).Token); 
                            yyval = val_peek(0);
                        } 
                        else
                        {
                            yyval = new BuiltInExpr(BuiltInKind.UnaryPlus, Terminal(val_peek(1)).Token, (Expr)val_peek(0));
                            SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryPlus); 
                        }
                    } 
break; 
case 98:
//#line 793 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.NotEqual, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotEqual);
                    } 
break;
case 99: 
//#line 798 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.GreaterThan, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThan);
                    }
break;
case 100: 
//#line 803 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.GreaterEqual, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThanEqual);
                    } 
break;
case 101:
//#line 808 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.LessThan, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThan); 
                    } 
break;
case 102: 
//#line 813 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.LessEqual, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThanEqual); 
                    }
break; 
case 103: 
//#line 821 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Intersect, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIntersect);
                    }
break; 
case 104:
//#line 826 "CqlGrammar.y" 
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Union, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnion); 
                    }
break;
case 105:
//#line 831 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.UnionAll, Terminal(val_peek(2)).Token, (Expr)val_peek(3), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxUnionAll); 
                    }
break; 
case 106:
//#line 836 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Except, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxExcept);
                    } 
break; 
case 107:
//#line 841 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Overlaps, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOverlaps);
                    } 
break;
case 108: 
//#line 846 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.In, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIn);
                    }
break;
case 109: 
//#line 851 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.NotIn, Terminal(val_peek(2)).Token, (Expr)val_peek(3), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotIn);
                    } 
break;
case 110:
//#line 856 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Exists, Terminal(val_peek(3)).Token, (Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxExists); 
                    } 
break;
case 111: 
//#line 861 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.AnyElement, Terminal(val_peek(3)).Token, (Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxAnyElement); 
                    }
break; 
case 112: 
//#line 866 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Element, Terminal(val_peek(3)).Token, (Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxElement);
                    }
break; 
case 113:
//#line 871 "CqlGrammar.y" 
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Flatten, Terminal(val_peek(3)).Token, (Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxFlatten); 
                    }
break;
case 114:
//#line 876 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Distinct, Terminal(val_peek(3)).Token, (Expr)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxSet); 
                    }
break; 
case 115:
//#line 884 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.IsNull, "IsNull", (Expr)val_peek(2)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIsNull);
                    } 
break; 
case 116:
//#line 889 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.IsNotNull, "IsNotNull", (Expr)val_peek(3));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxIsNotNull);
                    } 
break;
case 117: 
//#line 897 "CqlGrammar.y" 
{
                        yyval = (CaseExpr)val_peek(0); 
                    }
break;
case 118:
//#line 904 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Treat, Terminal(val_peek(5)).Token, (Expr)val_peek(3), (Expr)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxTreat); 
                    }
break; 
case 119:
//#line 909 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Cast, Terminal(val_peek(5)).Token, (Expr)val_peek(3), (Expr)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCast);
                    } 
break; 
case 120:
//#line 918 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.OfType,
                                             Terminal(val_peek(5)).Token,
                                             (Expr)val_peek(3), 
                                             (Expr)val_peek(1),
                                             Literal.NewBooleanLiteral( false ) /* only */); 
 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOfType);
                    } 
break;
case 121:
//#line 928 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.OfType,
                                             "OFTYPE ONLY", 
                                             (Expr)val_peek(4), 
                                             (Expr)val_peek(1),
                                             Literal.NewBooleanLiteral( true ) /* only */); 

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxOfTypeOnly);
                    }
break; 
case 122:
//#line 941 "CqlGrammar.y" 
{ 
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf,
                                                "IS OF", 
                                                (Expr)val_peek(5),
                                                (Expr)val_peek(1),
                                                Literal.NewBooleanLiteral( false ), /* only */
                                                Literal.NewBooleanLiteral( false )  /* not  */ 
                                            );
 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxIsOf); 
                    }
break; 
case 123:
//#line 953 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf, 
                                                "IS NOT OF",
                                                (Expr)val_peek(6),  /* instance */ 
                                                (Expr)val_peek(1),  /* type */ 
                                                Literal.NewBooleanLiteral( false ), /* only */
                                                Literal.NewBooleanLiteral( true  )  /* not  */ 
                                            );

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsNotOf);
                    } 
break;
case 124: 
//#line 965 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf, 
                                                "IS OF ONLY",
                                                (Expr)val_peek(6),  /* instance */
                                                (Expr)val_peek(1),  /* type */
                                                Literal.NewBooleanLiteral( true  ), /* only */ 
                                                Literal.NewBooleanLiteral( false )  /* not  */
                                            ); 
 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsOf);
                    } 
break;
case 125:
//#line 977 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf,
                                                "IS NOT OF ONLY", 
                                                (Expr)val_peek(7),  /* instance */ 
                                                (Expr)val_peek(1),  /* type */
                                                Literal.NewBooleanLiteral( true ), /* only */ 
                                                Literal.NewBooleanLiteral( true )  /* not  */
                                            );

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxIsNotOf); 
                    }
break; 
case 126: 
//#line 992 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLike);
                    }
break; 
case 127:
//#line 997 "CqlGrammar.y" 
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Not,
                                              Terminal(val_peek(2)).Token, 
                                              new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Expr)val_peek(3), (Expr)val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotLike);
                    }
break; 
case 128:
//#line 1004 "CqlGrammar.y" 
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Expr)val_peek(4), (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxLike); 
                    }
break;
case 129:
//#line 1009 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Not, 
                                              Terminal(val_peek(4)).Token, 
                                              new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Expr)val_peek(5), (Expr)val_peek(2), (Expr)val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxNotLike); 
                    }
break;
case 130:
//#line 1019 "CqlGrammar.y" 
{
                        ExprList elist = (ExprList)val_peek(2); 
                        System.Diagnostics.Debug.Assert(elist.Count==2); 
                        yyval = new BuiltInExpr(BuiltInKind.Between, "between", elist[0], elist[1], (Expr)val_peek(0) );
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxBetween); 
                    }
break;
case 131:
//#line 1029 "CqlGrammar.y" 
{
                        ExprList elist = (ExprList)val_peek(2); 
                        System.Diagnostics.Debug.Assert(elist.Count==2); 
                        yyval = new BuiltInExpr(BuiltInKind.NotBetween, "notbetween", elist[0], elist[1], (Expr)val_peek(0) );
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotBetween); 
                    }
break;
case 132:
//#line 1039 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Or, "or", (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOr); 
                    }
break; 
case 133:
//#line 1044 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Not, "not", (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNot);
                    } 
break; 
case 134:
//#line 1049 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.And, "and", (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAnd);
                    } 
break;
case 135: 
//#line 1054 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                    }
break;
case 136:
//#line 1062 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                    } 
break;
case 137: 
//#line 1066 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    } 
break;
case 138: 
//#line 1074 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals);
                    }
break;
case 139: 
//#line 1083 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals);
                    } 
break;
case 140:
//#line 1092 "CqlGrammar.y"
{ 
                        yyval = new AliasExpr((Expr)val_peek(2), (Identifier)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAlias); 
                    } 
break;
case 141: 
//#line 1097 "CqlGrammar.y"
{
                        yyval = new AliasExpr((Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); 
                    }
break; 
case 142: 
//#line 1106 "CqlGrammar.y"
{ 
                       yyval = new ExprList((AliasExpr)val_peek(0));
                       SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break; 
case 143:
//#line 1111 "CqlGrammar.y" 
{ 
                       yyval = ToExprList(val_peek(2)).Add((AliasExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxExpressionList); 
                    }
break;
case 144:
//#line 1120 "CqlGrammar.y" 
{
                        yyval = new CaseExpr(ToExprList(val_peek(1))); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxCase); 
                    }
break; 
case 145:
//#line 1125 "CqlGrammar.y"
{
                        yyval = new CaseExpr(ToExprList(val_peek(2)), (Expr)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCase);
                    } 
break; 
case 146:
//#line 1134 "CqlGrammar.y" 
{
                        yyval = new ExprList(new WhenThenExpr((Expr)val_peek(2), (Expr)val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCaseWhenThen);
                    } 
break;
case 147: 
//#line 1139 "CqlGrammar.y" 
{
                        yyval = ToExprList(val_peek(4)).Add(new WhenThenExpr((Expr)val_peek(2), (Expr)val_peek(0))); 
                    }
break;
case 148:
//#line 1147 "CqlGrammar.y" 
{
                        yyval = (Expr)val_peek(0); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxCaseElse); 
                    }
break; 
case 149:
//#line 1156 "CqlGrammar.y"
{
                        yyval = new RowConstructorExpr(ToExprList(val_peek(1))); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRowCtor);
                    } 
break; 
case 150:
//#line 1161 "CqlGrammar.y" 
{
                        yyval = new MultisetConstructorExpr(ToExprList(val_peek(1)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxMultisetCtor);
                    } 
break;
case 151: 
//#line 1166 "CqlGrammar.y" 
{
                        yyval = new MultisetConstructorExpr(ToExprList(val_peek(1))); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxMultisetCtor);
                    }
break;
case 152: 
//#line 1175 "CqlGrammar.y"
{ 
                        yyval = new DotExpr((Expr)val_peek(2), (Identifier)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxDot);
                    } 
break;
case 153:
//#line 1184 "CqlGrammar.y"
{ 
                        yyval = new RefExpr((Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRef); 
                    } 
break;
case 154: 
//#line 1193 "CqlGrammar.y"
{
                        yyval = new DerefExpr((Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxDeref); 
                    }
break; 
case 155: 
//#line 1202 "CqlGrammar.y"
{ 
                        yyval = new CreateRefExpr((Expr)val_peek(3), (Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCreateRef);
                    }
break; 
case 156:
//#line 1207 "CqlGrammar.y" 
{ 
                        yyval = new CreateRefExpr((Expr)val_peek(5), (Expr)val_peek(3), (Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxCreateRef); 
                    }
break;
case 157:
//#line 1216 "CqlGrammar.y" 
{
                        yyval = new KeyExpr((Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxKey); 
                    }
break; 
case 158:
//#line 1225 "CqlGrammar.y"
{
                        yyval = new MethodExpr(((DotExpr)val_peek(2)).Left, ((DotExpr)val_peek(2)).Identifier, DistinctKind.None, null); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMethod);
                    } 
break; 
case 159:
//#line 1230 "CqlGrammar.y" 
{
                        yyval = new MethodExpr(((DotExpr)val_peek(5)).Left, ((DotExpr)val_peek(5)).Identifier, (DistinctKind)val_peek(3), ToExprList(val_peek(2)), ToExprList(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod);
                    } 
break;
case 160: 
//#line 1235 "CqlGrammar.y" 
{
                        yyval = new MethodExpr(((DotExpr)val_peek(5)).Left, ((DotExpr)val_peek(5)).Identifier, (DistinctKind)val_peek(3), new ExprList((Expr)val_peek(2)), ToExprList(val_peek(0))); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod);
                    }
break;
case 161: 
//#line 1240 "CqlGrammar.y"
{ 
                        yyval = new MethodExpr(null, (Identifier)val_peek(2), DistinctKind.None, null); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMethod);
                    } 
break;
case 162:
//#line 1245 "CqlGrammar.y"
{ 
                        yyval = new MethodExpr(null, (Identifier)val_peek(5), (DistinctKind)val_peek(3), ToExprList(val_peek(2)), ToExprList(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod); 
                    } 
break;
case 163: 
//#line 1250 "CqlGrammar.y"
{
                        yyval = new MethodExpr(null, (Identifier)val_peek(5),(DistinctKind)val_peek(3), new ExprList((Expr)val_peek(2)), ToExprList(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod); 
                    }
break; 
case 164: 
//#line 1262 "CqlGrammar.y"
{ 
                        yyval = new RelshipNavigationExpr((Expr)val_peek(3), (DotExpr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxNavigate);
                    }
break; 
case 165:
//#line 1267 "CqlGrammar.y" 
{ 
                        yyval = new RelshipNavigationExpr((Expr)val_peek(3), (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxNavigate); 
                    }
break;
case 166:
//#line 1275 "CqlGrammar.y" 
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(5), (DotExpr)val_peek(3), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxNavigate); 
                    }
break; 
case 167:
//#line 1280 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxNavigate);
                    } 
break; 
case 168:
//#line 1288 "CqlGrammar.y" 
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(7), (DotExpr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxNavigate);
                    } 
break;
case 169: 
//#line 1293 "CqlGrammar.y" 
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(7), (Identifier)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxNavigate);
                    }
break;
case 170: 
//#line 1302 "CqlGrammar.y"
{ 
                        yyval = null; 
                    }
break; 
case 171:
//#line 1306 "CqlGrammar.y"
{
                        yyval = val_peek(0); 
                    }
break; 
case 172: 
//#line 1314 "CqlGrammar.y"
{ 
                        yyval = new ExprList((RelshipNavigationExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxRelationshipList);
                    }
break; 
case 173:
//#line 1319 "CqlGrammar.y" 
{ 
                        yyval = ToExprList(val_peek(1)).Add((RelshipNavigationExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxRelationshipList); 
                    }
break;
case 174:
//#line 1331 "CqlGrammar.y" 
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(3), (DotExpr)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxRelationship); 
                    }
break; 
case 175:
//#line 1336 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(3), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxRelationship);
                    } 
break; 
case 176:
//#line 1344 "CqlGrammar.y" 
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(5), (DotExpr)val_peek(3), (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxRelationship);
                    } 
break;
case 177: 
//#line 1349 "CqlGrammar.y" 
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxRelationship);
                    }
break;
case 178: 
//#line 1357 "CqlGrammar.y"
{ 
                        yyval = new RelshipNavigationExpr((Expr)val_peek(7), (DotExpr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxRelationship);
                    } 
break;
case 179:
//#line 1362 "CqlGrammar.y"
{ 
                        yyval = new RelshipNavigationExpr((Expr)val_peek(7), (Identifier)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxRelationship); 
                    } 
break;
case 180: 
//#line 1370 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeIdentifier); 
                    }
break; 
case 181: 
//#line 1375 "CqlGrammar.y"
{ 
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeIdentifier);
                    }
break; 
case 182:
//#line 1380 "CqlGrammar.y" 
{ 
                        Identifier oldIdentifier = (Identifier)val_peek(1);
                        if (0 != ((Identifier)val_peek(0)).Name.Length) 
                        {
                            throw EntityUtil.EntitySqlError(oldIdentifier.ErrCtx, EntityRes.InvalidTypeName);
                        }
                        yyval = new Identifier( oldIdentifier.OriginalName + "[]", oldIdentifier.IsEscaped, _query, AstNodePos(val_peek(1))); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeIdentifier);
                    } 
break; 
case 183:
//#line 1390 "CqlGrammar.y" 
{
                        DotExpr oldDotExpr = (DotExpr)val_peek(1);
                        if (0 != ((Identifier)val_peek(0)).Name.Length)
                        { 
                            throw EntityUtil.EntitySqlError(oldDotExpr.ErrCtx, EntityRes.InvalidTypeName);
                        } 
                        yyval = new DotExpr(oldDotExpr.Left, new Identifier( oldDotExpr.Identifier.OriginalName + "[]", oldDotExpr.Identifier.IsEscaped, _query, AstNodePos(val_peek(1)))); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeIdentifier);
                    } 
break;
case 184:
//#line 1400 "CqlGrammar.y"
{ 
                        SetErrCtx(AstNode(val_peek(0)), AstNodePos(val_peek(0)), EntityRes.CtxTypeIdentifier);
                        MethodExpr methodExpr = (MethodExpr)val_peek(0); 
                        if (null == methodExpr.Args || methodExpr.Args.Count < 1 || methodExpr.Args.Count > 2) 
                        {
                            throw EntityUtil.EntitySqlError(methodExpr.ErrCtx, System.Data.Entity.Strings.TypeIndentifierMustHaveOneOrTwoArgs); 
                        }
                        if (!(methodExpr.Args[0] is Literal))
                        {
                            throw EntityUtil.EntitySqlError(methodExpr.Args[0].ErrCtx, System.Data.Entity.Strings.TypeIndentifierArgMustBeLiteral); 
                        }
                        if (methodExpr.Args.Count == 2 && !(methodExpr.Args[1] is Literal)) 
                        { 
                            throw EntityUtil.EntitySqlError(methodExpr.Args[1].ErrCtx, System.Data.Entity.Strings.TypeIndentifierArgMustBeLiteral);
                        } 
                        yyval = val_peek(0);
                    }
break;
case 185: 
//#line 1420 "CqlGrammar.y"
{ 
                        yyval = (Identifier)val_peek(0); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxEscapedIdentifier);
                    } 
break;
case 186:
//#line 1425 "CqlGrammar.y"
{ 
                        yyval = (Identifier)val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxSimpleIdentifier); 
                    } 
break;
case 187: 
//#line 1434 "CqlGrammar.y"
{
                        yyval = (Identifier)val_peek(0);
                    } 
break;
case 188: 
//#line 1442 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxLiteral);
                    }
break;
case 189: 
//#line 1447 "CqlGrammar.y"
{ 
                        yyval = new Literal(null, LiteralKind.Null, _query, TerminalPos(val_peek(0))); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(0)), EntityRes.CtxNullLiteral);
                    } 
break;

//########## END OF USER-SUPPLIED ACTIONS ##########
    } 
#if YYDEBUG
    debug("reduce"); 
#endif 
	 state_drop( yym );
    yystate = state_peek(0); 
    val_drop( yym );
    yym = yylhs[yyn];
    if (yystate == 0 && yym == 0)
    { 
#if YYDEBUG
        debug("After reduction, shifting from state 0 to state "+YYFINAL+""); 
#endif 
		 yystate = YYFINAL;
        state_push( YYFINAL ); 
        val_push( yyval );
        if (yychar < 0)
        {
            yychar = yylex(); 
			if (yychar < 0) yychar = 0;
#if YYDEBUG 
            if (yydebug) 
            yylexdebug(yystate,yychar);
#endif 
        }
        if (yychar == 0) goto yyaccept;
        goto yyloop;
    } 
 	yyn = yygindex[yym];
    if ((yyn!=0) && (yyn += yystate) >= 0 && 
            yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 
        yystate = yytable[yyn];
    else 
        yystate = yydgoto[yym];
    if (stateptr < 0)
    {
        goto yyoverflow; 
    }
#if YYDEBUG 
    debug("after reduction, shifting from state "+state_peek(0)+" to state "+yystate+""); 
#endif
	 state_push(yystate); 
    val_push( yyval );
    goto yyloop;
yyoverflow:
    yyerror("yacc stack overflow"); 
yyabort:
    return (1); 
yyaccept: 
    return (0);
} 

//## end of method parse() ######################################

 

} 
//################### END OF CLASS ###################### 
}
//################### END OF NAMESPACE ###################### 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//### This file created by BYACC 1.9(/C# extension  0.9) 
//### C# capabilities added 11 Sep 2000
//### static char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";

 

// the current file was generated on 01/26/2008 at 16:59 
 

//#line 2 "CqlGrammar.y" 

/*#define YYDEBUG*/

/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
!!                                                                           !!
!!         ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION       !! 
!!                                                                           !! 
!!                 DO NOT CHANGE THIS FILE (CqlParser.cs) BY HAND!!!!        !!
!!                          YOU HAVE BEEN WARNED !!!!                        !! 
!!                                                                           !!
!!         ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION       !!
!!                                                                           !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ 

 
/*------------------------------------------------------------------------------ 
//
//  
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//
// @owner [....] [....] 
//
//---------------------------------------------------------------------------*/ 
 
using System;
 
/* /////////////////////////////////////////////////////////////////////////////

 This pragma is needed since symbols used for defining precedence are not always
 code generated by yacc 

** ///////////////////////////////////////////////////////////////////////////*/ 
#pragma warning disable 414 

 



//##################################################################### 
// namespace: System.Data.Common.EntitySql
//##################################################################### 
namespace System.Data.Common.EntitySql { 
//#####################################################################
// class: CqlParser 
// does : encapsulates yacc() parser functionality in a C# class
//#####################################################################
internal partial class CqlParser{
 
Boolean yydebug;        //do I want debug output?
static int YYMAJOR = 1; 
static int YYMINOR = 9; 
int yynerrs;            //number of errors so far
int yyerrflag;          //was there an error? 
int yychar;             //the current working character

//########## MESSAGES ##########
//############################################################### 
// method: debug
//############################################################### 
void debug(String msg) 
{
  if (yydebug) 
    Console.WriteLine(msg);
}

//########## STATE STACK ########## 
static int YYSTACKSIZE = 500;  //maximum stack size
int[] statestk; int stateptr;             //state stack 
//############################################################### 
// methods: state stack push,pop,drop,peek
//############################################################### 
void state_push(int state)
{
  if (stateptr>=YYSTACKSIZE-1)         //overflowed?
    yyerror_stackoverflow(); 
  statestk[++stateptr]=state;
} 
int state_pop() 
{
  if (stateptr<0)                    //underflowed? 
    return -1;
  return statestk[stateptr--];
}
void state_drop(int cnt) 
{
int ptr; 
  ptr=stateptr-cnt; 
  if (ptr<0)
    return; 
  stateptr = ptr;
}
int state_peek(int relative)
{ 
int ptr;
  ptr=stateptr-relative; 
  if (ptr<0) 
    return -1;
  return statestk[ptr]; 
}
//###############################################################
// method: init_stacks : allocate and prepare stacks
//############################################################### 
Boolean init_stacks()
{ 
  statestk = new int[YYSTACKSIZE]; 
  stateptr = -1;
  val_init(); 
  return true;
}
//###############################################################
// method: dump_stacks : show n levels of the stacks 
//###############################################################
void dump_stacks(int count) 
{ 
int i;
  Console.WriteLine("=index==state====value=     s:"+stateptr+"  v:"+valptr); 
  for (i=0;i=YYSTACKSIZE)
    return; 
  valstk[++valptr]=val;
}
object val_pop()
{ 
  if (valptr<0)
    return (object)-1; 
  return valstk[valptr--]; 
}
void val_drop(int cnt) 
{
int ptr;
  ptr=valptr-cnt;
  if (ptr<0) 
    return;
  valptr = ptr; 
} 
object val_peek(int relative)
{ 
int ptr;
  ptr=valptr-relative;
  if (ptr<0)
    return (object)-1; 
  return valstk[ptr];
} 
//#### end semantic value section #### 
public static short IDENTIFIER=257;
public static short ESCAPED_IDENTIFIER=258; 
public static short PARAMETER=259;
public static short LITERAL=260;
public static short ALL=261;
public static short AND=262; 
public static short ANYELEMENT=263;
public static short APPLY=264; 
public static short AS=265; 
public static short ASC=266;
public static short BETWEEN=267; 
public static short BY=268;
public static short CASE=269;
public static short CAST=270;
public static short COLLATE=271; 
public static short CROSS=272;
public static short CREATEREF=273; 
public static short DEREF=274; 
public static short DESC=275;
public static short DISTINCT=276; 
public static short ELEMENT=277;
public static short ELSE=278;
public static short END=279;
public static short EXCEPT=280; 
public static short EXISTS=281;
public static short ESCAPE=282; 
public static short FLATTEN=283; 
public static short FROM=284;
public static short FULL=285; 
public static short GROUP=286;
public static short HAVING=287;
public static short IN=288;
public static short INNER=289; 
public static short INTERSECT=290;
public static short IS=291; 
public static short JOIN=292; 
public static short KEY=293;
public static short LEFT=294; 
public static short LIKE=295;
public static short LIMIT=296;
public static short MULTISET=297;
public static short NOT=298; 
public static short OF=299;
public static short OFTYPE=300; 
public static short ON=301; 
public static short OR=302;
public static short ORDER=303; 
public static short OUTER=304;
public static short OVERLAPS=305;
public static short ONLY=306;
public static short REF=307; 
public static short RELATIONSHIP=308;
public static short RIGHT=309; 
public static short ROW=310; 
public static short SELECT=311;
public static short SET=312; 
public static short SKIP=313;
public static short THEN=314;
public static short TOP=315;
public static short TREAT=316; 
public static short UNION=317;
public static short USING=318; 
public static short VALUE=319; 
public static short WHEN=320;
public static short WHERE=321; 
public static short WITH=322;
public static short COMMA=323;
public static short COLON=324;
public static short SCOLON=325; 
public static short DOT=326;
public static short EQUAL=327; 
public static short L_PAREN=328; 
public static short R_PAREN=329;
public static short L_BRACE=330; 
public static short R_BRACE=331;
public static short L_CURLY=332;
public static short R_CURLY=333;
public static short PLUS=334; 
public static short MINUS=335;
public static short STAR=336; 
public static short FSLASH=337; 
public static short PERCENT=338;
public static short OP_EQ=339; 
public static short OP_NEQ=340;
public static short OP_LT=341;
public static short OP_LE=342;
public static short OP_GT=343; 
public static short OP_GE=344;
public static short QMARK=345; 
public static short NAVIGATE=346; 
public static short NULL=347;
public static short UNARYPLUS=348; 
public static short UNARYMINUS=349;
public static short YYERRCODE=256;
static short [] yylhs = {                           -1,
    0,    0,    1,    2,    2,    4,    4,    5,    5,    5, 
    3,    3,   10,   10,    9,   19,   12,   22,   12,   18,
   18,   18,   20,   20,   13,   23,   23,   24,   24,   24, 
   24,   24,   26,   26,   27,   28,   28,   28,   28,   28, 
   28,   28,   28,   28,   28,   29,   29,   14,   14,   30,
   15,   15,   31,   16,   16,   33,   32,   17,   17,   36, 
   34,   37,   37,   38,   38,   35,   35,   39,   39,   40,
   40,   40,   42,   42,   11,   11,   11,   11,   11,   11,
   11,   11,   11,   11,   11,   11,   11,   43,   53,   54,
   44,   44,   44,   44,   44,   44,   44,   44,   44,   44, 
   44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
   44,   44,   44,   44,   44,   44,   44,   44,   44,   44, 
   44,   44,   44,   44,   44,   44,   44,   44,   44,   44, 
   44,   44,   44,   44,   44,   57,   57,    8,   58,   25,
   25,   21,   21,   55,   55,   59,   59,   60,   49,   49, 
   49,    7,   45,   50,   46,   46,   47,   48,   48,   48,
   48,   48,   48,   51,   51,   51,   51,   51,   51,   61,
   61,   62,   62,   63,   63,   63,   63,   63,   63,   56,
   56,   56,   56,   56,    6,    6,   41,   52,   52, 
};
static short [] yylen = {                            2, 
    0,    1,    2,    0,    1,    1,    2,    3,    3,    3, 
    2,    2,    0,    1,    6,    0,    5,    0,    6,    0,
    1,    1,    0,    4,    2,    1,    3,    1,    3,    1, 
    3,    1,    3,    5,    3,    2,    3,    2,    3,    2,
    1,    2,    2,    3,    2,    2,    2,    0,    1,    2,
    0,    1,    3,    0,    1,    0,    3,    0,    1,    0,
    6,    0,    2,    0,    2,    1,    3,    2,    4,    0, 
    1,    1,    1,    3,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    3,    3,    4, 
    3,    3,    3,    3,    3,    2,    2,    3,    3,    3, 
    3,    3,    3,    3,    4,    3,    3,    3,    4,    4,
    4,    4,    4,    4,    3,    4,    1,    6,    6,    6, 
    7,    6,    7,    7,    8,    3,    4,    5,    6,    3,
    3,    3,    2,    3,    1,    1,    1,    3,    3,    3,
    1,    1,    3,    3,    4,    4,    5,    2,    4,    4,
    3,    3,    4,    2,    6,    8,    2,    3,    6,    6, 
    3,    6,    6,    6,    6,    8,    8,   10,   10,    0,
    1,    2,    2,    6,    6,    8,    8,   10,   10,    1, 
    1,    2,    2,    1,    1,    1,    1,    1,    1, 
};
static short [] yydefred = {                         0, 
    0,    0,    2,    0,    0,    6,  187,  185,   76,  188,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  189,    0,    0,    0,    0,  186,   75,   78,   80, 
   81,   82,   83,   84,   85,   86,   87,    0,    0,  117,
  135,  137,    0,    3,    0,    0,  136,    0,    0,    0, 
    7,    0,    0,    0,    0,    0,  154,    0,    0,    0, 
  157,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    8,    0,    9,    0,   10,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   14,   11,   12,
    0,    0,    0,    0,    0,  144,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,  142,    0,
    0,   88,    0,  151,    0,   21,   22,  161,    0,  158, 
    0,    0,    0,    0,    0,    0,    0,    0,  115,    0, 
    0,    0,    0,    0,    0,    0,    0,  152,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,   28,   30,   32,
    0,    0,   49,  111,    0,    0,    0,  145,    0,    0,
  112,  110,  113,  150,    0,  153,    0,    0,  149,  114,
    0,    0,    0,    0,    0,    0,    0,    0,  116,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   41,    0,    0,    0, 
    0,    0,    0,    0,    0,   52,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,  140,  143,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,   29,   31,    0,   46,   36,   43,    0,   42,
   38,    0,   47,   40,    0,    0,   35,    0,   56,    0,
   55,    0,  182,  183,  119,    0,  155,    0,  120,  118,
    0,  165,    0,  164,    0,  163,    0,  162,  160,  159, 
    0,    0,    0,  122,    0,    0,    0,   44,   37,   39,
    0,    0,    0,    0,   15,   59,    0,  121,    0,    0, 
    0,  172,  173,    0,  123,  124,   24,    0,    0,   60, 
  156,    0,  167,    0,  166,    0,  125,    0,    0,    0,
    0,    0,    0,   66,  169,  168,    0,   71,    0,   72, 
   68,    0,    0,    0,    0,    0,    0,    0,   67,    0,
   61,    0,  175,    0,  174,   69,    0,    0,    0,    0,
  177,    0,  176,    0,    0,  179,  178,
}; 
static short [] yydgoto = {                          2,
    3,    4,   79,    5,    6,   55,   56,   57,   58,  120, 
   36,   60,  122,  192,  245,  290,  325,  149,  116,  227, 
  138,  117,  186,  187,  188,  189,  190,  241,  242,  193,
  246,  291,  323,  326,  353,  348,  364,  371,  354,  361, 
   37,   81,   38,   39,   40,   41,   42,   43,   44,   45,
   46,   47,   48,   49,   50,  252,   51,   52,   64,  128,
  306,  307,  332,
}; 
static short [] yysindex = {                      -310,
 3546,    0,    0, 2931, -310,    0,    0,    0,    0,    0, 
 -319, -258, -216, -182, -176, -171, -145, -141, -176, -140, 
 3546, -123, -100,  -95,  -79,  -77, 2931, 3546, 3546, 3546,
  -62,    0, -157,  -89, -229, 5009,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,  -93,    6,    0,
    0,    0,    0,    0,  -52,  -49,    0,  -45, 4019,    5,
    0, 2931, 3546, -242, 3546, 3546,    0, 2931, 2931, 2931,
    0, 3546, 5403, 3546, 3546, 3546, 2931, 3546,  -44, 5009, 
 -209,  -40,  -40, 3546,    0, -249,    0, -241,    0, 3546,
 3546, 3546, 3546, 3546, -277, 3546, -177, 3546, 3546, 3010, 
    2, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 
 3546, 3546, 3546, 3546, 3546, -245,  -25,    0,    0,    0,
 3613,  -18,  -23, 4085, 3546,    0, 3546,   30, 4151, 4217, 
  -21,  -17,  -14, -300, 4283, 4349, 4415, -283,    0,  -13,
 4481,    0, 3546,    0, 4547,    0,    0,    0, 2931,    0,
 2931, 5403, 5338, 5565, 5499, 5612, -280,  -10,    0, 5431,
 3546, 3546, 3546, 5273, 5537, 3546, 5593,    0, 2914, -178, 
 -178,  -40,  -40,  -40, 2914, 2914,  -92,  -92,  -92,  -92,
 5403, 5403,   -4, -245, 3077,   31,  -37,    0,    0,    0, 
 3546,   33,    0,    0, 3546, 5009, 4613,    0, 3546, 3546, 
    0,    0,    0,    0, 3144,    0,    2, 3546,    0,    0,
 3546, 5009, 3546,   24, -274,   40, -236,   55,    0, 3211, 
 3546, 5338, 5499, 5471, 5593,   57, 3546,   -4, 3887,  -37,
   58,   66, 3613, -226, -279,   42,    0, -232,   96, -227,
 3613, 3613, 5009,   94,  110,    0, 5009, 3546, -253, -252,
    0,   72, 3953, 3546,   77,    0,    0,   80, -129, -126, 
   88,   88,   88,   88, 3278, 3546,   82, 5499, 3546, 3546,
   89, 3546,    0,    0,  -37,    0,    0,    0,  121,    0, 
    0,  124,    0,    0,  125,  120,    0, 3546,    0,  122, 
    0, 5009,    0,    0,    0, 3546,    0,  101,    0,    0,
    2,    0,    2,    0,  115,    0,  115,    0,    0,    0, 
 3546,  102,  103,    0, 5499, 4679,   89,    0,    0,    0,
 3546,   89, 3546,  165,    0,    0,  106,    0, -153, -116,
  108,    0,    0,  111,    0,    0,    0, 5009, 5009,    0,
    0,    2,    0,    2,    0, 3546,    0, 3546,  112,  117, 
 4745, 3821, -197,    0,    0,    0, 3546,    0,  177,    0,
    0, 3546, 3546,  141,  -98,  -54, -212, 5009,    0, 3546, 
    0,    2,    0,    2,    0,    0, 5009, -114, -106,    2, 
    0,    2,    0,  118,  119,    0,    0,
}; 
static short [] yyrindex = {                       145,
    0,    0,    0,    0, 3345,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0, 5075, 5141, 5207,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0, 2864,    0,  222,  305,    0,    3,    3,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0, 2410,    0,    0,    0,    0,    0,    0, -168, 
    0,  554,  637,    0,    0, 3412,    0, 3412,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0, 3479,    0,    0,    0,    0, 
    0,   34,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0, 2736,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0, 2480,  187, 1851, 2134, 1428,    0,    0,    0, 2274,
    0,    0,    0, 2686, 1921,    0, 1711,    0, 1498,  969, 
 1052,  720,  803,  886, 1568, 1638, 1135, 1205, 1275, 1345,
 2550, 2620, 3680, 3479,    0,   10,    1,    0,    0,    0,
    0,   64,    0,    0,    0,  171,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0, -144,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  189, 2204, 2344, 1781,    0,    0, 3680, -108,    0, 
  -31,  135,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,   61,    0,   11,    0, -234,    0, 4811, 4877,
 4943,    0,    0,    0,    0,    0,    0,    0, 5075, 5141, 
  388,  388,  388,  388,    0,    0,    0, 1994,    0,    0,
  169,    0,    0,    0,    4,    0,    0,    0, 3747,    0,
    0,    0,    0,    0,    0, 2807,    0,    0,    0,   17,
    0, -231,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,  471,    0,    0,    0,
    0,    0,    0,    0, 2064,    0,  170,    0,    0,    0, 
    0,   71,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0, 2777,   41,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,   32,   53,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   43, 5075, 5141,   32,   69,    0,    0,
    0,    0,    0,    0,    0,    0,   51,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0, 
};
static short [] yygindex = {                         0, 
    0,    0,  105,    0,  453,   -1,   27,  458,   67,  402, 
   29,    0,    0,    0,    0,    0,    0,  -74,    0,  234,
 -220,    0,    0, -159,  -61,  278,  279,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,  104,   98,
  107,  -70,  134,    0,    0,    0,    0, -181,    0,    0,
    0,    0,    0,    0,    0, -103,    0,    0,    0,    0,
   20,    0,  161, 
};
static int YYTABLESIZE=5956; 
static short[] yytable = {                         33, 
   26,  134,   13,   27,  293,  294,  271,    1,   62,   25,
   54,  146,  278,  151,  139,  146,   58,  251,  218,  146, 
  157,  158,  143,  251,  279,  230,  147,   34,  204,  251,
  147,   70,   59,   48,  147,  125,  126,  276,  251,  208,
   57,  183,   64,  146,  146,  209,  147,  147,  143,   73,
   65,  317,   62,  358,  262,   59,   80,   82,   83,  281, 
   50,   63,  360,   51,  284,  277,  219,  322,   63,  159,
   53,  282,  251,  275,   86,   88,  285,  127,  215,  148, 
  217,  286,  287,  251,  251,  146,  143,  150,  147,  161, 
   59,  124,  264,  129,  130,   89,   59,   59,   59,  168,
   80,  255,  135,  136,  137,   59,  141,  258,   54,  228, 
  162,   65,  145,  143,  251,  362,  267,  163,  152,  153,
  154,  155,  156,  144,  160,  363,  164,  165,  167,  251,
  169,  170,  171,  172,  173,  174,  175,  176,  177,  178,
  179,  180,  181,  182,    1,   66,  257,  101,   67,  137, 
  298,   27,   71,  196,   73,  197,   68,  105,  106,  107,
   73,  312,  313,  141,   73,  139,  123,   85,  114,  342, 
   86,  212,  131,  132,  133,  343,  141,   80,   74,   80, 
  141,  140,   69,  141,   74,  141,   70,   72,   74,  222,
  223,  224,  327,  301,  225,  141,  303,  249,   86,  302, 
  141,   88,  304,  249,   74,  256,  344,  334,  380,  249,
  139,  259,  345,  229,  381,  214,  382,  216,  249,  243,
   13,   77,  383,  247,  372,  250,  139,   75,  253,   86,
  373,  250,   76,  101,  234,   87,  137,  250,   88,  260, 
   30,  103,  104,  105,  106,  107,  250,  235,   77,  268,
   78,  236,  249,   30,  237,  137,  238,   30,    7,    8, 
   30,  137,   30,  249,  249,   84,  239,  115,  374,  137, 
  137,  240,   30,   88,  375,   86,  292,   30,   88,  118,
  250,  308,  309,  310,  142,  101,   26,   26,  121,   27, 
   27,  250,  250,  184,  249,   25,   25,  315,  316,  329,
  137,  330,  191,   26,   79,  194,   27,  201,  198,  249,
  226,  202,   25,   54,  203,  210,  137,  220,  244,   48,
   48,   26,  250,   26,   27,   26,   27,   70,   27,   26, 
   25,   13,   27,  280,   25,   54,   48,  250,   25,   54,
  349,   58,  350,   57,   70,   58,   50,   50,   62,  338, 
   51,  339,  261,  233,   70,  365,   70,   53,   48,  283, 
   70,  288,   48,   50,   63,   57,   51,   64,  263,   57,
  378,   64,  379,   53,  351,   65,  352,   62,  384,   65, 
  385,   62,  265,  366,  270,   50,  273,  170,   51,   50,
  368,  352,   51,   63,  274,   53,  289,   63,  377,   53,
  295,    4,    4,    4,    4,  299,   32,    4,  300,  305,
  314,  208,  318,    4,    4,  319,  320,    4,    4,   32, 
  321,    4,  331,   32,  324,    4,   32,    4,   32,  328,
  335,  336,  340,    7,  341,  346,  370,    4,   32,  347, 
  355,    4,    4,   32,    4,  356,  386,  387,   89,  148, 
   90,    4,   17,   19,    4,    4,    4,   61,   35,  119,
    4,  272,  231,  232,  376,  367,  369,  333,    0,    0, 
  171,    0,    4,    0,    0,    0,    4,    0,    4,    4,
    0,    0,    0,   77,    0,    0,   77,   77,   77,    0,
    4,    4,   77,   77,    0,    0,   77,    0,    0,   77,
   77,   77,    0,   77,    0,   77,   77,   77,   77,   77, 
   77,   77,   77,   77,    0,   77,   77,   77,    0,   77,
    0,    0,   77,   77,   77,   77,   77,    0,    0,    0, 
   77,    0,    0,    0,   77,   77,    0,    0,   77,    0, 
    0,   77,   77,    0,   77,    0,   77,   77,   77,    0,
   77,    0,    0,   97,   77,   77,   77,   77,   77,   77, 
   77,   77,   77,   77,   77,   77,   79,    0,    0,   79,
   79,   79,    0,    0,    0,   79,   79,    0,    0,   79,
    0,    0,   79,   79,   79,    0,   79,    0,   79,   79,
   79,   79,   79,   79,   79,   79,   79,    0,   79,   79, 
   79,    0,   79,    0,    0,   79,   79,   79,   79,   79,
    0,    0,    0,   79,    0,    0,    0,   79,   79,    0, 
    0,   79,    0,    0,   79,   79,    0,   79,    0,   79, 
   79,   79,    0,   79,    0,    0,   96,   79,   79,   79,
   79,   79,   79,   79,   79,   79,   79,   79,   79,  170, 
    0,    0,  170,  170,  170,    0,    0,    0,  170,  170,
    0,    0,  170,    0,    0,  170,  170,  170,    0,  170,
    0,  170,  170,  170,  170,  170,  170,  170,  170,  170,
    0,  170,  170,  170,    0,  170,    0,    0,  170,  170, 
  170,  170,  170,    0,    0,    0,  170,    0,    0,    0,
  170,  170,    0,    0,  170,    0,    0,  170,  170,    0, 
  170,    0,  170,  170,  170,    0,  170,    0,    0,   93, 
  170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
  170,  170,  171,    0,    0,  171,  171,  171,    0,    0, 
    0,  171,  171,    0,    0,  171,    0,    0,  171,  171,
  171,    0,  171,    0,  171,  171,  171,  171,  171,  171,
  171,  171,  171,    0,  171,  171,  171,    0,  171,    0,
    0,  171,  171,  171,  171,  171,    0,    0,    0,  171, 
    0,    0,    0,  171,  171,    0,    0,  171,    0,    0,
  171,  171,    0,  171,    0,  171,  171,  171,    0,  171, 
    0,    0,   94,  171,  171,  171,  171,  171,  171,  171, 
  171,  171,  171,  171,  171,   97,    0,    0,   97,   97,
   97,    0,    0,    0,   97,   97,    0,    0,   97,    0, 
    0,   97,   97,   97,    0,   97,    0,   97,   97,   97,
   97,   97,   97,   97,   97,   97,    0,   97,   97,   97,
    0,   97,    0,    0,   97,   97,   97,   97,   97,    0,
    0,    0,   97,    0,    0,    0,   97,   97,    0,    0, 
   97,    0,    0,   97,   97,    0,   97,    0,   97,    0,
   97,    0,   97,    0,    0,   95,   97,   97,   97,   97, 
   97,   97,   97,   97,   97,   97,   97,   97,   96,    0, 
    0,   96,   96,   96,    0,    0,    0,   96,   96,    0,
    0,   96,    0,    0,   96,   96,   96,    0,   96,    0, 
   96,   96,   96,   96,   96,   96,   96,   96,   96,    0,
   96,   96,   96,    0,   96,    0,    0,   96,   96,   96,
   96,   96,    0,    0,    0,   96,    0,    0,    0,   96,
   96,    0,    0,   96,    0,    0,   96,   96,    0,   96, 
    0,   96,    0,   96,    0,   96,    0,    0,   91,   96,
   96,   96,   96,   96,   96,   96,   96,   96,   96,   96, 
   96,   93,    0,    0,   93,   93,   93,    0,    0,    0, 
   93,   93,    0,    0,   93,    0,    0,   93,   93,   93,
    0,   93,    0,   93,   93,   93,   93,   93,   93,   93, 
   93,   93,    0,   93,   93,   93,    0,   93,    0,    0,
   93,   93,   93,   93,   93,    0,    0,    0,   93,    0,
    0,    0,   93,   93,    0,    0,   93,    0,    0,   93,
   93,    0,   93,    0,   93,    0,   93,    0,   93,    0, 
    0,   92,   93,   93,   93,   93,   93,   93,   93,   93,
   93,   93,   93,   93,   94,    0,    0,   94,   94,   94, 
    0,    0,    0,   94,   94,    0,    0,   94,    0,    0, 
   94,   94,   94,    0,   94,    0,   94,   94,   94,   94,
   94,   94,   94,   94,   94,    0,   94,   94,   94,    0, 
   94,    0,    0,   94,   94,   94,   94,   94,    0,    0,
    0,   94,    0,    0,    0,   94,   94,    0,    0,   94,
    0,    0,   94,   94,    0,   94,    0,   94,    0,   94,
    0,   94,    0,    0,  101,   94,   94,   94,   94,   94, 
   94,   94,   94,   94,   94,   94,   94,   95,    0,    0,
   95,   95,   95,    0,    0,    0,   95,   95,    0,    0, 
   95,    0,    0,   95,   95,   95,    0,   95,    0,   95, 
   95,   95,   95,   95,   95,   95,   95,   95,    0,   95,
   95,   95,    0,   95,    0,    0,   95,   95,   95,   95, 
   95,    0,    0,    0,   95,    0,    0,    0,   95,   95,
    0,    0,   95,    0,  102,   95,   95,    0,   95,    0,
   95,    0,   95,    0,   95,    0,    0,    0,   95,   95,
   95,   95,   95,   95,   95,   95,   95,   95,   95,   95, 
   91,    0,    0,   91,   91,   91,    0,    0,    0,   91,
   91,    0,    0,   91,    0,    0,   91,   91,   91,    0, 
   91,    0,   91,   91,   91,   91,   91,   91,   91,   91, 
   91,    0,   91,   91,   91,    0,   91,    0,    0,   91,
   91,   91,   91,   91,   99,    0,    0,   91,    0,    0, 
    0,   91,   91,    0,    0,   91,    0,    0,   91,   91,
    0,   91,    0,   91,    0,   91,    0,   91,    0,    0,
    0,   91,   91,   91,    0,    0,    0,   91,   91,   91,
   91,   91,   91,   92,    0,    0,   92,   92,   92,    0, 
    0,    0,   92,   92,    0,    0,   92,    0,    0,   92,
   92,   92,    0,   92,    0,   92,   92,   92,   92,   92, 
   92,   92,   92,   92,  100,   92,   92,   92,    0,   92, 
    0,    0,   92,   92,   92,   92,   92,    0,    0,    0,
   92,    0,    0,    0,   92,   92,    0,    0,   92,    0, 
    0,   92,   92,    0,   92,    0,   92,    0,   92,    0,
   92,    0,    0,    0,   92,   92,   92,    0,    0,    0,
   92,   92,   92,   92,   92,   92,  101,    0,    0,  101,
  101,  101,    0,    0,    0,  101,  101,    0,    0,  101, 
    0,    0,  101,  101,  101,    0,  101,    0,  101,  101,
  101,  101,  101,  101,  101,  101,  101,  103,  101,  101, 
  101,    0,  101,    0,    0,  101,  101,  101,  101,  101, 
    0,    0,    0,  101,    0,    0,    0,  101,  101,    0,
    0,  101,    0,    0,  101,  101,    0,  101,    0,  101, 
    0,  101,    0,  101,    0,    0,  102,  101,    0,  102,
  102,  102,    0,  101,  101,  102,  102,    0,    0,  102,
    0,    0,  102,  102,  102,    0,  102,    0,  102,  102,
  102,  102,  102,  102,  102,  102,  102,  138,  102,  102, 
  102,    0,  102,    0,    0,  102,  102,  102,  102,  102,
    0,    0,    0,  102,    0,    0,    0,  102,  102,    0, 
    0,  102,    0,    0,  102,  102,    0,  102,    0,  102, 
    0,  102,    0,  102,    0,    0,   99,  102,    0,   99,
   99,   99,    0,  102,  102,   99,   99,    0,    0,   99, 
    0,    0,   99,   99,   99,    0,   99,    0,   99,   99,
   99,   99,   99,   99,   99,   99,   99,  139,   99,   99,
   99,    0,   99,    0,    0,   99,   99,   99,   99,   99,
    0,    0,    0,   99,    0,    0,    0,   99,   99,    0, 
    0,   99,    0,    0,   99,   99,    0,   99,    0,   99,
    0,   99,    0,   99,    0,    0,  100,   99,    0,  100, 
  100,  100,    0,   99,   99,  100,  100,    0,    0,  100, 
    0,    0,  100,  100,  100,    0,  100,    0,  100,  100,
  100,  100,  100,  100,  100,  100,  100,   98,  100,  100, 
  100,    0,  100,    0,    0,  100,  100,  100,  100,  100,
    0,    0,    0,  100,    0,    0,    0,  100,  100,    0,
    0,  100,    0,    0,  100,  100,    0,  100,    0,  100,
    0,  100,    0,  100,    0,    0,    0,  100,    0,    0, 
    0,    0,    0,  100,  100,    0,    0,    0,    0,  103,
    0,    0,  103,  103,  103,    0,    0,    0,  103,  103, 
    0,    0,  103,    0,    0,  103,  103,  103,    0,  103, 
  104,  103,  103,  103,  103,  103,  103,  103,  103,  103,
    0,  103,  103,  103,    0,  103,    0,    0,  103,  103, 
  103,  103,  103,    0,    0,    0,  103,    0,    0,    0,
  103,  103,    0,    0,  103,    0,    0,  103,  103,    0,
  103,    0,  103,    0,    0,    0,  103,    0,    0,  138,
  103,    0,  138,  138,  138,    0,    0,    0,  138,  138, 
    0,    0,  138,    0,    0,  138,  138,  138,    0,  138,
  105,  138,  138,  138,  138,  138,  138,  138,  138,  138, 
    0,  138,  138,  138,    0,  138,    0,    0,  138,  138, 
  138,  138,  138,    0,    0,    0,  138,    0,    0,    0,
  138,  138,    0,    0,  138,    0,    0,  138,  138,    0, 
  138,    0,  138,    0,    0,    0,  138,    0,    0,  139,
  138,    0,  139,  139,  139,    0,    0,    0,  139,  139,
    0,    0,  139,    0,    0,  139,  139,  139,    0,  139,
  106,  139,  139,  139,  139,  139,  139,  139,  139,  139, 
    0,  139,  139,  139,    0,  139,    0,    0,  139,  139,
  139,  139,  139,    0,    0,    0,  139,    0,    0,    0, 
  139,  139,    0,    0,  139,    0,    0,  139,  139,    0, 
  139,    0,  139,    0,    0,    0,  139,    0,    0,   98,
  139,    0,   98,   98,   98,    0,    0,    0,   98,   98, 
    0,    0,   98,    0,    0,   98,   98,   98,    0,   98,
  107,   98,   98,   98,   98,   98,   98,   98,   98,   98,
    0,   98,   98,   98,    0,   98,    0,    0,   98,   98,
   98,   98,   98,    0,    0,    0,   98,    0,    0,    0, 
   98,   98,    0,    0,   98,    0,    0,   98,   98,    0,
   98,    0,   98,    0,    0,    0,   98,    0,    0,    0, 
   98,    0,  104,    0,    0,  104,  104,  104,    0,    0, 
    0,  104,  104,    0,    0,  104,    0,    0,  104,  104,
  104,    0,  104,  128,  104,  104,  104,  104,  104,  104, 
    0,  104,  104,    0,  104,  104,  104,    0,  104,    0,
    0,  104,  104,  104,  104,  104,    0,    0,    0,  104,
    0,    0,    0,  104,  104,    0,    0,  104,    0,    0,
  104,  104,    0,  104,    0,  104,    0,    0,    0,  104, 
    0,    0,  105,  104,    0,  105,  105,  105,    0,    0,
    0,  105,  105,    0,    0,  105,    0,    0,  105,  105, 
  105,    0,  105,  129,  105,  105,  105,  105,  105,  105, 
    0,  105,  105,    0,  105,  105,  105,    0,  105,    0,
    0,  105,  105,  105,  105,  105,    0,    0,    0,  105, 
    0,    0,    0,  105,  105,    0,    0,  105,    0,    0,
  105,  105,    0,  105,    0,  105,    0,    0,    0,  105,
    0,    0,  106,  105,    0,  106,  106,  106,    0,    0,
    0,  106,  106,    0,    0,  106,    0,    0,  106,  106, 
  106,    0,  106,  108,  106,  106,  106,  106,  106,  106,
    0,  106,  106,    0,  106,  106,  106,    0,  106,    0, 
    0,  106,  106,  106,  106,  106,    0,    0,    0,  106, 
    0,    0,    0,  106,  106,    0,    0,    0,    0,    0,
  106,  106,    0,  106,    0,  106,    0,    0,    0,  106, 
    0,    0,  107,  106,    0,  107,  107,  107,    0,    0,
    0,  107,  107,    0,    0,  107,    0,    0,  107,  107,
    0,    0,  107,  109,  107,  107,  107,  107,  107,  107,
    0,  107,  107,    0,  107,  107,  107,    0,  107,    0, 
    0,  107,  107,  107,  107,  107,    0,    0,    0,  107,
    0,    0,    0,  107,  107,    0,    0,    0,    0,    0, 
  107,  107,    0,  107,    0,  107,    0,    0,    0,  107, 
    0,    0,    0,  107,    0,  128,    0,    0,  128,  128,
  128,    0,    0,    0,  128,  128,    0,    0,  128,    0, 
    0,  128,  128,  126,    0,  128,    0,  128,  128,  128,
  128,  128,  128,    0,  128,  128,    0,  128,  128,  128,
    0,  128,    0,    0,  128,  128,  128,  128,    0,    0,
    0,    0,  128,    0,    0,    0,  128,  128,    0,    0, 
    0,    0,    0,  128,  128,    0,  128,    0,  128,    0,
    0,    0,  128,    0,    0,  129,  128,    0,  129,  129, 
  129,    0,    0,    0,  129,  129,    0,    0,  129,    0, 
    0,  129,  129,  127,    0,  129,    0,  129,  129,  129,
  129,  129,  129,    0,  129,  129,    0,  129,  129,  129, 
    0,  129,    0,    0,  129,  129,  129,  129,    0,    0,
    0,    0,  129,    0,    0,    0,  129,  129,    0,    0,
    0,    0,    0,  129,  129,    0,  129,    0,  129,    0,
    0,    0,  129,    0,    0,  108,  129,    0,  108,  108, 
  108,    0,    0,    0,  108,  108,    0,    0,  108,  133,
    0,  108,  108,    0,    0,  108,    0,  108,  108,  108, 
  108,    0,  108,    0,  108,  108,    0,  108,    0,  108, 
    0,  108,    0,    0,  108,  108,  108,  108,    0,    0,
    0,    0,  108,    0,    0,    0,  108,  108,    0,    0, 
    0,    0,    0,  108,  108,    0,  108,    0,  108,    0,
    0,    0,  108,    0,    0,  109,  108,    0,  109,  109,
  109,    0,    0,    0,  109,  109,    0,    0,  109,  134,
    0,  109,  109,    0,    0,  109,    0,  109,  109,  109, 
  109,    0,  109,    0,  109,  109,    0,  109,    0,  109,
    0,  109,    0,    0,  109,  109,  109,  109,    0,    0, 
    0,    0,  109,    0,    0,    0,  109,  109,    0,    0, 
    0,    0,    0,  109,  109,    0,  109,    0,  109,    0,
    0,    0,  109,    0,    0,  126,  109,    0,  126,  126, 
  126,    0,    0,    0,  126,  126,    0,    0,  126,  130,
    0,  126,  126,    0,    0,    0,    0,  126,  126,  126,
  126,    0,  126,    0,  126,  126,    0,  126,    0,  126,
    0,  126,    0,    0,  126,  126,  126,  126,    0,    0, 
    0,    0,  126,    0,    0,    0,  126,  126,    0,    0,
    0,    0,    0,  126,  126,    0,  126,    0,  126,    0, 
    0,    0,  126,    0,    0,  127,  126,    0,  127,  127, 
  127,    0,    0,    0,  127,  127,    0,    0,  127,  131,
    0,  127,  127,    0,    0,    0,    0,  127,  127,  127, 
  127,    0,  127,    0,  127,  127,    0,  127,    0,  127,
    0,  127,    0,    0,  127,  127,  127,  127,    0,    0,
    0,    0,  127,    0,    0,    0,  127,  127,    0,    0,
    0,    0,    0,  127,  127,    0,  127,    0,  127,    0, 
    0,  133,  127,    0,  133,  133,  127,    0,    0,    0,
  133,  133,    0,    0,  133,  132,    0,  133,  133,    0, 
    0,  133,    0,  133,  133,  133,  133,    0,  133,    0, 
    0,  133,    0,  133,    0,  133,    0,    0,    0,    0,
  133,  133,  133,  133,    0,    0,    0,    0,  133,    0, 
    0,    0,  133,  133,    0,    0,    0,    0,    0,  133,
  133,    0,  133,    0,  133,  141,    0,    0,  133,    0,
    0,  134,  133,    0,  134,  134,    0,    0,    0,    0,
  134,  134,    0,    0,  134,    0,    0,  134,  134,    0, 
    0,  134,    0,  134,  134,  134,  134,    0,  134,    0,
    0,  134,    0,  134,    0,  134,   34,    0,    0,    0, 
  134,  134,  134,  134,    0,    0,    0,    0,  134,    0, 
    0,    0,  134,  134,    0,    0,    0,    0,    0,  134,
  134,    0,  134,    0,  134,    0,   33,    0,  134,    0, 
    0,  130,  134,    0,  130,  130,    0,    0,    0,    0,
  130,  130,    0,    0,  130,    0,    0,  130,  130,    0,
    0,  130,    0,  130,  130,  130,  130,    0,  130,    0,
    0,  130,    0,  130,    0,  130,    0,    0,    0,    0, 
  130,  130,  130,  130,    0,    0,    0,    0,  130,    0,
    0,    0,  130,  130,    0,    0,    0,    0,    0,  130, 
  130,    0,  130,    0,  130,    0,    0,    0,  130,    0, 
    0,  131,  130,    0,  131,  131,    0,    0,    0,    0,
  131,  131,    0,    0,  131,    0,    0,  131,  131,    0, 
    0,  131,    0,  131,  131,  131,  131,    0,  131,    0,
    0,  131,    0,  131,    0,  131,    0,    0,    0,    0,
  131,  131,  131,  131,    0,    0,    0,    0,  131,    0,
    0,    0,  131,  131,    0,    0,    0,    0,    0,  131, 
  131,    0,  131,    0,  131,    0,    0,    0,  131,    0,
  132,  132,  131,    0,    0,    0,  132,  132,    0,    0, 
  132,    0,    0,  132,  132,    0,    0,  132,    0,  132, 
  132,  132,  132,    0,  132,    0,    0,  132,    0,  132,
    0,  132,    0,    0,    0,    0,  132,  132,  132,  132, 
    0,    0,    0,    0,  132,    0,    0,    0,  132,  132,
    0,    0,    0,    0,    0,  132,  132,  141,  132,    0,
  132,    0,    0,    0,  132,    0,    0,    0,  132,  141,
  141,  141,  141,    0,  141,    0,    0,  141,    0,  141, 
    0,    0,    0,    0,    0,    0,  141,    0,  141,  141,
    0,    0,    0,    0,  141,    0,    0,    0,   34,    0, 
    0,    0,    0,    0,    0,    0,  141,    0,  141,    0, 
  141,   34,   34,   34,  141,   34,    0,    0,   34,    0,
   34,    0,    0,    0,    0,    0,    0,   34,   33,   34, 
   34,    0,    0,    0,    0,   34,    0,    0,    0,    0,
    0,   33,   33,   33,    0,   33,    0,   34,   33,   34,
   33,   34,    0,    0,    0,   34,    0,    0,    0,   33,
   33,    0,    0,    0,    0,   33,    0,    0,    0,    0, 
   16,   16,   16,   16,   16,    0,   16,   33,    0,   33,
    0,   33,   16,   16,    0,   33,   16,   16,    0,   16, 
   16,    0,    0,    0,   16,    0,   16,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,   16,    0,    0,    0,
   16,   16,    0,   16,    0,    0,    0,    0,    0,    0, 
   16,    0,    0,   16,    0,   16,    0,    0,   16,   16,
    0,    0,   18,    0,    0,    0,    0,    7,    8,    9,
   10,   16,    0,   11,    0,   16,    0,   16,   16,   12,
   13,    0,    0,   14,   15,    0,    0,   16,    0,   16, 
   16,   17,    0,   18,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   19,    0,    0,    0,   20,   21,    0, 
   22,    0,    0,    0,    0,    0,    0,   23,    0,  101, 
   24,   53,   25,    0,    0,    0,   26,  103,  104,  105,
  106,  107,    0,    0,  110,  111,  112,  113,   27,    0, 
    0,    0,   28,    0,   29,   30,    7,    8,    9,   10,
  166,    0,   11,    0,    0,    0,   31,   32,   12,   13,
    0,    0,   14,   15,    0,    0,   16,    0,    0,    0,
   17,    0,   18,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,   19,    0,    0,    0,   20,   21,    0,   22,
    0,    0,    0,    0,    0,    0,   23,    0,    0,   24, 
    0,   25,    0,    0,    0,   26,    0,    0,    0,    0, 
    0,    0,    0,    7,    8,    9,   10,   27,    0,   11,
    0,   28,    0,   29,   30,   12,   13,    0,    0,   14, 
   15,    0,    0,   16,    0,   31,   32,   17,    0,   18,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   19,
    0,    0,    0,   20,   21,    0,   22,    0,    0,    0,
    0,    0,    0,   23,    0,    0,   24,   53,   25,    0, 
    0,    0,   26,    0,    0,    0,    0,    0,    0,    0,
    7,    8,    9,   10,  185,    0,   11,    0,   28,    0, 
   29,   30,   12,   13,    0,    0,   14,   15,    0,    0, 
   16,    0,   31,   32,   17,    0,   18,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   19,    0,    0,    0, 
   20,   21,    0,   22,    0,    0,    0,    0,    0,  254,
   23,    0,    0,   24,    0,   25,    0,    0,    0,   26,
    0,    0,    0,    0,    0,    0,    0,    7,    8,    9,
   10,   27,    0,   11,    0,   28,    0,   29,   30,   12, 
   13,    0,    0,   14,   15,    0,    0,   16,    0,   31,
   32,   17,    0,   18,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,   19,    0,    0,    0,   20,   21,    0, 
   22,    0,    0,    0,    0,    0,  266,   23,    0,    0,
   24,    0,   25,    0,    0,    0,   26,    0,    0,    0, 
    0,    0,    0,    0,    7,    8,    9,   10,   27,    0,
   11,    0,   28,    0,   29,   30,   12,   13,    0,    0,
   14,   15,    0,    0,   16,    0,   31,   32,   17,    0,
   18,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
   19,    0,    0,    0,   20,   21,    0,   22,    0,    0,
    0,    0,    0,  311,   23,    0,    0,   24,    0,   25, 
    0,    0,    0,   26,    0,    0,    0,    0,    0,    0, 
    0,    5,    5,    5,    5,   27,    0,    5,    0,   28,
    0,   29,   30,    5,    5,    0,    0,    5,    5,    0, 
    0,    5,    0,   31,   32,    5,    0,    5,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    5,    0,    0,
    0,    5,    5,    0,    5,    0,    0,    0,    0,    0,
    0,    5,    0,    0,    5,    5,    5,    0,    0,    0, 
    5,    0,    0,    0,    0,    0,    0,    0,   20,   20,
   20,   20,    5,    0,   20,    0,    5,    0,    5,    5, 
   20,   20,    0,    0,   20,   20,    0,    0,   20,    0, 
    5,    5,   20,    0,   20,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   20,    0,    0,    0,   20,   20, 
    0,   20,    0,    0,    0,    0,    0,    0,   20,    0,
    0,   20,   20,   20,    0,    0,    0,   20,    0,    0,
    0,    0,    0,    0,    0,   20,   20,   20,   20,   20,
    0,   20,    0,   20,    0,   20,   20,   20,   20,    0, 
    0,   20,   20,    0,    0,   20,    0,   20,   20,   20,
    0,   20,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,   20,    0,    0,    0,   20,   20,    0,   20,    0, 
    0,    0,    0,    0,    0,   20,    0,    0,   20,    0,
   20,    0,    0,   20,   20,    0,    0,    0,    0,    0, 
    0,    0,    7,    8,    9,   10,   20,    0,   11,    0,
   20,    0,   20,   20,   12,   13,    0,    0,   14,   15,
    0,    0,   16,    0,   20,   20,   17,    0,   18,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   19,    0, 
    0,    0,   20,   21,    0,   22,    0,    0,    0,    0,
    0,    0,   23,    0,    0,   24,    0,   25,    0,    0, 
    0,   26,    0,    0,    0,    0,    0,    0,    0,    7, 
    8,    9,   10,   27,    0,   11,    0,   28,    0,   29,
   30,   12,   13,    0,    0,   14,   15,    0,    0,   16, 
    0,   31,   32,   17,    0,   18,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   19,    0,    0,    0,   20,
   21,    0,   22,    0,    0,    0,    0,    0,    0,   23,
    0,    0,   24,    0,   25,    0,    0,    0,   26,    0, 
    0,    0,    0,    0,    0,    0,   23,   23,   23,   23,
  185,    0,   23,    0,   28,    0,   29,   30,   23,   23, 
    0,    0,   23,   23,    0,    0,   23,    0,   31,   32, 
   23,    0,   23,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   23,    0,    0,    0,   23,   23,    0,   23, 
    0,    0,    0,    0,    0,    0,   23,    0,    0,   23,
    0,   23,    0,    0,    0,   23,    0,    0,    0,    0,
    0,    0,    0,   45,   45,   45,   45,   23,    0,   45,
    0,   23,    0,   23,   23,   45,   45,    0,    0,   45, 
   45,    0,    0,   45,    0,   23,   23,   45,    0,   45,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   45, 
    0,    0,    0,   45,   45,    0,   45,    0,    0,    0, 
    0,    0,    0,   45,    0,    0,   45,    0,   45,    0,
    0,    0,   45,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,    0,   45,    0,    0,    0,   45,    0,
   45,   45,   90,    0,    0,    0,  358,   91,    0,    0,
    0,  359,   45,   45,    0,  360,    0,    0,    0,    0,
   92,    0,    0,    0,    0,    0,    0,    0,   93,    0, 
   94,   95,    0,    0,    0,   96,    0,    0,   97,    0,
    0,    0,   98,    0,    0,   99,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,  100,    0,    0, 
    0,    0,    0,    0,    0,    0,  101,  102,   90,    0,
    0,  207,    0,   91,  103,  104,  105,  106,  107,  108, 
  109,  110,  111,  112,  113,    0,   92,    0,    0,    0,
    0,    0,    0,    0,   93,    0,   94,   95,    0,    0,
    0,   96,    0,    0,   97,    0,    0,    0,   98,    0,
    0,   99,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,  100,    0,    0,    0,    0,    0,    0,
    0,  118,  101,  102,   90,    0,    0,    0,    0,   91, 
  103,  104,  105,  106,  107,  108,  109,  110,  111,  112, 
  113,    0,   92,    0,    0,    0,    0,    0,    0,    0,
   93,    0,   94,   95,    0,    0,    0,   96,    0,    0, 
   97,    0,    0,    0,   98,    0,    0,   99,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  100,
    0,    0,    0,    0,    0,  296,    0,    0,  101,  102,
   90,  297,    0,    0,    0,   91,  103,  104,  105,  106, 
  107,  108,  109,  110,  111,  112,  113,    0,   92,    0,
    0,    0,    0,    0,    0,    0,   93,    0,   94,   95, 
    0,    0,    0,   96,    0,    0,   97,    0,    0,    0, 
   98,    0,    0,   99,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  100,    0,    0,    0,    0, 
    0,    0,    0,  118,  101,  102,   90,    0,    0,    0,
    0,   91,  103,  104,  105,  106,  107,  108,  109,  110,
  111,  112,  113,    0,   92,    0,    0,    0,    0,    0,
    0,    0,   93,    0,   94,   95,    0,    0,    0,   96, 
    0,    0,   97,    0,    0,    0,   98,    0,    0,   99,
    0,    0,    0,    0,    0,    0,    0,    0,  195,    0, 
    0,  100,    0,    0,    0,    0,    0,    0,    0,    0, 
  101,  102,   90,    0,    0,  199,    0,   91,  103,  104,
  105,  106,  107,  108,  109,  110,  111,  112,  113,    0, 
   92,    0,    0,    0,    0,    0,    0,    0,   93,    0,
   94,   95,    0,    0,    0,   96,    0,    0,   97,    0,
    0,    0,   98,    0,    0,   99,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  100,    0,    0, 
    0,    0,    0,    0,    0,    0,  101,  102,   90,    0,
    0,    0,    0,   91,  103,  104,  105,  106,  107,  108, 
  109,  110,  111,  112,  113,    0,   92,    0,    0,    0, 
    0,    0,    0,    0,   93,    0,   94,   95,    0,    0,
    0,   96,    0,    0,   97,    0,    0,    0,   98,    0, 
    0,   99,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  100,    0,    0,    0,    0,    0,  200,
    0,    0,  101,  102,   90,    0,    0,    0,    0,   91,
  103,  104,  105,  106,  107,  108,  109,  110,  111,  112, 
  113,    0,   92,    0,    0,    0,    0,    0,    0,    0,
   93,    0,   94,   95,    0,    0,    0,   96,    0,    0, 
   97,    0,    0,    0,   98,    0,    0,   99,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,  100,
    0,    0,    0,    0,    0,  205,    0,    0,  101,  102, 
   90,    0,    0,    0,    0,   91,  103,  104,  105,  106,
  107,  108,  109,  110,  111,  112,  113,    0,   92,    0,
    0,    0,    0,    0,    0,    0,   93,    0,   94,   95,
    0,    0,    0,   96,    0,    0,   97,    0,    0,    0, 
   98,    0,    0,   99,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  100,    0,    0,    0,    0, 
    0,    0,    0,    0,  101,  102,   90,  206,    0,  207, 
    0,   91,  103,  104,  105,  106,  107,  108,  109,  110,
  111,  112,  113,    0,   92,    0,    0,    0,    0,    0, 
    0,    0,   93,    0,   94,   95,    0,    0,    0,   96,
    0,    0,   97,    0,    0,    0,   98,    0,    0,   99,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  100,    0,    0,    0,    0,    0,    0,    0,    0, 
  101,  102,   90,    0,    0,  211,    0,   91,  103,  104,
  105,  106,  107,  108,  109,  110,  111,  112,  113,    0, 
   92,    0,    0,    0,    0,    0,    0,    0,   93,    0, 
   94,   95,    0,    0,    0,   96,    0,    0,   97,    0,
    0,    0,   98,    0,    0,   99,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,  100,    0,    0,
    0,    0,    0,    0,    0,    0,  101,  102,   90,    0,
    0,    0,    0,   91,  103,  104,  105,  106,  107,  108,
  109,  110,  111,  112,  113,    0,   92,    0,    0,    0, 
    0,    0,    0,    0,   93,    0,   94,   95,    0,    0,
    0,   96,    0,    0,   97,    0,    0,    0,   98,    0, 
    0,   99,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,  100,    0,    0,    0,    0,    0,  213,
    0,    0,  101,  102,   90,    0,    0,    0,    0,   91, 
  103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
  113,    0,   92,    0,    0,    0,    0,    0,    0,    0,
   93,    0,   94,   95,    0,    0,    0,   96,    0,    0,
   97,    0,    0,    0,   98,    0,    0,   99,    0,    0, 
    0,    0,    0,    0,    0,    0,  248,    0,    0,  100,
    0,    0,    0,    0,    0,    0,    0,    0,  101,  102, 
   90,    0,    0,    0,    0,   91,  103,  104,  105,  106, 
  107,  108,  109,  110,  111,  112,  113,    0,   92,    0,
    0,    0,    0,    0,    0,    0,   93,    0,   94,   95, 
    0,    0,    0,   96,    0,    0,   97,    0,    0,    0,
   98,    0,    0,   99,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  100,    0,    0,    0,    0,
    0,    0,    0,    0,  101,  102,   90,  337,    0,    0, 
    0,   91,  103,  104,  105,  106,  107,  108,  109,  110,
  111,  112,  113,    0,   92,    0,    0,    0,    0,    0, 
    0,    0,   93,    0,   94,   95,    0,    0,    0,   96, 
    0,    0,   97,    0,    0,    0,   98,    0,    0,   99,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,  100,    0,    0,    0,    0,    0,  357,    0,    0,
  101,  102,   77,    0,    0,    0,    0,   77,  103,  104,
  105,  106,  107,  108,  109,  110,  111,  112,  113,    0,
   77,    0,    0,    0,    0,    0,    0,    0,   77,    0, 
   77,   77,    0,    0,    0,   77,    0,    0,   77,    0,
    0,    0,   77,    0,    0,   77,    0,    0,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,   77,    0,    0, 
    0,    0,    0,    0,    0,    0,   77,   77,   79,  180,
    0,    0,    0,   79,   77,   77,   77,   77,   77,   77, 
   77,   77,   77,   77,   77,    0,   79,    0,    0,    0,
    0,    0,    0,    0,   79,    0,   79,   79,    0,    0,
    0,   79,    0,    0,   79,    0,    0,    0,   79,    0,
    0,   79,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,   79,    0,    0,    0,    0,    0,    0,
    0,    0,   79,   79,   83,  181,    0,    0,    0,   83, 
   79,   79,   79,   79,   79,   79,   79,   79,   79,   79, 
   79,    0,   83,    0,    0,    0,    0,    0,    0,    0,
   83,    0,   83,   83,    0,    0,    0,   83,    0,    0, 
   83,    0,    0,    0,   83,    0,    0,   83,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   83,
    0,    0,    0,    0,    0,    0,    0,    0,   83,   83,
   90,  184,    0,    0,    0,   91,   83,   83,   83,   83, 
   83,   83,   83,   83,   83,   83,   83,    0,   92,    0,
    0,    0,    0,    0,    0,    0,   93,    0,   94,   95, 
    0,    0,    0,   96,    0,    0,   97,    0,    0,    0, 
   98,    0,    0,   99,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  100,    0,    0,    0,    0, 
    0,    0,    0,    0,  101,  102,   77,    0,    0,    0,
    0,   77,  103,  104,  105,  106,  107,  108,  109,  110,
  111,  112,  113,    0,   77,    0,    0,    0,    0,    0,
    0,    0,   77,    0,   77,   77,    0,    0,    0,   77, 
    0,    0,   77,    0,    0,    0,   77,    0,    0,   77,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 
    0,   77,    0,    0,    0,    0,    0,    0,    0,    0, 
   77,   77,   79,    0,    0,    0,    0,   79,   77,   77,
   77,   77,   77,   77,   77,   77,   77,   77,   77,    0, 
   79,    0,    0,    0,    0,    0,    0,    0,   79,    0,
   79,   79,    0,    0,    0,   79,    0,    0,   79,    0,
    0,    0,   79,    0,    0,   79,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   79,    0,    0, 
    0,    0,    0,    0,    0,    0,   79,   79,  136,    0,
    0,    0,    0,  136,   79,   79,   79,   79,   79,   79, 
   79,   79,   79,   79,   79,    0,  136,    0,    0,    0, 
    0,    0,    0,    0,  136,    0,  136,  136,    0,    0,
    0,  136,    0,    0,  136,    0,    0,    0,  136,    0, 
    0,  136,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  136,    0,    0,    0,    0,    0,    0,
    0,    0,  136,  136,   90,    0,    0,    0,    0,   91,
  136,  136,  136,  136,  136,  136,  136,  136,  136,  136, 
  136,    0,   92,    0,    0,    0,    0,    0,    0,    0,
   93,    0,   94,   95,    0,    0,    0,   96,    0,    0, 
   97,    0,    0,    0,    0,    0,    0,   99,    0,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,    0,  100,
    0,    0,    0,    0,    0,    0,    0,    0,  101,  102, 
    0,    0,    0,    0,   91,    0,  103,  104,  105,  106,
  107,  108,  109,  110,  111,  112,  113,   92,    0,    0,
    0,    0,    0,    0,    0,   93,    0,   94,   95,    0,
    0,    0,   96,    0,    0,   97,    0,    0,    0,   98, 
    0,    0,   99,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  100,    0,    0,    0,    0,    0, 
    0,    0,    0,  101,  102,    0,    0,    0,    0,   91, 
    0,  103,  104,  105,  106,  107,  108,  109,  110,  111,
  112,  113,   92,    0,    0,    0,    0,    0,    0,    0, 
   93,    0,   94,   95,    0,    0,    0,   96,    0,    0,
   97,    0,    0,    0,    0,    0,    0,   99,    0,    0,
   92,    0,  221,    0,    0,    0,    0,    0,    0,  100,
   94,    0,    0,    0,    0,    0,    0,    0,  101,  102, 
    0,    0,    0,    0,    0,   99,  103,  104,  105,  106,
  107,  108,  109,  110,  111,  112,  113,  100,    0,    0, 
   92,    0,  269,    0,    0,    0,  101,  102,    0,    0, 
   94,    0,    0,    0,  103,  104,  105,  106,  107,  108,
  109,  110,  111,  112,  113,   99,    0,    0,   92,    0, 
    0,    0,    0,    0,    0,    0,    0,  100,   94,    0,
    0,    0,    0,    0,    0,    0,  101,  102,    0,    0,
    0,    0,    0,   99,  103,  104,  105,  106,  107,  108,
  109,  110,  111,  112,  113,  100,   92,    0,    0,    0, 
    0,    0,    0,    0,  101,  102,   94,    0,    0,    0,
    0,    0,  103,  104,  105,  106,  107,  108,  109,  110, 
  111,  112,  113,    0,    0,    0,    0,    0,    0,    0, 
    0,    0,    0,  100,   94,    0,    0,    0,    0,    0,
    0,    0,  101,  102,    0,    0,    0,    0,    0,    0, 
  103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
  113,  100,   94,    0,    0,    0,    0,    0,    0,    0,
  101,  102,    0,    0,    0,    0,    0,    0,  103,  104,
  105,  106,  107,  108,  109,  110,  111,  112,  113,    0, 
    0,    0,    0,    0,    0,    0,    0,    0,  101,  102,
    0,    0,    0,    0,    0,    0,  103,  104,  105,  106, 
  107,  108,  109,  110,  111,  112,  113,  101,  102,    0, 
    0,    0,    0,    0,    0,  103,  104,  105,  106,  107,
  108,  109,  110,  111,  112,  113, 
};
static short [] yycheck = {                          1,
    0,   72,    0,    0,  258,  258,  227,  318,  328,    0,
    0,  261,  292,   88,   76,  261,    0,  199,  299,  261, 
  298,  299,  323,  205,  304,  185,  276,    1,  329,  211,
  276,    0,    4,    0,  276,  278,  279,  264,  220,  323, 
    0,  116,    0,  278,  279,  329,  278,  279,  323,   21, 
    0,  272,    0,  266,  329,   27,   28,   29,   30,  292,
    0,  320,  275,    0,  292,  292,  347,  288,    0,  347, 
    0,  304,  254,  233,  328,  328,  304,  320,  149,  329,
  151,  241,  242,  265,  266,  320,  323,  329,  320,  267,
   62,   63,  329,   65,   66,  325,   68,   69,   70,  101,
   72,  205,   74,   75,   76,   77,   78,  211,    4,  184, 
  288,  328,   84,  323,  296,  313,  220,  295,   90,   91,
   92,   93,   94,  333,   96,  323,   98,   99,  100,  311, 
  102,  103,  104,  105,  106,  107,  108,  109,  110,  111, 
  112,  113,  114,  115,    0,  328,  208,  326,   15,  121,
  254,  328,   19,  125,  323,  127,  328,  336,  337,  338, 
  329,  265,  266,  272,  333,  227,   62,  325,  262,  323,
  328,  143,   68,   69,   70,  329,  285,  149,  323,  151,
  289,   77,  328,  292,  329,  294,  328,  328,  333,  161,
  162,  163,  296,  323,  166,  304,  323,  199,  328,  329, 
  309,  328,  329,  205,  328,  207,  323,  311,  323,  211,
  272,  213,  329,  185,  329,  149,  323,  151,  220,  191, 
  329,    0,  329,  195,  323,  199,  288,  328,  200,  328, 
  329,  205,  328,  326,  272,  325,  208,  211,  328,  213,
  272,  334,  335,  336,  337,  338,  220,  285,  328,  221, 
  328,  289,  254,  285,  292,  227,  294,  289,  257,  258,
  292,  233,  294,  265,  266,  328,  304,  262,  323,  241,
  242,  309,  304,  328,  329,  328,  248,  309,  328,  325,
  254,  262,  263,  264,  329,  326,  286,  287,  284,  286, 
  287,  265,  266,  319,  296,  286,  287,  269,  270,  301,
  272,  303,  321,  303,    0,  329,  303,  329,  279,  311, 
  315,  329,  303,  303,  329,  329,  288,  328,  286,  286, 
  287,  321,  296,  323,  321,  325,  323,  296,  325,  329,
  321,  329,  329,  292,  325,  325,  303,  311,  329,  329, 
  342,  325,  344,  303,  313,  329,  286,  287,  296,  321,
  287,  323,  329,  323,  323,  357,  325,  287,  325,  264,
  329,  268,  329,  303,  296,  325,  303,  325,  329,  329,
  372,  329,  374,  303,  346,  325,  348,  325,  380,  329, 
  382,  329,  328,  357,  328,  325,  329,    0,  325,  329,
  362,  363,  329,  325,  329,  325,  287,  329,  370,  329, 
  329,  257,  258,  259,  260,  329,  272,  263,  329,  322, 
  329,  323,  292,  269,  270,  292,  292,  273,  274,  285,
  301,  277,  308,  289,  303,  281,  292,  283,  294,  329, 
  329,  329,  268,  257,  329,  328,  296,  293,  304,  329,
  329,  297,  298,  309,  300,  329,  329,  329,  262,  279,
  262,  307,  284,  284,  310,  311,  312,    5,    1,   58,
  316,  228,  185,  185,  367,  359,  363,  307,   -1,   -1, 
    0,   -1,  328,   -1,   -1,   -1,  332,   -1,  334,  335,
   -1,   -1,   -1,  262,   -1,   -1,  265,  266,  267,   -1, 
  346,  347,  271,  272,   -1,   -1,  275,   -1,   -1,  278, 
  279,  280,   -1,  282,   -1,  284,  285,  286,  287,  288,
  289,  290,  291,  292,   -1,  294,  295,  296,   -1,  298, 
   -1,   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,
  309,   -1,   -1,   -1,  313,  314,   -1,   -1,  317,   -1,
   -1,  320,  321,   -1,  323,   -1,  325,  326,  327,   -1,
  329,   -1,   -1,    0,  333,  334,  335,  336,  337,  338, 
  339,  340,  341,  342,  343,  344,  262,   -1,   -1,  265,
  266,  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275, 
   -1,   -1,  278,  279,  280,   -1,  282,   -1,  284,  285, 
  286,  287,  288,  289,  290,  291,  292,   -1,  294,  295,
  296,   -1,  298,   -1,   -1,  301,  302,  303,  304,  305, 
   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,
   -1,  317,   -1,   -1,  320,  321,   -1,  323,   -1,  325,
  326,  327,   -1,  329,   -1,   -1,    0,  333,  334,  335,
  336,  337,  338,  339,  340,  341,  342,  343,  344,  262, 
   -1,   -1,  265,  266,  267,   -1,   -1,   -1,  271,  272,
   -1,   -1,  275,   -1,   -1,  278,  279,  280,   -1,  282, 
   -1,  284,  285,  286,  287,  288,  289,  290,  291,  292, 
   -1,  294,  295,  296,   -1,  298,   -1,   -1,  301,  302,
  303,  304,  305,   -1,   -1,   -1,  309,   -1,   -1,   -1, 
  313,  314,   -1,   -1,  317,   -1,   -1,  320,  321,   -1,
  323,   -1,  325,  326,  327,   -1,  329,   -1,   -1,    0,
  333,  334,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  344,  262,   -1,   -1,  265,  266,  267,   -1,   -1, 
   -1,  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,
  280,   -1,  282,   -1,  284,  285,  286,  287,  288,  289, 
  290,  291,  292,   -1,  294,  295,  296,   -1,  298,   -1, 
   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,  309,
   -1,   -1,   -1,  313,  314,   -1,   -1,  317,   -1,   -1, 
  320,  321,   -1,  323,   -1,  325,  326,  327,   -1,  329,
   -1,   -1,    0,  333,  334,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,  262,   -1,   -1,  265,  266,
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,   -1, 
   -1,  278,  279,  280,   -1,  282,   -1,  284,  285,  286,
  287,  288,  289,  290,  291,  292,   -1,  294,  295,  296, 
   -1,  298,   -1,   -1,  301,  302,  303,  304,  305,   -1, 
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1,
  317,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1, 
  327,   -1,  329,   -1,   -1,    0,  333,  334,  335,  336,
  337,  338,  339,  340,  341,  342,  343,  344,  262,   -1,
   -1,  265,  266,  267,   -1,   -1,   -1,  271,  272,   -1,
   -1,  275,   -1,   -1,  278,  279,  280,   -1,  282,   -1, 
  284,  285,  286,  287,  288,  289,  290,  291,  292,   -1,
  294,  295,  296,   -1,  298,   -1,   -1,  301,  302,  303, 
  304,  305,   -1,   -1,   -1,  309,   -1,   -1,   -1,  313, 
  314,   -1,   -1,  317,   -1,   -1,  320,  321,   -1,  323,
   -1,  325,   -1,  327,   -1,  329,   -1,   -1,    0,  333, 
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,  262,   -1,   -1,  265,  266,  267,   -1,   -1,   -1,
  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,  280,
   -1,  282,   -1,  284,  285,  286,  287,  288,  289,  290, 
  291,  292,   -1,  294,  295,  296,   -1,  298,   -1,   -1,
  301,  302,  303,  304,  305,   -1,   -1,   -1,  309,   -1, 
   -1,   -1,  313,  314,   -1,   -1,  317,   -1,   -1,  320, 
  321,   -1,  323,   -1,  325,   -1,  327,   -1,  329,   -1,
   -1,    0,  333,  334,  335,  336,  337,  338,  339,  340, 
  341,  342,  343,  344,  262,   -1,   -1,  265,  266,  267,
   -1,   -1,   -1,  271,  272,   -1,   -1,  275,   -1,   -1,
  278,  279,  280,   -1,  282,   -1,  284,  285,  286,  287,
  288,  289,  290,  291,  292,   -1,  294,  295,  296,   -1, 
  298,   -1,   -1,  301,  302,  303,  304,  305,   -1,   -1,
   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1,  317, 
   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1,  327, 
   -1,  329,   -1,   -1,    0,  333,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,  262,   -1,   -1, 
  265,  266,  267,   -1,   -1,   -1,  271,  272,   -1,   -1,
  275,   -1,   -1,  278,  279,  280,   -1,  282,   -1,  284,
  285,  286,  287,  288,  289,  290,  291,  292,   -1,  294,
  295,  296,   -1,  298,   -1,   -1,  301,  302,  303,  304, 
  305,   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,
   -1,   -1,  317,   -1,    0,  320,  321,   -1,  323,   -1, 
  325,   -1,  327,   -1,  329,   -1,   -1,   -1,  333,  334, 
  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
  262,   -1,   -1,  265,  266,  267,   -1,   -1,   -1,  271, 
  272,   -1,   -1,  275,   -1,   -1,  278,  279,  280,   -1,
  282,   -1,  284,  285,  286,  287,  288,  289,  290,  291,
  292,   -1,  294,  295,  296,   -1,  298,   -1,   -1,  301,
  302,  303,  304,  305,    0,   -1,   -1,  309,   -1,   -1, 
   -1,  313,  314,   -1,   -1,  317,   -1,   -1,  320,  321,
   -1,  323,   -1,  325,   -1,  327,   -1,  329,   -1,   -1, 
   -1,  333,  334,  335,   -1,   -1,   -1,  339,  340,  341, 
  342,  343,  344,  262,   -1,   -1,  265,  266,  267,   -1,
   -1,   -1,  271,  272,   -1,   -1,  275,   -1,   -1,  278, 
  279,  280,   -1,  282,   -1,  284,  285,  286,  287,  288,
  289,  290,  291,  292,    0,  294,  295,  296,   -1,  298,
   -1,   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,
  309,   -1,   -1,   -1,  313,  314,   -1,   -1,  317,   -1, 
   -1,  320,  321,   -1,  323,   -1,  325,   -1,  327,   -1,
  329,   -1,   -1,   -1,  333,  334,  335,   -1,   -1,   -1, 
  339,  340,  341,  342,  343,  344,  262,   -1,   -1,  265, 
  266,  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,
   -1,   -1,  278,  279,  280,   -1,  282,   -1,  284,  285, 
  286,  287,  288,  289,  290,  291,  292,    0,  294,  295,
  296,   -1,  298,   -1,   -1,  301,  302,  303,  304,  305,
   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,
   -1,  317,   -1,   -1,  320,  321,   -1,  323,   -1,  325, 
   -1,  327,   -1,  329,   -1,   -1,  262,  333,   -1,  265,
  266,  267,   -1,  339,  340,  271,  272,   -1,   -1,  275, 
   -1,   -1,  278,  279,  280,   -1,  282,   -1,  284,  285, 
  286,  287,  288,  289,  290,  291,  292,    0,  294,  295,
  296,   -1,  298,   -1,   -1,  301,  302,  303,  304,  305, 
   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,
   -1,  317,   -1,   -1,  320,  321,   -1,  323,   -1,  325,
   -1,  327,   -1,  329,   -1,   -1,  262,  333,   -1,  265,
  266,  267,   -1,  339,  340,  271,  272,   -1,   -1,  275, 
   -1,   -1,  278,  279,  280,   -1,  282,   -1,  284,  285,
  286,  287,  288,  289,  290,  291,  292,    0,  294,  295, 
  296,   -1,  298,   -1,   -1,  301,  302,  303,  304,  305, 
   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,
   -1,  317,   -1,   -1,  320,  321,   -1,  323,   -1,  325, 
   -1,  327,   -1,  329,   -1,   -1,  262,  333,   -1,  265,
  266,  267,   -1,  339,  340,  271,  272,   -1,   -1,  275,
   -1,   -1,  278,  279,  280,   -1,  282,   -1,  284,  285,
  286,  287,  288,  289,  290,  291,  292,    0,  294,  295, 
  296,   -1,  298,   -1,   -1,  301,  302,  303,  304,  305,
   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1, 
   -1,  317,   -1,   -1,  320,  321,   -1,  323,   -1,  325, 
   -1,  327,   -1,  329,   -1,   -1,   -1,  333,   -1,   -1,
   -1,   -1,   -1,  339,  340,   -1,   -1,   -1,   -1,  262, 
   -1,   -1,  265,  266,  267,   -1,   -1,   -1,  271,  272,
   -1,   -1,  275,   -1,   -1,  278,  279,  280,   -1,  282,
    0,  284,  285,  286,  287,  288,  289,  290,  291,  292,
   -1,  294,  295,  296,   -1,  298,   -1,   -1,  301,  302, 
  303,  304,  305,   -1,   -1,   -1,  309,   -1,   -1,   -1,
  313,  314,   -1,   -1,  317,   -1,   -1,  320,  321,   -1, 
  323,   -1,  325,   -1,   -1,   -1,  329,   -1,   -1,  262, 
  333,   -1,  265,  266,  267,   -1,   -1,   -1,  271,  272,
   -1,   -1,  275,   -1,   -1,  278,  279,  280,   -1,  282, 
    0,  284,  285,  286,  287,  288,  289,  290,  291,  292,
   -1,  294,  295,  296,   -1,  298,   -1,   -1,  301,  302,
  303,  304,  305,   -1,   -1,   -1,  309,   -1,   -1,   -1,
  313,  314,   -1,   -1,  317,   -1,   -1,  320,  321,   -1, 
  323,   -1,  325,   -1,   -1,   -1,  329,   -1,   -1,  262,
  333,   -1,  265,  266,  267,   -1,   -1,   -1,  271,  272, 
   -1,   -1,  275,   -1,   -1,  278,  279,  280,   -1,  282, 
    0,  284,  285,  286,  287,  288,  289,  290,  291,  292,
   -1,  294,  295,  296,   -1,  298,   -1,   -1,  301,  302, 
  303,  304,  305,   -1,   -1,   -1,  309,   -1,   -1,   -1,
  313,  314,   -1,   -1,  317,   -1,   -1,  320,  321,   -1,
  323,   -1,  325,   -1,   -1,   -1,  329,   -1,   -1,  262,
  333,   -1,  265,  266,  267,   -1,   -1,   -1,  271,  272, 
   -1,   -1,  275,   -1,   -1,  278,  279,  280,   -1,  282,
    0,  284,  285,  286,  287,  288,  289,  290,  291,  292, 
   -1,  294,  295,  296,   -1,  298,   -1,   -1,  301,  302, 
  303,  304,  305,   -1,   -1,   -1,  309,   -1,   -1,   -1,
  313,  314,   -1,   -1,  317,   -1,   -1,  320,  321,   -1, 
  323,   -1,  325,   -1,   -1,   -1,  329,   -1,   -1,   -1,
  333,   -1,  262,   -1,   -1,  265,  266,  267,   -1,   -1,
   -1,  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,
  280,   -1,  282,    0,  284,  285,  286,  287,  288,  289, 
   -1,  291,  292,   -1,  294,  295,  296,   -1,  298,   -1,
   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,  309, 
   -1,   -1,   -1,  313,  314,   -1,   -1,  317,   -1,   -1, 
  320,  321,   -1,  323,   -1,  325,   -1,   -1,   -1,  329,
   -1,   -1,  262,  333,   -1,  265,  266,  267,   -1,   -1, 
   -1,  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,
  280,   -1,  282,    0,  284,  285,  286,  287,  288,  289,
   -1,  291,  292,   -1,  294,  295,  296,   -1,  298,   -1,
   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,  309, 
   -1,   -1,   -1,  313,  314,   -1,   -1,  317,   -1,   -1,
  320,  321,   -1,  323,   -1,  325,   -1,   -1,   -1,  329, 
   -1,   -1,  262,  333,   -1,  265,  266,  267,   -1,   -1, 
   -1,  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,
  280,   -1,  282,    0,  284,  285,  286,  287,  288,  289, 
   -1,  291,  292,   -1,  294,  295,  296,   -1,  298,   -1,
   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,  309,
   -1,   -1,   -1,  313,  314,   -1,   -1,   -1,   -1,   -1,
  320,  321,   -1,  323,   -1,  325,   -1,   -1,   -1,  329, 
   -1,   -1,  262,  333,   -1,  265,  266,  267,   -1,   -1,
   -1,  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279, 
   -1,   -1,  282,    0,  284,  285,  286,  287,  288,  289, 
   -1,  291,  292,   -1,  294,  295,  296,   -1,  298,   -1,
   -1,  301,  302,  303,  304,  305,   -1,   -1,   -1,  309, 
   -1,   -1,   -1,  313,  314,   -1,   -1,   -1,   -1,   -1,
  320,  321,   -1,  323,   -1,  325,   -1,   -1,   -1,  329,
   -1,   -1,   -1,  333,   -1,  262,   -1,   -1,  265,  266,
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,   -1, 
   -1,  278,  279,    0,   -1,  282,   -1,  284,  285,  286,
  287,  288,  289,   -1,  291,  292,   -1,  294,  295,  296, 
   -1,  298,   -1,   -1,  301,  302,  303,  304,   -1,   -1, 
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1,
   -1,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1, 
   -1,   -1,  329,   -1,   -1,  262,  333,   -1,  265,  266,
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,   -1,
   -1,  278,  279,    0,   -1,  282,   -1,  284,  285,  286,
  287,  288,  289,   -1,  291,  292,   -1,  294,  295,  296, 
   -1,  298,   -1,   -1,  301,  302,  303,  304,   -1,   -1,
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1, 
   -1,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1, 
   -1,   -1,  329,   -1,   -1,  262,  333,   -1,  265,  266,
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,    0, 
   -1,  278,  279,   -1,   -1,  282,   -1,  284,  285,  286,
  287,   -1,  289,   -1,  291,  292,   -1,  294,   -1,  296,
   -1,  298,   -1,   -1,  301,  302,  303,  304,   -1,   -1,
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1, 
   -1,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1,
   -1,   -1,  329,   -1,   -1,  262,  333,   -1,  265,  266, 
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,    0, 
   -1,  278,  279,   -1,   -1,  282,   -1,  284,  285,  286,
  287,   -1,  289,   -1,  291,  292,   -1,  294,   -1,  296, 
   -1,  298,   -1,   -1,  301,  302,  303,  304,   -1,   -1,
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1,
   -1,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1,
   -1,   -1,  329,   -1,   -1,  262,  333,   -1,  265,  266, 
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,    0,
   -1,  278,  279,   -1,   -1,   -1,   -1,  284,  285,  286, 
  287,   -1,  289,   -1,  291,  292,   -1,  294,   -1,  296, 
   -1,  298,   -1,   -1,  301,  302,  303,  304,   -1,   -1,
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1, 
   -1,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1,
   -1,   -1,  329,   -1,   -1,  262,  333,   -1,  265,  266,
  267,   -1,   -1,   -1,  271,  272,   -1,   -1,  275,    0,
   -1,  278,  279,   -1,   -1,   -1,   -1,  284,  285,  286, 
  287,   -1,  289,   -1,  291,  292,   -1,  294,   -1,  296,
   -1,  298,   -1,   -1,  301,  302,  303,  304,   -1,   -1, 
   -1,   -1,  309,   -1,   -1,   -1,  313,  314,   -1,   -1, 
   -1,   -1,   -1,  320,  321,   -1,  323,   -1,  325,   -1,
   -1,  262,  329,   -1,  265,  266,  333,   -1,   -1,   -1, 
  271,  272,   -1,   -1,  275,    0,   -1,  278,  279,   -1,
   -1,  282,   -1,  284,  285,  286,  287,   -1,  289,   -1,
   -1,  292,   -1,  294,   -1,  296,   -1,   -1,   -1,   -1,
  301,  302,  303,  304,   -1,   -1,   -1,   -1,  309,   -1, 
   -1,   -1,  313,  314,   -1,   -1,   -1,   -1,   -1,  320,
  321,   -1,  323,   -1,  325,    0,   -1,   -1,  329,   -1, 
   -1,  262,  333,   -1,  265,  266,   -1,   -1,   -1,   -1, 
  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,   -1,
   -1,  282,   -1,  284,  285,  286,  287,   -1,  289,   -1, 
   -1,  292,   -1,  294,   -1,  296,    0,   -1,   -1,   -1,
  301,  302,  303,  304,   -1,   -1,   -1,   -1,  309,   -1,
   -1,   -1,  313,  314,   -1,   -1,   -1,   -1,   -1,  320,
  321,   -1,  323,   -1,  325,   -1,    0,   -1,  329,   -1, 
   -1,  262,  333,   -1,  265,  266,   -1,   -1,   -1,   -1,
  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,   -1, 
   -1,  282,   -1,  284,  285,  286,  287,   -1,  289,   -1, 
   -1,  292,   -1,  294,   -1,  296,   -1,   -1,   -1,   -1,
  301,  302,  303,  304,   -1,   -1,   -1,   -1,  309,   -1, 
   -1,   -1,  313,  314,   -1,   -1,   -1,   -1,   -1,  320,
  321,   -1,  323,   -1,  325,   -1,   -1,   -1,  329,   -1,
   -1,  262,  333,   -1,  265,  266,   -1,   -1,   -1,   -1,
  271,  272,   -1,   -1,  275,   -1,   -1,  278,  279,   -1, 
   -1,  282,   -1,  284,  285,  286,  287,   -1,  289,   -1,
   -1,  292,   -1,  294,   -1,  296,   -1,   -1,   -1,   -1, 
  301,  302,  303,  304,   -1,   -1,   -1,   -1,  309,   -1, 
   -1,   -1,  313,  314,   -1,   -1,   -1,   -1,   -1,  320,
  321,   -1,  323,   -1,  325,   -1,   -1,   -1,  329,   -1, 
  265,  266,  333,   -1,   -1,   -1,  271,  272,   -1,   -1,
  275,   -1,   -1,  278,  279,   -1,   -1,  282,   -1,  284,
  285,  286,  287,   -1,  289,   -1,   -1,  292,   -1,  294,
   -1,  296,   -1,   -1,   -1,   -1,  301,  302,  303,  304, 
   -1,   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,
   -1,   -1,   -1,   -1,   -1,  320,  321,  272,  323,   -1, 
  325,   -1,   -1,   -1,  329,   -1,   -1,   -1,  333,  284, 
  285,  286,  287,   -1,  289,   -1,   -1,  292,   -1,  294,
   -1,   -1,   -1,   -1,   -1,   -1,  301,   -1,  303,  304, 
   -1,   -1,   -1,   -1,  309,   -1,   -1,   -1,  272,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  321,   -1,  323,   -1,
  325,  285,  286,  287,  329,  289,   -1,   -1,  292,   -1,
  294,   -1,   -1,   -1,   -1,   -1,   -1,  301,  272,  303, 
  304,   -1,   -1,   -1,   -1,  309,   -1,   -1,   -1,   -1,
   -1,  285,  286,  287,   -1,  289,   -1,  321,  292,  323, 
  294,  325,   -1,   -1,   -1,  329,   -1,   -1,   -1,  303, 
  304,   -1,   -1,   -1,   -1,  309,   -1,   -1,   -1,   -1,
  257,  258,  259,  260,  261,   -1,  263,  321,   -1,  323, 
   -1,  325,  269,  270,   -1,  329,  273,  274,   -1,  276,
  277,   -1,   -1,   -1,  281,   -1,  283,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  293,   -1,   -1,   -1,
  297,  298,   -1,  300,   -1,   -1,   -1,   -1,   -1,   -1, 
  307,   -1,   -1,  310,   -1,  312,   -1,   -1,  315,  316,
   -1,   -1,  319,   -1,   -1,   -1,   -1,  257,  258,  259, 
  260,  328,   -1,  263,   -1,  332,   -1,  334,  335,  269, 
  270,   -1,   -1,  273,  274,   -1,   -1,  277,   -1,  346,
  347,  281,   -1,  283,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,  293,   -1,   -1,   -1,  297,  298,   -1,
  300,   -1,   -1,   -1,   -1,   -1,   -1,  307,   -1,  326,
  310,  311,  312,   -1,   -1,   -1,  316,  334,  335,  336,
  337,  338,   -1,   -1,  341,  342,  343,  344,  328,   -1, 
   -1,   -1,  332,   -1,  334,  335,  257,  258,  259,  260,
  261,   -1,  263,   -1,   -1,   -1,  346,  347,  269,  270, 
   -1,   -1,  273,  274,   -1,   -1,  277,   -1,   -1,   -1, 
  281,   -1,  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  293,   -1,   -1,   -1,  297,  298,   -1,  300, 
   -1,   -1,   -1,   -1,   -1,   -1,  307,   -1,   -1,  310,
   -1,  312,   -1,   -1,   -1,  316,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  257,  258,  259,  260,  328,   -1,  263,
   -1,  332,   -1,  334,  335,  269,  270,   -1,   -1,  273, 
  274,   -1,   -1,  277,   -1,  346,  347,  281,   -1,  283,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  293, 
   -1,   -1,   -1,  297,  298,   -1,  300,   -1,   -1,   -1, 
   -1,   -1,   -1,  307,   -1,   -1,  310,  311,  312,   -1,
   -1,   -1,  316,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  257,  258,  259,  260,  328,   -1,  263,   -1,  332,   -1,
  334,  335,  269,  270,   -1,   -1,  273,  274,   -1,   -1,
  277,   -1,  346,  347,  281,   -1,  283,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  293,   -1,   -1,   -1, 
  297,  298,   -1,  300,   -1,   -1,   -1,   -1,   -1,  306,
  307,   -1,   -1,  310,   -1,  312,   -1,   -1,   -1,  316, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259, 
  260,  328,   -1,  263,   -1,  332,   -1,  334,  335,  269,
  270,   -1,   -1,  273,  274,   -1,   -1,  277,   -1,  346, 
  347,  281,   -1,  283,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  293,   -1,   -1,   -1,  297,  298,   -1,
  300,   -1,   -1,   -1,   -1,   -1,  306,  307,   -1,   -1,
  310,   -1,  312,   -1,   -1,   -1,  316,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,  257,  258,  259,  260,  328,   -1,
  263,   -1,  332,   -1,  334,  335,  269,  270,   -1,   -1, 
  273,  274,   -1,   -1,  277,   -1,  346,  347,  281,   -1, 
  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  293,   -1,   -1,   -1,  297,  298,   -1,  300,   -1,   -1, 
   -1,   -1,   -1,  306,  307,   -1,   -1,  310,   -1,  312,
   -1,   -1,   -1,  316,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  257,  258,  259,  260,  328,   -1,  263,   -1,  332,
   -1,  334,  335,  269,  270,   -1,   -1,  273,  274,   -1, 
   -1,  277,   -1,  346,  347,  281,   -1,  283,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  293,   -1,   -1, 
   -1,  297,  298,   -1,  300,   -1,   -1,   -1,   -1,   -1, 
   -1,  307,   -1,   -1,  310,  311,  312,   -1,   -1,   -1,
  316,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258, 
  259,  260,  328,   -1,  263,   -1,  332,   -1,  334,  335,
  269,  270,   -1,   -1,  273,  274,   -1,   -1,  277,   -1,
  346,  347,  281,   -1,  283,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  293,   -1,   -1,   -1,  297,  298, 
   -1,  300,   -1,   -1,   -1,   -1,   -1,   -1,  307,   -1,
   -1,  310,  311,  312,   -1,   -1,   -1,  316,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,  328, 
   -1,  263,   -1,  332,   -1,  334,  335,  269,  270,   -1,
   -1,  273,  274,   -1,   -1,  277,   -1,  346,  347,  281, 
   -1,  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  293,   -1,   -1,   -1,  297,  298,   -1,  300,   -1,
   -1,   -1,   -1,   -1,   -1,  307,   -1,   -1,  310,   -1,
  312,   -1,   -1,  315,  316,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  257,  258,  259,  260,  328,   -1,  263,   -1,
  332,   -1,  334,  335,  269,  270,   -1,   -1,  273,  274, 
   -1,   -1,  277,   -1,  346,  347,  281,   -1,  283,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  293,   -1,
   -1,   -1,  297,  298,   -1,  300,   -1,   -1,   -1,   -1, 
   -1,   -1,  307,   -1,   -1,  310,   -1,  312,   -1,   -1,
   -1,  316,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
  258,  259,  260,  328,   -1,  263,   -1,  332,   -1,  334,
  335,  269,  270,   -1,   -1,  273,  274,   -1,   -1,  277, 
   -1,  346,  347,  281,   -1,  283,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  293,   -1,   -1,   -1,  297, 
  298,   -1,  300,   -1,   -1,   -1,   -1,   -1,   -1,  307, 
   -1,   -1,  310,   -1,  312,   -1,   -1,   -1,  316,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260, 
  328,   -1,  263,   -1,  332,   -1,  334,  335,  269,  270,
   -1,   -1,  273,  274,   -1,   -1,  277,   -1,  346,  347,
  281,   -1,  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  293,   -1,   -1,   -1,  297,  298,   -1,  300, 
   -1,   -1,   -1,   -1,   -1,   -1,  307,   -1,   -1,  310,
   -1,  312,   -1,   -1,   -1,  316,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,  257,  258,  259,  260,  328,   -1,  263, 
   -1,  332,   -1,  334,  335,  269,  270,   -1,   -1,  273,
  274,   -1,   -1,  277,   -1,  346,  347,  281,   -1,  283, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  293,
   -1,   -1,   -1,  297,  298,   -1,  300,   -1,   -1,   -1,
   -1,   -1,   -1,  307,   -1,   -1,  310,   -1,  312,   -1,
   -1,   -1,  316,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,  328,   -1,   -1,   -1,  332,   -1,
  334,  335,  262,   -1,   -1,   -1,  266,  267,   -1,   -1, 
   -1,  271,  346,  347,   -1,  275,   -1,   -1,   -1,   -1, 
  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,
  290,  291,   -1,   -1,   -1,  295,   -1,   -1,  298,   -1, 
   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,  262,   -1,
   -1,  265,   -1,  267,  334,  335,  336,  337,  338,  339, 
  340,  341,  342,  343,  344,   -1,  280,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  288,   -1,  290,  291,   -1,   -1, 
   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,   -1, 
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,  325,  326,  327,  262,   -1,   -1,   -1,   -1,  267,
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,   -1,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  288,   -1,  290,  291,   -1,   -1,   -1,  295,   -1,   -1, 
  298,   -1,   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317, 
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,  326,  327, 
  262,  329,   -1,   -1,   -1,  267,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  280,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,  290,  291,
   -1,   -1,   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,
  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,  325,  326,  327,  262,   -1,   -1,   -1,
   -1,  267,  334,  335,  336,  337,  338,  339,  340,  341, 
  342,  343,  344,   -1,  280,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  288,   -1,  290,  291,   -1,   -1,   -1,  295,
   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,  305, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  314,   -1,
   -1,  317,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  326,  327,  262,   -1,   -1,  265,   -1,  267,  334,  335,
  336,  337,  338,  339,  340,  341,  342,  343,  344,   -1, 
  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,
  290,  291,   -1,   -1,   -1,  295,   -1,   -1,  298,   -1, 
   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,  262,   -1, 
   -1,   -1,   -1,  267,  334,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,   -1,  280,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  288,   -1,  290,  291,   -1,   -1,
   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,   -1, 
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,   -1,  323, 
   -1,   -1,  326,  327,  262,   -1,   -1,   -1,   -1,  267, 
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,   -1,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  288,   -1,  290,  291,   -1,   -1,   -1,  295,   -1,   -1,
  298,   -1,   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,
   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,  326,  327, 
  262,   -1,   -1,   -1,   -1,  267,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  280,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,  290,  291, 
   -1,   -1,   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,
  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  326,  327,  262,  329,   -1,  265,
   -1,  267,  334,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,   -1,  280,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  288,   -1,  290,  291,   -1,   -1,   -1,  295,
   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,  305, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,  317,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  326,  327,  262,   -1,   -1,  265,   -1,  267,  334,  335, 
  336,  337,  338,  339,  340,  341,  342,  343,  344,   -1,
  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,
  290,  291,   -1,   -1,   -1,  295,   -1,   -1,  298,   -1,
   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,  262,   -1, 
   -1,   -1,   -1,  267,  334,  335,  336,  337,  338,  339, 
  340,  341,  342,  343,  344,   -1,  280,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  288,   -1,  290,  291,   -1,   -1, 
   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,   -1,  323,
   -1,   -1,  326,  327,  262,   -1,   -1,   -1,   -1,  267, 
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,   -1,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  288,   -1,  290,  291,   -1,   -1,   -1,  295,   -1,   -1, 
  298,   -1,   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  314,   -1,   -1,  317, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,
  262,   -1,   -1,   -1,   -1,  267,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  280,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,  290,  291, 
   -1,   -1,   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,
  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,  326,  327,  262,  329,   -1,   -1,
   -1,  267,  334,  335,  336,  337,  338,  339,  340,  341, 
  342,  343,  344,   -1,  280,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  288,   -1,  290,  291,   -1,   -1,   -1,  295,
   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,  305,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,  317,   -1,   -1,   -1,   -1,   -1,  323,   -1,   -1,
  326,  327,  262,   -1,   -1,   -1,   -1,  267,  334,  335, 
  336,  337,  338,  339,  340,  341,  342,  343,  344,   -1, 
  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,
  290,  291,   -1,   -1,   -1,  295,   -1,   -1,  298,   -1, 
   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,  262,  329,
   -1,   -1,   -1,  267,  334,  335,  336,  337,  338,  339, 
  340,  341,  342,  343,  344,   -1,  280,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  288,   -1,  290,  291,   -1,   -1, 
   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,   -1, 
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  326,  327,  262,  329,   -1,   -1,   -1,  267,
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,   -1,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  288,   -1,  290,  291,   -1,   -1,   -1,  295,   -1,   -1, 
  298,   -1,   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  326,  327, 
  262,  329,   -1,   -1,   -1,  267,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,   -1,  280,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,  290,  291,
   -1,   -1,   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,
  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,  326,  327,  262,   -1,   -1,   -1,
   -1,  267,  334,  335,  336,  337,  338,  339,  340,  341, 
  342,  343,  344,   -1,  280,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  288,   -1,  290,  291,   -1,   -1,   -1,  295,
   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,  305, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  317,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  326,  327,  262,   -1,   -1,   -1,   -1,  267,  334,  335,
  336,  337,  338,  339,  340,  341,  342,  343,  344,   -1, 
  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  288,   -1,
  290,  291,   -1,   -1,   -1,  295,   -1,   -1,  298,   -1, 
   -1,   -1,  302,   -1,   -1,  305,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,  262,   -1, 
   -1,   -1,   -1,  267,  334,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,   -1,  280,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  288,   -1,  290,  291,   -1,   -1,
   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,   -1, 
   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,  326,  327,  262,   -1,   -1,   -1,   -1,  267, 
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,   -1,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  288,   -1,  290,  291,   -1,   -1,   -1,  295,   -1,   -1,
  298,   -1,   -1,   -1,   -1,   -1,   -1,  305,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  326,  327, 
   -1,   -1,   -1,   -1,  267,   -1,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,  280,   -1,   -1, 
   -1,   -1,   -1,   -1,   -1,  288,   -1,  290,  291,   -1, 
   -1,   -1,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,
   -1,   -1,  305,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
   -1,   -1,   -1,   -1,  317,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  326,  327,   -1,   -1,   -1,   -1,  267,
   -1,  334,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  344,  280,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  288,   -1,  290,  291,   -1,   -1,   -1,  295,   -1,   -1,
  298,   -1,   -1,   -1,   -1,   -1,   -1,  305,   -1,   -1, 
  280,   -1,  282,   -1,   -1,   -1,   -1,   -1,   -1,  317, 
  290,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,
   -1,   -1,   -1,   -1,   -1,  305,  334,  335,  336,  337, 
  338,  339,  340,  341,  342,  343,  344,  317,   -1,   -1,
  280,   -1,  282,   -1,   -1,   -1,  326,  327,   -1,   -1,
  290,   -1,   -1,   -1,  334,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,  305,   -1,   -1,  280,   -1, 
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  317,  290,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  326,  327,   -1,   -1, 
   -1,   -1,   -1,  305,  334,  335,  336,  337,  338,  339, 
  340,  341,  342,  343,  344,  317,  280,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  326,  327,  290,   -1,   -1,   -1, 
   -1,   -1,  334,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  317,  290,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  326,  327,   -1,   -1,   -1,   -1,   -1,   -1, 
  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
  344,  317,  290,   -1,   -1,   -1,   -1,   -1,   -1,   -1, 
  326,  327,   -1,   -1,   -1,   -1,   -1,   -1,  334,  335, 
  336,  337,  338,  339,  340,  341,  342,  343,  344,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  326,  327, 
   -1,   -1,   -1,   -1,   -1,   -1,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,  326,  327,   -1,
   -1,   -1,   -1,   -1,   -1,  334,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344, 
};
static short YYFINAL=2; 
static short YYMAXTOKEN=349; 
static String [] yyname = {
"end-of-file",null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, 
null,null,null,"IDENTIFIER","ESCAPED_IDENTIFIER","PARAMETER","LITERAL","ALL", 
"AND","ANYELEMENT","APPLY","AS","ASC","BETWEEN","BY","CASE","CAST","COLLATE",
"CROSS","CREATEREF","DEREF","DESC","DISTINCT","ELEMENT","ELSE","END","EXCEPT", 
"EXISTS","ESCAPE","FLATTEN","FROM","FULL","GROUP","HAVING","IN","INNER",
"INTERSECT","IS","JOIN","KEY","LEFT","LIKE","LIMIT","MULTISET","NOT","OF",
"OFTYPE","ON","OR","ORDER","OUTER","OVERLAPS","ONLY","REF","RELATIONSHIP",
"RIGHT","ROW","SELECT","SET","SKIP","THEN","TOP","TREAT","UNION","USING", 
"VALUE","WHEN","WHERE","WITH","COMMA","COLON","SCOLON","DOT","EQUAL","L_PAREN",
"R_PAREN","L_BRACE","R_BRACE","L_CURLY","R_CURLY","PLUS","MINUS","STAR", 
"FSLASH","PERCENT","OP_EQ","OP_NEQ","OP_LT","OP_LE","OP_GT","OP_GE","QMARK", 
"NAVIGATE","NULL","UNARYPLUS","UNARYMINUS",
}; 
static String [] yyrule = {
"$accept : commandStart",
"commandStart :",
"commandStart : command", 
"command : optNamespaceDeclList generalExpr",
"optNamespaceDeclList :", 
"optNamespaceDeclList : namespaceDeclList", 
"namespaceDeclList : namespaceDecl",
"namespaceDeclList : namespaceDeclList namespaceDecl", 
"namespaceDecl : USING identifier SCOLON",
"namespaceDecl : USING dotExpr SCOLON",
"namespaceDecl : USING assignExpr SCOLON",
"generalExpr : queryExpr optSemiColon", 
"generalExpr : Expr optSemiColon",
"optSemiColon :", 
"optSemiColon : SCOLON", 
"queryExpr : selectClause fromClause optWhereClause optGroupByClause optHavingClause optOrderByClause",
"$$1 :", 
"selectClause : SELECT $$1 optAllOrDistinct optTopClause aliasExprList",
"$$2 :",
"selectClause : SELECT $$2 VALUE optAllOrDistinct optTopClause aliasExprList",
"optAllOrDistinct :", 
"optAllOrDistinct : ALL",
"optAllOrDistinct : DISTINCT", 
"optTopClause :", 
"optTopClause : TOP L_PAREN Expr R_PAREN",
"fromClause : FROM fromClauseList", 
"fromClauseList : fromClauseItem",
"fromClauseList : fromClauseList COMMA fromClauseItem",
"fromClauseItem : aliasExpr",
"fromClauseItem : L_PAREN joinClauseItem R_PAREN", 
"fromClauseItem : joinClauseItem",
"fromClauseItem : L_PAREN applyClauseItem R_PAREN", 
"fromClauseItem : applyClauseItem", 
"joinClauseItem : fromClauseItem joinType fromClauseItem",
"joinClauseItem : fromClauseItem joinType fromClauseItem ON Expr", 
"applyClauseItem : fromClauseItem applyType fromClauseItem",
"joinType : CROSS JOIN",
"joinType : LEFT OUTER JOIN",
"joinType : LEFT JOIN", 
"joinType : RIGHT OUTER JOIN",
"joinType : RIGHT JOIN", 
"joinType : JOIN", 
"joinType : INNER JOIN",
"joinType : FULL JOIN", 
"joinType : FULL OUTER JOIN",
"joinType : FULL OUTER",
"applyType : CROSS APPLY",
"applyType : OUTER APPLY", 
"optWhereClause :",
"optWhereClause : whereClause", 
"whereClause : WHERE Expr", 
"optGroupByClause :",
"optGroupByClause : groupByClause", 
"groupByClause : GROUP BY aliasExprList",
"optHavingClause :",
"optHavingClause : havingClause",
"$$3 :", 
"havingClause : HAVING $$3 Expr",
"optOrderByClause :", 
"optOrderByClause : orderByClause", 
"$$4 :",
"orderByClause : ORDER BY $$4 orderByItemList optSkipSubClause optLimitSubClause", 
"optSkipSubClause :",
"optSkipSubClause : SKIP Expr",
"optLimitSubClause :",
"optLimitSubClause : LIMIT Expr", 
"orderByItemList : orderByClauseItem",
"orderByItemList : orderByItemList COMMA orderByClauseItem", 
"orderByClauseItem : Expr optAscDesc", 
"orderByClauseItem : Expr COLLATE simpleIdentifier optAscDesc",
"optAscDesc :", 
"optAscDesc : ASC",
"optAscDesc : DESC",
"exprList : Expr",
"exprList : exprList COMMA Expr", 
"Expr : parenExpr",
"Expr : PARAMETER", 
"Expr : identifier", 
"Expr : builtInExpr",
"Expr : dotExpr", 
"Expr : refExpr",
"Expr : createRefExpr",
"Expr : keyExpr",
"Expr : methodExpr", 
"Expr : ctorExpr",
"Expr : derefExpr", 
"Expr : navigateExpr", 
"Expr : literalExpr",
"parenExpr : L_PAREN generalExpr R_PAREN", 
"betweenPrefix : Expr BETWEEN Expr",
"notBetweenPrefix : Expr NOT BETWEEN Expr",
"builtInExpr : Expr PLUS Expr",
"builtInExpr : Expr MINUS Expr", 
"builtInExpr : Expr STAR Expr",
"builtInExpr : Expr FSLASH Expr", 
"builtInExpr : Expr PERCENT Expr", 
"builtInExpr : MINUS Expr",
"builtInExpr : PLUS Expr", 
"builtInExpr : Expr OP_NEQ Expr",
"builtInExpr : Expr OP_GT Expr",
"builtInExpr : Expr OP_GE Expr",
"builtInExpr : Expr OP_LT Expr", 
"builtInExpr : Expr OP_LE Expr",
"builtInExpr : Expr INTERSECT Expr", 
"builtInExpr : Expr UNION Expr", 
"builtInExpr : Expr UNION ALL Expr",
"builtInExpr : Expr EXCEPT Expr", 
"builtInExpr : Expr OVERLAPS Expr",
"builtInExpr : Expr IN Expr",
"builtInExpr : Expr NOT IN Expr",
"builtInExpr : EXISTS L_PAREN generalExpr R_PAREN", 
"builtInExpr : ANYELEMENT L_PAREN generalExpr R_PAREN",
"builtInExpr : ELEMENT L_PAREN generalExpr R_PAREN", 
"builtInExpr : FLATTEN L_PAREN generalExpr R_PAREN", 
"builtInExpr : SET L_PAREN generalExpr R_PAREN",
"builtInExpr : Expr IS NULL", 
"builtInExpr : Expr IS NOT NULL",
"builtInExpr : searchedCaseExpr",
"builtInExpr : TREAT L_PAREN Expr AS typeIdentifier R_PAREN",
"builtInExpr : CAST L_PAREN Expr AS typeIdentifier R_PAREN", 
"builtInExpr : OFTYPE L_PAREN Expr COMMA typeIdentifier R_PAREN",
"builtInExpr : OFTYPE L_PAREN Expr COMMA ONLY typeIdentifier R_PAREN", 
"builtInExpr : Expr IS OF L_PAREN typeIdentifier R_PAREN", 
"builtInExpr : Expr IS NOT OF L_PAREN typeIdentifier R_PAREN",
"builtInExpr : Expr IS OF L_PAREN ONLY typeIdentifier R_PAREN", 
"builtInExpr : Expr IS NOT OF L_PAREN ONLY typeIdentifier R_PAREN",
"builtInExpr : Expr LIKE Expr",
"builtInExpr : Expr NOT LIKE Expr",
"builtInExpr : Expr LIKE Expr ESCAPE Expr", 
"builtInExpr : Expr NOT LIKE Expr ESCAPE Expr",
"builtInExpr : betweenPrefix AND Expr", 
"builtInExpr : notBetweenPrefix AND Expr", 
"builtInExpr : Expr OR Expr",
"builtInExpr : NOT Expr", 
"builtInExpr : Expr AND Expr",
"builtInExpr : equalsOrAssignExpr",
"equalsOrAssignExpr : assignExpr",
"equalsOrAssignExpr : equalsExpr", 
"assignExpr : Expr EQUAL Expr",
"equalsExpr : Expr OP_EQ Expr", 
"aliasExpr : Expr AS identifier", 
"aliasExpr : Expr",
"aliasExprList : aliasExpr", 
"aliasExprList : aliasExprList COMMA aliasExpr",
"searchedCaseExpr : CASE whenThenExprList END",
"searchedCaseExpr : CASE whenThenExprList caseElseExpr END",
"whenThenExprList : WHEN Expr THEN Expr", 
"whenThenExprList : whenThenExprList WHEN Expr THEN Expr",
"caseElseExpr : ELSE Expr", 
"ctorExpr : ROW L_PAREN aliasExprList R_PAREN", 
"ctorExpr : MULTISET L_PAREN exprList R_PAREN",
"ctorExpr : L_CURLY exprList R_CURLY", 
"dotExpr : Expr DOT identifier",
"refExpr : REF L_PAREN Expr R_PAREN",
"derefExpr : DEREF parenExpr",
"createRefExpr : CREATEREF L_PAREN Expr COMMA Expr R_PAREN", 
"createRefExpr : CREATEREF L_PAREN Expr COMMA Expr COMMA typeIdentifier R_PAREN",
"keyExpr : KEY parenExpr", 
"methodExpr : dotExpr L_PAREN R_PAREN", 
"methodExpr : dotExpr L_PAREN optAllOrDistinct exprList R_PAREN optWithRelationship",
"methodExpr : dotExpr L_PAREN optAllOrDistinct queryExpr R_PAREN optWithRelationship", 
"methodExpr : identifier L_PAREN R_PAREN",
"methodExpr : identifier L_PAREN optAllOrDistinct exprList R_PAREN optWithRelationship",
"methodExpr : identifier L_PAREN optAllOrDistinct queryExpr R_PAREN optWithRelationship",
"navigateExpr : NAVIGATE L_PAREN Expr COMMA dotExpr R_PAREN", 
"navigateExpr : NAVIGATE L_PAREN Expr COMMA identifier R_PAREN",
"navigateExpr : NAVIGATE L_PAREN Expr COMMA dotExpr COMMA identifier R_PAREN", 
"navigateExpr : NAVIGATE L_PAREN Expr COMMA identifier COMMA identifier R_PAREN", 
"navigateExpr : NAVIGATE L_PAREN Expr COMMA dotExpr COMMA identifier COMMA identifier R_PAREN",
"navigateExpr : NAVIGATE L_PAREN Expr COMMA identifier COMMA identifier COMMA identifier R_PAREN", 
"optWithRelationship :",
"optWithRelationship : relationshipList",
"relationshipList : WITH relationshipExpr",
"relationshipList : relationshipList relationshipExpr", 
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA dotExpr R_PAREN",
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA identifier R_PAREN", 
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA dotExpr COMMA identifier R_PAREN", 
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA identifier COMMA identifier R_PAREN",
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA dotExpr COMMA identifier COMMA identifier R_PAREN", 
"relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA identifier COMMA identifier COMMA identifier R_PAREN",
"typeIdentifier : identifier",
"typeIdentifier : dotExpr",
"typeIdentifier : identifier ESCAPED_IDENTIFIER", 
"typeIdentifier : dotExpr ESCAPED_IDENTIFIER",
"typeIdentifier : methodExpr", 
"identifier : ESCAPED_IDENTIFIER", 
"identifier : simpleIdentifier",
"simpleIdentifier : IDENTIFIER", 
"literalExpr : LITERAL",
"literalExpr : NULL",
};
 
//#line 1455 "CqlGrammar.y"
 
 

#pragma warning restore 414 
//###############################################################
// method: yylexdebug : check lexer state
//###############################################################
void yylexdebug(int state,int ch) 
{
String s=null; 
  if (ch < 0) ch=0; 
  if (ch <= YYMAXTOKEN) //check index bounds
     s = yyname[ch];    //now get it 
  if (s==null)
    s = "illegal-symbol";
  debug("state "+state+", reading "+ch+" ("+s+")");
} 

 
 
//###############################################################
// method: yyparse : parse input and execute indicated items 
//###############################################################
int yyparse()
{
    int yyn;       //next thing to do 
    int yym;       //
    int yystate;   //current parsing state from state table 
#if YYDEBUG 
    String yys;    //current token string
#endif 
    init_stacks();
    yynerrs = 0;
    yyerrflag = 0;
    yychar = (-1); 

    yystate = 0; 
 	 state_push(yystate); 

yyloop: 
#if YYDEBUG
    debug("yyloop");
#endif
	yyn = yydefred[yystate]; 
    if (yyn!=0) goto yyreduce;
#if YYDEBUG 
	debug("yyn:"+yyn+"  state:"+yystate+"  char:"+yychar); 
#endif
    if (yychar < 0) 
    {
        yychar = yylex();
		if (yychar < 0) yychar = 0;
    } 
 	yyn = yysindex[yystate];
    if ((yyn!=0) && (yyn += yychar) >= 0 && 
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 
    {
#if YYDEBUG 
        debug("state "+yystate+", shifting to state "+yytable[yyn]+"");
#endif
	     yystate = yytable[yyn];
 		 state_push(yystate); 
        val_push( yylval );
        yychar = (-1); 
        if (yyerrflag > 0)  --yyerrflag; 
        goto yyloop;
    } 
 	yyn = yyrindex[yystate];
    if ((yyn!=0) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    { 
        yyn = yytable[yyn];
#if YYDEBUG 
	     debug("reduce"); 
#endif
        goto yyreduce; 
    }
    if (yyerrflag!=0) goto yyinrecovery;
    yyerror("syntax error");
 
    ++yynerrs;
yyinrecovery: 
    if (yyerrflag < 3) 
    {
        yyerrflag = 3; 
        for (;;)
        {
            if (stateptr < 0)
            { 
                goto yyoverflow;
            } 
 			 yyn = yysindex[state_peek(0)]; 
            if ((yyn!=0) && (yyn += YYERRCODE) >= 0 &&
                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 
            {
                if (stateptr < 0)
                {
                    goto yyoverflow; 
                }
#if YYDEBUG 
                debug("state "+state_peek(0)+", error recovery shifting to state "+yytable[yyn]+" "); 
#endif
                yystate = yytable[yyn]; 
        		 state_push(yystate);
                val_push( yylval );
                goto yyloop;
            } 
            else
            { 
                if (stateptr < 0) 
                {
                    goto yyoverflow; 
                }
#if YYDEBUG
                debug("error recovery discarding state "+state_peek(0)+" ");
#endif 
        		 state_pop();
                val_pop(); 
            } 
        }
    } 
    else
    {
        if (yychar == 0) goto yyabort;
#if YYDEBUG 
        if (yydebug)
        { 
            yys = null; 
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (yys == null) yys = "illegal-symbol"; 
            debug("state "+yystate+", error recovery discards token "+yychar+" ("+yys+")");
        }
#endif
        yychar = (-1); 
        goto yyloop;
    } 
yyreduce: 
    yym = yylen[yyn];
#if YYDEBUG 
      debug("state "+yystate+", reducing "+yym+" by rule "+yyn+" ("+yyrule[yyn]+")");
#endif
    yyval = val_peek(yym-1);
    switch (yyn) 
    {
//########## USER-SUPPLIED ACTIONS ########## 
case 1: 
//#line 135 "CqlGrammar.y"
{ 
                        yyval = _parsedTree = null;
                    }
break;
case 2: 
//#line 139 "CqlGrammar.y"
{ 
                        yyval = _parsedTree = (Expr)val_peek(0); 
                    }
break; 
case 3:
//#line 147 "CqlGrammar.y"
{
                        yyval = new CommandExpr(ToExprList(val_peek(1)),(Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), (val_peek(1) != null) ? AstNodePos(val_peek(1)) : AstNodePos(val_peek(0)), EntityRes.CtxCommandExpression);
                    } 
break; 
case 4:
//#line 161 "CqlGrammar.y" 
{
                        yyval = null;
                    }
break; 
case 5:
//#line 165 "CqlGrammar.y" 
{ 
                        yyval = val_peek(0);
                    } 
break;
case 6:
//#line 173 "CqlGrammar.y"
{ 
                        yyval = new ExprList((NamespaceExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); 
                    } 
break;
case 7: 
//#line 178 "CqlGrammar.y"
{
                        yyval = ToExprList(val_peek(1)).Add((NamespaceExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxNamespaceDeclaration); 
                    }
break; 
case 8: 
//#line 187 "CqlGrammar.y"
{ 
                        yyval = new NamespaceExpr((Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceDeclaration);
                    }
break; 
case 9:
//#line 192 "CqlGrammar.y" 
{ 
                        yyval = new NamespaceExpr((DotExpr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceDeclaration); 
                    }
break;
case 10:
//#line 197 "CqlGrammar.y" 
{
                        yyval = new NamespaceExpr((BuiltInExpr)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxAliasedNamespaceDeclaration); 
                    }
break; 
case 11:
//#line 219 "CqlGrammar.y"
{
                        yyval = val_peek(1); 
                    }
break; 
case 12: 
//#line 223 "CqlGrammar.y"
{ 
                        yyval = val_peek(1);
                    }
break;
case 13: 
//#line 229 "CqlGrammar.y"
{ 
                        yyval = null; 
                    }
break; 
case 14:
//#line 233 "CqlGrammar.y"
{
                        yyval = null; 
                    }
break; 
case 15: 
//#line 242 "CqlGrammar.y"
{ 
                         yyval = new QueryExpr( (SelectClause)val_peek(5)    ,
                                             (FromClause)val_peek(4)      ,
                                             (Expr)val_peek(3)            ,
                                             (GroupByClause)val_peek(2)   , 
                                             (HavingClause)val_peek(1)    ,
                                             (OrderByClause)val_peek(0)   ); 
 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxQueryExpression);
                    } 
break;
case 16:
//#line 257 "CqlGrammar.y"
{ 
                          ResetMethodCallCount();
                      } 
break; 
case 17:
//#line 263 "CqlGrammar.y" 
{
                        yyval = new SelectClause(ToExprList(val_peek(0)), (DistinctKind)val_peek(2), (Expr)val_peek(1), MethodCallCount);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxSelectRowClause);
                    } 
break;
case 18: 
//#line 268 "CqlGrammar.y" 
{
                        ResetMethodCallCount(); 
                      }
break;
case 19:
//#line 275 "CqlGrammar.y" 
{
                        ExprList exprList = ToExprList(val_peek(0)); 
                        if (exprList.Count != 1) 
                        {
                            throw EntityUtil.EntitySqlError(exprList.ErrCtx, System.Data.Entity.Strings.InvalidSelectValueList); 
                        }

                        if (exprList.Expressions[0].HasAlias)
                        { 
                            throw EntityUtil.EntitySqlError(exprList.ErrCtx, System.Data.Entity.Strings.InvalidSelectValueAliasedExpression);
                        } 
 
                        yyval = new SelectClause(exprList.Expressions[0].Expr, (DistinctKind)val_peek(2), (Expr)val_peek(1), MethodCallCount);
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxSelectValueClause); 
                    }
break;
case 20:
//#line 295 "CqlGrammar.y" 
{
                        yyval = DistinctKind.None; 
                    } 
break;
case 21: 
//#line 299 "CqlGrammar.y"
{
                        yyval = DistinctKind.All;
                    } 
break;
case 22: 
//#line 303 "CqlGrammar.y" 
{
                        yyval = DistinctKind.Distinct; 
                    }
break;
case 23:
//#line 310 "CqlGrammar.y" 
{
                        yyval = null; 
                    } 
break;
case 24: 
//#line 314 "CqlGrammar.y"
{
                        if ( val_peek(1) is Parameter || val_peek(1) is Literal )
                        { 
                            yyval = (Expr)val_peek(1);
                            SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTopSubClause); 
                        } 
                        else
                        { 
                            throw EntityUtil.EntitySqlError(((Expr)val_peek(1)).ErrCtx, System.Data.Entity.Strings.TopExpressionMustBeParamOrLiteral);
                        }
                    }
break; 
case 25:
//#line 330 "CqlGrammar.y" 
{ 
                        yyval = new FromClause(ToExprList(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxFromClause); 
                    }
break;
case 26:
//#line 339 "CqlGrammar.y" 
{
                        yyval = new ExprList((FromClauseItem)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); 
                    }
break; 
case 27:
//#line 344 "CqlGrammar.y"
{
                        yyval = ToExprList(val_peek(2)).Add((FromClauseItem)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxFromClauseList);
                    } 
break; 
case 28:
//#line 353 "CqlGrammar.y" 
{
                        yyval = new FromClauseItem((AliasExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromClauseItem);
                    } 
break;
case 29: 
//#line 358 "CqlGrammar.y" 
{
                        yyval = new FromClauseItem((JoinClauseItem)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromJoinClause);
                    }
break;
case 30: 
//#line 363 "CqlGrammar.y"
{ 
                        yyval = new FromClauseItem((JoinClauseItem)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromJoinClause);
                    } 
break;
case 31:
//#line 368 "CqlGrammar.y"
{ 
                        yyval = new FromClauseItem((ApplyClauseItem)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromApplyClause); 
                    } 
break;
case 32: 
//#line 373 "CqlGrammar.y"
{
                        yyval = new FromClauseItem((ApplyClauseItem)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromApplyClause); 
                    }
break; 
case 33: 
//#line 382 "CqlGrammar.y"
{ 
                        yyval = new JoinClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (JoinKind)val_peek(1));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxJoinClause);
                    }
break; 
case 34:
//#line 387 "CqlGrammar.y" 
{ 
                        yyval = new JoinClauseItem((FromClauseItem)val_peek(4), (FromClauseItem)val_peek(2), (JoinKind)val_peek(3), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(4)), EntityRes.CtxJoinOnClause); 
                    }
break;
case 35:
//#line 396 "CqlGrammar.y" 
{
                        yyval = new ApplyClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (ApplyKind)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxApplyClause); 
                    }
break; 
case 36:
//#line 405 "CqlGrammar.y"
{
                        yyval = JoinKind.Cross; 
                    }
break; 
case 37: 
//#line 409 "CqlGrammar.y"
{ 
                        yyval = JoinKind.LeftOuter;
                    }
break;
case 38: 
//#line 413 "CqlGrammar.y"
{ 
                        yyval = JoinKind.LeftOuter; 
                    }
break; 
case 39:
//#line 417 "CqlGrammar.y"
{
                        yyval = JoinKind.RightOuter; 
                    }
break; 
case 40: 
//#line 421 "CqlGrammar.y"
{ 
                        yyval = JoinKind.RightOuter;
                    }
break;
case 41: 
//#line 425 "CqlGrammar.y"
{ 
                        yyval = JoinKind.Inner; 
                    }
break; 
case 42:
//#line 429 "CqlGrammar.y"
{
                        yyval = JoinKind.Inner; 
                    }
break; 
case 43: 
//#line 433 "CqlGrammar.y"
{ 
                        yyval = JoinKind.FullOuter;
                    }
break;
case 44: 
//#line 437 "CqlGrammar.y"
{ 
                        yyval = JoinKind.FullOuter; 
                    }
break; 
case 45:
//#line 441 "CqlGrammar.y"
{
                        yyval = JoinKind.FullOuter; 
                    }
break; 
case 46: 
//#line 449 "CqlGrammar.y"
{ 
                        yyval = ApplyKind.Cross;
                    }
break;
case 47: 
//#line 453 "CqlGrammar.y"
{ 
                        yyval = ApplyKind.Outer; 
                    }
break; 
case 48:
//#line 460 "CqlGrammar.y"
{
                        yyval = null; 
                    }
break; 
case 49: 
//#line 464 "CqlGrammar.y"
{ 
                        yyval = val_peek(0);
                    }
break;
case 50: 
//#line 472 "CqlGrammar.y"
{ 
                        yyval = (Expr)val_peek(0); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxWhereClause);
                    } 
break;
case 51:
//#line 481 "CqlGrammar.y"
{ 
                        yyval = null;
                    } 
break; 
case 52:
//#line 485 "CqlGrammar.y" 
{
                        yyval = val_peek(0);
                    }
break; 
case 53:
//#line 493 "CqlGrammar.y" 
{ 
                        yyval = new GroupByClause(ToExprList(val_peek(0)), new Identifier( "group", false, _query, Terminal(val_peek(2)).IPos ) );
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxGroupByClause); 
                    }
break;
case 54:
//#line 501 "CqlGrammar.y" 
{
                        yyval = null; 
                    } 
break;
case 55: 
//#line 505 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    } 
break;
case 56: 
//#line 513 "CqlGrammar.y" 
{
                        ResetMethodCallCount(); 
                      }
break;
case 57:
//#line 517 "CqlGrammar.y" 
{
                        yyval = new HavingClause((Expr)val_peek(0), MethodCallCount); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxHavingClause); 
                    }
break; 
case 58:
//#line 526 "CqlGrammar.y"
{
                        yyval = null; 
                    }
break; 
case 59: 
//#line 530 "CqlGrammar.y"
{ 
                        yyval = val_peek(0);
                    }
break;
case 60: 
//#line 537 "CqlGrammar.y"
{ 
                        ResetMethodCallCount(); 
                      }
break; 
case 61:
//#line 543 "CqlGrammar.y"
{
                        yyval = new OrderByClause(ToExprList(val_peek(2)), (Expr)val_peek(1), (Expr)val_peek(0), MethodCallCount); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOrderByClauseItem);
                    } 
break; 
case 62:
//#line 551 "CqlGrammar.y" 
{
                        yyval = null;
                    }
break; 
case 63:
//#line 555 "CqlGrammar.y" 
{ 
                        if ( val_peek(0) is Parameter || val_peek(0) is Literal )
                        { 
                            yyval = (Expr)val_peek(0);
                            SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxSkipSubClause);
                        }
                        else 
                        {
                            throw EntityUtil.EntitySqlError(((Expr)val_peek(0)).ErrCtx, System.Data.Entity.Strings.SkipExpressionMustBeParamOrLiteral); 
                        } 
                    }
break; 
case 64:
//#line 570 "CqlGrammar.y"
{
                        yyval = null; 
                    }
break; 
case 65: 
//#line 574 "CqlGrammar.y"
{ 
                        if ( val_peek(0) is Parameter || val_peek(0) is Literal )
                        {
                            yyval = (Expr)val_peek(0);
                            SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxLimitSubClause); 
                        }
                        else 
                        { 
                            throw EntityUtil.EntitySqlError(((Expr)val_peek(0)).ErrCtx, System.Data.Entity.Strings.LimitExpressionMustBeParamOrLiteral);
                        } 
                    }
break;
case 66:
//#line 589 "CqlGrammar.y" 
{
                        yyval = new ExprList((OrderByClauseItem)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); 
                    }
break; 
case 67:
//#line 594 "CqlGrammar.y"
{
                        yyval = ToExprList(val_peek(2)).Add((OrderByClauseItem)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxOrderByClause);
                    } 
break; 
case 68:
//#line 603 "CqlGrammar.y" 
{
                        yyval = new OrderByClauseItem((Expr)val_peek(1), (OrderKind)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxOrderByClauseItem);
                    } 
break;
case 69: 
//#line 608 "CqlGrammar.y" 
{
                        yyval = new OrderByClauseItem((Expr)val_peek(3), (OrderKind)val_peek(0), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(3)), EntityRes.CtxCollatedOrderByClauseItem);
                    }
break;
case 70: 
//#line 617 "CqlGrammar.y"
{ 
                        yyval = OrderKind.None; 
                    }
break; 
case 71:
//#line 621 "CqlGrammar.y"
{
                        yyval = OrderKind.Asc; 
                    }
break; 
case 72: 
//#line 625 "CqlGrammar.y"
{ 
                        yyval = OrderKind.Desc;
                    }
break;
case 73: 
//#line 638 "CqlGrammar.y"
{ 
                        yyval = new ExprList((Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    } 
break;
case 74:
//#line 643 "CqlGrammar.y"
{ 
                        yyval = ToExprList(val_peek(2)).Add((Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxExpressionList); 
                    } 
break;
case 75: 
//#line 651 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    } 
break;
case 76: 
//#line 655 "CqlGrammar.y" 
{
                        yyval = (Parameter)val_peek(0); 
                    }
break;
case 77:
//#line 659 "CqlGrammar.y" 
{
                        yyval = (Identifier)val_peek(0); 
                    } 
break;
case 78: 
//#line 663 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    } 
break;
case 79: 
//#line 667 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                        if (((DotExpr)val_peek(0)).IsDottedIdentifier)
                        {
                            SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxMultipartIdentifier);
                        } 
                    }
break; 
case 80: 
//#line 675 "CqlGrammar.y"
{ 
                        yyval = val_peek(0);
                    }
break;
case 81: 
//#line 679 "CqlGrammar.y"
{ 
                        yyval = val_peek(0); 
                    }
break; 
case 82:
//#line 683 "CqlGrammar.y"
{
                        yyval = val_peek(0); 
                    }
break; 
case 83: 
//#line 687 "CqlGrammar.y"
{ 
                        yyval = val_peek(0);

                        IncrementMethodCallCount();
                    } 
break;
case 84: 
//#line 693 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                    }
break;
case 85:
//#line 697 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                    } 
break;
case 86: 
//#line 701 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    } 
break;
case 87: 
//#line 705 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                    }
break;
case 88:
//#line 712 "CqlGrammar.y" 
{
                        yyval = val_peek(1); 
                    } 
break;
case 89: 
//#line 719 "CqlGrammar.y"
{
                        yyval = new ExprList((Expr)val_peek(2)).Add((Expr)val_peek(0));
                    } 
break;
case 90: 
//#line 726 "CqlGrammar.y" 
{
                        yyval = new ExprList((Expr)val_peek(3)).Add((Expr)val_peek(0)); 
                    }
break;
case 91:
//#line 736 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Plus, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxPlus); 
                    }
break; 
case 92:
//#line 741 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Minus, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMinus);
                    } 
break; 
case 93:
//#line 746 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Multiply, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMultiply);
                    } 
break;
case 94: 
//#line 751 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Divide, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxDivide);
                    }
break;
case 95: 
//#line 756 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Modulus, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxModulus);
                    } 
break;
case 96:
//#line 761 "CqlGrammar.y"
{ 
                        Literal literal = val_peek(0) as Literal;
                        if ( null != literal && literal.IsNumberKind && !literal.IsSigned ) 
                        { 
                            literal.PrefixSign(Terminal(val_peek(1)).Token);
                            yyval = val_peek(0); 
                        }
                        else
                        {
                            yyval = new BuiltInExpr(BuiltInKind.UnaryMinus, Terminal(val_peek(1)).Token, (Expr)val_peek(0)); 
                            SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryMinus);
                        } 
 
                    }
break; 
case 97:
//#line 776 "CqlGrammar.y"
{
                        Literal literal = val_peek(0) as Literal; 
                        if ( null != literal && literal.IsNumberKind && !literal.IsSigned )
                        { 
                            literal.PrefixSign(Terminal(val_peek(1)).Token); 
                            yyval = val_peek(0);
                        } 
                        else
                        {
                            yyval = new BuiltInExpr(BuiltInKind.UnaryPlus, Terminal(val_peek(1)).Token, (Expr)val_peek(0));
                            SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryPlus); 
                        }
                    } 
break; 
case 98:
//#line 793 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.NotEqual, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotEqual);
                    } 
break;
case 99: 
//#line 798 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.GreaterThan, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThan);
                    }
break;
case 100: 
//#line 803 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.GreaterEqual, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThanEqual);
                    } 
break;
case 101:
//#line 808 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.LessThan, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThan); 
                    } 
break;
case 102: 
//#line 813 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.LessEqual, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThanEqual); 
                    }
break; 
case 103: 
//#line 821 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Intersect, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIntersect);
                    }
break; 
case 104:
//#line 826 "CqlGrammar.y" 
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Union, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnion); 
                    }
break;
case 105:
//#line 831 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.UnionAll, Terminal(val_peek(2)).Token, (Expr)val_peek(3), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxUnionAll); 
                    }
break; 
case 106:
//#line 836 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Except, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxExcept);
                    } 
break; 
case 107:
//#line 841 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Overlaps, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOverlaps);
                    } 
break;
case 108: 
//#line 846 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.In, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIn);
                    }
break;
case 109: 
//#line 851 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.NotIn, Terminal(val_peek(2)).Token, (Expr)val_peek(3), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotIn);
                    } 
break;
case 110:
//#line 856 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Exists, Terminal(val_peek(3)).Token, (Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxExists); 
                    } 
break;
case 111: 
//#line 861 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.AnyElement, Terminal(val_peek(3)).Token, (Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxAnyElement); 
                    }
break; 
case 112: 
//#line 866 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Element, Terminal(val_peek(3)).Token, (Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxElement);
                    }
break; 
case 113:
//#line 871 "CqlGrammar.y" 
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Flatten, Terminal(val_peek(3)).Token, (Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxFlatten); 
                    }
break;
case 114:
//#line 876 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Distinct, Terminal(val_peek(3)).Token, (Expr)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxSet); 
                    }
break; 
case 115:
//#line 884 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.IsNull, "IsNull", (Expr)val_peek(2)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIsNull);
                    } 
break; 
case 116:
//#line 889 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.IsNotNull, "IsNotNull", (Expr)val_peek(3));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxIsNotNull);
                    } 
break;
case 117: 
//#line 897 "CqlGrammar.y" 
{
                        yyval = (CaseExpr)val_peek(0); 
                    }
break;
case 118:
//#line 904 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Treat, Terminal(val_peek(5)).Token, (Expr)val_peek(3), (Expr)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxTreat); 
                    }
break; 
case 119:
//#line 909 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Cast, Terminal(val_peek(5)).Token, (Expr)val_peek(3), (Expr)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCast);
                    } 
break; 
case 120:
//#line 918 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.OfType,
                                             Terminal(val_peek(5)).Token,
                                             (Expr)val_peek(3), 
                                             (Expr)val_peek(1),
                                             Literal.NewBooleanLiteral( false ) /* only */); 
 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOfType);
                    } 
break;
case 121:
//#line 928 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.OfType,
                                             "OFTYPE ONLY", 
                                             (Expr)val_peek(4), 
                                             (Expr)val_peek(1),
                                             Literal.NewBooleanLiteral( true ) /* only */); 

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxOfTypeOnly);
                    }
break; 
case 122:
//#line 941 "CqlGrammar.y" 
{ 
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf,
                                                "IS OF", 
                                                (Expr)val_peek(5),
                                                (Expr)val_peek(1),
                                                Literal.NewBooleanLiteral( false ), /* only */
                                                Literal.NewBooleanLiteral( false )  /* not  */ 
                                            );
 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxIsOf); 
                    }
break; 
case 123:
//#line 953 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf, 
                                                "IS NOT OF",
                                                (Expr)val_peek(6),  /* instance */ 
                                                (Expr)val_peek(1),  /* type */ 
                                                Literal.NewBooleanLiteral( false ), /* only */
                                                Literal.NewBooleanLiteral( true  )  /* not  */ 
                                            );

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsNotOf);
                    } 
break;
case 124: 
//#line 965 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf, 
                                                "IS OF ONLY",
                                                (Expr)val_peek(6),  /* instance */
                                                (Expr)val_peek(1),  /* type */
                                                Literal.NewBooleanLiteral( true  ), /* only */ 
                                                Literal.NewBooleanLiteral( false )  /* not  */
                                            ); 
 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsOf);
                    } 
break;
case 125:
//#line 977 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(   BuiltInKind.IsOf,
                                                "IS NOT OF ONLY", 
                                                (Expr)val_peek(7),  /* instance */ 
                                                (Expr)val_peek(1),  /* type */
                                                Literal.NewBooleanLiteral( true ), /* only */ 
                                                Literal.NewBooleanLiteral( true )  /* not  */
                                            );

                        SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxIsNotOf); 
                    }
break; 
case 126: 
//#line 992 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLike);
                    }
break; 
case 127:
//#line 997 "CqlGrammar.y" 
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Not,
                                              Terminal(val_peek(2)).Token, 
                                              new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Expr)val_peek(3), (Expr)val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotLike);
                    }
break; 
case 128:
//#line 1004 "CqlGrammar.y" 
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Expr)val_peek(4), (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxLike); 
                    }
break;
case 129:
//#line 1009 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Not, 
                                              Terminal(val_peek(4)).Token, 
                                              new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Expr)val_peek(5), (Expr)val_peek(2), (Expr)val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxNotLike); 
                    }
break;
case 130:
//#line 1019 "CqlGrammar.y" 
{
                        ExprList elist = (ExprList)val_peek(2); 
                        System.Diagnostics.Debug.Assert(elist.Count==2); 
                        yyval = new BuiltInExpr(BuiltInKind.Between, "between", elist[0], elist[1], (Expr)val_peek(0) );
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxBetween); 
                    }
break;
case 131:
//#line 1029 "CqlGrammar.y" 
{
                        ExprList elist = (ExprList)val_peek(2); 
                        System.Diagnostics.Debug.Assert(elist.Count==2); 
                        yyval = new BuiltInExpr(BuiltInKind.NotBetween, "notbetween", elist[0], elist[1], (Expr)val_peek(0) );
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotBetween); 
                    }
break;
case 132:
//#line 1039 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Or, "or", (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOr); 
                    }
break; 
case 133:
//#line 1044 "CqlGrammar.y"
{
                        yyval = new BuiltInExpr(BuiltInKind.Not, "not", (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNot);
                    } 
break; 
case 134:
//#line 1049 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.And, "and", (Expr)val_peek(2), (Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAnd);
                    } 
break;
case 135: 
//#line 1054 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                    }
break;
case 136:
//#line 1062 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                    } 
break;
case 137: 
//#line 1066 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                    } 
break;
case 138: 
//#line 1074 "CqlGrammar.y" 
{
                        yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals);
                    }
break;
case 139: 
//#line 1083 "CqlGrammar.y"
{ 
                        yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Expr)val_peek(2), (Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals);
                    } 
break;
case 140:
//#line 1092 "CqlGrammar.y"
{ 
                        yyval = new AliasExpr((Expr)val_peek(2), (Identifier)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAlias); 
                    } 
break;
case 141: 
//#line 1097 "CqlGrammar.y"
{
                        yyval = new AliasExpr((Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo); 
                    }
break; 
case 142: 
//#line 1106 "CqlGrammar.y"
{ 
                       yyval = new ExprList((AliasExpr)val_peek(0));
                       SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
                    }
break; 
case 143:
//#line 1111 "CqlGrammar.y" 
{ 
                       yyval = ToExprList(val_peek(2)).Add((AliasExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxExpressionList); 
                    }
break;
case 144:
//#line 1120 "CqlGrammar.y" 
{
                        yyval = new CaseExpr(ToExprList(val_peek(1))); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxCase); 
                    }
break; 
case 145:
//#line 1125 "CqlGrammar.y"
{
                        yyval = new CaseExpr(ToExprList(val_peek(2)), (Expr)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCase);
                    } 
break; 
case 146:
//#line 1134 "CqlGrammar.y" 
{
                        yyval = new ExprList(new WhenThenExpr((Expr)val_peek(2), (Expr)val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCaseWhenThen);
                    } 
break;
case 147: 
//#line 1139 "CqlGrammar.y" 
{
                        yyval = ToExprList(val_peek(4)).Add(new WhenThenExpr((Expr)val_peek(2), (Expr)val_peek(0))); 
                    }
break;
case 148:
//#line 1147 "CqlGrammar.y" 
{
                        yyval = (Expr)val_peek(0); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxCaseElse); 
                    }
break; 
case 149:
//#line 1156 "CqlGrammar.y"
{
                        yyval = new RowConstructorExpr(ToExprList(val_peek(1))); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRowCtor);
                    } 
break; 
case 150:
//#line 1161 "CqlGrammar.y" 
{
                        yyval = new MultisetConstructorExpr(ToExprList(val_peek(1)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxMultisetCtor);
                    } 
break;
case 151: 
//#line 1166 "CqlGrammar.y" 
{
                        yyval = new MultisetConstructorExpr(ToExprList(val_peek(1))); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxMultisetCtor);
                    }
break;
case 152: 
//#line 1175 "CqlGrammar.y"
{ 
                        yyval = new DotExpr((Expr)val_peek(2), (Identifier)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxDot);
                    } 
break;
case 153:
//#line 1184 "CqlGrammar.y"
{ 
                        yyval = new RefExpr((Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRef); 
                    } 
break;
case 154: 
//#line 1193 "CqlGrammar.y"
{
                        yyval = new DerefExpr((Expr)val_peek(0));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxDeref); 
                    }
break; 
case 155: 
//#line 1202 "CqlGrammar.y"
{ 
                        yyval = new CreateRefExpr((Expr)val_peek(3), (Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCreateRef);
                    }
break; 
case 156:
//#line 1207 "CqlGrammar.y" 
{ 
                        yyval = new CreateRefExpr((Expr)val_peek(5), (Expr)val_peek(3), (Expr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxCreateRef); 
                    }
break;
case 157:
//#line 1216 "CqlGrammar.y" 
{
                        yyval = new KeyExpr((Expr)val_peek(0)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxKey); 
                    }
break; 
case 158:
//#line 1225 "CqlGrammar.y"
{
                        yyval = new MethodExpr(((DotExpr)val_peek(2)).Left, ((DotExpr)val_peek(2)).Identifier, DistinctKind.None, null); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMethod);
                    } 
break; 
case 159:
//#line 1230 "CqlGrammar.y" 
{
                        yyval = new MethodExpr(((DotExpr)val_peek(5)).Left, ((DotExpr)val_peek(5)).Identifier, (DistinctKind)val_peek(3), ToExprList(val_peek(2)), ToExprList(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod);
                    } 
break;
case 160: 
//#line 1235 "CqlGrammar.y" 
{
                        yyval = new MethodExpr(((DotExpr)val_peek(5)).Left, ((DotExpr)val_peek(5)).Identifier, (DistinctKind)val_peek(3), new ExprList((Expr)val_peek(2)), ToExprList(val_peek(0))); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod);
                    }
break;
case 161: 
//#line 1240 "CqlGrammar.y"
{ 
                        yyval = new MethodExpr(null, (Identifier)val_peek(2), DistinctKind.None, null); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMethod);
                    } 
break;
case 162:
//#line 1245 "CqlGrammar.y"
{ 
                        yyval = new MethodExpr(null, (Identifier)val_peek(5), (DistinctKind)val_peek(3), ToExprList(val_peek(2)), ToExprList(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod); 
                    } 
break;
case 163: 
//#line 1250 "CqlGrammar.y"
{
                        yyval = new MethodExpr(null, (Identifier)val_peek(5),(DistinctKind)val_peek(3), new ExprList((Expr)val_peek(2)), ToExprList(val_peek(0)));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxMethod); 
                    }
break; 
case 164: 
//#line 1262 "CqlGrammar.y"
{ 
                        yyval = new RelshipNavigationExpr((Expr)val_peek(3), (DotExpr)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxNavigate);
                    }
break; 
case 165:
//#line 1267 "CqlGrammar.y" 
{ 
                        yyval = new RelshipNavigationExpr((Expr)val_peek(3), (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxNavigate); 
                    }
break;
case 166:
//#line 1275 "CqlGrammar.y" 
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(5), (DotExpr)val_peek(3), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxNavigate); 
                    }
break; 
case 167:
//#line 1280 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxNavigate);
                    } 
break; 
case 168:
//#line 1288 "CqlGrammar.y" 
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(7), (DotExpr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxNavigate);
                    } 
break;
case 169: 
//#line 1293 "CqlGrammar.y" 
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(7), (Identifier)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxNavigate);
                    }
break;
case 170: 
//#line 1302 "CqlGrammar.y"
{ 
                        yyval = null; 
                    }
break; 
case 171:
//#line 1306 "CqlGrammar.y"
{
                        yyval = val_peek(0); 
                    }
break; 
case 172: 
//#line 1314 "CqlGrammar.y"
{ 
                        yyval = new ExprList((RelshipNavigationExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxRelationshipList);
                    }
break; 
case 173:
//#line 1319 "CqlGrammar.y" 
{ 
                        yyval = ToExprList(val_peek(1)).Add((RelshipNavigationExpr)val_peek(0));
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxRelationshipList); 
                    }
break;
case 174:
//#line 1331 "CqlGrammar.y" 
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(3), (DotExpr)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxRelationship); 
                    }
break; 
case 175:
//#line 1336 "CqlGrammar.y"
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(3), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxRelationship);
                    } 
break; 
case 176:
//#line 1344 "CqlGrammar.y" 
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(5), (DotExpr)val_peek(3), (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxRelationship);
                    } 
break;
case 177: 
//#line 1349 "CqlGrammar.y" 
{
                        yyval = new RelshipNavigationExpr((Expr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxRelationship);
                    }
break;
case 178: 
//#line 1357 "CqlGrammar.y"
{ 
                        yyval = new RelshipNavigationExpr((Expr)val_peek(7), (DotExpr)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1)); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxRelationship);
                    } 
break;
case 179:
//#line 1362 "CqlGrammar.y"
{ 
                        yyval = new RelshipNavigationExpr((Expr)val_peek(7), (Identifier)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1));
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxRelationship); 
                    } 
break;
case 180: 
//#line 1370 "CqlGrammar.y"
{
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeIdentifier); 
                    }
break; 
case 181: 
//#line 1375 "CqlGrammar.y"
{ 
                        yyval = val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeIdentifier);
                    }
break; 
case 182:
//#line 1380 "CqlGrammar.y" 
{ 
                        Identifier oldIdentifier = (Identifier)val_peek(1);
                        if (0 != ((Identifier)val_peek(0)).Name.Length) 
                        {
                            throw EntityUtil.EntitySqlError(oldIdentifier.ErrCtx, EntityRes.InvalidTypeName);
                        }
                        yyval = new Identifier( oldIdentifier.OriginalName + "[]", oldIdentifier.IsEscaped, _query, AstNodePos(val_peek(1))); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeIdentifier);
                    } 
break; 
case 183:
//#line 1390 "CqlGrammar.y" 
{
                        DotExpr oldDotExpr = (DotExpr)val_peek(1);
                        if (0 != ((Identifier)val_peek(0)).Name.Length)
                        { 
                            throw EntityUtil.EntitySqlError(oldDotExpr.ErrCtx, EntityRes.InvalidTypeName);
                        } 
                        yyval = new DotExpr(oldDotExpr.Left, new Identifier( oldDotExpr.Identifier.OriginalName + "[]", oldDotExpr.Identifier.IsEscaped, _query, AstNodePos(val_peek(1)))); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeIdentifier);
                    } 
break;
case 184:
//#line 1400 "CqlGrammar.y"
{ 
                        SetErrCtx(AstNode(val_peek(0)), AstNodePos(val_peek(0)), EntityRes.CtxTypeIdentifier);
                        MethodExpr methodExpr = (MethodExpr)val_peek(0); 
                        if (null == methodExpr.Args || methodExpr.Args.Count < 1 || methodExpr.Args.Count > 2) 
                        {
                            throw EntityUtil.EntitySqlError(methodExpr.ErrCtx, System.Data.Entity.Strings.TypeIndentifierMustHaveOneOrTwoArgs); 
                        }
                        if (!(methodExpr.Args[0] is Literal))
                        {
                            throw EntityUtil.EntitySqlError(methodExpr.Args[0].ErrCtx, System.Data.Entity.Strings.TypeIndentifierArgMustBeLiteral); 
                        }
                        if (methodExpr.Args.Count == 2 && !(methodExpr.Args[1] is Literal)) 
                        { 
                            throw EntityUtil.EntitySqlError(methodExpr.Args[1].ErrCtx, System.Data.Entity.Strings.TypeIndentifierArgMustBeLiteral);
                        } 
                        yyval = val_peek(0);
                    }
break;
case 185: 
//#line 1420 "CqlGrammar.y"
{ 
                        yyval = (Identifier)val_peek(0); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxEscapedIdentifier);
                    } 
break;
case 186:
//#line 1425 "CqlGrammar.y"
{ 
                        yyval = (Identifier)val_peek(0);
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxSimpleIdentifier); 
                    } 
break;
case 187: 
//#line 1434 "CqlGrammar.y"
{
                        yyval = (Identifier)val_peek(0);
                    } 
break;
case 188: 
//#line 1442 "CqlGrammar.y" 
{
                        yyval = val_peek(0); 
                        SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxLiteral);
                    }
break;
case 189: 
//#line 1447 "CqlGrammar.y"
{ 
                        yyval = new Literal(null, LiteralKind.Null, _query, TerminalPos(val_peek(0))); 
                        SetErrCtx(AstNode(yyval), Terminal(val_peek(0)), EntityRes.CtxNullLiteral);
                    } 
break;

//########## END OF USER-SUPPLIED ACTIONS ##########
    } 
#if YYDEBUG
    debug("reduce"); 
#endif 
	 state_drop( yym );
    yystate = state_peek(0); 
    val_drop( yym );
    yym = yylhs[yyn];
    if (yystate == 0 && yym == 0)
    { 
#if YYDEBUG
        debug("After reduction, shifting from state 0 to state "+YYFINAL+""); 
#endif 
		 yystate = YYFINAL;
        state_push( YYFINAL ); 
        val_push( yyval );
        if (yychar < 0)
        {
            yychar = yylex(); 
			if (yychar < 0) yychar = 0;
#if YYDEBUG 
            if (yydebug) 
            yylexdebug(yystate,yychar);
#endif 
        }
        if (yychar == 0) goto yyaccept;
        goto yyloop;
    } 
 	yyn = yygindex[yym];
    if ((yyn!=0) && (yyn += yystate) >= 0 && 
            yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 
        yystate = yytable[yyn];
    else 
        yystate = yydgoto[yym];
    if (stateptr < 0)
    {
        goto yyoverflow; 
    }
#if YYDEBUG 
    debug("after reduction, shifting from state "+state_peek(0)+" to state "+yystate+""); 
#endif
	 state_push(yystate); 
    val_push( yyval );
    goto yyloop;
yyoverflow:
    yyerror("yacc stack overflow"); 
yyabort:
    return (1); 
yyaccept: 
    return (0);
} 

//## end of method parse() ######################################

 

} 
//################### END OF CLASS ###################### 
}
//################### END OF NAMESPACE ###################### 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK