[前][次][番号順一覧][スレッド一覧][生データ]

yarv-diff:355

From: ko1 atdot.net
Date: 12 Jul 2006 15:44:17 +0900
Subject: [yarv-diff:355] r521 - tags/0.4.1

Author: ko1
Date: 2006-07-12 15:44:16 +0900 (Wed, 12 Jul 2006)
New Revision: 521

Added:
   tags/0.4.1/parse.c
Log:
generated parse.c


Added: tags/0.4.1/parse.c
===================================================================
--- tags/0.4.1/parse.c	2006-07-12 06:30:19 UTC (rev 520)
+++ tags/0.4.1/parse.c	2006-07-12 06:44:16 UTC (rev 521)
@@ -0,0 +1,14232 @@
+/* A Bison parser, made by GNU Bison 1.875d.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 1
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     kCLASS = 258,
+     kMODULE = 259,
+     kDEF = 260,
+     kUNDEF = 261,
+     kBEGIN = 262,
+     kRESCUE = 263,
+     kENSURE = 264,
+     kEND = 265,
+     kIF = 266,
+     kUNLESS = 267,
+     kTHEN = 268,
+     kELSIF = 269,
+     kELSE = 270,
+     kCASE = 271,
+     kWHEN = 272,
+     kWHILE = 273,
+     kUNTIL = 274,
+     kFOR = 275,
+     kBREAK = 276,
+     kNEXT = 277,
+     kREDO = 278,
+     kRETRY = 279,
+     kIN = 280,
+     kDO = 281,
+     kDO_COND = 282,
+     kDO_BLOCK = 283,
+     kDO_LAMBDA = 284,
+     kRETURN = 285,
+     kYIELD = 286,
+     kSUPER = 287,
+     kSELF = 288,
+     kNIL = 289,
+     kTRUE = 290,
+     kFALSE = 291,
+     kAND = 292,
+     kOR = 293,
+     kNOT = 294,
+     kIF_MOD = 295,
+     kUNLESS_MOD = 296,
+     kWHILE_MOD = 297,
+     kUNTIL_MOD = 298,
+     kRESCUE_MOD = 299,
+     kALIAS = 300,
+     kDEFINED = 301,
+     klBEGIN = 302,
+     klEND = 303,
+     k__LINE__ = 304,
+     k__FILE__ = 305,
+     tIDENTIFIER = 306,
+     tFID = 307,
+     tGVAR = 308,
+     tIVAR = 309,
+     tCONSTANT = 310,
+     tCVAR = 311,
+     tLABEL = 312,
+     tINTEGER = 313,
+     tFLOAT = 314,
+     tSTRING_CONTENT = 315,
+     tNTH_REF = 316,
+     tBACK_REF = 317,
+     tREGEXP_END = 318,
+     tUPLUS = 319,
+     tUMINUS = 320,
+     tPOW = 321,
+     tCMP = 322,
+     tEQ = 323,
+     tEQQ = 324,
+     tNEQ = 325,
+     tGEQ = 326,
+     tLEQ = 327,
+     tANDOP = 328,
+     tOROP = 329,
+     tMATCH = 330,
+     tNMATCH = 331,
+     tDOT2 = 332,
+     tDOT3 = 333,
+     tAREF = 334,
+     tASET = 335,
+     tLSHFT = 336,
+     tRSHFT = 337,
+     tCOLON2 = 338,
+     tCOLON3 = 339,
+     tOP_ASGN = 340,
+     tASSOC = 341,
+     tLPAREN = 342,
+     tLPAREN_ARG = 343,
+     tRPAREN = 344,
+     tLBRACK = 345,
+     tLBRACE = 346,
+     tLBRACE_ARG = 347,
+     tSTAR = 348,
+     tAMPER = 349,
+     tLAMBDA = 350,
+     tLAMBDA_ARG = 351,
+     tSYMBEG = 352,
+     tSTRING_BEG = 353,
+     tXSTRING_BEG = 354,
+     tREGEXP_BEG = 355,
+     tWORDS_BEG = 356,
+     tQWORDS_BEG = 357,
+     tSTRING_DBEG = 358,
+     tSTRING_DVAR = 359,
+     tSTRING_END = 360,
+     tLAMBEG = 361,
+     tLOWEST = 362,
+     tUMINUS_NUM = 363,
+     tLAST_TOKEN = 364
+   };
+#endif
+#define kCLASS 258
+#define kMODULE 259
+#define kDEF 260
+#define kUNDEF 261
+#define kBEGIN 262
+#define kRESCUE 263
+#define kENSURE 264
+#define kEND 265
+#define kIF 266
+#define kUNLESS 267
+#define kTHEN 268
+#define kELSIF 269
+#define kELSE 270
+#define kCASE 271
+#define kWHEN 272
+#define kWHILE 273
+#define kUNTIL 274
+#define kFOR 275
+#define kBREAK 276
+#define kNEXT 277
+#define kREDO 278
+#define kRETRY 279
+#define kIN 280
+#define kDO 281
+#define kDO_COND 282
+#define kDO_BLOCK 283
+#define kDO_LAMBDA 284
+#define kRETURN 285
+#define kYIELD 286
+#define kSUPER 287
+#define kSELF 288
+#define kNIL 289
+#define kTRUE 290
+#define kFALSE 291
+#define kAND 292
+#define kOR 293
+#define kNOT 294
+#define kIF_MOD 295
+#define kUNLESS_MOD 296
+#define kWHILE_MOD 297
+#define kUNTIL_MOD 298
+#define kRESCUE_MOD 299
+#define kALIAS 300
+#define kDEFINED 301
+#define klBEGIN 302
+#define klEND 303
+#define k__LINE__ 304
+#define k__FILE__ 305
+#define tIDENTIFIER 306
+#define tFID 307
+#define tGVAR 308
+#define tIVAR 309
+#define tCONSTANT 310
+#define tCVAR 311
+#define tLABEL 312
+#define tINTEGER 313
+#define tFLOAT 314
+#define tSTRING_CONTENT 315
+#define tNTH_REF 316
+#define tBACK_REF 317
+#define tREGEXP_END 318
+#define tUPLUS 319
+#define tUMINUS 320
+#define tPOW 321
+#define tCMP 322
+#define tEQ 323
+#define tEQQ 324
+#define tNEQ 325
+#define tGEQ 326
+#define tLEQ 327
+#define tANDOP 328
+#define tOROP 329
+#define tMATCH 330
+#define tNMATCH 331
+#define tDOT2 332
+#define tDOT3 333
+#define tAREF 334
+#define tASET 335
+#define tLSHFT 336
+#define tRSHFT 337
+#define tCOLON2 338
+#define tCOLON3 339
+#define tOP_ASGN 340
+#define tASSOC 341
+#define tLPAREN 342
+#define tLPAREN_ARG 343
+#define tRPAREN 344
+#define tLBRACK 345
+#define tLBRACE 346
+#define tLBRACE_ARG 347
+#define tSTAR 348
+#define tAMPER 349
+#define tLAMBDA 350
+#define tLAMBDA_ARG 351
+#define tSYMBEG 352
+#define tSTRING_BEG 353
+#define tXSTRING_BEG 354
+#define tREGEXP_BEG 355
+#define tWORDS_BEG 356
+#define tQWORDS_BEG 357
+#define tSTRING_DBEG 358
+#define tSTRING_DVAR 359
+#define tSTRING_END 360
+#define tLAMBEG 361
+#define tLOWEST 362
+#define tUMINUS_NUM 363
+#define tLAST_TOKEN 364
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 13 "parse.y"
+
+
+#define YYDEBUG 1
+#define YYERROR_VERBOSE 1
+#define YYSTACK_USE_ALLOCA 0
+
+#include "ruby.h"
+#include "intern.h"
+#include "node.h"
+#include "st.h"
+#include <stdio.h>
+#include <errno.h>
+#include <ctype.h>
+
+#define YYMALLOC(size)		rb_parser_malloc(parser, size)
+#define YYREALLOC(ptr, size)	rb_parser_realloc(parser, ptr, size)
+#define YYCALLOC(nelem, size)	rb_parser_calloc(parser, nelem, size)
+#define YYFREE(ptr)		rb_parser_free(parser, ptr)
+#define malloc	YYMALLOC
+#define realloc	YYREALLOC
+#define calloc	YYCALLOC
+#define free	YYFREE
+
+#define ID_SCOPE_SHIFT 3
+#define ID_SCOPE_MASK 0x07
+#define ID_LOCAL    0x01
+#define ID_INSTANCE 0x02
+#define ID_GLOBAL   0x03
+#define ID_ATTRSET  0x04
+#define ID_CONST    0x05
+#define ID_CLASS    0x06
+#define ID_JUNK     0x07
+#define ID_INTERNAL ID_JUNK
+
+#define is_notop_id(id) ((id)>tLAST_TOKEN)
+#define is_local_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_LOCAL)
+#define is_global_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_GLOBAL)
+#define is_instance_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_INSTANCE)
+#define is_attrset_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_ATTRSET)
+#define is_const_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CONST)
+#define is_class_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CLASS)
+#define is_junk_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_JUNK)
+
+#define is_asgn_or_id(id) ((is_notop_id(id)) && \
+	(((id)&ID_SCOPE_MASK) == ID_GLOBAL || \
+	 ((id)&ID_SCOPE_MASK) == ID_INSTANCE || \
+	 ((id)&ID_SCOPE_MASK) == ID_CLASS))
+
+#ifndef RIPPER
+char *ruby_sourcefile;		/* current source file */
+int   ruby_sourceline;		/* current line no. */
+#endif
+
+enum lex_state_e {
+    EXPR_BEG,			/* ignore newline, +/- is a sign. */
+    EXPR_END,			/* newline significant, +/- is a operator. */
+    EXPR_END2,			/* newline significant, +/- is a operator. */
+    EXPR_ARG,			/* newline significant, +/- is a operator. */
+    EXPR_CMDARG,		/* newline significant, +/- is a operator. */
+    EXPR_ENDARG,		/* newline significant, +/- is a operator. */
+    EXPR_MID,			/* newline significant, +/- is a operator. */
+    EXPR_FNAME,			/* ignore newline, no reserved words. */
+    EXPR_DOT,			/* right after `.' or `::', no reserved words. */
+    EXPR_CLASS,			/* immediate after `class', no here document. */
+    EXPR_VALUE,			/* alike EXPR_BEG but label is disallowed. */
+};
+
+# ifdef HAVE_LONG_LONG
+typedef unsigned LONG_LONG stack_type;
+# else
+typedef unsigned long stack_type;
+# endif
+
+# define BITSTACK_PUSH(stack, n)	(stack = (stack<<1)|((n)&1))
+# define BITSTACK_POP(stack)	(stack = stack >> 1)
+# define BITSTACK_LEXPOP(stack)	(stack = (stack >> 1) | (stack & 1))
+# define BITSTACK_SET_P(stack)	(stack&1)
+
+#define COND_PUSH(n)	BITSTACK_PUSH(cond_stack, n)
+#define COND_POP()	BITSTACK_POP(cond_stack)
+#define COND_LEXPOP()	BITSTACK_LEXPOP(cond_stack)
+#define COND_P()	BITSTACK_SET_P(cond_stack)
+
+#define CMDARG_PUSH(n)	BITSTACK_PUSH(cmdarg_stack, n)
+#define CMDARG_POP()	BITSTACK_POP(cmdarg_stack)
+#define CMDARG_LEXPOP()	BITSTACK_LEXPOP(cmdarg_stack)
+#define CMDARG_P()	BITSTACK_SET_P(cmdarg_stack)
+
+/* must sync with real YYSTYPE */
+union tmpyystype {
+    VALUE val;
+    NODE *node;
+    unsigned long id;
+    int num;
+    struct RVarmap *vars;
+};
+
+struct vtable {
+    ID *tbl;
+    int pos;
+    int capa;
+    struct vtable *prev;
+};
+
+struct local_vars {
+    struct vtable *tbl;
+    struct vtable *dnames;
+    struct vtable *dvars;
+    struct local_vars *prev;
+    int nofree;
+};
+
+#define DVARS_INHERIT ((void*)1)
+#define DVARS_TOPSCOPE NULL
+#define DVARS_SPECIAL_P(tbl) (!POINTER_P(tbl))
+#define POINTER_P(val) ((unsigned long)(val) & ~3UL)
+
+static int
+vtable_size(struct vtable *tbl)
+{
+    if (POINTER_P(tbl)) {
+        return tbl->pos;
+    }
+    else {
+        return 0;
+    }
+}
+
+#define VTBL_DEBUG 0
+
+static struct vtable *
+vtable_alloc(struct vtable *prev)
+{
+    struct vtable *tbl = ALLOC(struct vtable);
+    tbl->pos = 0;
+    tbl->capa = 8;
+    tbl->tbl = ALLOC_N(ID, tbl->capa);
+    tbl->prev = prev;
+    if (VTBL_DEBUG) printf("vtable_alloc: %p\n", tbl);
+    return tbl;
+}
+
+static void
+vtable_free(struct vtable *tbl)
+{
+    if (VTBL_DEBUG)printf("vtable_free: %p\n", tbl);
+    if (POINTER_P(tbl)) {
+        if (tbl->tbl) {
+            xfree(tbl->tbl);
+        }
+        if (tbl) {
+            xfree(tbl);
+        }
+    }
+}
+
+static void
+vtable_add(struct vtable *tbl, ID id)
+{
+    if (!POINTER_P(tbl)) {
+        rb_bug("vtable_add: vtable is not allocated (%p)", tbl);
+    }
+    if (VTBL_DEBUG) printf("vtable_add: %p, %s\n", tbl, rb_id2name(id));
+    
+    if (tbl->pos == tbl->capa) {
+        tbl->capa = tbl->capa * 2;
+        REALLOC_N(tbl->tbl, ID, tbl->capa);
+    }
+    tbl->tbl[tbl->pos++] = id;
+}
+
+static int
+vtable_included(struct vtable * tbl, ID id)
+{
+    int i;
+
+    if (POINTER_P(tbl)) {
+        for (i = 0; i < tbl->pos; i++) {
+            if (tbl->tbl[i] == id) {
+                return 1;
+            }
+        }
+    }
+    return 0;
+}
+
+/*
+    Structure of Lexer Buffer:
+
+ lex_pbeg      tokp         lex_p        lex_pend
+    |           |              |            |
+    |-----------+--------------+------------|
+                |<------------>|
+                     token
+*/
+struct parser_params {
+    union tmpyystype *parser_yylval;   /* YYSTYPE not defined yet */
+    VALUE eofp;
+
+    NODE *parser_lex_strterm;
+    enum lex_state_e parser_lex_state;
+    stack_type parser_cond_stack;
+    stack_type parser_cmdarg_stack;
+    int parser_class_nest;
+    int parser_paren_nest;
+    int parser_lpar_beg;
+    int parser_in_single;
+    int parser_in_def;
+    int parser_compile_for_eval;
+    VALUE parser_cur_mid;
+    int parser_in_defined;
+    char *parser_tokenbuf;
+    int parser_tokidx;
+    int parser_toksiz;
+    VALUE parser_lex_input;
+    VALUE parser_lex_lastline;
+    char *parser_lex_pbeg;
+    char *parser_lex_p;
+    char *parser_lex_pend;
+    int parser_heredoc_end;
+    int parser_command_start;
+    int parser_lex_gets_ptr;
+    VALUE (*parser_lex_gets)(struct parser_params*,VALUE);
+    struct local_vars *parser_lvtbl;
+    int parser_ruby__end__seen;
+#ifndef RIPPER
+    /* Ruby core only */
+    NODE *parser_eval_tree_begin;
+    NODE *parser_eval_tree;
+    VALUE debug_lines;
+#else
+    /* Ripper only */
+    int parser_ruby_sourceline;
+    VALUE parser_ruby_sourcefile;
+    char *tokp;
+    VALUE delayed;
+    int delayed_line;
+    int delayed_col;
+
+    VALUE value;
+    VALUE result;
+    VALUE parsing_thread;
+    int toplevel_p;
+#endif
+    int line_count;
+    int has_shebang;
+
+#ifdef YYMALLOC
+    NODE *heap;
+#endif
+};
+
+#ifdef YYMALLOC
+void *rb_parser_malloc(struct parser_params *, size_t);
+void *rb_parser_realloc(struct parser_params *, void *, size_t);
+void *rb_parser_calloc(struct parser_params *, size_t, size_t);
+void rb_parser_free(struct parser_params *, void *);
+#endif
+
+static int parser_yyerror(struct parser_params*, const char*);
+#define yyerror(msg) parser_yyerror(parser, msg)
+
+#define YYPARSE_PARAM parser_v
+#define YYLEX_PARAM parser_v
+#define parser ((struct parser_params*)parser_v)
+
+#define ruby_eval_tree		(parser->parser_eval_tree)
+#define ruby_eval_tree_begin	(parser->parser_eval_tree_begin)
+#define lex_strterm		(parser->parser_lex_strterm)
+#define lex_state		(parser->parser_lex_state)
+#define cond_stack		(parser->parser_cond_stack)
+#define cmdarg_stack		(parser->parser_cmdarg_stack)
+#define class_nest		(parser->parser_class_nest)
+#define paren_nest		(parser->parser_paren_nest)
+#define lpar_beg		(parser->parser_lpar_beg)
+#define in_single		(parser->parser_in_single)
+#define in_def			(parser->parser_in_def)
+#define compile_for_eval	(parser->parser_compile_for_eval)
+#define cur_mid			(parser->parser_cur_mid)
+#define in_defined		(parser->parser_in_defined)
+#define tokenbuf		(parser->parser_tokenbuf)
+#define tokidx			(parser->parser_tokidx)
+#define toksiz			(parser->parser_toksiz)
+#define lex_input		(parser->parser_lex_input)
+#define lex_lastline		(parser->parser_lex_lastline)
+#define lex_pbeg		(parser->parser_lex_pbeg)
+#define lex_p			(parser->parser_lex_p)
+#define lex_pend		(parser->parser_lex_pend)
+#define heredoc_end		(parser->parser_heredoc_end)
+#define command_start		(parser->parser_command_start)
+#define lex_gets_ptr		(parser->parser_lex_gets_ptr)
+#define lex_gets		(parser->parser_lex_gets)
+#define lvtbl			(parser->parser_lvtbl)
+#define ruby__end__seen		(parser->parser_ruby__end__seen)
+#ifdef RIPPER
+#define ruby_sourceline		(parser->parser_ruby_sourceline)
+#define ruby_sourcefile		(parser->parser_ruby_sourcefile)
+#else
+#define ruby_debug_lines	(parser->debug_lines)
+#endif
+
+static int yylex(void*, void*);
+
+#ifndef RIPPER
+#define yyparse parser_yyparse
+#define yydebug ruby_yydebug
+
+static NODE *cond_gen(struct parser_params*,NODE*);
+#define cond(node) cond_gen(parser, node)
+static NODE *logop_gen(struct parser_params*,enum node_type,NODE*,NODE*);
+#define logop(type,node1,node2) logop_gen(parser, type, node1, node2)
+
+static int cond_negative(NODE**);
+
+static NODE *newline_node(NODE*);
+static void fixpos(NODE*,NODE*);
+
+static int value_expr_gen(struct parser_params*,NODE*);
+static void void_expr_gen(struct parser_params*,NODE*);
+static NODE *remove_begin(NODE*);
+#define value_expr(node) value_expr_gen(parser, (node) = remove_begin(node))
+#define void_expr(node) void_expr_gen(parser, (node) = remove_begin(node))
+static void void_stmts_gen(struct parser_params*,NODE*);
+#define void_stmts(node) void_stmts_gen(parser, node)
+static void reduce_nodes(NODE**);
+static void block_dup_check(NODE*);
+
+static NODE *block_append(NODE*,NODE*);
+static NODE *list_append(NODE*,NODE*);
+static NODE *list_concat(NODE*,NODE*);
+static NODE *arg_concat(NODE*,NODE*);
+static NODE *literal_concat(NODE*,NODE*);
+static NODE *new_evstr(NODE*);
+static NODE *evstr2dstr(NODE*);
+
+static NODE *call_op_gen(struct parser_params*,NODE*,ID,int,NODE*);
+#define call_op(recv,id,narg,arg1) call_op_gen(parser, recv,id,narg,arg1)
+
+static NODE *new_args_gen(struct parser_params*,VALUE,NODE*,NODE*,NODE*);
+#define new_args(f,o,r,b) new_args_gen(parser, f,o,r,b)
+static void shadowing_lvar_gen(struct parser_params*,ID);
+#define shadowing_lvar(name) shadowing_lvar_gen(parser, name)
+
+static NODE *negate_lit(NODE*);
+static NODE *ret_args(NODE*);
+static NODE *arg_blk_pass(NODE*,NODE*);
+static NODE *new_call(NODE*,ID,NODE*);
+static NODE *new_fcall_gen(struct parser_params*,ID,NODE*);
+#define new_fcall(id,args) new_fcall_gen(parser, id, args)
+static NODE *new_super(NODE*);
+static NODE *new_yield(NODE*);
+
+static NODE *gettable_gen(struct parser_params*,ID);
+#define gettable(id) gettable_gen(parser,id)
+static NODE *assignable_gen(struct parser_params*,ID,NODE*);
+#define assignable(id,node) assignable_gen(parser, id, node)
+static NODE *new_bv_gen(struct parser_params*,ID,NODE*);
+#define new_bv(id,node) new_bv_gen(parser, id, node)
+static NODE *aryset_gen(struct parser_params*,NODE*,NODE*);
+#define aryset(node1,node2) aryset_gen(parser, node1, node2)
+static NODE *attrset_gen(struct parser_params*,NODE*,ID);
+#define attrset(node,id) attrset_gen(parser, node, id)
+
+static void rb_backref_error(NODE*);
+static NODE *node_assign_gen(struct parser_params*,NODE*,NODE*);
+#define node_assign(node1, node2) node_assign_gen(parser, node1, node2)
+
+static NODE *match_op_gen(struct parser_params*,NODE*,NODE*);
+#define match_op(node1,node2) match_op_gen(parser, node1, node2)
+
+static void local_push_gen(struct parser_params*,int);
+#define local_push(top) local_push_gen(parser,top)
+static void local_pop_gen(struct parser_params*);
+#define local_pop() local_pop_gen(parser)
+static int  local_append_gen(struct parser_params*, ID);
+#define local_append(id) local_append_gen(parser, id)
+static int  local_cnt_gen(struct parser_params*, ID);
+#define local_cnt(id) local_cnt_gen(parser, id)
+static int  local_id_gen(struct parser_params*, ID);
+#define local_id(id) local_id_gen(parser, id)
+static ID  *local_tbl_gen(struct parser_params*);
+#define local_tbl() local_tbl_gen(parser)
+static ID  *dyna_tbl_gen(struct parser_params*);
+#define dyna_tbl() dyna_tbl_gen(parser)
+static ID   internal_id(void);
+
+static int dyna_push_gen(struct parser_params*);
+#define dyna_push() dyna_push_gen(parser)
+static void dyna_pop_gen(struct parser_params*, struct RVarmap*);
+#define dyna_pop(vars) dyna_pop_gen(parser, vars)
+static int dyna_in_block_gen(struct parser_params*);
+#define dyna_in_block() dyna_in_block_gen(parser)
+static NODE *dyna_init_gen(struct parser_params*, NODE*, int);
+#define dyna_init(node, pre) dyna_init_gen(parser, node, pre)
+static void dyna_var_gen(struct parser_params*,ID);
+#define dyna_var(id) dyna_var_gen(parser, id)
+static void dyna_check_gen(struct parser_params*,ID);
+#define dyna_check(id) dyna_check_gen(parser, id)
+static int dvar_defined_gen(struct parser_params*,ID);
+#define dvar_defined(id) dvar_defined_gen(parser, id)
+static int dvar_curr_gen(struct parser_params*,ID);
+#define dvar_curr(id) dvar_curr_gen(parser, id)
+
+static void top_local_init_gen(struct parser_params*);
+#define top_local_init() top_local_init_gen(parser)
+static void top_local_setup_gen(struct parser_params*);
+#define top_local_setup() top_local_setup_gen(parser)
+#else
+#define remove_begin(node) (node)
+#endif /* !RIPPER */
+static int lvar_defined_gen(struct parser_params*, ID);
+#define lvar_defined(id) lvar_defined_gen(parser, id)
+
+#define RE_OPTION_ONCE (1<<16)
+
+#define NODE_STRTERM NODE_ZARRAY	/* nothing to gc */
+#define NODE_HEREDOC NODE_ARRAY 	/* 1, 3 to gc */
+#define SIGN_EXTEND(x,n) (((1<<(n)-1)^((x)&~(~0<<(n))))-(1<<(n)-1))
+#define nd_func u1.id
+#if SIZEOF_SHORT == 2
+#define nd_term(node) ((signed short)(node)->u2.id)
+#else
+#define nd_term(node) SIGN_EXTEND((node)->u2.id, CHAR_BIT*2)
+#endif
+#define nd_paren(node) (char)((node)->u2.id >> CHAR_BIT*2)
+#define nd_nest u3.cnt
+
+/****** Ripper *******/
+
+#ifdef RIPPER
+#define RIPPER_VERSION "0.1.0"
+
+#include "eventids1.c"
+#include "eventids2.c"
+static ID ripper_id_gets;
+
+static VALUE ripper_dispatch0(struct parser_params*,ID);
+static VALUE ripper_dispatch1(struct parser_params*,ID,VALUE);
+static VALUE ripper_dispatch2(struct parser_params*,ID,VALUE,VALUE);
+static VALUE ripper_dispatch3(struct parser_params*,ID,VALUE,VALUE,VALUE);
+static VALUE ripper_dispatch4(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE);
+static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE);
+
+#define dispatch0(n)            ripper_dispatch0(parser, TOKEN_PASTE(ripper_id_, n))
+#define dispatch1(n,a)          ripper_dispatch1(parser, TOKEN_PASTE(ripper_id_, n), a)
+#define dispatch2(n,a,b)        ripper_dispatch2(parser, TOKEN_PASTE(ripper_id_, n), a, b)
+#define dispatch3(n,a,b,c)      ripper_dispatch3(parser, TOKEN_PASTE(ripper_id_, n), a, b, c)
+#define dispatch4(n,a,b,c,d)    ripper_dispatch4(parser, TOKEN_PASTE(ripper_id_, n), a, b, c, d)
+#define dispatch5(n,a,b,c,d,e)  ripper_dispatch5(parser, TOKEN_PASTE(ripper_id_, n), a, b, c, d, e)
+
+#define yyparse ripper_yyparse
+#define yydebug ripper_yydebug
+
+static VALUE ripper_intern(const char*);
+static VALUE ripper_id2sym(ID);
+
+#define arg_new() dispatch0(arglist_new)
+#define arg_add(l,a) dispatch2(arglist_add, l, a)
+#define arg_prepend(l,a) dispatch2(arglist_prepend, l, a)
+#define arg_add_star(l,a) dispatch2(arglist_add_star, l, a)
+#define arg_add_block(l,b) dispatch2(arglist_add_block, l, b)
+#define arg_add_optblock(l,b) ((b)==Qundef? l : dispatch2(arglist_add_block, l, b))
+#define bare_assoc(v) dispatch1(bare_assoc_hash, v)
+#define arg_add_assocs(l,b) arg_add(l, bare_assoc(b))
+
+#define args2mrhs(a) dispatch1(mrhs_new_from_arglist, a)
+#define mrhs_new() dispatch0(mrhs_new)
+#define mrhs_add(l,a) dispatch2(mrhs_add, l, a)
+#define mrhs_add_star(l,a) dispatch2(mrhs_add_star, l, a)
+
+#define mlhs_new() dispatch0(mlhs_new)
+#define mlhs_add(l,a) dispatch2(mlhs_add, l, a)
+#define mlhs_add_star(l,a) dispatch2(mlhs_add_star, l, a)
+
+#define blockvar_new(p) dispatch1(blockvar_new, p)
+#define blockvar_add_star(l,a) dispatch2(blockvar_add_star, l, a)
+#define blockvar_add_block(l,a) dispatch2(blockvar_add_block, l, a)
+
+#define method_optarg(m,a) ((a)==Qundef ? m : dispatch2(method_add_arg,m,a))
+#define method_arg(m,a) dispatch2(method_add_arg,m,a)
+#define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
+
+#define FIXME 0
+
+#endif /* RIPPER */
+
+#ifndef RIPPER
+# define ifndef_ripper(x) x
+#else
+# define ifndef_ripper(x)
+#endif
+
+#ifndef RIPPER
+# define rb_warn0(fmt)    rb_warn(fmt)
+# define rb_warnI(fmt,a)  rb_warn(fmt,a)
+# define rb_warnS(fmt,a)  rb_warn(fmt,a)
+# define rb_warning0(fmt) rb_warning(fmt)
+# define rb_warningS(fmt,a) rb_warning(fmt,a)
+#else
+# define rb_warn0(fmt)    ripper_warn0(parser, fmt)
+# define rb_warnI(fmt,a)  ripper_warnI(parser, fmt, a)
+# define rb_warnS(fmt,a)  ripper_warnS(parser, fmt, a)
+# define rb_warning0(fmt) ripper_warning0(parser, fmt)
+# define rb_warningS(fmt,a) ripper_warningS(parser, fmt, a)
+static void ripper_warn0(struct parser_params*, const char*);
+static void ripper_warnI(struct parser_params*, const char*, int);
+static void ripper_warnS(struct parser_params*, const char*, const char*);
+static void ripper_warning0(struct parser_params*, const char*);
+static void ripper_warningS(struct parser_params*, const char*, const char*);
+#endif
+
+#ifdef RIPPER
+static void ripper_compile_error(struct parser_params*, const char *fmt, ...);
+# define rb_compile_error ripper_compile_error
+# define compile_error ripper_compile_error
+# define PARSER_ARG parser,
+#else
+# define compile_error rb_compile_error
+# define PARSER_ARG
+#endif
+
+#define NEW_BLOCK_PARAM(b, v) NEW_NODE(NODE_BLOCK_PASS, 0, b, v)
+
+/* Older versions of Yacc set YYMAXDEPTH to a very low value by default (150,
+   for instance).  This is too low for Ruby to parse some files, such as
+   date/format.rb, therefore bump the value up to at least Bison's default. */
+#ifdef OLD_YACC
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
+#endif
+#endif
+
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 549 "parse.y"
+typedef union YYSTYPE {
+    VALUE val;
+    NODE *node;
+    ID id;
+    int num;
+    struct RVarmap *vars;
+} YYSTYPE;
+/* Line 191 of yacc.c.  */
+#line 836 "$@"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 214 of yacc.c.  */
+#line 848 "$@"
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+# ifndef YYFREE
+#  define YYFREE free
+# endif
+# ifndef YYMALLOC
+#  define YYMALLOC malloc
+# endif
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   define YYSTACK_ALLOC alloca
+#  endif
+# else
+#  if defined (alloca) || defined (_ALLOCA_H)
+#   define YYSTACK_ALLOC alloca
+#  else
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+#  if defined (__STDC__) || defined (__cplusplus)
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   define YYSIZE_T size_t
+#  endif
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  register YYSIZE_T yyi;		\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  3
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   10723
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  137
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  157
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  536
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  953
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   364
+
+#define YYTRANSLATE(YYX) 						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     136,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,   135,   122,     2,     2,     2,   120,   115,     2,
+     132,   133,   118,   116,   130,   117,   129,   119,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   110,   134,
+     112,   108,   111,   109,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   127,     2,   128,   114,     2,   131,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   125,   113,   126,   123,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   121,   124
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned short int yyprhs[] =
+{
+       0,     0,     3,     4,     7,    12,    15,    17,    19,    23,
+      26,    27,    32,    36,    40,    44,    47,    51,    55,    59,
+      63,    67,    68,    74,    79,    83,    87,    91,    98,   104,
+     110,   116,   120,   124,   128,   132,   134,   136,   140,   144,
+     147,   150,   152,   154,   156,   158,   161,   164,   167,   169,
+     174,   179,   180,   181,   188,   191,   195,   200,   206,   211,
+     217,   220,   223,   225,   229,   231,   235,   237,   240,   244,
+     247,   250,   252,   254,   258,   261,   265,   267,   272,   276,
+     280,   284,   288,   291,   293,   295,   300,   304,   308,   312,
+     316,   319,   321,   323,   325,   328,   330,   334,   336,   338,
+     340,   342,   344,   346,   348,   350,   352,   354,   355,   360,
+     362,   364,   366,   368,   370,   372,   374,   376,   378,   380,
+     382,   384,   386,   388,   390,   392,   394,   396,   398,   400,
+     402,   404,   406,   408,   410,   412,   414,   416,   418,   420,
+     422,   424,   426,   428,   430,   432,   434,   436,   438,   440,
+     442,   444,   446,   448,   450,   452,   454,   456,   458,   460,
+     462,   464,   466,   468,   470,   472,   474,   476,   478,   480,
+     482,   484,   486,   488,   490,   492,   494,   498,   504,   508,
+     515,   521,   527,   533,   539,   544,   548,   552,   556,   560,
+     564,   568,   572,   576,   580,   585,   590,   593,   596,   600,
+     604,   608,   612,   616,   620,   624,   628,   632,   636,   640,
+     644,   648,   651,   654,   658,   662,   666,   670,   671,   676,
+     682,   684,   686,   688,   691,   694,   700,   703,   707,   711,
+     715,   719,   725,   727,   729,   731,   734,   740,   743,   749,
+     754,   762,   766,   768,   773,   777,   783,   791,   794,   800,
+     805,   812,   820,   830,   834,   836,   837,   840,   842,   843,
+     847,   848,   853,   856,   859,   861,   863,   867,   871,   876,
+     879,   881,   883,   885,   887,   889,   891,   893,   895,   897,
+     898,   903,   904,   909,   913,   917,   920,   924,   928,   930,
+     935,   939,   941,   942,   949,   952,   954,   957,   960,   967,
+     974,   975,   976,   984,   985,   986,   994,  1000,  1007,  1012,
+    1018,  1019,  1020,  1030,  1031,  1038,  1039,  1040,  1049,  1050,
+    1056,  1057,  1064,  1065,  1066,  1076,  1078,  1080,  1082,  1084,
+    1086,  1088,  1090,  1092,  1095,  1097,  1099,  1101,  1103,  1109,
+    1111,  1114,  1116,  1118,  1120,  1124,  1126,  1129,  1134,  1142,
+    1149,  1154,  1158,  1164,  1169,  1172,  1174,  1177,  1179,  1181,
+    1185,  1187,  1192,  1194,  1197,  1199,  1203,  1205,  1206,  1207,
+    1208,  1214,  1219,  1222,  1226,  1230,  1231,  1232,  1239,  1242,
+    1247,  1252,  1255,  1260,  1265,  1269,  1272,  1274,  1279,  1284,
+    1285,  1286,  1293,  1294,  1295,  1302,  1305,  1311,  1313,  1318,
+    1321,  1323,  1325,  1332,  1334,  1336,  1338,  1340,  1343,  1345,
+    1348,  1350,  1352,  1354,  1356,  1358,  1360,  1363,  1367,  1371,
+    1375,  1379,  1383,  1384,  1388,  1390,  1393,  1397,  1401,  1402,
+    1406,  1407,  1410,  1411,  1414,  1416,  1417,  1421,  1422,  1427,
+    1429,  1431,  1433,  1435,  1438,  1440,  1442,  1444,  1446,  1450,
+    1452,  1454,  1457,  1460,  1462,  1464,  1466,  1468,  1470,  1472,
+    1474,  1476,  1478,  1480,  1482,  1484,  1486,  1488,  1490,  1492,
+    1493,  1498,  1501,  1505,  1508,  1515,  1520,  1525,  1528,  1533,
+    1536,  1539,  1541,  1542,  1544,  1546,  1548,  1550,  1552,  1554,
+    1558,  1562,  1564,  1568,  1570,  1572,  1575,  1577,  1579,  1581,
+    1584,  1587,  1589,  1591,  1592,  1597,  1599,  1602,  1605,  1607,
+    1611,  1615,  1618,  1620,  1622,  1624,  1626,  1628,  1630,  1632,
+    1634,  1636,  1638,  1640,  1642,  1643,  1645,  1646,  1648,  1651,
+    1652,  1654,  1656,  1658,  1660,  1662,  1665
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short int yyrhs[] =
+{
+     138,     0,    -1,    -1,   139,   141,    -1,   141,   236,   208,
+     239,    -1,   142,   287,    -1,   293,    -1,   143,    -1,   142,
+     292,   143,    -1,     1,   143,    -1,    -1,    45,   165,   144,
+     165,    -1,    45,    53,    53,    -1,    45,    53,    62,    -1,
+      45,    53,    61,    -1,     6,   166,    -1,   143,    40,   147,
+      -1,   143,    41,   147,    -1,   143,    42,   147,    -1,   143,
+      43,   147,    -1,   143,    44,   143,    -1,    -1,    47,   145,
+     125,   141,   126,    -1,    48,   125,   141,   126,    -1,   160,
+     108,   148,    -1,   154,   108,   148,    -1,   263,    85,   148,
+      -1,   204,   127,   173,   128,    85,   148,    -1,   204,   129,
+      51,    85,   148,    -1,   204,   129,    55,    85,   148,    -1,
+     204,    83,    51,    85,   148,    -1,   264,    85,   148,    -1,
+     160,   108,   186,    -1,   154,   108,   172,    -1,   154,   108,
+     186,    -1,   146,    -1,   148,    -1,   146,    37,   146,    -1,
+     146,    38,   146,    -1,    39,   146,    -1,   122,   148,    -1,
+     170,    -1,   146,    -1,   153,    -1,   149,    -1,    30,   176,
+      -1,    21,   176,    -1,    22,   176,    -1,   226,    -1,   226,
+     129,   284,   178,    -1,   226,    83,   284,   178,    -1,    -1,
+      -1,    92,   151,   212,   152,   141,   126,    -1,   283,   178,
+      -1,   283,   178,   150,    -1,   204,   129,   284,   178,    -1,
+     204,   129,   284,   178,   150,    -1,   204,    83,   284,   178,
+      -1,   204,    83,   284,   178,   150,    -1,    32,   178,    -1,
+      31,   178,    -1,   156,    -1,    87,   155,   289,    -1,   156,
+      -1,    87,   155,   289,    -1,   158,    -1,   158,   157,    -1,
+     158,    93,   159,    -1,   158,    93,    -1,    93,   159,    -1,
+      93,    -1,   159,    -1,    87,   155,   289,    -1,   157,   130,
+      -1,   158,   157,   130,    -1,   261,    -1,   204,   127,   173,
+     128,    -1,   204,   129,    51,    -1,   204,    83,    51,    -1,
+     204,   129,    55,    -1,   204,    83,    55,    -1,    84,    55,
+      -1,   264,    -1,   261,    -1,   204,   127,   173,   128,    -1,
+     204,   129,    51,    -1,   204,    83,    51,    -1,   204,   129,
+      55,    -1,   204,    83,    55,    -1,    84,    55,    -1,   264,
+      -1,    51,    -1,    55,    -1,    84,   161,    -1,   161,    -1,
+     204,    83,   161,    -1,    51,    -1,    55,    -1,    52,    -1,
+     168,    -1,   169,    -1,   163,    -1,   257,    -1,   164,    -1,
+     259,    -1,   165,    -1,    -1,   166,   130,   167,   165,    -1,
+     113,    -1,   114,    -1,   115,    -1,    67,    -1,    68,    -1,
+      69,    -1,    75,    -1,   111,    -1,    71,    -1,   112,    -1,
+      72,    -1,    81,    -1,    82,    -1,   116,    -1,   117,    -1,
+     118,    -1,    93,    -1,   119,    -1,   120,    -1,    66,    -1,
+     123,    -1,    64,    -1,    65,    -1,    79,    -1,    80,    -1,
+     131,    -1,    49,    -1,    50,    -1,    47,    -1,    48,    -1,
+      45,    -1,    37,    -1,     7,    -1,    21,    -1,    16,    -1,
+       3,    -1,     5,    -1,    46,    -1,    26,    -1,    15,    -1,
+      14,    -1,    10,    -1,     9,    -1,    36,    -1,    20,    -1,
+      25,    -1,     4,    -1,    22,    -1,    34,    -1,    39,    -1,
+      38,    -1,    23,    -1,     8,    -1,    24,    -1,    30,    -1,
+      33,    -1,    32,    -1,    13,    -1,    35,    -1,     6,    -1,
+      17,    -1,    31,    -1,    40,    -1,    41,    -1,    42,    -1,
+      43,    -1,    44,    -1,   160,   108,   170,    -1,   160,   108,
+     170,    44,   170,    -1,   263,    85,   170,    -1,   204,   127,
+     173,   128,    85,   170,    -1,   204,   129,    51,    85,   170,
+      -1,   204,   129,    55,    85,   170,    -1,   204,    83,    51,
+      85,   170,    -1,   204,    83,    55,    85,   170,    -1,    84,
+      55,    85,   170,    -1,   264,    85,   170,    -1,   170,    77,
+     170,    -1,   170,    78,   170,    -1,   170,   116,   170,    -1,
+     170,   117,   170,    -1,   170,   118,   170,    -1,   170,   119,
+     170,    -1,   170,   120,   170,    -1,   170,    66,   170,    -1,
+     121,    58,    66,   170,    -1,   121,    59,    66,   170,    -1,
+      64,   170,    -1,    65,   170,    -1,   170,   113,   170,    -1,
+     170,   114,   170,    -1,   170,   115,   170,    -1,   170,    67,
+     170,    -1,   170,   111,   170,    -1,   170,    71,   170,    -1,
+     170,   112,   170,    -1,   170,    72,   170,    -1,   170,    68,
+     170,    -1,   170,    69,   170,    -1,   170,    70,   170,    -1,
+     170,    75,   170,    -1,   170,    76,   170,    -1,   122,   170,
+      -1,   123,   170,    -1,   170,    81,   170,    -1,   170,    82,
+     170,    -1,   170,    73,   170,    -1,   170,    74,   170,    -1,
+      -1,    46,   288,   171,   170,    -1,   170,   109,   170,   110,
+     170,    -1,   187,    -1,   170,    -1,   293,    -1,   153,   288,
+      -1,   185,   290,    -1,   185,   130,    93,   170,   288,    -1,
+     281,   290,    -1,    93,   170,   288,    -1,   132,   293,   133,
+      -1,   132,   176,   289,    -1,   132,   226,   289,    -1,   132,
+     185,   130,   226,   289,    -1,   293,    -1,   174,    -1,   153,
+      -1,   185,   184,    -1,   185,   130,    93,   172,   184,    -1,
+     281,   184,    -1,   281,   130,    93,   172,   184,    -1,   185,
+     130,   281,   184,    -1,   185,   130,   281,   130,    93,   170,
+     184,    -1,    93,   172,   184,    -1,   183,    -1,   172,   130,
+     185,   184,    -1,   172,   130,   183,    -1,   172,   130,    93,
+     172,   184,    -1,   172,   130,   185,   130,    93,   172,   184,
+      -1,   281,   184,    -1,   281,   130,    93,   172,   184,    -1,
+     172,   130,   281,   184,    -1,   172,   130,   185,   130,   281,
+     184,    -1,   172,   130,   281,   130,    93,   172,   184,    -1,
+     172,   130,   185,   130,   281,   130,    93,   172,   184,    -1,
+      93,   172,   184,    -1,   183,    -1,    -1,   179,   180,    -1,
+     176,    -1,    -1,    88,   181,   289,    -1,    -1,    88,   177,
+     182,   289,    -1,    94,   172,    -1,   130,   183,    -1,   293,
+      -1,   172,    -1,   185,   130,   172,    -1,   185,   130,   172,
+      -1,   185,   130,    93,   172,    -1,    93,   172,    -1,   240,
+      -1,   241,    -1,   244,    -1,   245,    -1,   246,    -1,   249,
+      -1,   262,    -1,   264,    -1,    52,    -1,    -1,     7,   188,
+     140,    10,    -1,    -1,    88,   146,   189,   289,    -1,    87,
+     141,   133,    -1,   204,    83,    55,    -1,    84,    55,    -1,
+      90,   173,   128,    -1,    91,   280,   126,    -1,    30,    -1,
+      31,   132,   176,   289,    -1,    31,   132,   289,    -1,    31,
+      -1,    -1,    46,   288,   132,   190,   146,   289,    -1,   283,
+     228,    -1,   227,    -1,   227,   228,    -1,    95,   217,    -1,
+      11,   147,   205,   141,   207,    10,    -1,    12,   147,   205,
+     141,   208,    10,    -1,    -1,    -1,    18,   191,   147,   206,
+     192,   141,    10,    -1,    -1,    -1,    19,   193,   147,   206,
+     194,   141,    10,    -1,    16,   147,   287,   233,    10,    -1,
+      16,   147,   287,    15,   141,    10,    -1,    16,   287,   233,
+      10,    -1,    16,   287,    15,   141,    10,    -1,    -1,    -1,
+      20,   209,    25,   195,   147,   206,   196,   141,    10,    -1,
+      -1,     3,   162,   265,   197,   140,    10,    -1,    -1,    -1,
+       3,    81,   146,   198,   291,   199,   140,    10,    -1,    -1,
+       4,   162,   200,   140,    10,    -1,    -1,     5,   163,   201,
+     267,   140,    10,    -1,    -1,    -1,     5,   278,   286,   202,
+     163,   203,   267,   140,    10,    -1,    21,    -1,    22,    -1,
+      23,    -1,    24,    -1,   187,    -1,   291,    -1,   110,    -1,
+      13,    -1,   291,    13,    -1,   291,    -1,   110,    -1,    27,
+      -1,   208,    -1,    14,   147,   205,   141,   207,    -1,   293,
+      -1,    15,   141,    -1,   160,    -1,   154,    -1,   157,    -1,
+     210,   130,   157,    -1,   210,    -1,   210,   130,    -1,   210,
+     130,    94,   160,    -1,   210,   130,    93,   160,   130,    94,
+     160,    -1,   210,   130,    93,   130,    94,   160,    -1,   210,
+     130,    93,   160,    -1,   210,   130,    93,    -1,    93,   160,
+     130,    94,   160,    -1,    93,   130,    94,   160,    -1,    93,
+     160,    -1,    93,    -1,    94,   160,    -1,   293,    -1,   213,
+      -1,   113,   214,   113,    -1,    74,    -1,   113,   211,   214,
+     113,    -1,   293,    -1,   134,   215,    -1,   216,    -1,   215,
+     130,   216,    -1,    51,    -1,    -1,    -1,    -1,   218,   219,
+     221,   220,   222,    -1,   132,   268,   214,   289,    -1,   268,
+     214,    -1,   106,   141,   126,    -1,    29,   141,    10,    -1,
+      -1,    -1,    28,   224,   212,   225,   141,    10,    -1,   153,
+     223,    -1,   226,   129,   284,   175,    -1,   226,    83,   284,
+     175,    -1,   283,   174,    -1,   204,   129,   284,   175,    -1,
+     204,    83,   284,   174,    -1,   204,    83,   285,    -1,    32,
+     174,    -1,    32,    -1,    87,   141,   133,   174,    -1,   204,
+     127,   173,   128,    -1,    -1,    -1,   125,   229,   212,   230,
+     141,   126,    -1,    -1,    -1,    26,   231,   212,   232,   141,
+      10,    -1,    96,   217,    -1,    17,   234,   205,   141,   235,
+      -1,   185,    -1,   185,   130,    93,   172,    -1,    93,   172,
+      -1,   208,    -1,   233,    -1,     8,   237,   238,   205,   141,
+     236,    -1,   293,    -1,   172,    -1,   186,    -1,   293,    -1,
+      86,   160,    -1,   293,    -1,     9,   141,    -1,   293,    -1,
+     260,    -1,   257,    -1,   259,    -1,   242,    -1,   243,    -1,
+     242,   243,    -1,    98,   251,   105,    -1,    99,   252,   105,
+      -1,   100,   252,    63,    -1,   101,   135,   105,    -1,   101,
+     247,   105,    -1,    -1,   247,   248,   135,    -1,   253,    -1,
+     248,   253,    -1,   102,   135,   105,    -1,   102,   250,   105,
+      -1,    -1,   250,    60,   135,    -1,    -1,   251,   253,    -1,
+      -1,   252,   253,    -1,    60,    -1,    -1,   104,   254,   256,
+      -1,    -1,   103,   255,   141,   126,    -1,    53,    -1,    54,
+      -1,    56,    -1,   264,    -1,    97,   258,    -1,   163,    -1,
+      54,    -1,    53,    -1,    56,    -1,    97,   252,   105,    -1,
+      58,    -1,    59,    -1,   121,    58,    -1,   121,    59,    -1,
+      51,    -1,    54,    -1,    53,    -1,    55,    -1,    56,    -1,
+      34,    -1,    33,    -1,    35,    -1,    36,    -1,    50,    -1,
+      49,    -1,   261,    -1,   261,    -1,    61,    -1,    62,    -1,
+     291,    -1,    -1,   112,   266,   147,   291,    -1,     1,   291,
+      -1,   132,   268,   289,    -1,   268,   291,    -1,   270,   130,
+     272,   130,   274,   277,    -1,   270,   130,   272,   277,    -1,
+     270,   130,   274,   277,    -1,   270,   277,    -1,   272,   130,
+     274,   277,    -1,   272,   277,    -1,   274,   277,    -1,   276,
+      -1,    -1,    55,    -1,    54,    -1,    53,    -1,    56,    -1,
+      51,    -1,   269,    -1,   270,   130,   269,    -1,    51,   108,
+     172,    -1,   271,    -1,   272,   130,   271,    -1,   118,    -1,
+      93,    -1,   273,    51,    -1,   273,    -1,   115,    -1,    94,
+      -1,   275,    51,    -1,   130,   276,    -1,   293,    -1,   262,
+      -1,    -1,   132,   279,   146,   289,    -1,   293,    -1,   281,
+     290,    -1,   185,   290,    -1,   282,    -1,   281,   130,   282,
+      -1,   172,    86,   172,    -1,    57,   172,    -1,    51,    -1,
+      55,    -1,    52,    -1,    51,    -1,    55,    -1,    52,    -1,
+     168,    -1,    51,    -1,    52,    -1,   168,    -1,   129,    -1,
+      83,    -1,    -1,   292,    -1,    -1,   136,    -1,   288,   133,
+      -1,    -1,   136,    -1,   130,    -1,   134,    -1,   136,    -1,
+     291,    -1,   292,   134,    -1,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short int yyrline[] =
+{
+       0,   701,   701,   701,   733,   766,   777,   785,   793,   801,
+     807,   807,   815,   823,   834,   844,   852,   865,   878,   894,
+     910,   919,   918,   943,   958,   966,   976,  1005,  1029,  1046,
+    1063,  1080,  1090,  1098,  1107,  1116,  1119,  1120,  1128,  1136,
+    1144,  1152,  1155,  1166,  1167,  1168,  1176,  1184,  1194,  1195,
+    1204,  1216,  1223,  1215,  1239,  1248,  1263,  1272,  1287,  1296,
+    1311,  1320,  1331,  1332,  1342,  1343,  1353,  1361,  1369,  1377,
+    1385,  1393,  1403,  1404,  1414,  1422,  1432,  1440,  1448,  1456,
+    1464,  1472,  1484,  1494,  1506,  1514,  1522,  1530,  1538,  1546,
+    1559,  1572,  1583,  1591,  1594,  1602,  1610,  1620,  1621,  1622,
+    1623,  1633,  1645,  1646,  1649,  1657,  1660,  1668,  1668,  1678,
+    1679,  1680,  1681,  1682,  1683,  1684,  1685,  1686,  1687,  1688,
+    1689,  1690,  1691,  1692,  1693,  1694,  1695,  1696,  1697,  1698,
+    1699,  1700,  1701,  1702,  1703,  1706,  1706,  1706,  1706,  1707,
+    1707,  1707,  1707,  1707,  1707,  1707,  1708,  1708,  1708,  1708,
+    1708,  1708,  1708,  1709,  1709,  1709,  1709,  1709,  1709,  1710,
+    1710,  1710,  1710,  1710,  1710,  1710,  1711,  1711,  1711,  1711,
+    1711,  1712,  1712,  1712,  1712,  1712,  1715,  1723,  1731,  1760,
+    1784,  1801,  1818,  1835,  1846,  1857,  1868,  1885,  1902,  1910,
+    1918,  1926,  1934,  1942,  1950,  1959,  1968,  1981,  1989,  1997,
+    2005,  2013,  2021,  2029,  2037,  2045,  2053,  2061,  2069,  2077,
+    2085,  2093,  2101,  2109,  2117,  2125,  2133,  2141,  2141,  2151,
+    2160,  2166,  2177,  2178,  2188,  2192,  2201,  2209,  2220,  2228,
+    2236,  2246,  2258,  2259,  2262,  2272,  2280,  2289,  2299,  2309,
+    2318,  2329,  2337,  2346,  2354,  2362,  2372,  2382,  2391,  2401,
+    2411,  2421,  2432,  2443,  2451,  2454,  2454,  2466,  2467,  2467,
+    2476,  2476,  2487,  2497,  2501,  2504,  2512,  2522,  2530,  2538,
+    2548,  2549,  2550,  2551,  2552,  2553,  2554,  2555,  2556,  2565,
+    2564,  2589,  2589,  2598,  2607,  2615,  2623,  2636,  2644,  2652,
+    2660,  2668,  2676,  2676,  2686,  2697,  2698,  2709,  2713,  2730,
+    2747,  2747,  2747,  2761,  2761,  2761,  2775,  2786,  2794,  2802,
+    2810,  2810,  2810,  2822,  2821,  2845,  2854,  2844,  2880,  2879,
+    2903,  2902,  2933,  2934,  2933,  2960,  2968,  2976,  2984,  2994,
+    3005,  3010,  3015,  3016,  3023,  3028,  3033,  3036,  3037,  3050,
+    3051,  3061,  3062,  3065,  3073,  3083,  3097,  3105,  3113,  3122,
+    3131,  3139,  3147,  3156,  3165,  3173,  3181,  3191,  3198,  3201,
+    3209,  3217,  3228,  3229,  3239,  3247,  3257,  3267,  3273,  3278,
+    3267,  3294,  3302,  3312,  3316,  3323,  3330,  3322,  3350,  3361,
+    3370,  3381,  3390,  3400,  3410,  3418,  3426,  3434,  3446,  3461,
+    3468,  3460,  3487,  3494,  3486,  3512,  3524,  3535,  3536,  3544,
+    3554,  3555,  3558,  3577,  3580,  3588,  3589,  3592,  3596,  3599,
+    3607,  3610,  3611,  3619,  3622,  3639,  3640,  3650,  3660,  3687,
+    3724,  3732,  3739,  3746,  3756,  3764,  3774,  3782,  3789,  3796,
+    3807,  3814,  3825,  3832,  3842,  3844,  3843,  3860,  3859,  3881,
+    3889,  3897,  3905,  3908,  3920,  3921,  3922,  3923,  3926,  3957,
+    3958,  3959,  3967,  3977,  3978,  3979,  3980,  3981,  3982,  3983,
+    3984,  3985,  3986,  3987,  3990,  4000,  4010,  4011,  4014,  4023,
+    4022,  4030,  4042,  4054,  4060,  4068,  4076,  4084,  4092,  4100,
+    4108,  4116,  4125,  4134,  4142,  4150,  4158,  4166,  4185,  4194,
+    4209,  4225,  4234,  4244,  4245,  4248,  4262,  4277,  4278,  4281,
+    4302,  4306,  4309,  4323,  4323,  4352,  4353,  4357,  4370,  4377,
+    4387,  4395,  4405,  4406,  4407,  4410,  4411,  4412,  4413,  4416,
+    4417,  4418,  4421,  4426,  4433,  4434,  4437,  4438,  4441,  4444,
+    4445,  4446,  4449,  4450,  4453,  4454,  4458
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE
+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "kCLASS", "kMODULE", "kDEF", "kUNDEF",
+  "kBEGIN", "kRESCUE", "kENSURE", "kEND", "kIF", "kUNLESS", "kTHEN",
+  "kELSIF", "kELSE", "kCASE", "kWHEN", "kWHILE", "kUNTIL", "kFOR",
+  "kBREAK", "kNEXT", "kREDO", "kRETRY", "kIN", "kDO", "kDO_COND",
+  "kDO_BLOCK", "kDO_LAMBDA", "kRETURN", "kYIELD", "kSUPER", "kSELF",
+  "kNIL", "kTRUE", "kFALSE", "kAND", "kOR", "kNOT", "kIF_MOD",
+  "kUNLESS_MOD", "kWHILE_MOD", "kUNTIL_MOD", "kRESCUE_MOD", "kALIAS",
+  "kDEFINED", "klBEGIN", "klEND", "k__LINE__", "k__FILE__", "tIDENTIFIER",
+  "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tCVAR", "tLABEL", "tINTEGER",
+  "tFLOAT", "tSTRING_CONTENT", "tNTH_REF", "tBACK_REF", "tREGEXP_END",
+  "tUPLUS", "tUMINUS", "tPOW", "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ",
+  "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH", "tDOT2", "tDOT3",
+  "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN",
+  "tASSOC", "tLPAREN", "tLPAREN_ARG", "tRPAREN", "tLBRACK", "tLBRACE",
+  "tLBRACE_ARG", "tSTAR", "tAMPER", "tLAMBDA", "tLAMBDA_ARG", "tSYMBEG",
+  "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tWORDS_BEG",
+  "tQWORDS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tLAMBEG",
+  "tLOWEST", "'='", "'?'", "':'", "'>'", "'<'", "'|'", "'^'", "'&'", "'+'",
+  "'-'", "'*'", "'/'", "'%'", "tUMINUS_NUM", "'!'", "'~'", "tLAST_TOKEN",
+  "'{'", "'}'", "'['", "']'", "'.'", "','", "'`'", "'('", "')'", "';'",
+  "' '", "'\\n'", "$accept", "program", "@1", "bodystmt", "compstmt",
+  "stmts", "stmt", "@2", "@3", "expr", "expr_value", "command_call",
+  "block_command", "cmd_brace_block", "@4", "@5", "command", "mlhs",
+  "mlhs_entry", "mlhs_basic", "mlhs_item", "mlhs_head", "mlhs_node", "lhs",
+  "cname", "cpath", "fname", "fsym", "fitem", "undef_list", "@6", "op",
+  "reswords", "arg", "@7", "arg_value", "aref_args", "paren_args",
+  "opt_paren_args", "call_args", "call_args2", "command_args", "@8",
+  "open_args", "@9", "@10", "block_arg", "opt_block_arg", "args", "mrhs",
+  "primary", "@11", "@12", "@13", "@14", "@15", "@16", "@17", "@18", "@19",
+  "@20", "@21", "@22", "@23", "@24", "@25", "@26", "primary_value", "then",
+  "do", "if_tail", "opt_else", "for_var", "block_param0", "block_param",
+  "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls",
+  "bv_decl", "lambda", "@27", "@28", "@29", "f_larglist", "lambda_body",
+  "do_block", "@30", "@31", "block_call", "method_call", "brace_block",
+  "@32", "@33", "@34", "@35", "case_body", "when_args", "cases",
+  "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal", "strings",
+  "string", "string1", "xstring", "regexp", "words", "word_list", "word",
+  "qwords", "qword_list", "string_contents", "xstring_contents",
+  "string_content", "@36", "@37", "string_dvar", "symbol", "sym", "dsym",
+  "numeric", "variable", "var_ref", "var_lhs", "backref", "superclass",
+  "@38", "f_arglist", "f_args", "f_norm_arg", "f_arg", "f_opt", "f_optarg",
+  "restarg_mark", "f_rest_arg", "blkarg_mark", "f_block_arg",
+  "opt_f_block_arg", "singleton", "@39", "assoc_list", "assocs", "assoc",
+  "operation", "operation2", "operation3", "dot_or_colon", "opt_terms",
+  "opt_nl", "rparen", "trailer", "term", "terms", "none", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,    61,    63,
+      58,    62,    60,   124,    94,    38,    43,    45,    42,    47,
+      37,   363,    33,   126,   364,   123,   125,    91,    93,    46,
+      44,    96,    40,    41,    59,    32,    10
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned short int yyr1[] =
+{
+       0,   137,   139,   138,   140,   141,   142,   142,   142,   142,
+     144,   143,   143,   143,   143,   143,   143,   143,   143,   143,
+     143,   145,   143,   143,   143,   143,   143,   143,   143,   143,
+     143,   143,   143,   143,   143,   143,   146,   146,   146,   146,
+     146,   146,   147,   148,   148,   148,   148,   148,   149,   149,
+     149,   151,   152,   150,   153,   153,   153,   153,   153,   153,
+     153,   153,   154,   154,   155,   155,   156,   156,   156,   156,
+     156,   156,   157,   157,   158,   158,   159,   159,   159,   159,
+     159,   159,   159,   159,   160,   160,   160,   160,   160,   160,
+     160,   160,   161,   161,   162,   162,   162,   163,   163,   163,
+     163,   163,   164,   164,   165,   165,   166,   167,   166,   168,
+     168,   168,   168,   168,   168,   168,   168,   168,   168,   168,
+     168,   168,   168,   168,   168,   168,   168,   168,   168,   168,
+     168,   168,   168,   168,   168,   169,   169,   169,   169,   169,
+     169,   169,   169,   169,   169,   169,   169,   169,   169,   169,
+     169,   169,   169,   169,   169,   169,   169,   169,   169,   169,
+     169,   169,   169,   169,   169,   169,   169,   169,   169,   169,
+     169,   169,   169,   169,   169,   169,   170,   170,   170,   170,
+     170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
+     170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
+     170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
+     170,   170,   170,   170,   170,   170,   170,   171,   170,   170,
+     170,   172,   173,   173,   173,   173,   173,   173,   174,   174,
+     174,   174,   175,   175,   176,   176,   176,   176,   176,   176,
+     176,   176,   176,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   179,   178,   180,   181,   180,
+     182,   180,   183,   184,   184,   185,   185,   186,   186,   186,
+     187,   187,   187,   187,   187,   187,   187,   187,   187,   188,
+     187,   189,   187,   187,   187,   187,   187,   187,   187,   187,
+     187,   187,   190,   187,   187,   187,   187,   187,   187,   187,
+     191,   192,   187,   193,   194,   187,   187,   187,   187,   187,
+     195,   196,   187,   197,   187,   198,   199,   187,   200,   187,
+     201,   187,   202,   203,   187,   187,   187,   187,   187,   204,
+     205,   205,   205,   205,   206,   206,   206,   207,   207,   208,
+     208,   209,   209,   210,   210,   211,   211,   211,   211,   211,
+     211,   211,   211,   211,   211,   211,   211,   212,   212,   213,
+     213,   213,   214,   214,   215,   215,   216,   218,   219,   220,
+     217,   221,   221,   222,   222,   224,   225,   223,   226,   226,
+     226,   227,   227,   227,   227,   227,   227,   227,   227,   229,
+     230,   228,   231,   232,   228,   228,   233,   234,   234,   234,
+     235,   235,   236,   236,   237,   237,   237,   238,   238,   239,
+     239,   240,   240,   240,   241,   242,   242,   243,   244,   245,
+     246,   246,   247,   247,   248,   248,   249,   249,   250,   250,
+     251,   251,   252,   252,   253,   254,   253,   255,   253,   256,
+     256,   256,   256,   257,   258,   258,   258,   258,   259,   260,
+     260,   260,   260,   261,   261,   261,   261,   261,   261,   261,
+     261,   261,   261,   261,   262,   263,   264,   264,   265,   266,
+     265,   265,   267,   267,   268,   268,   268,   268,   268,   268,
+     268,   268,   268,   269,   269,   269,   269,   269,   270,   270,
+     271,   272,   272,   273,   273,   274,   274,   275,   275,   276,
+     277,   277,   278,   279,   278,   280,   280,   280,   281,   281,
+     282,   282,   283,   283,   283,   284,   284,   284,   284,   285,
+     285,   285,   286,   286,   287,   287,   288,   288,   289,   290,
+     290,   290,   291,   291,   292,   292,   293
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     0,     2,     4,     2,     1,     1,     3,     2,
+       0,     4,     3,     3,     3,     2,     3,     3,     3,     3,
+       3,     0,     5,     4,     3,     3,     3,     6,     5,     5,
+       5,     3,     3,     3,     3,     1,     1,     3,     3,     2,
+       2,     1,     1,     1,     1,     2,     2,     2,     1,     4,
+       4,     0,     0,     6,     2,     3,     4,     5,     4,     5,
+       2,     2,     1,     3,     1,     3,     1,     2,     3,     2,
+       2,     1,     1,     3,     2,     3,     1,     4,     3,     3,
+       3,     3,     2,     1,     1,     4,     3,     3,     3,     3,
+       2,     1,     1,     1,     2,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     3,     5,     3,     6,
+       5,     5,     5,     5,     4,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     4,     4,     2,     2,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     2,     2,     3,     3,     3,     3,     0,     4,     5,
+       1,     1,     1,     2,     2,     5,     2,     3,     3,     3,
+       3,     5,     1,     1,     1,     2,     5,     2,     5,     4,
+       7,     3,     1,     4,     3,     5,     7,     2,     5,     4,
+       6,     7,     9,     3,     1,     0,     2,     1,     0,     3,
+       0,     4,     2,     2,     1,     1,     3,     3,     4,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     0,     4,     3,     3,     2,     3,     3,     1,     4,
+       3,     1,     0,     6,     2,     1,     2,     2,     6,     6,
+       0,     0,     7,     0,     0,     7,     5,     6,     4,     5,
+       0,     0,     9,     0,     6,     0,     0,     8,     0,     5,
+       0,     6,     0,     0,     9,     1,     1,     1,     1,     1,
+       1,     1,     1,     2,     1,     1,     1,     1,     5,     1,
+       2,     1,     1,     1,     3,     1,     2,     4,     7,     6,
+       4,     3,     5,     4,     2,     1,     2,     1,     1,     3,
+       1,     4,     1,     2,     1,     3,     1,     0,     0,     0,
+       5,     4,     2,     3,     3,     0,     0,     6,     2,     4,
+       4,     2,     4,     4,     3,     2,     1,     4,     4,     0,
+       0,     6,     0,     0,     6,     2,     5,     1,     4,     2,
+       1,     1,     6,     1,     1,     1,     1,     2,     1,     2,
+       1,     1,     1,     1,     1,     1,     2,     3,     3,     3,
+       3,     3,     0,     3,     1,     2,     3,     3,     0,     3,
+       0,     2,     0,     2,     1,     0,     3,     0,     4,     1,
+       1,     1,     1,     2,     1,     1,     1,     1,     3,     1,
+       1,     2,     2,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     2,     3,     2,     6,     4,     4,     2,     4,     2,
+       2,     1,     0,     1,     1,     1,     1,     1,     1,     3,
+       3,     1,     3,     1,     1,     2,     1,     1,     1,     2,
+       2,     1,     1,     0,     4,     1,     2,     2,     1,     3,
+       3,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     0,     1,     0,     1,     2,     0,
+       1,     1,     1,     1,     1,     2,     0
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned short int yydefact[] =
+{
+       2,     0,     0,     1,     0,     0,     0,     0,     0,   279,
+       0,     0,   524,   300,   303,     0,   325,   326,   327,   328,
+     288,   291,   386,   459,   458,   460,   461,     0,     0,   526,
+      21,     0,   463,   462,   453,   514,   455,   454,   456,   457,
+     449,   450,   466,   467,     0,     0,     0,     0,     0,   536,
+     536,    71,   367,   432,   430,   432,   432,   422,   428,     0,
+       0,     0,     3,   524,     7,    35,    36,    44,    43,     0,
+      62,     0,    66,    72,     0,    41,   220,     0,    48,   295,
+     270,   271,   414,   415,   272,   273,   274,   275,   412,   413,
+     411,   464,   276,     0,   277,   255,     6,     9,   325,   326,
+     288,   291,   386,   526,    92,    93,     0,     0,     0,     0,
+      95,     0,   329,     0,   464,   277,     0,   318,   144,   155,
+     145,   168,   141,   161,   151,   150,   166,   149,   148,   143,
+     169,   153,   142,   156,   160,   162,   154,   147,   163,   170,
+     165,   164,   157,   167,   152,   140,   159,   158,   171,   172,
+     173,   174,   175,   139,   146,   137,   138,   135,   136,    97,
+      99,    98,   130,   131,   128,   112,   113,   114,   117,   119,
+     115,   132,   133,   120,   121,   125,   116,   118,   109,   110,
+     111,   122,   123,   124,   126,   127,   129,   134,   503,   320,
+     100,   101,   502,     0,   164,   157,   167,   152,   135,   136,
+      97,    98,   102,   104,   106,    15,   103,   105,     0,     0,
+      42,     0,     0,     0,   464,     0,   277,     0,   532,   533,
+     524,     0,   534,   525,     0,     0,     0,   342,   341,     0,
+       0,   464,   277,     0,     0,     0,     0,   234,   221,   265,
+      46,   242,   536,   536,   508,    47,    45,   526,    61,     0,
+     536,   385,    60,    39,     0,    10,   527,   217,     0,     0,
+     196,     0,   197,   285,     0,     0,   526,    64,   281,     0,
+     526,     0,   529,   529,   222,   529,     0,   529,   505,     0,
+      70,     0,    76,    83,   297,   368,   446,   445,   447,   444,
+       0,   443,     0,     0,     0,     0,     0,     0,     0,   451,
+     452,    40,   211,   212,     5,   525,     0,     0,     0,     0,
+       0,     0,     0,   375,   378,     0,    74,     0,    69,    67,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   536,     0,
+       0,     0,   392,   367,   389,   296,   416,     0,     0,   381,
+      54,   294,     0,   315,    92,    93,    94,   451,   452,     0,
+     469,   313,   468,     0,   536,     0,     0,     0,   482,   523,
+     522,   322,   107,     0,   536,   285,   332,   331,     0,   330,
+       0,     0,   536,     0,     0,     0,     0,     0,     0,     0,
+       0,   535,     0,     0,   285,     0,   536,     0,   310,   511,
+     536,   262,     0,     0,   235,   264,     0,   237,   526,     0,
+     290,   258,   257,   256,   234,   526,   536,   526,     0,    12,
+      14,    13,     0,   292,     0,     0,     0,     0,     0,     0,
+     526,   283,    63,   526,   526,   223,   286,   531,   530,   224,
+     531,   226,   531,   507,   287,   506,    82,     0,   536,     0,
+     482,   434,   437,   435,   448,   433,   417,   431,   418,   419,
+     420,   421,     0,   424,   426,     0,   427,     0,     0,     8,
+      16,    17,    18,    19,    20,    37,    38,   536,     0,    25,
+      33,     0,    34,   526,    68,    75,    24,   176,   265,    32,
+     193,   201,   206,   207,   208,   203,   205,   215,   216,   209,
+     210,   186,   187,   213,   214,     0,   202,   204,   198,   199,
+     200,   188,   189,   190,   191,   192,   515,   520,   516,   521,
+     255,   384,     0,   515,   517,   516,   518,   536,   515,   516,
+     255,   255,   536,   395,   536,    26,   178,    31,   185,    51,
+      55,     0,   471,     0,     0,    92,    93,    96,     0,     0,
+     536,     0,   526,   487,   485,   484,   483,   486,   494,   498,
+     497,   493,   482,     0,     0,   488,   536,   491,   536,   496,
+     536,     0,   481,     0,     0,   280,   536,   536,   403,   536,
+     333,   176,   519,   284,     0,   515,   516,   536,     0,     0,
+       0,     0,   397,     0,   308,   336,   335,   301,   334,   304,
+     519,   284,     0,   515,   516,     0,     0,   241,   510,     0,
+     266,   263,   536,     0,     0,   509,   289,   528,     0,    41,
+       0,   260,   526,   254,   536,   229,     0,     0,     0,   230,
+     228,    11,     0,   218,     0,    23,   184,    65,   387,   282,
+     227,     0,   266,    79,    81,     0,    78,    80,   482,   369,
+     536,     0,     0,   423,   425,   429,   194,   195,   360,   536,
+     376,   358,   357,   269,     0,    73,     0,     0,     0,     0,
+     383,    58,   388,     0,     0,   233,   382,    56,   232,   380,
+      50,   379,    49,   393,   390,   536,   316,     0,     0,   388,
+     319,   504,     0,   526,     0,   473,     0,   477,   501,     0,
+     479,   495,     0,   480,   499,   323,   108,   404,   405,   536,
+     406,     0,   536,   339,     0,     0,   337,     0,   388,     0,
+       0,     0,     0,   306,   309,   399,     0,     0,     0,     0,
+     388,     0,   536,     0,   239,   536,   536,     0,   526,   259,
+       0,   247,     0,   526,   536,   536,   526,    22,   526,    77,
+     536,     0,     0,   372,   362,     0,   439,   440,   441,   436,
+     442,   355,     0,   343,   345,   536,     0,     0,     0,   267,
+     177,   219,    30,   182,   183,    59,     0,    28,   180,    29,
+     181,    57,     0,     0,    52,     0,   470,   314,   490,   472,
+     321,   489,   536,   536,   500,     0,   492,   536,   482,     0,
+       0,   408,   340,     0,     4,   410,     0,   298,     0,   299,
+     307,     0,   536,     0,     0,   311,   236,     0,   238,   253,
+       0,   244,   536,   536,   261,     0,   231,   293,   225,   526,
+       0,     0,   370,   366,   363,   364,   438,     0,     0,   354,
+       0,    84,    91,   356,   346,     0,   359,     0,   268,    27,
+     179,     0,     0,     0,     0,     0,   475,   476,   478,     0,
+     407,     0,   409,     0,   398,   400,   401,   396,   302,   305,
+       0,   536,   536,     0,   243,     0,   249,   536,   371,     0,
+       0,     0,    90,     0,     0,     0,   536,     0,   351,     0,
+     344,   361,   377,   394,   391,     0,   317,   536,     0,   536,
+     536,     0,   240,   245,     0,   536,     0,   248,   374,   373,
+     365,   353,     0,    87,    89,     0,   515,   516,     0,   350,
+     347,    53,   474,   324,   402,   338,   312,   536,     0,   250,
+     536,   352,    85,     0,     0,   246,     0,   251,   349,     0,
+     536,   348,   252
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
+{
+      -1,     1,     2,   383,   384,    63,    64,   432,   258,    65,
+     211,    66,    67,   550,   695,   863,    68,    69,   266,    70,
+      71,    72,    73,   212,   110,   111,   202,   203,   204,   205,
+     584,   536,   191,    75,   434,   239,   271,   685,   686,   240,
+     631,   248,   249,   423,   632,   748,   621,   414,   272,   492,
+      76,   208,   443,   642,   224,   738,   225,   739,   615,   880,
+     554,   551,   795,   376,   378,   583,   808,   261,   388,   607,
+     725,   726,   230,   774,   775,   670,   671,   763,   844,   845,
+     284,   285,   460,   761,   659,   842,   314,   487,   777,    78,
+      79,   361,   544,   793,   542,   792,   400,   603,   877,   587,
+     719,   810,   814,    80,    81,    82,    83,    84,    85,    86,
+     296,   472,    87,   298,   292,   290,   465,   662,   661,   769,
+      88,   291,    89,    90,   214,    92,   215,   216,   371,   553,
+     573,   574,   575,   576,   577,   578,   579,   580,   581,   582,
+     707,   193,   377,   276,   273,   244,   116,   558,   531,   381,
+     221,   419,   420,   449,   389,   223,    96
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -656
+static const short int yypact[] =
+{
+    -656,   105,  2830,  -656,  6404,  9100,  9412,  4589,  5946,  -656,
+    7916,  7916,  4251,  -656,  -656,  9204,  6620,  6620,  -656,  -656,
+    6620,  5201,  5323,  -656,  -656,  -656,  -656,  7916,  5817,    75,
+    -656,    -8,  -656,  -656,  4711,  2371,  -656,  -656,  4834,  -656,
+    -656,  -656,  -656,  -656,  8780,  8780,   118,  3685,  7916,  7808,
+    8024,  9516,  -656,  5688,  -656,  -656,  -656,     5,    98,   290,
+    8888,  8780,  -656,   130,   687,   316,  -656,  -656,   179,   151,
+    -656,   150,  9308,  -656,   182, 10548,    48,   172,    32,    72,
+    -656,  -656,   196,  -656,  -656,  -656,  -656,  -656,  -656,  -656,
+    -656,   187,  -656,   243,   413,    56,  -656,   687,  -656,  -656,
+    -656,   189,   226,    75,   429,   440,  7916,    65,  3793,   452,
+    -656,    68,  -656,   193,  -656,  -656,    56,  -656,  -656,  -656,
+    -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,
+    -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,
+    -656,   115,   142,   198,   240,  -656,  -656,  -656,  -656,  -656,
+    -656,  -656,  -656,  -656,  -656,  -656,  -656,   268,   283,   288,
+    -656,   352,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,
+    -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,
+    -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,
+    -656,  -656,  -656,   385,  -656,  -656,  -656,  -656,  -656,  -656,
+    -656,  -656,  -656,  -656,  -656,   255,  -656,  -656,  3067,   350,
+     316,    95,   335,   236,    49,   386,    86,    95,  -656,  -656,
+     130,   175,  -656,   342,  7916,  7916,   428,  -656,  -656,   294,
+     469,    82,    88,  8780,  8780,  8780,  8780,  -656, 10548,   414,
+    -656,  -656,   383,   388,  -656,  -656,  -656,  4143,  -656,  6728,
+    6620,  -656,  -656,  -656,   230,  -656,  -656,   396,   390,  3901,
+    -656,   295,   467,   496,  3685,   408,    75,   451,   316,  8780,
+      75,   419,    46,    63,  -656,   298,   427,    63,  -656,   505,
+    -656,   317,   343,   355,  -656,  -656,  -656,  -656,  -656,  -656,
+     398,  -656,   479,   497,   445,   457,   514,   471,    36,   512,
+     520,  -656,  -656,  -656,  -656,  4359,  7916,  7916,  7916,  7916,
+    6404,  7916,  7916,  -656,  -656,  8132,  -656,  3685,  9516,   463,
+    8132,  8780,  8780,  8780,  8780,  8780,  8780,  8780,  8780,  8780,
+    8780,  8780,  8780,  8780,  8780,  8780,  8780,  8780,  8780,  8780,
+    8780,  8780,  8780,  8780,  8780,  8780,  8780,  2235,  7808,  9678,
+    9748,  9748,  -656,  -656,  -656,  -656,  -656,  8888,  8888,  -656,
+     502,  -656,   396,   316,  -656,   380,  -656,  -656,  -656,   130,
+    -656,  -656,  -656,  9818,  7808,  9748,  3067,  7916,   873,  -656,
+    -656,  -656,  -656,   585,   595,   124,  -656,  -656,  3201,   598,
+    8780,  9888,  7808,  9958,  8780,  8780,  3469,   401,  4035,  8240,
+     618,  -656,   103,   103,   111, 10028,  7808, 10098,  -656,  -656,
+     499,  -656,  8780,  6836,  -656,  -656,  6944,  -656,    75,   498,
+    -656,  6512,  -656,  -656,   179,    75,   507,    26,   516,  -656,
+    -656,  -656,  5946,  -656,  8780,  3901,   509,  9888,  9958,  8780,
+      75,   226,   508,    75,  4464,  -656,  -656,  8348,  -656,  -656,
+    8024,  -656,  8780,  -656,  -656,  -656,   380, 10168,  7808, 10238,
+     995,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,
+    -656,  -656,    61,  -656,  -656,   510,  -656,  8780,  8780,   687,
+    -656,  -656,  -656,  -656,  -656,  -656,  -656,    45,  8780,  -656,
+     517,   518,  -656,    75,  -656,  -656,  -656,  2694,  -656,  -656,
+     467,  1067,  1067,  1067,  1067,   705,   705,  1724,  2353,  1067,
+    1067, 10603, 10603,   504,   504, 10531,   705,   705,   575,   575,
+     370,    66,    66,   467,   467,   467,  2933,  5445,  2565,  5567,
+     226,  -656,   511,   506,  -656,   522,  -656,  5323,  -656,  -656,
+    1594,  1594,    45,  -656,    45,  -656, 10548,  -656, 10548,  -656,
+    -656,   130,  -656,  7916,  3067,   448,   205,  -656,   226,   523,
+     226,   622,    91,   553,  -656,  -656,  -656,  -656,  -656,  -656,
+    -656,  -656,  1008,  3067,   130,  -656,   532,  -656,   533,   613,
+     540,   623,  -656,  6075,  5946,  -656,  8456,   660,  -656,   515,
+    -656,  1126,  4957,  5079,   549,   178,   260,   660,  4035,   668,
+     670,  8780,   554,    95,  -656,  -656,  -656,  -656,  -656,  -656,
+      85,   108,   555,   112,   113,  7916,   594,  -656,  -656,  8780,
+     414,  -656,   566,  8780,   414,  -656,  -656,  -656,  8780, 10444,
+     170,  -656,    75,  -656,   569,  -656,  7052,  9748,  9748,  -656,
+    -656,  -656,  7916, 10548,   574,  -656, 10548,   271,  -656,  -656,
+    -656,  8780,  -656,   448,   205,   573,   589,   627,  1008,  -656,
+     572,  3901,   651,  -656,  -656,  -656,   467,   467,  -656,  4467,
+    -656,  -656,  -656,  -656,  8564,  -656,  8780,  8780,  8888,  8780,
+    -656,   502,   525,  8888,  8888,  -656,  -656,   502,  -656,  -656,
+    -656,  -656,  -656,  -656,  -656,    45,  -656,   130,   699,  -656,
+    -656,  -656,  8780,    75,   710,  -656,  1008,  -656,  -656,   218,
+    -656,  -656,    30,  -656,  -656,  -656,  -656,   517,  -656,   629,
+    -656,  3577,   715,  -656,  7916,   723,  -656,  8780,   299,  8780,
+    8780,   728,   729,  -656,  -656,  -656,  8672,  3335,  4035,  4035,
+     119,   103,   499,  7160,  -656,   499,   499,  7268,    75,  -656,
+    7376,  -656,   179,    26,   226,   226,    91,  -656,  4464,   439,
+     572,    64,   674,  -656,  -656,   615,  -656,  -656,  -656,  -656,
+    -656,  6196,  9620,  -656,   614,   572,   632,  4035,  8780,   616,
+   10548, 10548,  -656, 10548, 10548,  -656,  8888,  -656, 10548,  -656,
+   10548,  -656,  4035,  3901,  -656,  3067,  -656,  -656,  -656,  -656,
+    -656,  -656,   617,   540,  -656,   553,  -656,   540,   873,  9620,
+      95,  -656,  -656,  4035,  -656,  -656,    95,  -656,  8780,  -656,
+    -656,  8780,   480,   739,   740,  -656,  -656,  8780,  -656,  -656,
+    8780,  -656,   630,   631,  -656,  8780,  -656,  -656,  -656,    75,
+    4035,  3901,  -656,  -656,   633,  -656,  -656,   702,   672,   634,
+     397,   343,   355,  -656,  8996,   649,  -656,   757,  -656,  -656,
+   10548,   762,   648,  3901,   766,   218,  -656,  -656,  -656,  3067,
+    -656,  3067,  -656,  3201,  -656,  -656,  -656,  -656,  -656,  -656,
+    4035, 10466,   499,  7484,  -656,  7592,  -656,   499,  -656,   768,
+     653,   674,   380,  9620,   686, 10308,  7808, 10378,  6300,  9620,
+    -656,  -656,  -656,  -656,  -656,   655,  -656,   540,   772,   595,
+     515,   775,  -656,  -656,  8780,   658,  8780,  -656,  -656,  -656,
+    -656,  -656,  9620,   448,   205,   661,    90,   257,   701,   666,
+    -656,  -656,  -656,  -656,  -656,  -656,  -656,   499,  7700,  -656,
+     499,  -656,   439,  9620,   703,  -656,  8780,  -656,  -656,  9620,
+     499,  -656,  -656
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const short int yypgoto[] =
+{
+    -656,  -656,  -656,  -365,   291,  -656,    37,  -656,  -656,   949,
+      53,   -18,  -656,  -515,  -656,  -656,    35,   783,  -163,   -30,
+     -71,  -656,   -29,   438,   -75,   793,     9,  -656,   -21,  -656,
+    -656,    59,  -656,  1080,  -656,  1909,  -311,    58,  -481,    94,
+    -656,    -3,  -656,  -656,  -656,  -656,     4,   276,    11,  -272,
+      84,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,
+    -656,  -656,  -656,  -656,  -656,  -656,  -656,    -2,  -211,  -377,
+    -110,  -547,  -656,  -656,  -656,  -459,  -656,  -597,  -656,   -90,
+     449,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -656,  -221,
+    -656,   724,  -656,  -656,  -656,  -656,  -385,  -656,  -656,  -105,
+    -656,  -656,  -656,  -656,  -656,  -656,   730,  -656,  -656,  -656,
+    -656,  -656,  -656,  -656,  -656,   534,  -253,  -656,  -656,  -656,
+      25,  -656,    28,  -656,    71,   808,  1336,   144,  -656,  -656,
+       8,  -430,   121,  -656,  -655,   122,  -656,  -635,  -656,  -615,
+    -478,  -656,  -656,  -656,    18,  -393,  1877,  -224,  -656,  -656,
+     -19,   -24,   -45,   200,    76,   767,  1200
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -537
+static const short int yytable[] =
+{
+      77,   319,    77,   113,   113,   257,   396,   255,   213,   213,
+     213,   561,   599,   229,   213,   213,   189,   267,   213,   252,
+     241,   241,   280,   625,   241,   213,   609,   242,   242,   427,
+     660,   242,   366,   206,   243,   243,   207,   532,   243,   467,
+     722,    97,   301,   473,   304,    77,   213,   213,   499,   281,
+     731,   237,   237,   206,   806,   237,   207,   625,   213,   689,
+     691,   275,   289,   559,   217,   220,   190,   190,   277,   369,
+     281,   803,   776,    91,   807,    91,   114,   114,   114,   362,
+     251,   594,   352,   693,   270,   694,   231,   190,   222,   112,
+     112,   804,   360,   840,   804,   612,   475,   804,   352,   112,
+     710,   440,   713,   -86,   213,     3,    77,   -84,   386,   637,
+     -87,   245,   190,   -91,   246,   350,   364,   259,    91,   668,
+     365,   461,   282,   530,   569,   537,   540,   541,   311,   312,
+     605,  -329,   321,   -89,  -465,   112,   -90,   -86,   -88,   222,
+     295,   476,   703,   282,   -85,   570,    94,   655,    94,   115,
+     115,   560,   353,   359,   493,   638,   112,   -84,   669,   232,
+     251,   351,   256,   839,   462,   463,   785,   530,   353,   537,
+     841,   395,   791,   263,   359,  -329,   447,  -329,   855,    91,
+     370,   354,   448,   560,   344,   345,   346,   372,   250,   698,
+     398,    94,   399,   450,   -91,   283,   663,   354,  -459,   448,
+     -86,   397,   218,   -86,   219,   387,    77,   313,   704,   439,
+     806,   256,   -76,   606,   560,   -79,   283,  -515,   -83,   664,
+     -86,   442,   213,   213,   -86,  -458,   -86,   256,   760,   218,
+     907,   219,   -90,   297,   267,   560,   794,   218,   -81,   219,
+    -516,   -82,   -78,   -80,  -459,   213,   445,   213,   213,   -77,
+     804,   241,    94,   241,   241,   347,   412,    77,   242,   315,
+     242,   426,    77,   729,   218,   243,   219,   243,   243,   805,
+     -88,  -458,  -465,   689,   691,   875,   373,   402,   403,    91,
+     316,  -460,   237,   429,   237,   424,   -86,   267,  -284,   494,
+     320,   430,   431,    62,    54,   -84,   222,   489,   557,   348,
+     747,   349,   496,    77,   213,   213,   213,   213,    77,   213,
+     213,   568,   569,   213,   718,    77,   281,   -76,   213,   391,
+     374,   247,   375,  -461,   866,   867,   491,  -460,   357,   868,
+      91,   491,  -284,   570,  -284,    91,   571,  -516,   265,   545,
+     547,   418,   479,   422,   425,   730,   213,   484,   299,   300,
+     625,  -463,    94,   311,   312,   213,   213,   625,   250,   480,
+     481,   482,   483,   392,   825,   393,  -462,   -88,   -88,  -461,
+     -88,  -453,   213,   626,    77,   213,    91,   405,   437,   -63,
+     635,    91,   639,   270,   818,   382,    77,   -88,    91,   282,
+     213,   -88,   737,   -88,    77,   647,    77,  -463,   649,   265,
+     457,   -73,   112,    94,   213,   385,   529,   -85,    94,   270,
+     602,   641,  -462,   754,   755,   753,   598,  -453,   399,   213,
+     650,   406,   392,   407,   438,   633,  -464,   270,   452,   932,
+     864,   622,   529,    77,   448,  -456,   321,   876,  -277,   634,
+      74,   270,    74,   390,   458,   552,   459,    91,   675,    94,
+     529,   334,   335,   228,    94,  -512,   213,   206,   461,    91,
+     207,    94,   283,  -285,   529,  -388,  -513,    91,   379,    91,
+    -464,   394,  -464,   451,  -519,   453,   401,   455,   608,   608,
+     895,  -456,  -277,   404,  -277,    74,   342,   343,   344,   345,
+     346,   190,   625,   270,   408,   721,   529,   399,   358,   648,
+     412,   462,   463,   464,   908,   461,    91,  -285,   469,  -285,
+     367,   368,  -453,   413,   380,   435,   529,   701,   416,   417,
+      94,   -91,  -388,  -456,   896,  -512,   897,   681,   433,   724,
+     721,  -519,    94,   321,   687,  -388,  -513,   690,   692,   461,
+      94,   441,    94,   -83,  -519,   625,    74,   446,   462,   463,
+     436,   213,    77,   454,  -512,   265,  -453,   461,  -453,   -62,
+     456,  -512,   470,   716,  -388,  -513,  -388,  -456,  -388,  -456,
+     321,    77,  -513,  -519,   461,  -519,   474,  -519,   477,    94,
+    -515,   439,   462,   463,   466,   925,   478,   749,   680,   293,
+     294,   683,   715,   495,   549,   585,    77,   491,   773,   871,
+     462,   463,   468,   586,   -90,   873,   697,   684,   265,   206,
+     786,   590,   207,   213,   -86,  -515,   680,   462,   463,   471,
+     342,   343,   344,   345,   346,    91,   -82,   696,   604,   616,
+     -88,   627,   700,   -85,   213,   645,   -78,   636,   -73,   682,
+     213,   321,   190,   190,    91,   665,    74,  -265,   674,   640,
+     705,   699,   -80,  -516,   622,   -77,   334,   335,   799,    77,
+     782,   702,   706,   709,   711,   787,   789,   281,   741,    91,
+     712,   752,  -515,   560,   714,   721,   213,   728,   733,   589,
+     734,   213,   213,   740,   736,  -515,   617,   597,   235,   600,
+     341,   342,   343,   344,   345,   346,   743,    74,    94,   750,
+     757,   759,    74,   834,   766,   767,   762,   768,   836,   797,
+    -516,   837,    42,    43,  -515,   809,  -515,    94,  -515,    77,
+     800,  -515,   213,  -516,   813,   843,   644,   306,   307,   308,
+     309,   310,    91,   817,   838,    77,    77,    77,   819,   820,
+     282,   846,    94,    74,   854,   856,  -266,   865,    74,   878,
+     879,   831,  -516,   112,  -516,    74,  -516,   892,   832,  -516,
+     883,   885,   901,   891,   894,   833,   893,   902,   859,   850,
+     850,   321,   903,   796,   904,    77,   906,   816,   918,   919,
+     922,   931,   933,   900,   213,   936,   334,   335,   938,   942,
+      77,    77,    91,    77,   888,   943,   944,   949,   227,   117,
+     935,   920,   543,   355,   934,    94,   770,   850,    91,    91,
+      91,    77,   356,   283,    74,   192,   869,   608,   339,   340,
+     341,   342,   343,   344,   345,   346,    74,   801,   802,     0,
+     305,     0,     0,     0,    74,     0,    74,     0,    77,    77,
+       0,     0,   851,   851,     0,     0,     0,     0,    91,     0,
+       0,     0,   281,     0,     0,   112,   112,     0,     0,     0,
+       0,    77,     0,    91,    91,    94,    91,    77,     0,    77,
+       0,    77,     0,    74,     0,     0,     0,     0,    77,     0,
+     851,    94,    94,    94,    91,     0,     0,     0,     0,   732,
+       0,   850,     0,   112,   213,     0,   850,   850,   744,     0,
+       0,   915,     0,     0,     0,     0,     0,     0,     0,     0,
+     751,    91,    91,     0,     0,   852,   852,     0,     0,     0,
+     850,    94,     0,     0,   563,   282,   564,   565,   566,   567,
+       0,   270,     0,     0,    91,     0,    94,    94,   112,    94,
+      91,   850,    91,     0,    91,     0,     0,   850,     0,     0,
+       0,    91,   765,   852,   529,     0,     0,    94,     0,   210,
+     210,   210,     0,     0,   851,     0,   568,   569,     0,   851,
+     851,     0,     0,     0,     0,     0,   253,   112,     0,     0,
+       0,     0,   112,   112,    94,    94,     0,     0,   570,     0,
+       0,   571,    74,   851,     0,     0,     0,   268,   283,     0,
+       0,     0,     0,     0,     0,   572,   112,    94,     0,     0,
+       0,    74,   812,    94,   851,    94,     0,    94,   826,     0,
+     851,   828,   829,     0,    94,     0,     0,   112,   822,   823,
+     824,     0,     0,   112,     0,     0,    74,   852,     0,     0,
+       0,     0,   852,   852,     0,     0,   563,     0,   564,   565,
+     566,   567,     0,     0,     0,   363,     0,     0,     0,   563,
+       0,   564,   565,   566,   567,     0,   852,     0,   857,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   861,   862,     0,     0,   852,   568,   569,
+       0,     0,     0,   852,     0,     0,   238,   238,     0,    74,
+     238,   568,   569,     0,   872,     0,     0,     0,   884,   886,
+     570,     0,     0,   571,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   570,   260,   262,   571,   658,     0,   238,
+     238,   889,   890,   321,  -537,  -537,  -537,  -537,   326,   327,
+     302,   303,  -537,  -537,     0,     0,     0,     0,   334,   335,
+       0,     0,     0,     0,   905,     0,     0,   912,   913,    74,
+       0,     0,   909,   917,   910,     0,     0,     0,     0,     0,
+     676,   911,     0,   210,   210,    74,    74,    74,   337,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,     0,     0,
+       0,   939,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,     0,     0,   334,   335,   849,
+     853,     0,     0,   945,     0,    74,   947,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   952,     0,     0,     0,
+      74,    74,     0,    74,     0,   336,     0,   337,   338,   339,
+     340,   341,   342,   343,   344,   345,   346,   870,     0,   274,
+     278,    74,     0,     0,     0,   210,   210,   210,   210,     0,
+     485,   486,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    74,    74,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    74,     0,     0,     0,     0,     0,    74,     0,    74,
+       0,    74,     0,   238,   238,   238,   302,     0,    74,     0,
+       0,     0,     0,     0,     0,     0,   562,   238,     0,   238,
+     238,   921,     0,     0,     0,     0,   929,   930,    93,     0,
+      93,     0,     0,     0,     0,     0,     0,     0,     0,   444,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     941,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     268,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   948,     0,    93,     0,     0,     0,   951,     0,     0,
+       0,     0,     0,     0,     0,   238,     0,     0,     0,     0,
+     497,   500,   501,   502,   503,   504,   505,   506,   507,   508,
+     509,   510,   511,   512,   513,   514,   515,   516,   517,   518,
+     519,   520,   521,   522,   523,   524,   525,     0,   238,     0,
+       0,     0,     0,     0,     0,     0,     0,   546,   548,     0,
+       0,     0,   415,   415,    93,     0,     0,     0,     0,     0,
+     428,     0,     0,     0,   238,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     591,     0,   238,     0,   546,   548,     0,     0,     0,   238,
+       0,     0,     0,     0,     0,     0,   238,     0,     0,     0,
+       0,     0,   238,   238,     0,     0,   238,     0,     0,     0,
+       0,   629,   210,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   643,     0,     0,     0,     0,   646,
+       0,     0,     0,     0,     0,     0,     0,   238,     0,     0,
+     238,     0,   238,     0,     0,     0,     0,     0,   238,     0,
+       0,     0,     0,     0,    93,     0,     0,     0,   274,     0,
+       0,     0,     0,     0,     0,     0,     0,   666,   667,     0,
+       0,     0,     0,     0,   210,     0,     0,     0,   238,     0,
+       0,     0,     0,     0,   274,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   588,     0,     0,     0,     0,     0,
+       0,   756,   274,     0,  -536,    93,     0,     0,     0,     0,
+      93,     0,  -536,  -536,  -536,     0,   274,  -536,  -536,  -536,
+     415,  -536,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,  -536,     0,     0,     0,     0,   415,     0,     0,     0,
+       0,  -536,  -536,     0,  -536,  -536,  -536,  -536,  -536,     0,
+       0,    93,     0,     0,     0,     0,    93,     0,     0,     0,
+       0,     0,     0,    93,     0,     0,     0,     0,   274,     0,
+       0,     0,     0,     0,     0,     0,   238,     0,     0,     0,
+       0,     0,     0,   210,     0,     0,     0,  -536,     0,     0,
+       0,   238,     0,     0,     0,     0,     0,   672,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   238,
+       0,     0,     0,   238,  -536,     0,     0,     0,   238,     0,
+       0,     0,    93,     0,     0,     0,   238,     0,     0,     0,
+    -536,     0,     0,  -536,    93,     0,   250,  -536,  -536,     0,
+    -536,   758,    93,     0,    93,     0,     0,   688,     0,     0,
+     688,   688,   672,     0,   672,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   238,     0,   780,   781,   783,   784,
+     688,     0,     0,   788,   790,     0,     0,     0,     0,     0,
+       0,    93,     0,     0,     0,     0,   708,     0,   708,     0,
+     708,     0,   238,     0,     0,     0,   720,   723,     0,   723,
+     321,   322,   323,   324,   325,   326,   327,   723,     0,   330,
+     331,     0,     0,     0,     0,   334,   335,   783,     0,   788,
+     790,     0,     0,     0,     0,     0,   238,     0,     0,     0,
+       0,     0,   415,   238,     0,     0,     0,   238,     0,     0,
+     238,     0,     0,     0,   415,   337,   338,   339,   340,   341,
+     342,   343,   344,   345,   346,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   238,     0,
+     764,     0,     0,     0,     0,     0,   860,     0,     0,   764,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    95,
+       0,    95,     0,     0,     0,     0,     0,    95,    95,    95,
+      93,     0,     0,    95,    95,   672,     0,    95,   860,     0,
+       0,   238,     0,     0,    95,     0,     0,   881,     0,    93,
+     238,     0,     0,     0,     0,   238,     0,     0,     0,   811,
+       0,     0,   815,     0,    95,    95,    95,     0,     0,     0,
+       0,     0,     0,     0,    93,     0,     0,    95,     0,     0,
+       0,     0,   415,     0,     0,   415,   415,     0,     0,     0,
+       0,     0,     0,     0,   688,   688,     0,     0,     0,     0,
+     764,     0,     0,   238,     0,   238,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   764,   238,     0,     0,     0,
+       0,     0,     0,    95,     0,    95,     0,     0,     0,     0,
+       0,     0,     0,     0,   238,     0,   238,    93,     0,     0,
+       0,     0,   708,   708,     0,     0,     0,   708,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   238,     0,
+       0,     0,   723,     0,     0,     0,   238,     0,     0,     0,
+       0,     0,   415,   415,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    93,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    93,    93,    93,     0,     0,     0,     0,
+       0,   415,   415,     0,     0,    95,     0,   415,     0,     0,
+       0,     0,     0,     0,     0,     0,   274,     0,     0,     0,
+       0,    95,    95,     0,     0,     0,     0,   708,     0,   588,
+     723,     0,     0,    93,     0,   415,     0,     0,     0,     0,
+       0,     0,     0,     0,    95,     0,    95,    95,    93,    93,
+       0,    93,     0,     0,     0,     0,    95,   415,     0,     0,
+     415,    95,   409,   410,   411,     0,     0,     0,     0,    93,
+     415,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    93,    93,     0,     0,
+       0,     0,    95,    95,    95,    95,    95,    95,    95,    95,
+       0,     0,    95,     0,    95,     0,     0,    95,     0,    93,
+       0,     0,     0,     0,     0,    93,     0,    93,     0,    93,
+       0,     0,     0,     0,     0,     0,    93,     0,     0,     0,
+       0,     0,     0,     0,   490,    95,     0,     0,     0,   498,
+       0,     0,     0,     0,    95,    95,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    95,     0,    95,    95,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    95,     0,     0,     0,    95,
+       0,     0,     0,    95,     0,    95,     0,     0,     0,     0,
+       0,     0,     0,    95,     0,     0,   526,   527,     0,     0,
+     528,     0,     0,     0,     0,     0,     0,     0,    95,   162,
+     163,   164,   165,   166,   167,     0,   168,   169,   498,     0,
+     170,     0,    95,     0,   171,   172,   173,   174,     0,     0,
+       0,   618,   620,     0,     0,   624,     0,     0,   175,     0,
+     630,     0,     0,     0,     0,    95,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   652,     0,   186,   624,
+       0,   652,     0,     0,     0,     0,   187,     0,     0,     0,
+       0,  -278,     0,     0,     0,     0,     0,     0,     0,  -278,
+    -278,  -278,     0,     0,  -278,  -278,  -278,     0,  -278,     0,
+       0,     0,     0,     0,     0,     0,     0,   673,  -278,  -278,
+    -278,     0,     0,     0,     0,     0,     0,     0,  -278,  -278,
+       0,  -278,  -278,  -278,  -278,  -278,     0,     0,     0,   321,
+     322,   323,   324,   325,   326,   327,   328,     0,   330,   331,
+      95,    95,     0,     0,   334,   335,     0,  -278,  -278,  -278,
+    -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,
+      95,     0,  -278,  -278,  -278,     0,     0,  -278,     0,     0,
+       0,     0,     0,  -278,   337,   338,   339,   340,   341,   342,
+     343,   344,   345,   346,     0,    95,     0,  -278,     0,     0,
+    -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,
+    -278,  -278,    95,     0,     0,   717,     0,  -278,  -278,  -278,
+    -278,  -278,     0,     0,  -278,  -278,     0,  -278,     0,     0,
+     735,     0,     0,    95,     0,     0,     0,     0,     0,    95,
+       0,     0,     0,     0,     0,     0,     0,     0,   742,     0,
+       0,     0,   745,     0,     0,     0,     0,   746,    95,     0,
+       0,     0,     0,     0,     0,   620,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    95,     0,     0,     0,     0,
+      95,    95,     0,     0,     0,  -284,     0,     0,     0,     0,
+       0,     0,     0,  -284,  -284,  -284,     0,     0,     0,  -284,
+    -284,     0,  -284,   779,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    95,     0,
+       0,    95,  -284,  -284,     0,  -284,  -284,  -284,  -284,  -284,
+       0,   798,     0,     0,    95,    95,    95,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,  -284,  -284,  -284,  -284,  -284,  -284,  -284,  -284,  -284,
+    -284,  -284,  -284,  -284,     0,   652,  -284,  -284,  -284,     0,
+     679,     0,   624,     0,    95,     0,     0,     0,     0,   624,
+       0,     0,     0,    95,     0,     0,     0,     0,     0,    95,
+      95,     0,    95,   -89,  -284,     0,  -284,  -284,  -284,  -284,
+    -284,  -284,  -284,  -284,  -284,  -284,     0,   858,     0,     0,
+      95,  -284,  -284,     0,  -284,   -81,     0,     0,  -284,  -284,
+       0,  -284,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    95,    95,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     874,     0,     0,     0,     0,     0,     0,     0,   676,   882,
+      95,     0,     0,     0,   887,     0,    95,     0,    95,     0,
+      95,     0,     0,     0,     0,     0,     0,    95,     0,     0,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,   332,   333,    95,     0,   334,   335,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   620,     0,   624,     0,     0,     0,     0,     0,
+       0,     0,     0,   336,     0,   337,   338,   339,   340,   341,
+     342,   343,   344,   345,   346,     0,     0,     0,     0,     0,
+       0,     0,     0,   937,  -221,   940,     0,     0,     0,     0,
+    -536,     4,     0,     5,     6,     7,     8,     9,     0,     0,
+       0,    10,    11,     0,     0,     0,    12,   624,    13,    14,
+      15,    16,    17,    18,    19,   950,     0,     0,     0,     0,
+      20,    21,    22,    23,    24,    25,    26,     0,     0,    27,
+       0,     0,     0,     0,     0,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,     0,    40,    41,
+       0,    42,    43,     0,    44,    45,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    46,     0,     0,    47,    48,     0,
+      49,    50,     0,    51,     0,    52,     0,    53,    54,    55,
+      56,    57,    58,  -519,     0,     0,     0,     0,     0,     0,
+       0,  -519,  -519,  -519,     0,     0,     0,  -519,  -519,     0,
+    -519,    59,    60,    61,     0,     0,     0,     0,     0,  -519,
+       0,     0,     0,     0,  -536,     0,  -536,     0,     0,     0,
+    -519,  -519,     0,  -519,  -519,  -519,  -519,  -519,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  -519,
+    -519,  -519,  -519,  -519,  -519,  -519,  -519,  -519,  -519,  -519,
+    -519,  -519,     0,     0,  -519,  -519,  -519,     0,   678,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  -519,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   -87,  -519,     0,  -519,  -519,  -519,  -519,  -519,  -519,
+    -519,  -519,  -519,  -519,     0,     0,     0,     0,  -519,  -519,
+    -519,     0,  -519,   -79,     0,     0,  -519,  -519,     4,  -519,
+       5,     6,     7,     8,     9,  -536,  -536,  -536,    10,    11,
+       0,     0,  -536,    12,     0,    13,    14,    15,    16,    17,
+      18,    19,     0,     0,     0,     0,     0,    20,    21,    22,
+      23,    24,    25,    26,     0,     0,    27,     0,     0,     0,
+       0,     0,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,     0,    40,    41,     0,    42,    43,
+       0,    44,    45,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    46,     0,     0,    47,    48,     0,    49,    50,     0,
+      51,     0,    52,     0,    53,    54,    55,    56,    57,    58,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    59,    60,
+      61,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,  -536,     4,  -536,     5,     6,     7,     8,     9,     0,
+       0,  -536,    10,    11,     0,  -536,  -536,    12,     0,    13,
+      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
+       0,    20,    21,    22,    23,    24,    25,    26,     0,     0,
+      27,     0,     0,     0,     0,     0,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,     0,    40,
+      41,     0,    42,    43,     0,    44,    45,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    46,     0,     0,    47,    48,
+       0,    49,    50,     0,    51,     0,    52,     0,    53,    54,
+      55,    56,    57,    58,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    59,    60,    61,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  -536,     4,  -536,     5,     6,
+       7,     8,     9,     0,     0,  -536,    10,    11,     0,     0,
+    -536,    12,  -536,    13,    14,    15,    16,    17,    18,    19,
+       0,     0,     0,     0,     0,    20,    21,    22,    23,    24,
+      25,    26,     0,     0,    27,     0,     0,     0,     0,     0,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,     0,    40,    41,     0,    42,    43,     0,    44,
+      45,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    46,
+       0,     0,    47,    48,     0,    49,    50,     0,    51,     0,
+      52,     0,    53,    54,    55,    56,    57,    58,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    59,    60,    61,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  -536,
+       4,  -536,     5,     6,     7,     8,     9,     0,     0,  -536,
+      10,    11,     0,     0,  -536,    12,     0,    13,    14,    15,
+      16,    17,    18,    19,     0,     0,     0,     0,     0,    20,
+      21,    22,    23,    24,    25,    26,     0,     0,    27,     0,
+       0,     0,     0,     0,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,     0,    40,    41,     0,
+      42,    43,     0,    44,    45,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    46,     0,     0,    47,    48,     0,    49,
+      50,     0,    51,     0,    52,     0,    53,    54,    55,    56,
+      57,    58,     0,     0,     0,     0,     0,     0,     4,     0,
+       5,     6,     7,     8,     9,     0,  -536,  -536,    10,    11,
+      59,    60,    61,    12,     0,    13,    14,    15,    16,    17,
+      18,    19,     0,  -536,     0,  -536,     0,    20,    21,    22,
+      23,    24,    25,    26,     0,     0,    27,     0,     0,     0,
+       0,     0,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,     0,    40,    41,     0,    42,    43,
+       0,    44,    45,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    46,     0,     0,    47,    48,     0,    49,    50,     0,
+      51,     0,    52,     0,    53,    54,    55,    56,    57,    58,
+       0,     0,     0,     0,     0,     0,     4,     0,     5,     6,
+       7,     8,     9,     0,     0,     0,    10,    11,    59,    60,
+      61,    12,     0,    13,    14,    15,    16,    17,    18,    19,
+       0,  -536,     0,  -536,     0,    20,    21,    22,    23,    24,
+      25,    26,     0,     0,    27,     0,     0,     0,     0,     0,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,     0,    40,    41,     0,    42,    43,     0,    44,
+      45,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    46,
+       0,     0,   264,    48,     0,    49,    50,     0,    51,     0,
+      52,     0,    53,    54,    55,    56,    57,    58,     0,     0,
+       0,     0,     0,     0,     4,     0,     5,     6,     7,     8,
+       9,     0,     0,     0,    10,    11,    59,    60,    61,    12,
+       0,    13,    14,    15,    16,    17,    18,    19,  -536,  -536,
+       0,  -536,     0,    20,    21,    22,    23,    24,    25,    26,
+       0,     0,    27,     0,     0,     0,     0,     0,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+       0,    40,    41,     0,    42,    43,     0,    44,    45,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    46,     0,     0,
+      47,    48,     0,    49,    50,     0,    51,     0,    52,     0,
+      53,    54,    55,    56,    57,    58,     0,     0,     0,     0,
+       0,     0,     4,     0,     5,     6,     7,     8,     9,     0,
+       0,     0,    10,    11,    59,    60,    61,    12,     0,    13,
+      14,    15,    16,    17,    18,    19,  -536,  -536,     0,  -536,
+       0,    20,    21,    22,    23,    24,    25,    26,     0,     0,
+      27,     0,     0,     0,     0,     0,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,     0,    40,
+      41,     0,    42,    43,     0,    44,    45,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    46,     0,     0,    47,    48,
+       0,    49,    50,     0,    51,     0,    52,     0,    53,    54,
+      55,    56,    57,    58,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    59,    60,    61,     0,     0,  -536,     0,     0,
+       0,     0,     0,     0,     0,  -536,     4,  -536,     5,     6,
+       7,     8,     9,     0,     0,  -536,    10,    11,     0,     0,
+       0,    12,     0,    13,    14,    15,    16,    17,    18,    19,
+       0,     0,     0,     0,     0,    20,    21,    22,    23,    24,
+      25,    26,     0,     0,    27,     0,     0,     0,     0,     0,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,     0,    40,    41,     0,    42,    43,     0,    44,
+      45,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    46,
+       0,     0,    47,    48,     0,    49,    50,     0,    51,     0,
+      52,     0,    53,    54,    55,    56,    57,    58,     0,     0,
+       0,     0,     0,     0,     0,     0,     5,     6,     7,     0,
+       9,     0,     0,     0,    10,    11,    59,    60,    61,    12,
+       0,    13,    14,    15,    98,    99,    18,    19,     0,  -536,
+       0,  -536,     0,   100,    21,    22,    23,    24,    25,    26,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    29,
+       0,     0,    32,    33,    34,    35,    36,    37,    38,    39,
+     233,    40,    41,     0,    42,    43,     0,    44,    45,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   209,     0,     0,
+     108,    48,     0,    49,    50,     0,   234,   235,    52,     0,
+      53,    54,    55,    56,    57,    58,     0,     0,     0,     0,
+       0,     0,     0,     0,     5,     6,     7,     0,     9,     0,
+       0,     0,    10,    11,    59,   236,    61,    12,     0,    13,
+      14,    15,    16,    17,    18,    19,     0,     0,     0,   256,
+       0,    20,    21,    22,    23,    24,    25,    26,     0,     0,
+      27,     0,     0,     0,     0,     0,     0,    29,     0,     0,
+      32,    33,    34,    35,    36,    37,    38,    39,     0,    40,
+      41,     0,    42,    43,     0,    44,    45,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   209,     0,     0,   108,    48,
+       0,    49,    50,     0,     0,     0,    52,     0,    53,    54,
+      55,    56,    57,    58,     0,     0,     0,     0,     0,     0,
+       0,     0,     5,     6,     7,     8,     9,     0,     0,     0,
+      10,    11,    59,    60,    61,    12,     0,    13,    14,    15,
+      16,    17,    18,    19,     0,   218,     0,   219,     0,    20,
+      21,    22,    23,    24,    25,    26,     0,     0,    27,     0,
+       0,     0,     0,     0,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,     0,    40,    41,     0,
+      42,    43,     0,    44,    45,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    46,     0,     0,    47,    48,     0,    49,
+      50,     0,    51,     0,    52,     0,    53,    54,    55,    56,
+      57,    58,     0,     0,     0,     0,     0,     0,     0,     0,
+       5,     6,     7,     0,     9,     0,     0,     0,    10,    11,
+      59,    60,    61,    12,     0,    13,    14,    15,    98,    99,
+      18,    19,     0,   401,     0,     0,     0,   100,   101,   102,
+      23,    24,    25,    26,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   103,     0,     0,    32,    33,    34,    35,
+      36,    37,    38,    39,     0,    40,    41,     0,    42,    43,
+     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+     331,   332,   333,     0,     0,   334,   335,     0,     0,     0,
+       0,   279,     0,     0,   317,    48,     0,    49,    50,     0,
+     771,   772,    52,     0,    53,    54,    55,    56,    57,    58,
+       0,     0,     0,   336,     0,   337,   338,   339,   340,   341,
+     342,   343,   344,   345,   346,     0,     0,     0,   109,     0,
+       0,     0,   118,   119,   120,   121,   122,   123,   124,   125,
+     256,   762,   126,   127,   128,   129,   130,     0,     0,   131,
+     132,   133,   134,   135,   136,   137,     0,     0,     0,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,    36,    37,   161,    39,     0,     0,     0,     0,
+       0,     0,     0,   162,   163,   164,   165,   166,   167,     0,
+     168,   169,     0,     0,   170,     0,     0,     0,   171,   172,
+     173,   174,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   175,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+       0,     0,   186,     0,  -512,  -512,  -512,     0,  -512,     0,
+     187,   188,  -512,  -512,     0,     0,     0,  -512,     0,  -512,
+    -512,  -512,  -512,  -512,  -512,  -512,     0,  -512,     0,     0,
+       0,  -512,  -512,  -512,  -512,  -512,  -512,  -512,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  -512,     0,     0,
+    -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,  -512,
+    -512,     0,  -512,  -512,     0,  -512,  -512,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  -512,     0,     0,  -512,  -512,
+       0,  -512,  -512,     0,  -512,  -512,  -512,  -512,  -512,  -512,
+    -512,  -512,  -512,  -512,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,  -512,  -512,  -512,     0,  -512,  -513,  -513,  -513,
+       0,  -513,     0,  -512,     0,  -513,  -513,     0,     0,     0,
+    -513,     0,  -513,  -513,  -513,  -513,  -513,  -513,  -513,     0,
+    -513,     0,     0,     0,  -513,  -513,  -513,  -513,  -513,  -513,
+    -513,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    -513,     0,     0,  -513,  -513,  -513,  -513,  -513,  -513,  -513,
+    -513,  -513,  -513,  -513,     0,  -513,  -513,     0,  -513,  -513,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,  -513,     0,
+       0,  -513,  -513,     0,  -513,  -513,     0,  -513,  -513,  -513,
+    -513,  -513,  -513,  -513,  -513,  -513,  -513,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  -513,  -513,  -513,     0,  -513,
+    -515,  -515,  -515,     0,  -515,     0,  -513,     0,  -515,  -515,
+       0,     0,     0,  -515,     0,  -515,  -515,  -515,  -515,  -515,
+    -515,  -515,     0,     0,     0,     0,     0,  -515,  -515,  -515,
+    -515,  -515,  -515,  -515,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,  -515,     0,     0,  -515,  -515,  -515,  -515,
+    -515,  -515,  -515,  -515,  -515,  -515,  -515,     0,  -515,  -515,
+       0,  -515,  -515,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,  -515,   727,     0,  -515,  -515,     0,  -515,  -515,     0,
+    -515,  -515,  -515,     0,  -515,  -515,  -515,  -515,  -515,  -515,
+       0,     0,     0,     0,     0,   -87,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,  -515,  -515,
+    -515,     0,  -516,  -516,  -516,     0,  -516,     0,     0,  -515,
+    -516,  -516,     0,     0,     0,  -516,     0,  -516,  -516,  -516,
+    -516,  -516,  -516,  -516,     0,     0,     0,     0,     0,  -516,
+    -516,  -516,  -516,  -516,  -516,  -516,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  -516,     0,     0,  -516,  -516,
+    -516,  -516,  -516,  -516,  -516,  -516,  -516,  -516,  -516,     0,
+    -516,  -516,     0,  -516,  -516,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,  -516,   679,     0,  -516,  -516,     0,  -516,
+    -516,     0,  -516,  -516,  -516,     0,  -516,  -516,  -516,  -516,
+    -516,  -516,     0,     0,     0,     0,     0,   -89,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    -516,  -516,  -516,     0,  -255,  -255,  -255,     0,  -255,     0,
+       0,  -516,  -255,  -255,     0,     0,     0,  -255,     0,  -255,
+    -255,  -255,  -255,  -255,  -255,  -255,     0,     0,     0,     0,
+       0,  -255,  -255,  -255,  -255,  -255,  -255,  -255,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  -255,     0,     0,
+    -255,  -255,  -255,  -255,  -255,  -255,  -255,  -255,  -255,  -255,
+    -255,     0,  -255,  -255,     0,  -255,  -255,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  -255,     0,     0,  -255,  -255,
+       0,  -255,  -255,     0,  -255,  -255,  -255,     0,  -255,  -255,
+    -255,  -255,  -255,  -255,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,  -255,  -255,  -255,     0,  -255,  -255,  -255,     0,
+    -255,     0,     0,   247,  -255,  -255,     0,     0,     0,  -255,
+       0,  -255,  -255,  -255,  -255,  -255,  -255,  -255,     0,     0,
+       0,     0,     0,  -255,  -255,  -255,  -255,  -255,  -255,  -255,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  -255,
+       0,     0,  -255,  -255,  -255,  -255,  -255,  -255,  -255,  -255,
+    -255,  -255,  -255,     0,  -255,  -255,     0,  -255,  -255,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  -255,     0,     0,
+    -255,  -255,     0,  -255,  -255,     0,  -255,  -255,  -255,     0,
+    -255,  -255,  -255,  -255,  -255,  -255,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,  -255,  -255,  -255,     0,  -517,  -517,
+    -517,     0,  -517,     0,     0,   250,  -517,  -517,     0,     0,
+       0,  -517,     0,  -517,  -517,  -517,  -517,  -517,  -517,  -517,
+       0,     0,     0,     0,     0,  -517,  -517,  -517,  -517,  -517,
+    -517,  -517,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,  -517,     0,     0,  -517,  -517,  -517,  -517,  -517,  -517,
+    -517,  -517,  -517,  -517,  -517,     0,  -517,  -517,     0,  -517,
+    -517,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  -517,
+       0,     0,  -517,  -517,     0,  -517,  -517,     0,  -517,  -517,
+    -517,     0,  -517,  -517,  -517,  -517,  -517,  -517,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,  -517,  -517,  -517,     0,
+    -518,  -518,  -518,     0,  -518,     0,     0,  -517,  -518,  -518,
+       0,     0,     0,  -518,     0,  -518,  -518,  -518,  -518,  -518,
+    -518,  -518,     0,     0,     0,     0,     0,  -518,  -518,  -518,
+    -518,  -518,  -518,  -518,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,  -518,     0,     0,  -518,  -518,  -518,  -518,
+    -518,  -518,  -518,  -518,  -518,  -518,  -518,     0,  -518,  -518,
+       0,  -518,  -518,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,  -518,     0,     0,  -518,  -518,     0,  -518,  -518,     0,
+    -518,  -518,  -518,     0,  -518,  -518,  -518,  -518,  -518,  -518,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,  -518,  -518,
+    -518,   118,   119,   120,   121,   122,   123,   124,   125,  -518,
+       0,   126,   127,   128,   129,   130,     0,     0,   131,   132,
+     133,   134,   135,   136,   137,     0,     0,     0,   138,   139,
+     140,   194,   195,   196,   197,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   198,   199,   200,
+     160,   286,   287,   201,   288,     0,     0,     0,     0,     0,
+       0,     0,   162,   163,   164,   165,   166,   167,     0,   168,
+     169,     0,     0,   170,     0,     0,     0,   171,   172,   173,
+     174,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   175,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,     0,
+       0,   186,     0,     0,     0,     0,     0,     0,     0,   187,
+     118,   119,   120,   121,   122,   123,   124,   125,     0,     0,
+     126,   127,   128,   129,   130,     0,     0,   131,   132,   133,
+     134,   135,   136,   137,     0,     0,     0,   138,   139,   140,
+     194,   195,   196,   197,   145,   146,   147,   148,   149,   150,
+     151,   152,   153,   154,   155,   156,   198,   199,   200,   160,
+     254,     0,   201,     0,     0,     0,     0,     0,     0,     0