Changes in / [94e0864d:94b4364]


Ignore:
Location:
src
Files:
30 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    r94e0864d r94b4364  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 24 16:11:41 2015
    13 // Update Count     : 143
     12// Last Modified On : Mon Jun 15 12:47:16 2015
     13// Update Count     : 142
    1414//
    1515
     
    7777                if ( functionDecl->get_isInline() ) {
    7878                        output << "inline ";
    79                 } // if
    80                 if ( functionDecl->get_isNoreturn() ) {
    81                         output << "_Noreturn ";
    8279                } // if
    8380                output << genType( functionDecl->get_functionType(), mangleName( functionDecl ) );
     
    306303                                  case OT_PREFIX:
    307304                                  case OT_PREFIXASSIGN:
    308                                   case OT_LABELADDRESS:
    309305                                        assert( untypedExpr->get_args().size() == 1 );
    310306                                        output << "(";
     
    330326                                        output << ")";
    331327                                        break;
    332                                        
     328             
    333329                                  case OT_CONSTANT:
    334330                                        // there are no intrinsic definitions of 0 or 1 as functions
     
    646642                        break;
    647643                  case DeclarationNode::Inline:
    648                         output << "inline ";
     644                        // handled as special via isInline flag (FIX)
    649645                        break;
    650646                  case DeclarationNode::Fortran:
     647                        // not handled
    651648                        output << "fortran ";
    652649                        break;
    653650                  case DeclarationNode::Noreturn:
     651                        // not handled
    654652                        output << "_Noreturn ";
    655653                        break;
    656654                  case DeclarationNode::Threadlocal:
     655                        // not handled
    657656                        output << "_Thread_local ";
    658657                        break;
  • src/CodeGen/OperatorTable.cc

    r94e0864d r94b4364  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 17:41:14 2015
    13 // Update Count     : 5
     12// Last Modified On : Mon May 18 23:42:07 2015
     13// Update Count     : 2
    1414//
    1515
     
    2020        namespace {
    2121                const OperatorInfo tableValues[] = {
    22                         {       "?[?]",         "",             "_operator_index",                              OT_INDEX                        },
    23                         {       "?()",          "",             "_operator_call",                               OT_CALL                         },
    24                         {       "?++",          "++",   "_operator_postincr",                   OT_POSTFIXASSIGN        },
    25                         {       "?--",          "--",   "_operator_postdecr",                   OT_POSTFIXASSIGN        },
    26                         {       "*?",           "*",    "_operator_deref",                              OT_PREFIX                       },
    27                         {       "+?",           "+",    "_operator_unaryplus",                  OT_PREFIX                       },
    28                         {       "-?",           "-",    "_operator_unaryminus",                 OT_PREFIX                       },
    29                         {       "~?",           "~",    "_operator_bitnot",                             OT_PREFIX                       },
    30                         {       "!?",           "!",    "_operator_lognot",                             OT_PREFIX                       },
    31                         {       "++?",          "++",   "_operator_preincr",                    OT_PREFIXASSIGN         },
    32                         {       "--?",          "--",   "_operator_predecr",                    OT_PREFIXASSIGN         },
    33                         {       "?*?",          "*",    "_operator_multiply",                   OT_INFIX                        },
    34                         {       "?/?",          "/",    "_operator_divide",                             OT_INFIX                        },
    35                         {       "?%?",          "%",    "_operator_modulus",                    OT_INFIX                        },
    36                         {       "?+?",          "+",    "_operator_add",                                OT_INFIX                        },
    37                         {       "?-?",          "-",    "_operator_subtract",                   OT_INFIX                        },
    38                         {       "?<<?",         "<<",   "_operator_shiftleft",                  OT_INFIX                        },
    39                         {       "?>>?",         ">>",   "_operator_shiftright",                 OT_INFIX                        },
    40                         {       "?<?",          "<",    "_operator_less",                               OT_INFIX                        },
    41                         {       "?>?",          ">",    "_operator_greater",                    OT_INFIX                        },
    42                         {       "?<=?",         "<=",   "_operator_lessequal",                  OT_INFIX                        },
    43                         {       "?>=?",         ">=",   "_operator_greaterequal",               OT_INFIX                        },
    44                         {       "?==?",         "==",   "_operator_equal",                              OT_INFIX                        },
    45                         {       "?!=?",         "!=",   "_operator_notequal",                   OT_INFIX                        },
    46                         {       "?&?",          "&",    "_operator_bitand",                             OT_INFIX                        },
    47                         {       "?^?",          "^",    "_operator_bitxor",                             OT_INFIX                        },
    48                         {       "?|?",          "|",    "_operator_bitor",                              OT_INFIX                        },
    49                         {       "?=?",          "=",    "_operator_assign",                             OT_INFIXASSIGN          },
    50                         {       "?*=?",         "*=",   "_operator_multassign",                 OT_INFIXASSIGN          },
    51                         {       "?/=?",         "/=",   "_operator_divassign",                  OT_INFIXASSIGN          },
    52                         {       "?%=?",         "%=",   "_operator_modassign",                  OT_INFIXASSIGN          },
    53                         {       "?+=?",         "+=",   "_operator_addassign",                  OT_INFIXASSIGN          },
    54                         {       "?-=?",         "-=",   "_operator_subassign",                  OT_INFIXASSIGN          },
     22                        {       "?[?]",         "",             "_operator_index",                      OT_INDEX                },
     23                        {       "?()",          "",             "_operator_call",                       OT_CALL                 },
     24                        {       "?++",          "++",   "_operator_postincr",           OT_POSTFIXASSIGN        },
     25                        {       "?--",          "--",   "_operator_postdecr",           OT_POSTFIXASSIGN        },
     26                        {       "*?",           "*",    "_operator_deref",                      OT_PREFIX               },
     27                        {       "+?",           "+",    "_operator_unaryplus",          OT_PREFIX               },
     28                        {       "-?",           "-",    "_operator_unaryminus",         OT_PREFIX               },
     29                        {       "~?",           "~",    "_operator_bitnot",                     OT_PREFIX               },
     30                        {       "!?",           "!",    "_operator_lognot",                     OT_PREFIX               },
     31                        {       "++?",          "++",   "_operator_preincr",            OT_PREFIXASSIGN         },
     32                        {       "--?",          "--",   "_operator_predecr",            OT_PREFIXASSIGN         },
     33                        {       "?*?",          "*",    "_operator_multiply",           OT_INFIX                },
     34                        {       "?/?",          "/",    "_operator_divide",                     OT_INFIX                },
     35                        {       "?%?",          "%",    "_operator_modulus",            OT_INFIX                },
     36                        {       "?+?",          "+",    "_operator_add",                        OT_INFIX                },
     37                        {       "?-?",          "-",    "_operator_subtract",           OT_INFIX                },
     38                        {       "?<<?",         "<<",   "_operator_shiftleft",          OT_INFIX                },
     39                        {       "?>>?",         ">>",   "_operator_shiftright",         OT_INFIX                },
     40                        {       "?<?",          "<",    "_operator_less",                       OT_INFIX                },
     41                        {       "?>?",          ">",    "_operator_greater",            OT_INFIX                },
     42                        {       "?<=?",         "<=",   "_operator_lessequal",          OT_INFIX                },
     43                        {       "?>=?",         ">=",   "_operator_greaterequal",       OT_INFIX                },
     44                        {       "?==?",         "==",   "_operator_equal",                      OT_INFIX                },
     45                        {       "?!=?",         "!=",   "_operator_notequal",           OT_INFIX                },
     46                        {       "?&?",          "&",    "_operator_bitand",                     OT_INFIX                },
     47                        {       "?^?",          "^",    "_operator_bitxor",                     OT_INFIX                },
     48                        {       "?|?",          "|",    "_operator_bitor",                      OT_INFIX                },
     49                        {       "?=?",          "=",    "_operator_assign",                     OT_INFIXASSIGN          },
     50                        {       "?*=?",         "*=",   "_operator_multassign",         OT_INFIXASSIGN          },
     51                        {       "?/=?",         "/=",   "_operator_divassign",          OT_INFIXASSIGN          },
     52                        {       "?%=?",         "%=",   "_operator_modassign",          OT_INFIXASSIGN          },
     53                        {       "?+=?",         "+=",   "_operator_addassign",          OT_INFIXASSIGN          },
     54                        {       "?-=?",         "-=",   "_operator_subassign",          OT_INFIXASSIGN          },
    5555                        {       "?<<=?",        "<<=",  "_operator_shiftleftassign",    OT_INFIXASSIGN          },
    5656                        {       "?>>=?",        ">>=",  "_operator_shiftrightassign",   OT_INFIXASSIGN          },
    57                         {       "?&=?",         "&=",   "_operator_bitandassign",               OT_INFIXASSIGN          },
    58                         {       "?^=?",         "^=",   "_operator_bitxorassign",               OT_INFIXASSIGN          },
    59                         {       "?|=?",         "|=",   "_operator_bitorassign",                OT_INFIXASSIGN          },
    60                         {       "&&",           "&&",   "&&",                                                   OT_LABELADDRESS         },
    61                         {       "0",            "0",    "_constant_zero",                               OT_CONSTANT                     },
    62                         {       "1",            "1",    "_constant_one",                                OT_CONSTANT                     }
     57                        {       "?&=?",         "&=",   "_operator_bitandassign",       OT_INFIXASSIGN          },
     58                        {       "?^=?",         "^=",   "_operator_bitxorassign",       OT_INFIXASSIGN          },
     59                        {       "?|=?",         "|=",   "_operator_bitorassign",        OT_INFIXASSIGN          },
     60                        {       "0",            "0",    "_constant_zero",                       OT_CONSTANT             },
     61                        {       "1",            "1",    "_constant_one",                        OT_CONSTANT             }
    6362                };
    6463
  • src/CodeGen/OperatorTable.h

    r94e0864d r94b4364  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 16:09:27 2015
    13 // Update Count     : 3
     12// Last Modified On : Mon May 18 23:43:07 2015
     13// Update Count     : 2
    1414//
    1515
     
    2929                OT_POSTFIXASSIGN,
    3030                OT_INFIXASSIGN,
    31                 OT_LABELADDRESS,
    3231                OT_CONSTANT
    3332        };
  • src/ControlStruct/LabelFixer.cc

    r94e0864d r94b4364  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 12:42:23 2015
    13 // Update Count     : 96
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Jun 02 15:30:32 2015
     13// Update Count     : 93
    1414//
    1515
     
    137137                                Label undef = from.back()->get_target();
    138138                                throw SemanticError ( "'" + undef + "' label not defined");
    139                         } // if
     139                        }
    140140
    141                         // generate a new label, and attach it to its defining statement as the only label on that statement
    142                         Label finalLabel = generator->newLabel( to->get_labels().back() );
     141                        // generate a new label, and attach it to its defining statement
     142                        // as the only label on that statement
     143                        Label finalLabel = generator->newLabel();
    143144                        entry->set_label( finalLabel );
    144145
  • src/ControlStruct/LabelGenerator.cc

    r94e0864d r94b4364  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 12:18:34 2015
    13 // Update Count     : 13
     12// Last Modified On : Mon Jun  8 14:45:07 2015
     13// Update Count     : 12
    1414//
    1515
     
    2929        }
    3030
    31         Label LabelGenerator::newLabel( std::string suffix ) {
     31        Label LabelGenerator::newLabel(std::string suffix) {
    3232                std::ostringstream os;
    3333                os << "__L" << current++ << "__" << suffix;
  • src/GenPoly/Box.cc

    r94e0864d r94b4364  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 09:12:19 2015
    13 // Update Count     : 4
     12// Last Modified On : Sat Jun 13 07:13:46 2015
     13// Update Count     : 3
    1414//
    1515
     
    524524                        adapterBody->get_kids().push_back( bodyStmt );
    525525                        std::string adapterName = makeAdapterName( mangleName );
    526                         return new FunctionDecl( adapterName, DeclarationNode::NoStorageClass, LinkageSpec::C, adapterType, adapterBody, false, false );
     526                        return new FunctionDecl( adapterName, DeclarationNode::NoStorageClass, LinkageSpec::C, adapterType, adapterBody, false );
    527527                }
    528528
  • src/GenPoly/Specialize.cc

    r94e0864d r94b4364  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 15:54:07 2015
    13 // Update Count     : 6
     12// Last Modified On : Sat Jun 13 07:14:42 2015
     13// Update Count     : 5
    1414//
    1515
     
    9797                                        newEnv.applyFree( newType );
    9898                                } // if
    99                                 FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( std::list< std::string >() ), false, false );
     99                                FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( std::list< std::string >() ), false );
    100100                                thunkFunc->fixUniqueId();
    101101
  • src/Parser/DeclarationNode.cc

    r94e0864d r94b4364  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun 24 15:29:19 2015
    13 // Update Count     : 86
     12// Last Modified On : Sat Jun 13 08:02:03 2015
     13// Update Count     : 58
    1414//
    1515
     
    2424#include "SynTree/Declaration.h"
    2525#include "SynTree/Expression.h"
    26 
    27 #include "Parser.h"
    28 #include "TypedefTable.h"
    29 extern TypedefTable typedefTable;
    3026
    3127using namespace std;
     
    181177                newnode->type->aggregate->name = DeclarationNode::anonymous.newName();
    182178        } // if
    183 
    184         // SKULLDUGGERY: generate a typedef for the aggregate name so that the aggregate does not have to be qualified by
    185         // "struct"
    186         typedefTable.addToEnclosingScope( newnode->type->aggregate->name, TypedefTable::TD );
    187         DeclarationNode *typedf = new DeclarationNode;
    188         typedf->name = newnode->type->aggregate->name;
    189         newnode->appendList( typedf->addType( newnode->clone() )->addTypedef() );
    190 
    191179        newnode->type->aggregate->params = formals;
    192180        newnode->type->aggregate->actuals = actuals;
     
    203191                newnode->type->enumeration->name = DeclarationNode::anonymous.newName();
    204192        } // if
    205 
    206         // SKULLDUGGERY: generate a typedef for the enumeration name so that the enumeration does not have to be qualified
    207         // by "enum"
    208         typedefTable.addToEnclosingScope( newnode->type->enumeration->name, TypedefTable::TD );
    209         DeclarationNode *typedf = new DeclarationNode;
    210         typedf->name = newnode->type->enumeration->name;
    211         newnode->appendList( typedf->addType( newnode->clone() )->addTypedef() );
    212 
    213193        newnode->type->enumeration->constants = constants;
    214194        return newnode;
     
    852832Declaration *DeclarationNode::build() const {
    853833        if ( type ) {
    854                 Declaration *newDecl = type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildFuncSpecifier( Inline ), buildFuncSpecifier( Noreturn ), linkage, maybeBuild< Initializer >(initializer) );
     834                Declaration *newDecl = type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildInline(), linkage, maybeBuild< Initializer >(initializer) );
    855835                return newDecl;
    856836        } // if
    857         if ( ! buildFuncSpecifier( Inline ) && ! buildFuncSpecifier( Noreturn ) ) {
     837        if ( ! buildInline() ) {
    858838                return new ObjectDecl( name, buildStorageClass(), linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) );
    859839        } // if
    860         throw SemanticError( "invalid function specifier in declaration of ", this );
     840        throw SemanticError( "invalid inline specification in declaration of ", this );
    861841}
    862842
     
    899879        for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
    900880          if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
     881
    901882          if ( ret != DeclarationNode::NoStorageClass ) {       // already have a valid storage class ?
    902883                        throw SemanticError( "invalid combination of storage classes in declaration of ", this );
     
    907888}
    908889
    909 bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const {
    910         std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key );
    911   if ( first == storageClasses.end() ) return false;    // not found
    912         first = std::find( ++first, storageClasses.end(), key ); // found
    913   if ( first == storageClasses.end() ) return true;             // not found again
    914         throw SemanticError( "duplicate function specifier in declaration of ", this );
     890bool DeclarationNode::buildInline() const {
     891        std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), DeclarationNode::Inline );
     892  if ( first == storageClasses.end() ) return false;
     893        std::list< DeclarationNode::StorageClass >::const_iterator next = std::find( ++first, storageClasses.end(), DeclarationNode::Inline );
     894  if ( next == storageClasses.end() ) return true;
     895        throw SemanticError( "duplicate inline specification in declaration of ", this );
    915896}
    916897
  • src/Parser/ExpressionNode.cc

    r94e0864d r94b4364  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 24 16:10:47 2015
    13 // Update Count     : 154
     12// Last Modified On : Wed Jun 10 14:57:52 2015
     13// Update Count     : 151
    1414//
    1515
     
    364364// the names that users use to define operator functions
    365365static const char *opFuncName[] = {
    366         "",             "",             "",
    367         "",             "",
    368         //diadic
    369         "",             "",             "",             "",             "?+?",          "?-?",  "?*?",  "?/?",  "?%?",  "",              "",
    370         "?|?",          "?&?",          "?^?",  "",             "?<<?", "?>>?", "?<?",  "?>?",  "?<=?",
    371         "?>=?",         "?==?",         "?!=?", "?=?",  "?*=?", "?/=?", "?%=?", "?+=?", "?-=?",
    372         "?<<=?",        "?>>=?",        "?&=?", "?^=?", "?|=?", "?[?]", "",             "",             "Range",
    373         //monadic
    374         "+?",           "-?",           "",             "*?",   "!?",   "~?",   "++?",  "?++",  "--?",  "?--",  "&&"
     366        "",  "", "",
     367        "",   "",
     368        // diadic
     369        "",   "", "", "", "?+?",    "?-?",   "?*?",     "?/?",     "?%?",     "",      "",
     370        "?|?",  "?&?",  "?^?",     "",    "?<<?",  "?>>?",  "?<?",   "?>?",    "?<=?",
     371        "?>=?", "?==?",      "?!=?",     "?=?",  "?*=?", "?/=?", "?%=?", "?+=?", "?-=?",
     372        "?<<=?", "?>>=?",  "?&=?", "?^=?",  "?|=?",  "?[?]",   "","","Range",
     373        // monadic
     374        "+?", "-?", "", "*?", "!?", "~?", "++?", "?++", "--?", "?--", "LabAddress"
    375375};
    376376
  • src/Parser/ParseNode.h

    r94e0864d r94b4364  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun 24 14:09:51 2015
    13 // Update Count     : 81
     12// Last Modified On : Sat Jun 13 07:24:22 2015
     13// Update Count     : 79
    1414//
    1515
     
    329329        DeclarationNode *cloneBaseType( DeclarationNode *newdecl );
    330330
    331         DeclarationNode *appendList( DeclarationNode * );
     331        DeclarationNode *appendList( DeclarationNode  *);
    332332
    333333        DeclarationNode *clone() const;
     
    347347  private:
    348348        StorageClass buildStorageClass() const;
    349         bool buildFuncSpecifier( StorageClass key ) const;
     349        bool buildInline() const;
    350350
    351351        TypeData *type;
  • src/Parser/TypeData.cc

    r94e0864d r94b4364  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun 18 22:06:23 2015
    13 // Update Count     : 21
     12// Last Modified On : Sat Jun 13 08:03:20 2015
     13// Update Count     : 15
    1414//
    1515
     
    437437                        assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
    438438                        assignType->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
    439                         (*i)->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignType, 0, false, false ) );
     439                        (*i)->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignType, 0, false ) );
    440440                } // if
    441441        } // for
    442442}
    443443
    444 Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer *init ) const {
     444Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, LinkageSpec::Type linkage, Initializer *init ) const {
    445445        if ( kind == TypeData::Function ) {
    446446                FunctionDecl *decl;
     
    450450                                CompoundStmt *body = dynamic_cast< CompoundStmt* >( stmt );
    451451                                assert( body );
    452                                 decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline, isNoreturn );
     452                                decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline );
    453453                        } else {
    454454                                // std::list<Label> ls;
    455                                 decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline, isNoreturn );
     455                                decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline );
    456456                        } // if
    457457                } else {
    458                         decl = new FunctionDecl( name, sc, linkage, buildFunction(), 0, isInline, isNoreturn );
     458                        decl = new FunctionDecl( name, sc, linkage, buildFunction(), 0, isInline );
    459459                } // if
    460460                for ( DeclarationNode *cur = function->idList; cur != 0; cur = dynamic_cast< DeclarationNode* >( cur->get_link() ) ) {
     
    474474                return buildVariable();
    475475        } else {
    476                 if ( isInline || isNoreturn ) {
    477                         throw SemanticError( "invalid inline or _Noreturn specification in declaration of ", this );
     476                if ( isInline ) {
     477                        throw SemanticError( "invalid inline specification in declaration of ", this );
    478478                } else {
    479479                        return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init );
     
    598598                                } // if
    599599                                break;
     600       
    600601                          case DeclarationNode::Complex:
    601602                                switch ( ret ) {
     
    790791                        break;
    791792                  default:
    792                         ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( base->buildDecl( "", DeclarationNode::NoStorageClass, 0, false, false, LinkageSpec::Cforall ) ) );
     793                        ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( base->buildDecl( "", DeclarationNode::NoStorageClass, 0, false, LinkageSpec::Cforall ) ) );
    793794                } // switch
    794795        } else {
     
    805806                at = new StructDecl( aggregate->name );
    806807                break;
     808       
    807809          case DeclarationNode::Union:
    808810                at = new UnionDecl( aggregate->name );
    809811                break;
     812       
    810813          case DeclarationNode::Context:
    811814                at = new ContextDecl( aggregate->name );
    812815                break;
     816       
    813817          default:
    814818                assert( false );
     
    834838ReferenceToType *TypeData::buildAggInst() const {
    835839        assert( kind == AggregateInst );
     840        std::string name;
    836841
    837842        ReferenceToType *ret;
     
    878883        TypeDecl *ret = new TypeDecl( variable->name, DeclarationNode::NoStorageClass, 0, kindMap[ variable->tyClass ] );
    879884        buildList( variable->assertions, ret->get_assertions() );
     885       
    880886        return ret;
    881887}
     
    885891        EnumDecl *ret = new EnumDecl( enumeration->name );
    886892        buildList( enumeration->constants, ret->get_members() );
     893
    887894        return ret;
    888895}
     
    893900        buildList( symbolic->actuals, ret->get_parameters() );
    894901        buildForall( forall, ret->get_forall() );
     902
    895903        return ret;
    896904}
     
    901909        buildTypeList( tuple->members, ret->get_types() );
    902910        buildForall( forall, ret->get_forall() );
     911
    903912        return ret;
    904913}
     
    909918        assert( typeexpr->expr );
    910919        TypeofType *ret = new TypeofType( buildQualifiers(), typeexpr->expr->build() );
     920
    911921        return ret;
    912922}
     
    922932                ret = new AttrType( buildQualifiers(), attr->name, attr->type->buildType() );
    923933        } // if
     934
    924935        return ret;
    925936}
  • src/Parser/TypeData.h

    r94e0864d r94b4364  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun 18 21:03:18 2015
    13 // Update Count     : 7
     12// Last Modified On : Sat Jun 13 07:26:16 2015
     13// Update Count     : 5
    1414//
    1515
     
    120120        TypeData *extractAggregate( bool toplevel = true ) const;
    121121        // helper function for DeclNodeImpl::build
    122         Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer *init = 0 ) const;
     122        Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, LinkageSpec::Type linkage, Initializer *init = 0 ) const;
    123123        // helper functions for build()
    124124        Type::Qualifiers buildQualifiers() const;
    125         Type * buildBasicType() const;
     125        Type *buildBasicType() const;
    126126        PointerType * buildPointer() const;
    127127        ArrayType * buildArray() const;
  • src/Parser/TypedefTable.cc

    r94e0864d r94b4364  
    1010// Created On       : Sat May 16 15:20:13 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun 21 11:46:15 2015
    13 // Update Count     : 7
     12// Last Modified On : Sat May 16 15:24:03 2015
     13// Update Count     : 2
    1414//
    1515
     
    2929TypedefTable::TypedefTable() : currentScope( 0 ) {}
    3030
    31 bool TypedefTable::isKind( const string &identifier, kind_t kind ) const {
     31bool TypedefTable::isKind( string identifier, kind_t kind ) const {
    3232        tableType::const_iterator id_pos = table.find( identifier );
    33         if ( id_pos == table.end() ) {
     33        if ( id_pos == table.end()) {
    3434                return true;
    3535        } else {
    3636                return (*((*id_pos ).second.begin())).kind == kind;
    37         } // if
     37        }
    3838}
    3939
    40 bool TypedefTable::isIdentifier( const string &identifier ) const {
     40bool TypedefTable::isIdentifier( string identifier ) const {
    4141        return isKind( identifier, ID );
    4242}
    4343
    44 bool TypedefTable::isTypedef( const string &identifier ) const {
     44bool TypedefTable::isTypedef( string identifier ) const {
    4545        return isKind( identifier, TD );
    4646}
    4747
    48 bool TypedefTable::isTypegen( const string &identifier ) const {
     48bool TypedefTable::isTypegen( string identifier ) const {
    4949        return isKind( identifier, TG );
    5050}
     
    6666                        while ( listPos != (*curPos ).second.end() && listPos->scope > scope ) {
    6767                                listPos++;
    68                         } // while
     68                        }
    6969                        (*curPos ).second.insert( listPos, newEntry );
    70                 } // if
    71         } // if
     70                }
     71        }
    7272}
    7373
     
    102102}
    103103
    104 void TypedefTable::openContext( const std::string &contextName ) {
     104void TypedefTable::openContext( std::string contextName ) {
    105105        map< string, deferListType >::iterator i = contexts.find( contextName );
    106106        if ( i != contexts.end() ) {
     
    108108                for ( deferListType::iterator i = entries.begin(); i != entries.end(); i++) {
    109109                        addToEnclosingScope( i->identifier, i->kind );
    110                 } // for
    111         } // if
     110                }
     111        }
    112112}
    113113
    114 void TypedefTable::enterScope() {
     114void TypedefTable::enterScope( void ) {
    115115        currentScope += 1;
    116116        deferListStack.push( deferListType() );
     
    119119}
    120120
    121 void TypedefTable::leaveScope() {
     121void TypedefTable::leaveScope( void ) {
    122122        debugPrint( "Leaving scope " << currentScope << endl );
    123123        for ( tableType::iterator i = table.begin(); i != table.end(); ) {
     
    129129                        table.erase( i++ );
    130130                } else ++i;
    131         } // for
     131        }
    132132        currentScope -= 1;
    133133        for ( deferListType::iterator i = deferListStack.top().begin(); i != deferListStack.top().end(); i++) {
    134134                addToCurrentScope( i->identifier, i->kind );
    135         } // for
     135        }
    136136        deferListStack.pop();
    137137        debugPrint( "nextIdentifiers size is " << nextIdentifiers.size() << " top is " << nextIdentifiers.top() << endl );
     
    139139}
    140140
    141 void TypedefTable::enterContext( const std::string &contextName ) {
     141void TypedefTable::enterContext( std::string contextName ) {
    142142        currentContext = contextName;
    143143        contextScope = currentScope;
    144144}
    145145
    146 void TypedefTable::leaveContext() {
     146void TypedefTable::leaveContext( void ) {
    147147        currentContext = "";
    148148}
     
    156156                }
    157157                debugPrint( endl );
    158         } // for
     158        }
    159159}
    160160
  • src/Parser/TypedefTable.h

    r94e0864d r94b4364  
    1010// Created On       : Sat May 16 15:24:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun 18 21:03:17 2015
    13 // Update Count     : 7
     12// Last Modified On : Sat May 16 15:25:59 2015
     13// Update Count     : 3
    1414//
    1515
     
    4949        std::stack< std::string > nextIdentifiers;
    5050
    51         bool isKind( const std::string &identifier, kind_t kind ) const;
     51        bool isKind( std::string identifier, kind_t kind ) const;
    5252        void addToScope( const std::string &identifier, kind_t kind, int scope );
    5353  public:
    5454        TypedefTable();
    5555
    56         bool isIdentifier( const std::string &identifier ) const;
    57         bool isTypedef( const std::string &identifier ) const;
    58         bool isTypegen( const std::string &identifier ) const;
     56        bool isIdentifier( std::string identifier ) const;
     57        bool isTypedef( std::string identifier ) const;
     58        bool isTypegen( std::string identifier ) const;
    5959       
    60         // "addToCurrentScope" adds the identifier/type pair to the current scope. This does less than you think it does,
     60        // "addToCurrentScope" adds the identifier/type pair to the current scope This does less than you think it does,
    6161        // since each declaration is within its own scope.  Mostly useful for type parameters.
    6262        void addToCurrentScope( const std::string &identifier, kind_t kind );
     
    7777       
    7878        // dump the definitions from a pre-defined context into the current scope
    79         void openContext( const std::string &contextName );
     79        void openContext( std::string contextName );
    8080       
    8181        void enterScope();
    8282        void leaveScope();
    83         void enterContext( const std::string &contextName );
     83        void enterContext( std::string contextName );
    8484        void leaveContext();
    8585
  • src/Parser/lex.cc

    r94e0864d r94b4364  
    13901390 * Created On       : Sat Sep 22 08:58:10 2001
    13911391 * Last Modified By : Peter A. Buhr
    1392  * Last Modified On : Fri Jun 19 11:10:14 2015
    1393  * Update Count     : 392
     1392 * Last Modified On : Thu Jun 11 21:52:35 2015
     1393 * Update Count     : 382
    13941394 */
    13951395#line 20 "lex.ll"
    1396 // This lexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive have been
    1397 // performed and removed from the source. The only exceptions are preprocessor directives passed to the compiler (e.g.,
    1398 // line-number directives) and C/C++ style comments, which are ignored.
     1396// This lexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive
     1397// have been performed and removed from the source. The only exceptions are preprocessor directives passed to
     1398// the compiler (e.g., line-number directives) and C/C++ style comments, which are ignored.
    13991399
    14001400//**************************** Includes and Defines ****************************
     
    14091409std::string *strtext;                                                                   // accumulate parts of character and string constant value
    14101410
    1411 #define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x )
    1412 #define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x )
    1413 #define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN( x )
    1414 #define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN( x )
     1411#define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return(x)
     1412#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN(x)
     1413#define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN(x)
     1414#define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN(x)
    14151415
    14161416#define WHITE_RETURN(x)                                                                 // do nothing
    1417 #define NEWLINE_RETURN()        WHITE_RETURN( '\n' )
    1418 #define ASCIIOP_RETURN()        RETURN_CHAR( (int)yytext[0] ) // single character operator
    1419 #define NAMEDOP_RETURN(x)       RETURN_VAL( x )                         // multichar operator, with a name
    1420 #define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    1421 #define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
    1422 #define IDENTIFIER_RETURN()     RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) )
    1423 #define ATTRIBUTE_RETURN()      RETURN_VAL( ATTR_IDENTIFIER )
     1417#define NEWLINE_RETURN()        WHITE_RETURN('\n')
     1418#define ASCIIOP_RETURN()        RETURN_CHAR((int)yytext[0])     // single character operator
     1419#define NAMEDOP_RETURN(x)       RETURN_VAL(x)                           // multichar operator, with a name
     1420#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL(x) // numeric constant
     1421#define KEYWORD_RETURN(x)       RETURN_CHAR(x)                          // keyword
     1422#define IDENTIFIER_RETURN()     RETURN_VAL((typedefTable.isIdentifier(yytext) ? IDENTIFIER : typedefTable.isTypedef(yytext) ? TYPEDEFname : TYPEGENname))
     1423#define ATTRIBUTE_RETURN()      RETURN_VAL(ATTR_IDENTIFIER)
    14241424
    14251425void rm_underscore() {
     
    36523652
    36533653// Local Variables: //
     3654// fill-column: 110 //
     3655// tab-width: 4 //
    36543656// mode: c++ //
    3655 // tab-width: 4 //
    36563657// compile-command: "make install" //
    36573658// End: //
  • src/Parser/lex.ll

    r94e0864d r94b4364  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Fri Jun 19 11:10:14 2015
    13  * Update Count     : 392
     12 * Last Modified On : Thu Jun 11 21:52:35 2015
     13 * Update Count     : 382
    1414 */
    1515
     
    1818
    1919%{
    20 // This lexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive have been
    21 // performed and removed from the source. The only exceptions are preprocessor directives passed to the compiler (e.g.,
    22 // line-number directives) and C/C++ style comments, which are ignored.
     20// This lexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive
     21// have been performed and removed from the source. The only exceptions are preprocessor directives passed to
     22// the compiler (e.g., line-number directives) and C/C++ style comments, which are ignored.
    2323
    2424//**************************** Includes and Defines ****************************
     
    3333std::string *strtext;                                                                   // accumulate parts of character and string constant value
    3434
    35 #define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x )
    36 #define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x )
    37 #define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN( x )
    38 #define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN( x )
     35#define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return(x)
     36#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN(x)
     37#define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN(x)
     38#define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN(x)
    3939
    4040#define WHITE_RETURN(x)                                                                 // do nothing
    41 #define NEWLINE_RETURN()        WHITE_RETURN( '\n' )
    42 #define ASCIIOP_RETURN()        RETURN_CHAR( (int)yytext[0] ) // single character operator
    43 #define NAMEDOP_RETURN(x)       RETURN_VAL( x )                         // multichar operator, with a name
    44 #define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    45 #define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
    46 #define IDENTIFIER_RETURN()     RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) )
    47 #define ATTRIBUTE_RETURN()      RETURN_VAL( ATTR_IDENTIFIER )
     41#define NEWLINE_RETURN()        WHITE_RETURN('\n')
     42#define ASCIIOP_RETURN()        RETURN_CHAR((int)yytext[0])     // single character operator
     43#define NAMEDOP_RETURN(x)       RETURN_VAL(x)                           // multichar operator, with a name
     44#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL(x) // numeric constant
     45#define KEYWORD_RETURN(x)       RETURN_CHAR(x)                          // keyword
     46#define IDENTIFIER_RETURN()     RETURN_VAL((typedefTable.isIdentifier(yytext) ? IDENTIFIER : typedefTable.isTypedef(yytext) ? TYPEDEFname : TYPEGENname))
     47#define ATTRIBUTE_RETURN()      RETURN_VAL(ATTR_IDENTIFIER)
    4848
    4949void rm_underscore() {
     
    398398
    399399// Local Variables: //
     400// fill-column: 110 //
     401// tab-width: 4 //
    400402// mode: c++ //
    401 // tab-width: 4 //
    402403// compile-command: "make install" //
    403404// End: //
  • src/Parser/parser.cc

    r94e0864d r94b4364  
    6767
    6868/* Line 268 of yacc.c  */
    69 #line 44 "parser.yy"
     69#line 45 "parser.yy"
    7070
    7171#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
     
    324324
    325325/* Line 293 of yacc.c  */
    326 #line 107 "parser.yy"
     326#line 108 "parser.yy"
    327327
    328328        Token tok;
     
    570570#define YYFINAL  240
    571571/* YYLAST -- Last index in YYTABLE.  */
    572 #define YYLAST   12266
     572#define YYLAST   12141
    573573
    574574/* YYNTOKENS -- Number of terminals.  */
     
    579579#define YYNRULES  735
    580580/* YYNRULES -- Number of states.  */
    581 #define YYNSTATES  1555
     581#define YYNSTATES  1552
    582582
    583583/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    669669    1161,  1166,  1171,  1176,  1178,  1181,  1184,  1188,  1190,  1193,
    670670    1196,  1198,  1201,  1204,  1208,  1210,  1213,  1216,  1218,  1220,
    671     1225,  1228,  1234,  1244,  1252,  1263,  1276,  1282,  1290,  1304,
    672     1307,  1310,  1312,  1315,  1318,  1322,  1325,  1329,  1331,  1334,
    673     1338,  1341,  1344,  1349,  1350,  1352,  1355,  1358,  1360,  1361,
    674     1363,  1366,  1369,  1375,  1382,  1385,  1388,  1393,  1394,  1397,
    675     1398,  1400,  1402,  1404,  1410,  1416,  1422,  1424,  1430,  1436,
    676     1446,  1448,  1454,  1455,  1457,  1459,  1465,  1467,  1469,  1475,
    677     1481,  1483,  1487,  1491,  1496,  1498,  1500,  1502,  1504,  1507,
    678     1509,  1513,  1517,  1519,  1522,  1524,  1528,  1530,  1532,  1534,
    679     1536,  1538,  1540,  1542,  1544,  1546,  1548,  1551,  1553,  1555,
    680     1557,  1560,  1561,  1564,  1566,  1571,  1573,  1576,  1580,  1585,
    681     1588,  1591,  1593,  1596,  1599,  1605,  1611,  1619,  1626,  1628,
    682     1631,  1634,  1638,  1643,  1649,  1652,  1655,  1660,  1661,  1666,
    683     1669,  1671,  1673,  1675,  1676,  1679,  1685,  1691,  1705,  1707,
    684     1709,  1713,  1717,  1720,  1724,  1728,  1731,  1736,  1738,  1745,
    685     1755,  1756,  1768,  1770,  1774,  1778,  1782,  1784,  1786,  1792,
    686     1795,  1801,  1802,  1804,  1806,  1810,  1811,  1813,  1815,  1817,
    687     1819,  1820,  1827,  1830,  1832,  1835,  1840,  1843,  1847,  1851,
    688     1855,  1860,  1866,  1872,  1878,  1885,  1887,  1889,  1891,  1895,
    689     1896,  1902,  1903,  1905,  1907,  1910,  1917,  1919,  1923,  1924,
    690     1926,  1931,  1933,  1935,  1937,  1939,  1942,  1944,  1947,  1950,
    691     1952,  1956,  1959,  1963,  1967,  1970,  1975,  1980,  1984,  1993,
    692     1997,  2000,  2002,  2005,  2012,  2021,  2025,  2028,  2032,  2036,
    693     2041,  2046,  2050,  2052,  2054,  2056,  2061,  2068,  2072,  2075,
    694     2079,  2083,  2088,  2093,  2097,  2100,  2102,  2105,  2108,  2110,
    695     2114,  2117,  2121,  2125,  2128,  2133,  2138,  2142,  2149,  2158,
    696     2162,  2165,  2167,  2170,  2173,  2176,  2180,  2184,  2187,  2192,
    697     2197,  2201,  2208,  2217,  2221,  2224,  2226,  2229,  2232,  2234,
    698     2237,  2241,  2245,  2248,  2253,  2260,  2269,  2271,  2274,  2277,
    699     2279,  2282,  2285,  2289,  2293,  2295,  2300,  2305,  2309,  2315,
    700     2324,  2328,  2333,  2339,  2341,  2347,  2353,  2360,  2367,  2369,
    701     2372,  2375,  2377,  2380,  2383,  2387,  2391,  2393,  2398,  2403,
    702     2407,  2413,  2422,  2426,  2428,  2431,  2433,  2438,  2445,  2451,
    703     2458,  2466,  2474,  2476,  2479,  2482,  2484,  2487,  2490,  2494,
    704     2498,  2500,  2505,  2510,  2514,  2523,  2527,  2529,  2531,  2534,
    705     2536,  2538,  2541,  2545,  2548,  2552,  2555,  2559,  2565,  2568,
    706     2575,  2579,  2582,  2588,  2591,  2598,  2602,  2605,  2612,  2619,
    707     2626,  2634,  2636,  2639,  2641,  2643,  2645,  2648,  2652,  2655,
    708     2659,  2662,  2666,  2672,  2679,  2682,  2688,  2695,  2698,  2704,
    709     2712,  2719,  2726,  2727,  2729,  2730
     671    1225,  1228,  1234,  1244,  1252,  1263,  1276,  1284,  1298,  1301,
     672    1304,  1306,  1309,  1312,  1316,  1319,  1323,  1325,  1328,  1332,
     673    1335,  1338,  1343,  1344,  1346,  1349,  1352,  1354,  1355,  1357,
     674    1360,  1363,  1369,  1376,  1379,  1382,  1387,  1388,  1391,  1392,
     675    1394,  1396,  1398,  1404,  1410,  1416,  1418,  1424,  1430,  1440,
     676    1442,  1448,  1449,  1451,  1453,  1459,  1461,  1463,  1469,  1475,
     677    1477,  1481,  1485,  1490,  1492,  1494,  1496,  1498,  1501,  1503,
     678    1507,  1511,  1513,  1516,  1518,  1522,  1524,  1526,  1528,  1530,
     679    1532,  1534,  1536,  1538,  1540,  1542,  1544,  1547,  1549,  1551,
     680    1553,  1556,  1557,  1560,  1562,  1567,  1569,  1572,  1576,  1581,
     681    1584,  1587,  1589,  1592,  1595,  1601,  1607,  1615,  1622,  1624,
     682    1627,  1630,  1634,  1639,  1645,  1648,  1651,  1656,  1657,  1662,
     683    1665,  1667,  1669,  1671,  1672,  1675,  1681,  1687,  1701,  1703,
     684    1705,  1709,  1713,  1716,  1720,  1724,  1727,  1732,  1734,  1741,
     685    1751,  1752,  1764,  1766,  1770,  1774,  1778,  1780,  1782,  1788,
     686    1791,  1797,  1798,  1800,  1802,  1806,  1807,  1809,  1811,  1813,
     687    1815,  1816,  1823,  1826,  1828,  1831,  1836,  1839,  1843,  1847,
     688    1851,  1856,  1862,  1868,  1874,  1881,  1883,  1885,  1887,  1891,
     689    1892,  1898,  1899,  1901,  1903,  1906,  1913,  1915,  1919,  1920,
     690    1922,  1927,  1929,  1931,  1933,  1935,  1938,  1940,  1943,  1946,
     691    1948,  1952,  1955,  1959,  1963,  1966,  1971,  1976,  1980,  1989,
     692    1993,  1996,  1998,  2001,  2008,  2017,  2021,  2024,  2028,  2032,
     693    2037,  2042,  2046,  2048,  2050,  2052,  2057,  2064,  2068,  2071,
     694    2075,  2079,  2084,  2089,  2093,  2096,  2098,  2101,  2104,  2106,
     695    2110,  2113,  2117,  2121,  2124,  2129,  2134,  2138,  2145,  2154,
     696    2158,  2161,  2163,  2166,  2169,  2172,  2176,  2180,  2183,  2188,
     697    2193,  2197,  2204,  2213,  2217,  2220,  2222,  2225,  2228,  2230,
     698    2233,  2237,  2241,  2244,  2249,  2256,  2265,  2267,  2270,  2273,
     699    2275,  2278,  2281,  2285,  2289,  2291,  2296,  2301,  2305,  2311,
     700    2320,  2324,  2329,  2335,  2337,  2343,  2349,  2356,  2363,  2365,
     701    2368,  2371,  2373,  2376,  2379,  2383,  2387,  2389,  2394,  2399,
     702    2403,  2409,  2418,  2422,  2424,  2427,  2429,  2434,  2441,  2447,
     703    2454,  2462,  2470,  2472,  2475,  2478,  2480,  2483,  2486,  2490,
     704    2494,  2496,  2501,  2506,  2510,  2519,  2523,  2525,  2527,  2530,
     705    2532,  2534,  2537,  2541,  2544,  2548,  2551,  2555,  2561,  2564,
     706    2571,  2575,  2578,  2584,  2587,  2594,  2598,  2601,  2608,  2615,
     707    2622,  2630,  2632,  2635,  2637,  2639,  2641,  2644,  2648,  2651,
     708    2655,  2658,  2662,  2668,  2675,  2678,  2684,  2691,  2694,  2700,
     709    2708,  2715,  2722,  2723,  2725,  2726
    710710};
    711711
     
    840840     261,    -1,   235,   101,   126,   272,   127,   102,   261,   106,
    841841     236,   107,    -1,   235,   101,   126,   272,   127,   102,   101,
    842      278,   102,   106,   236,   107,    -1,   235,    68,   101,   278,
    843      102,    -1,   235,   101,   126,   278,   127,   102,   261,    -1,
    844      235,   101,   126,   272,   127,   102,   101,   278,   102,   261,
    845      106,   236,   107,    -1,    30,   298,    -1,    31,   298,    -1,
    846      237,    -1,   236,   237,    -1,   238,   124,    -1,    38,   238,
    847      124,    -1,   239,   124,    -1,    38,   239,   124,    -1,   352,
    848       -1,   352,   261,    -1,   238,   108,   261,    -1,   238,   108,
    849       -1,   214,   240,    -1,   239,   108,   298,   240,    -1,    -1,
    850      242,    -1,   304,   241,    -1,   317,   241,    -1,   343,    -1,
    851       -1,   242,    -1,   109,   154,    -1,    29,   298,    -1,   243,
    852      106,   245,   358,   107,    -1,   243,   261,   106,   245,   358,
    853      107,    -1,   243,   261,    -1,   261,   246,    -1,   245,   108,
    854      261,   246,    -1,    -1,   123,   154,    -1,    -1,   248,    -1,
    855      250,    -1,   249,    -1,   249,   127,   108,   126,   250,    -1,
    856      250,   127,   108,   126,    89,    -1,   249,   127,   108,   126,
    857       89,    -1,   254,    -1,   250,   127,   108,   126,   254,    -1,
    858      249,   127,   108,   126,   254,    -1,   249,   127,   108,   126,
    859      250,   127,   108,   126,   254,    -1,   255,    -1,   250,   127,
    860      108,   126,   255,    -1,    -1,   252,    -1,   253,    -1,   253,
    861      127,   108,   126,    89,    -1,   257,    -1,   256,    -1,   253,
    862      127,   108,   126,   257,    -1,   253,   127,   108,   126,   256,
    863       -1,   256,    -1,   348,   259,   359,    -1,   356,   259,   359,
    864       -1,   216,   356,   259,   359,    -1,   206,    -1,   257,    -1,
    865      348,    -1,   356,    -1,   216,   356,    -1,   357,    -1,   213,
    866      322,   359,    -1,   213,   326,   359,    -1,   213,    -1,   213,
    867      337,    -1,   131,    -1,   258,   108,   131,    -1,   129,    -1,
    868       67,    -1,    68,    -1,   130,    -1,    67,    -1,    68,    -1,
    869      131,    -1,    67,    -1,   352,    -1,   214,    -1,   214,   343,
    870       -1,   352,    -1,   357,    -1,   214,    -1,   214,   331,    -1,
    871       -1,   123,   265,    -1,   155,    -1,   106,   266,   358,   107,
    872       -1,   265,    -1,   267,   265,    -1,   266,   108,   265,    -1,
    873      266,   108,   267,   265,    -1,   268,   109,    -1,   261,   109,
    874       -1,   269,    -1,   268,   269,    -1,   105,   261,    -1,   103,
    875      126,   155,   127,   104,    -1,   103,   126,   296,   127,   104,
    876       -1,   103,   126,   154,    89,   154,   127,   104,    -1,   105,
    877      103,   126,   138,   127,   104,    -1,   271,    -1,   220,   271,
    878       -1,   270,   222,    -1,   270,   222,   216,    -1,    68,   101,
    879      278,   102,    -1,   216,    68,   101,   278,   102,    -1,   271,
    880      217,    -1,   273,   359,    -1,   272,   108,   273,   359,    -1,
    881       -1,   275,   261,   274,   276,    -1,   214,   322,    -1,    32,
    882       -1,    34,    -1,    33,    -1,    -1,   276,   277,    -1,   121,
    883      261,   101,   278,   102,    -1,   121,   106,   126,   284,   107,
    884       -1,   121,   101,   126,   272,   127,   102,   106,   126,   284,
    885      107,   101,   278,   102,    -1,   263,    -1,   155,    -1,   278,
    886      108,   263,    -1,   278,   108,   155,    -1,    32,   280,    -1,
    887      221,    32,   280,    -1,   279,   108,   280,    -1,   281,   276,
    888       -1,   281,   276,   123,   263,    -1,   261,    -1,   260,   101,
    889      126,   272,   127,   102,    -1,    35,   261,   101,   126,   272,
    890      127,   102,   106,   107,    -1,    -1,    35,   261,   101,   126,
    891      272,   127,   102,   106,   283,   284,   107,    -1,   285,    -1,
    892      284,   126,   285,    -1,   286,   127,   124,    -1,   287,   127,
    893      124,    -1,   204,    -1,   206,    -1,   286,   127,   108,   126,
    894      259,    -1,   214,   295,    -1,   287,   127,   108,   126,   295,
    895       -1,    -1,   289,    -1,   291,    -1,   289,   126,   291,    -1,
    896       -1,   289,    -1,   201,    -1,   293,    -1,   189,    -1,    -1,
    897        5,    75,   292,   106,   290,   107,    -1,    38,   291,    -1,
    898      294,    -1,   309,   164,    -1,   313,   126,   196,   164,    -1,
    899      205,   164,    -1,   213,   309,   164,    -1,   216,   309,   164,
    900       -1,   220,   309,   164,    -1,   220,   216,   309,   164,    -1,
    901      213,   313,   126,   196,   164,    -1,   216,   313,   126,   196,
    902      164,    -1,   220,   313,   126,   196,   164,    -1,   220,   216,
    903      313,   126,   196,   164,    -1,   304,    -1,   309,    -1,   317,
    904       -1,   154,   115,   154,    -1,    -1,    57,   101,   133,   102,
    905      298,    -1,    -1,   299,    -1,   300,    -1,   299,   300,    -1,
    906       37,   101,   101,   301,   102,   102,    -1,   302,    -1,   301,
    907      108,   302,    -1,    -1,   303,    -1,   303,   101,   161,   102,
    908       -1,   259,    -1,   223,    -1,   224,    -1,   217,    -1,   305,
    909      298,    -1,   306,    -1,   307,   298,    -1,   308,   298,    -1,
    910      129,    -1,   101,   305,   102,    -1,   111,   304,    -1,   111,
    911      216,   304,    -1,   101,   306,   102,    -1,   305,   335,    -1,
    912      101,   306,   102,   335,    -1,   101,   307,   102,   336,    -1,
    913      101,   307,   102,    -1,   101,   306,   102,   101,   126,   251,
    914      127,   102,    -1,   101,   308,   102,    -1,   310,   298,    -1,
    915      311,    -1,   312,   298,    -1,   305,   101,   126,   251,   127,
    916      102,    -1,   101,   311,   102,   101,   126,   251,   127,   102,
    917       -1,   101,   310,   102,    -1,   111,   309,    -1,   111,   216,
    918      309,    -1,   101,   311,   102,    -1,   101,   311,   102,   335,
    919       -1,   101,   312,   102,   336,    -1,   101,   312,   102,    -1,
    920      314,    -1,   315,    -1,   316,    -1,   305,   101,   258,   102,
    921       -1,   101,   315,   102,   101,   258,   102,    -1,   101,   314,
    922      102,    -1,   111,   313,    -1,   111,   216,   313,    -1,   101,
    923      315,   102,    -1,   101,   315,   102,   335,    -1,   101,   316,
    924      102,   336,    -1,   101,   316,   102,    -1,   318,   298,    -1,
    925      319,    -1,   320,   298,    -1,   321,   298,    -1,    67,    -1,
    926      101,   318,   102,    -1,   111,   317,    -1,   111,   216,   317,
    927       -1,   101,   319,   102,    -1,   318,   335,    -1,   101,   319,
    928      102,   335,    -1,   101,   320,   102,   336,    -1,   101,   320,
    929      102,    -1,   318,   101,   126,   251,   127,   102,    -1,   101,
    930      319,   102,   101,   126,   251,   127,   102,    -1,   101,   321,
    931      102,    -1,   305,   298,    -1,   323,    -1,   324,   298,    -1,
    932      325,   298,    -1,   111,   322,    -1,   111,   216,   322,    -1,
    933      101,   323,   102,    -1,   305,   341,    -1,   101,   323,   102,
    934      335,    -1,   101,   324,   102,   336,    -1,   101,   324,   102,
    935       -1,   305,   101,   126,   251,   127,   102,    -1,   101,   323,
    936      102,   101,   126,   251,   127,   102,    -1,   101,   325,   102,
    937       -1,   327,   298,    -1,   328,    -1,   329,   298,    -1,   330,
    938      298,    -1,    67,    -1,   111,   326,    -1,   111,   216,   326,
    939       -1,   101,   328,   102,    -1,   327,   341,    -1,   101,   328,
    940      102,   341,    -1,   327,   101,   126,   251,   127,   102,    -1,
    941      101,   328,   102,   101,   126,   251,   127,   102,    -1,   332,
    942       -1,   333,   298,    -1,   334,   298,    -1,   111,    -1,   111,
    943      216,    -1,   111,   331,    -1,   111,   216,   331,    -1,   101,
    944      332,   102,    -1,   335,    -1,   101,   332,   102,   335,    -1,
    945      101,   333,   102,   336,    -1,   101,   333,   102,    -1,   101,
    946      126,   251,   127,   102,    -1,   101,   332,   102,   101,   126,
    947      251,   127,   102,    -1,   101,   334,   102,    -1,   103,   126,
    948      127,   104,    -1,   103,   126,   127,   104,   336,    -1,   336,
    949       -1,   103,   126,   155,   127,   104,    -1,   103,   126,   111,
    950      127,   104,    -1,   336,   103,   126,   155,   127,   104,    -1,
    951      336,   103,   126,   111,   127,   104,    -1,   338,    -1,   339,
    952      298,    -1,   340,   298,    -1,   111,    -1,   111,   216,    -1,
    953      111,   337,    -1,   111,   216,   337,    -1,   101,   338,   102,
    954       -1,   341,    -1,   101,   338,   102,   341,    -1,   101,   339,
    955      102,   336,    -1,   101,   339,   102,    -1,   101,   126,   251,
    956      127,   102,    -1,   101,   338,   102,   101,   126,   251,   127,
    957      102,    -1,   101,   340,   102,    -1,   342,    -1,   342,   336,
    958       -1,   336,    -1,   103,   126,   127,   104,    -1,   103,   126,
    959      216,   111,   127,   104,    -1,   103,   126,   216,   127,   104,
    960       -1,   103,   126,   216,   155,   127,   104,    -1,   103,   126,
    961        7,   215,   155,   127,   104,    -1,   103,   126,   216,     7,
    962      155,   127,   104,    -1,   344,    -1,   345,   298,    -1,   346,
    963      298,    -1,   111,    -1,   111,   216,    -1,   111,   343,    -1,
    964      111,   216,   343,    -1,   101,   344,   102,    -1,   335,    -1,
    965      101,   344,   102,   335,    -1,   101,   345,   102,   336,    -1,
    966      101,   345,   102,    -1,   101,   344,   102,   101,   126,   251,
    967      127,   102,    -1,   101,   346,   102,    -1,   348,    -1,   356,
    968       -1,   216,   356,    -1,   349,    -1,   350,    -1,   111,   214,
    969       -1,   216,   111,   214,    -1,   111,   357,    -1,   216,   111,
    970      357,    -1,   111,   347,    -1,   216,   111,   347,    -1,   103,
    971      126,   127,   104,   214,    -1,   351,   214,    -1,   103,   126,
    972      127,   104,   336,   214,    -1,   351,   336,   214,    -1,   336,
    973      214,    -1,   103,   126,   127,   104,   349,    -1,   351,   349,
    974       -1,   103,   126,   127,   104,   336,   349,    -1,   351,   336,
    975      349,    -1,   336,   349,    -1,   103,   126,   216,   111,   127,
    976      104,    -1,   103,   126,   216,   155,   127,   104,    -1,   103,
    977      126,   220,   155,   127,   104,    -1,   103,   126,   220,   216,
    978      155,   127,   104,    -1,   356,    -1,   216,   356,    -1,   353,
    979       -1,   354,    -1,   355,    -1,   111,   214,    -1,   216,   111,
    980      214,    -1,   111,   357,    -1,   216,   111,   357,    -1,   111,
    981      352,    -1,   216,   111,   352,    -1,   103,   126,   127,   104,
    982      214,    -1,   103,   126,   127,   104,   336,   214,    -1,   336,
    983      214,    -1,   103,   126,   127,   104,   354,    -1,   103,   126,
    984      127,   104,   336,   354,    -1,   336,   354,    -1,   103,   126,
    985      250,   127,   104,    -1,   103,   126,   127,   104,   101,   247,
    986      102,    -1,   356,   101,   126,   247,   127,   102,    -1,   207,
    987      101,   126,   247,   127,   102,    -1,    -1,   108,    -1,    -1,
    988      123,   155,    -1
     842     278,   102,   106,   236,   107,    -1,   235,   101,   126,   278,
     843     127,   102,   261,    -1,   235,   101,   126,   272,   127,   102,
     844     101,   278,   102,   261,   106,   236,   107,    -1,    30,   298,
     845      -1,    31,   298,    -1,   237,    -1,   236,   237,    -1,   238,
     846     124,    -1,    38,   238,   124,    -1,   239,   124,    -1,    38,
     847     239,   124,    -1,   352,    -1,   352,   261,    -1,   238,   108,
     848     261,    -1,   238,   108,    -1,   214,   240,    -1,   239,   108,
     849     298,   240,    -1,    -1,   242,    -1,   304,   241,    -1,   317,
     850     241,    -1,   343,    -1,    -1,   242,    -1,   109,   154,    -1,
     851      29,   298,    -1,   243,   106,   245,   358,   107,    -1,   243,
     852     261,   106,   245,   358,   107,    -1,   243,   261,    -1,   261,
     853     246,    -1,   245,   108,   261,   246,    -1,    -1,   123,   154,
     854      -1,    -1,   248,    -1,   250,    -1,   249,    -1,   249,   127,
     855     108,   126,   250,    -1,   250,   127,   108,   126,    89,    -1,
     856     249,   127,   108,   126,    89,    -1,   254,    -1,   250,   127,
     857     108,   126,   254,    -1,   249,   127,   108,   126,   254,    -1,
     858     249,   127,   108,   126,   250,   127,   108,   126,   254,    -1,
     859     255,    -1,   250,   127,   108,   126,   255,    -1,    -1,   252,
     860      -1,   253,    -1,   253,   127,   108,   126,    89,    -1,   257,
     861      -1,   256,    -1,   253,   127,   108,   126,   257,    -1,   253,
     862     127,   108,   126,   256,    -1,   256,    -1,   348,   259,   359,
     863      -1,   356,   259,   359,    -1,   216,   356,   259,   359,    -1,
     864     206,    -1,   257,    -1,   348,    -1,   356,    -1,   216,   356,
     865      -1,   357,    -1,   213,   322,   359,    -1,   213,   326,   359,
     866      -1,   213,    -1,   213,   337,    -1,   131,    -1,   258,   108,
     867     131,    -1,   129,    -1,    67,    -1,    68,    -1,   130,    -1,
     868      67,    -1,    68,    -1,   131,    -1,    67,    -1,    68,    -1,
     869     352,    -1,   214,    -1,   214,   343,    -1,   352,    -1,   357,
     870      -1,   214,    -1,   214,   331,    -1,    -1,   123,   265,    -1,
     871     155,    -1,   106,   266,   358,   107,    -1,   265,    -1,   267,
     872     265,    -1,   266,   108,   265,    -1,   266,   108,   267,   265,
     873      -1,   268,   109,    -1,   261,   109,    -1,   269,    -1,   268,
     874     269,    -1,   105,   261,    -1,   103,   126,   155,   127,   104,
     875      -1,   103,   126,   296,   127,   104,    -1,   103,   126,   154,
     876      89,   154,   127,   104,    -1,   105,   103,   126,   138,   127,
     877     104,    -1,   271,    -1,   220,   271,    -1,   270,   222,    -1,
     878     270,   222,   216,    -1,    68,   101,   278,   102,    -1,   216,
     879      68,   101,   278,   102,    -1,   271,   217,    -1,   273,   359,
     880      -1,   272,   108,   273,   359,    -1,    -1,   275,   261,   274,
     881     276,    -1,   214,   322,    -1,    32,    -1,    34,    -1,    33,
     882      -1,    -1,   276,   277,    -1,   121,   261,   101,   278,   102,
     883      -1,   121,   106,   126,   284,   107,    -1,   121,   101,   126,
     884     272,   127,   102,   106,   126,   284,   107,   101,   278,   102,
     885      -1,   263,    -1,   155,    -1,   278,   108,   263,    -1,   278,
     886     108,   155,    -1,    32,   280,    -1,   221,    32,   280,    -1,
     887     279,   108,   280,    -1,   281,   276,    -1,   281,   276,   123,
     888     263,    -1,   261,    -1,   260,   101,   126,   272,   127,   102,
     889      -1,    35,   261,   101,   126,   272,   127,   102,   106,   107,
     890      -1,    -1,    35,   261,   101,   126,   272,   127,   102,   106,
     891     283,   284,   107,    -1,   285,    -1,   284,   126,   285,    -1,
     892     286,   127,   124,    -1,   287,   127,   124,    -1,   204,    -1,
     893     206,    -1,   286,   127,   108,   126,   259,    -1,   214,   295,
     894      -1,   287,   127,   108,   126,   295,    -1,    -1,   289,    -1,
     895     291,    -1,   289,   126,   291,    -1,    -1,   289,    -1,   201,
     896      -1,   293,    -1,   189,    -1,    -1,     5,    75,   292,   106,
     897     290,   107,    -1,    38,   291,    -1,   294,    -1,   309,   164,
     898      -1,   313,   126,   196,   164,    -1,   205,   164,    -1,   213,
     899     309,   164,    -1,   216,   309,   164,    -1,   220,   309,   164,
     900      -1,   220,   216,   309,   164,    -1,   213,   313,   126,   196,
     901     164,    -1,   216,   313,   126,   196,   164,    -1,   220,   313,
     902     126,   196,   164,    -1,   220,   216,   313,   126,   196,   164,
     903      -1,   304,    -1,   309,    -1,   317,    -1,   154,   115,   154,
     904      -1,    -1,    57,   101,   133,   102,   298,    -1,    -1,   299,
     905      -1,   300,    -1,   299,   300,    -1,    37,   101,   101,   301,
     906     102,   102,    -1,   302,    -1,   301,   108,   302,    -1,    -1,
     907     303,    -1,   303,   101,   161,   102,    -1,   259,    -1,   223,
     908      -1,   224,    -1,   217,    -1,   305,   298,    -1,   306,    -1,
     909     307,   298,    -1,   308,   298,    -1,   129,    -1,   101,   305,
     910     102,    -1,   111,   304,    -1,   111,   216,   304,    -1,   101,
     911     306,   102,    -1,   305,   335,    -1,   101,   306,   102,   335,
     912      -1,   101,   307,   102,   336,    -1,   101,   307,   102,    -1,
     913     101,   306,   102,   101,   126,   251,   127,   102,    -1,   101,
     914     308,   102,    -1,   310,   298,    -1,   311,    -1,   312,   298,
     915      -1,   305,   101,   126,   251,   127,   102,    -1,   101,   311,
     916     102,   101,   126,   251,   127,   102,    -1,   101,   310,   102,
     917      -1,   111,   309,    -1,   111,   216,   309,    -1,   101,   311,
     918     102,    -1,   101,   311,   102,   335,    -1,   101,   312,   102,
     919     336,    -1,   101,   312,   102,    -1,   314,    -1,   315,    -1,
     920     316,    -1,   305,   101,   258,   102,    -1,   101,   315,   102,
     921     101,   258,   102,    -1,   101,   314,   102,    -1,   111,   313,
     922      -1,   111,   216,   313,    -1,   101,   315,   102,    -1,   101,
     923     315,   102,   335,    -1,   101,   316,   102,   336,    -1,   101,
     924     316,   102,    -1,   318,   298,    -1,   319,    -1,   320,   298,
     925      -1,   321,   298,    -1,    67,    -1,   101,   318,   102,    -1,
     926     111,   317,    -1,   111,   216,   317,    -1,   101,   319,   102,
     927      -1,   318,   335,    -1,   101,   319,   102,   335,    -1,   101,
     928     320,   102,   336,    -1,   101,   320,   102,    -1,   318,   101,
     929     126,   251,   127,   102,    -1,   101,   319,   102,   101,   126,
     930     251,   127,   102,    -1,   101,   321,   102,    -1,   305,   298,
     931      -1,   323,    -1,   324,   298,    -1,   325,   298,    -1,   111,
     932     322,    -1,   111,   216,   322,    -1,   101,   323,   102,    -1,
     933     305,   341,    -1,   101,   323,   102,   335,    -1,   101,   324,
     934     102,   336,    -1,   101,   324,   102,    -1,   305,   101,   126,
     935     251,   127,   102,    -1,   101,   323,   102,   101,   126,   251,
     936     127,   102,    -1,   101,   325,   102,    -1,   327,   298,    -1,
     937     328,    -1,   329,   298,    -1,   330,   298,    -1,    67,    -1,
     938     111,   326,    -1,   111,   216,   326,    -1,   101,   328,   102,
     939      -1,   327,   341,    -1,   101,   328,   102,   341,    -1,   327,
     940     101,   126,   251,   127,   102,    -1,   101,   328,   102,   101,
     941     126,   251,   127,   102,    -1,   332,    -1,   333,   298,    -1,
     942     334,   298,    -1,   111,    -1,   111,   216,    -1,   111,   331,
     943      -1,   111,   216,   331,    -1,   101,   332,   102,    -1,   335,
     944      -1,   101,   332,   102,   335,    -1,   101,   333,   102,   336,
     945      -1,   101,   333,   102,    -1,   101,   126,   251,   127,   102,
     946      -1,   101,   332,   102,   101,   126,   251,   127,   102,    -1,
     947     101,   334,   102,    -1,   103,   126,   127,   104,    -1,   103,
     948     126,   127,   104,   336,    -1,   336,    -1,   103,   126,   155,
     949     127,   104,    -1,   103,   126,   111,   127,   104,    -1,   336,
     950     103,   126,   155,   127,   104,    -1,   336,   103,   126,   111,
     951     127,   104,    -1,   338,    -1,   339,   298,    -1,   340,   298,
     952      -1,   111,    -1,   111,   216,    -1,   111,   337,    -1,   111,
     953     216,   337,    -1,   101,   338,   102,    -1,   341,    -1,   101,
     954     338,   102,   341,    -1,   101,   339,   102,   336,    -1,   101,
     955     339,   102,    -1,   101,   126,   251,   127,   102,    -1,   101,
     956     338,   102,   101,   126,   251,   127,   102,    -1,   101,   340,
     957     102,    -1,   342,    -1,   342,   336,    -1,   336,    -1,   103,
     958     126,   127,   104,    -1,   103,   126,   216,   111,   127,   104,
     959      -1,   103,   126,   216,   127,   104,    -1,   103,   126,   216,
     960     155,   127,   104,    -1,   103,   126,     7,   215,   155,   127,
     961     104,    -1,   103,   126,   216,     7,   155,   127,   104,    -1,
     962     344,    -1,   345,   298,    -1,   346,   298,    -1,   111,    -1,
     963     111,   216,    -1,   111,   343,    -1,   111,   216,   343,    -1,
     964     101,   344,   102,    -1,   335,    -1,   101,   344,   102,   335,
     965      -1,   101,   345,   102,   336,    -1,   101,   345,   102,    -1,
     966     101,   344,   102,   101,   126,   251,   127,   102,    -1,   101,
     967     346,   102,    -1,   348,    -1,   356,    -1,   216,   356,    -1,
     968     349,    -1,   350,    -1,   111,   214,    -1,   216,   111,   214,
     969      -1,   111,   357,    -1,   216,   111,   357,    -1,   111,   347,
     970      -1,   216,   111,   347,    -1,   103,   126,   127,   104,   214,
     971      -1,   351,   214,    -1,   103,   126,   127,   104,   336,   214,
     972      -1,   351,   336,   214,    -1,   336,   214,    -1,   103,   126,
     973     127,   104,   349,    -1,   351,   349,    -1,   103,   126,   127,
     974     104,   336,   349,    -1,   351,   336,   349,    -1,   336,   349,
     975      -1,   103,   126,   216,   111,   127,   104,    -1,   103,   126,
     976     216,   155,   127,   104,    -1,   103,   126,   220,   155,   127,
     977     104,    -1,   103,   126,   220,   216,   155,   127,   104,    -1,
     978     356,    -1,   216,   356,    -1,   353,    -1,   354,    -1,   355,
     979      -1,   111,   214,    -1,   216,   111,   214,    -1,   111,   357,
     980      -1,   216,   111,   357,    -1,   111,   352,    -1,   216,   111,
     981     352,    -1,   103,   126,   127,   104,   214,    -1,   103,   126,
     982     127,   104,   336,   214,    -1,   336,   214,    -1,   103,   126,
     983     127,   104,   354,    -1,   103,   126,   127,   104,   336,   354,
     984      -1,   336,   354,    -1,   103,   126,   250,   127,   104,    -1,
     985     103,   126,   127,   104,   101,   247,   102,    -1,   356,   101,
     986     126,   247,   127,   102,    -1,   207,   101,   126,   247,   127,
     987     102,    -1,    -1,   108,    -1,    -1,   123,   155,    -1
    989988};
    990989
     
    992991static const yytype_uint16 yyrline[] =
    993992{
    994        0,   279,   279,   285,   294,   295,   296,   300,   301,   302,
    995      306,   307,   311,   315,   316,   320,   321,   327,   329,   331,
    996      333,   335,   337,   342,   343,   349,   351,   353,   354,   356,
    997      357,   359,   362,   367,   368,   374,   375,   376,   381,   383,
    998      388,   389,   393,   395,   397,   399,   401,   406,   407,   409,
    999      411,   413,   415,   417,   423,   425,   427,   429,   431,   433,
    1000      435,   437,   442,   443,   444,   445,   449,   450,   452,   457,
    1001      458,   460,   462,   467,   468,   470,   475,   476,   478,   483,
    1002      484,   486,   488,   490,   495,   496,   498,   503,   504,   509,
    1003      510,   515,   516,   521,   522,   527,   528,   533,   534,   536,
    1004      538,   543,   548,   549,   551,   553,   559,   560,   566,   568,
    1005      570,   572,   577,   578,   583,   584,   585,   586,   587,   588,
    1006      589,   590,   591,   592,   596,   597,   603,   604,   610,   611,
    1007      612,   613,   614,   615,   616,   617,   621,   626,   628,   638,
    1008      639,   644,   646,   648,   650,   654,   655,   660,   665,   668,
    1009      670,   672,   677,   679,   687,   688,   690,   694,   695,   700,
    1010      701,   706,   707,   711,   716,   717,   721,   723,   729,   730,
    1011      734,   736,   738,   740,   746,   747,   751,   752,   756,   758,
    1012      760,   765,   767,   772,   774,   778,   781,   785,   788,   792,
    1013      794,   796,   801,   803,   805,   814,   816,   818,   823,   825,
    1014      830,   843,   844,   849,   851,   856,   860,   862,   864,   866,
    1015      870,   872,   876,   877,   881,   885,   886,   892,   894,   898,
    1016      899,   904,   906,   910,   911,   915,   917,   921,   922,   926,
    1017      927,   931,   932,   947,   948,   949,   950,   951,   955,   960,
    1018      967,   977,   982,   987,   995,  1000,  1005,  1010,  1015,  1023,
    1019     1028,  1040,  1045,  1052,  1054,  1061,  1066,  1071,  1082,  1087,
    1020     1092,  1097,  1102,  1110,  1115,  1123,  1124,  1125,  1126,  1132,
    1021     1137,  1145,  1146,  1147,  1148,  1152,  1153,  1154,  1155,  1160,
    1022     1161,  1170,  1171,  1176,  1177,  1182,  1184,  1186,  1188,  1190,
    1023     1193,  1192,  1204,  1205,  1207,  1217,  1218,  1223,  1227,  1229,
    1024     1231,  1233,  1235,  1237,  1239,  1241,  1246,  1248,  1250,  1252,
    1025     1254,  1256,  1258,  1260,  1262,  1264,  1266,  1268,  1274,  1275,
    1026     1277,  1279,  1281,  1286,  1287,  1293,  1294,  1296,  1298,  1303,
    1027     1305,  1307,  1309,  1314,  1315,  1317,  1319,  1324,  1325,  1327,
    1028     1332,  1333,  1335,  1337,  1342,  1344,  1346,  1351,  1352,  1356,
    1029     1358,  1360,  1362,  1364,  1366,  1368,  1370,  1372,  1375,  1380,
    1030     1382,  1387,  1389,  1394,  1395,  1397,  1398,  1403,  1404,  1406,
    1031     1408,  1413,  1415,  1421,  1422,  1424,  1427,  1430,  1435,  1436,
    1032     1441,  1446,  1450,  1452,  1454,  1459,  1461,  1467,  1468,  1476,
    1033     1477,  1481,  1482,  1483,  1485,  1487,  1494,  1495,  1497,  1499,
    1034     1504,  1505,  1511,  1512,  1516,  1517,  1522,  1523,  1524,  1526,
    1035     1534,  1535,  1537,  1540,  1542,  1546,  1547,  1548,  1550,  1552,
    1036     1556,  1561,  1569,  1570,  1579,  1581,  1586,  1587,  1588,  1592,
    1037     1593,  1594,  1598,  1599,  1604,  1605,  1606,  1611,  1612,  1613,
    1038     1614,  1620,  1621,  1625,  1626,  1630,  1631,  1632,  1633,  1648,
    1039     1649,  1654,  1655,  1660,  1662,  1665,  1667,  1669,  1692,  1693,
    1040     1695,  1697,  1702,  1704,  1706,  1711,  1712,  1718,  1717,  1721,
    1041     1725,  1727,  1729,  1735,  1736,  1741,  1746,  1748,  1753,  1755,
    1042     1756,  1758,  1763,  1765,  1767,  1772,  1774,  1779,  1784,  1792,
    1043     1798,  1797,  1811,  1812,  1817,  1818,  1822,  1827,  1832,  1840,
    1044     1845,  1856,  1857,  1868,  1869,  1875,  1876,  1880,  1881,  1882,
    1045     1885,  1884,  1895,  1900,  1906,  1912,  1921,  1927,  1933,  1939,
    1046     1945,  1953,  1959,  1967,  1973,  1982,  1983,  1984,  1988,  1992,
    1047     1994,  1997,  1999,  2003,  2004,  2008,  2012,  2013,  2016,  2018,
    1048     2019,  2023,  2024,  2025,  2026,  2060,  2061,  2062,  2063,  2067,
    1049     2072,  2077,  2079,  2081,  2086,  2088,  2090,  2092,  2097,  2099,
    1050     2109,  2110,  2111,  2115,  2117,  2119,  2124,  2126,  2128,  2133,
    1051     2135,  2137,  2146,  2147,  2148,  2152,  2154,  2156,  2161,  2163,
    1052     2165,  2170,  2172,  2174,  2189,  2190,  2191,  2192,  2196,  2201,
    1053     2206,  2208,  2210,  2215,  2217,  2219,  2221,  2226,  2228,  2230,
    1054     2240,  2241,  2242,  2243,  2247,  2249,  2251,  2256,  2258,  2260,
    1055     2262,  2267,  2269,  2271,  2302,  2303,  2304,  2305,  2309,  2317,
    1056     2319,  2321,  2326,  2328,  2333,  2335,  2349,  2350,  2351,  2355,
    1057     2357,  2359,  2361,  2363,  2368,  2369,  2371,  2373,  2378,  2380,
    1058     2382,  2388,  2390,  2392,  2396,  2398,  2400,  2402,  2416,  2417,
    1059     2418,  2422,  2424,  2426,  2428,  2430,  2435,  2436,  2438,  2440,
    1060     2445,  2447,  2449,  2455,  2456,  2458,  2467,  2470,  2472,  2475,
    1061     2477,  2479,  2492,  2493,  2494,  2498,  2500,  2502,  2504,  2506,
    1062     2511,  2512,  2514,  2516,  2521,  2523,  2531,  2532,  2533,  2538,
    1063     2539,  2543,  2545,  2547,  2549,  2551,  2553,  2560,  2562,  2564,
    1064     2566,  2568,  2570,  2572,  2574,  2576,  2578,  2583,  2585,  2587,
    1065     2592,  2618,  2619,  2621,  2625,  2626,  2630,  2632,  2634,  2636,
    1066     2638,  2640,  2647,  2649,  2651,  2653,  2655,  2657,  2662,  2667,
    1067     2669,  2671,  2689,  2691,  2696,  2697
     993       0,   282,   282,   288,   298,   299,   300,   304,   305,   306,
     994     310,   311,   315,   319,   320,   324,   325,   331,   333,   335,
     995     337,   339,   341,   346,   347,   353,   355,   357,   358,   360,
     996     361,   363,   366,   371,   372,   378,   379,   380,   385,   387,
     997     392,   393,   397,   399,   401,   403,   405,   410,   411,   413,
     998     415,   417,   419,   421,   427,   429,   431,   433,   435,   437,
     999     439,   441,   446,   447,   448,   449,   453,   454,   456,   461,
     1000     462,   464,   466,   471,   472,   474,   479,   480,   482,   487,
     1001     488,   490,   492,   494,   499,   500,   502,   507,   508,   513,
     1002     514,   519,   520,   525,   526,   531,   532,   537,   538,   540,
     1003     542,   547,   552,   553,   555,   557,   563,   564,   570,   572,
     1004     574,   576,   581,   582,   587,   588,   589,   590,   591,   592,
     1005     593,   594,   595,   596,   600,   601,   607,   608,   614,   615,
     1006     616,   617,   618,   619,   620,   621,   625,   630,   632,   642,
     1007     643,   648,   650,   652,   654,   658,   659,   664,   669,   672,
     1008     674,   676,   682,   684,   692,   693,   695,   699,   700,   705,
     1009     706,   711,   712,   716,   721,   722,   726,   728,   734,   735,
     1010     739,   741,   743,   745,   751,   752,   756,   757,   761,   763,
     1011     765,   770,   772,   777,   779,   783,   787,   791,   795,   799,
     1012     801,   803,   808,   810,   812,   821,   824,   826,   831,   833,
     1013     838,   851,   852,   857,   859,   864,   868,   870,   872,   874,
     1014     878,   880,   884,   885,   889,   893,   894,   900,   902,   906,
     1015     907,   912,   914,   918,   919,   923,   925,   929,   930,   934,
     1016     935,   939,   940,   956,   957,   958,   959,   960,   964,   969,
     1017     976,   986,   991,   996,  1004,  1009,  1014,  1019,  1024,  1032,
     1018    1037,  1050,  1056,  1063,  1065,  1072,  1077,  1082,  1094,  1099,
     1019    1104,  1109,  1114,  1122,  1127,  1135,  1136,  1137,  1138,  1144,
     1020    1149,  1157,  1158,  1159,  1160,  1164,  1165,  1166,  1167,  1172,
     1021    1173,  1183,  1184,  1189,  1190,  1195,  1197,  1199,  1201,  1203,
     1022    1206,  1205,  1217,  1218,  1220,  1230,  1231,  1236,  1240,  1242,
     1023    1244,  1246,  1248,  1250,  1252,  1254,  1259,  1261,  1263,  1265,
     1024    1267,  1269,  1271,  1273,  1275,  1277,  1279,  1281,  1287,  1288,
     1025    1290,  1292,  1294,  1299,  1300,  1306,  1307,  1309,  1311,  1316,
     1026    1318,  1320,  1322,  1327,  1328,  1330,  1332,  1337,  1338,  1340,
     1027    1345,  1346,  1348,  1350,  1355,  1357,  1359,  1364,  1365,  1369,
     1028    1371,  1373,  1375,  1377,  1379,  1381,  1383,  1386,  1391,  1393,
     1029    1398,  1400,  1405,  1406,  1408,  1409,  1414,  1415,  1417,  1419,
     1030    1424,  1426,  1432,  1433,  1435,  1438,  1441,  1446,  1447,  1452,
     1031    1457,  1461,  1463,  1465,  1470,  1472,  1478,  1479,  1487,  1488,
     1032    1492,  1493,  1494,  1496,  1498,  1506,  1507,  1509,  1511,  1516,
     1033    1517,  1523,  1524,  1528,  1529,  1534,  1535,  1536,  1538,  1547,
     1034    1548,  1550,  1553,  1555,  1559,  1560,  1561,  1563,  1565,  1569,
     1035    1574,  1582,  1583,  1592,  1594,  1599,  1600,  1601,  1605,  1606,
     1036    1607,  1611,  1612,  1613,  1617,  1618,  1619,  1624,  1625,  1626,
     1037    1627,  1633,  1634,  1638,  1639,  1643,  1644,  1645,  1646,  1661,
     1038    1662,  1667,  1668,  1672,  1674,  1678,  1680,  1682,  1706,  1707,
     1039    1709,  1711,  1716,  1718,  1720,  1725,  1726,  1732,  1731,  1735,
     1040    1739,  1741,  1743,  1749,  1750,  1755,  1760,  1762,  1767,  1769,
     1041    1770,  1772,  1777,  1779,  1781,  1786,  1788,  1793,  1798,  1806,
     1042    1812,  1811,  1825,  1826,  1831,  1832,  1836,  1841,  1846,  1854,
     1043    1859,  1870,  1871,  1882,  1883,  1889,  1890,  1894,  1895,  1896,
     1044    1899,  1898,  1909,  1914,  1921,  1927,  1936,  1942,  1948,  1954,
     1045    1960,  1968,  1974,  1982,  1988,  1997,  1998,  1999,  2003,  2007,
     1046    2009,  2012,  2014,  2018,  2019,  2023,  2027,  2028,  2031,  2033,
     1047    2034,  2038,  2039,  2040,  2041,  2076,  2077,  2078,  2079,  2083,
     1048    2088,  2093,  2095,  2097,  2102,  2104,  2106,  2108,  2113,  2115,
     1049    2125,  2126,  2127,  2131,  2133,  2135,  2140,  2142,  2144,  2149,
     1050    2151,  2153,  2162,  2163,  2164,  2168,  2170,  2172,  2177,  2179,
     1051    2181,  2186,  2188,  2190,  2205,  2206,  2207,  2208,  2212,  2217,
     1052    2222,  2224,  2226,  2231,  2233,  2235,  2237,  2242,  2244,  2246,
     1053    2256,  2257,  2258,  2259,  2263,  2265,  2267,  2272,  2274,  2276,
     1054    2278,  2283,  2285,  2287,  2318,  2319,  2320,  2321,  2325,  2333,
     1055    2335,  2337,  2342,  2344,  2349,  2351,  2365,  2366,  2367,  2371,
     1056    2373,  2375,  2377,  2379,  2384,  2385,  2387,  2389,  2394,  2396,
     1057    2398,  2404,  2406,  2408,  2412,  2414,  2416,  2418,  2432,  2433,
     1058    2434,  2438,  2440,  2442,  2444,  2446,  2451,  2452,  2454,  2456,
     1059    2461,  2463,  2465,  2471,  2472,  2474,  2484,  2487,  2489,  2492,
     1060    2494,  2496,  2509,  2510,  2511,  2515,  2517,  2519,  2521,  2523,
     1061    2528,  2529,  2531,  2533,  2538,  2540,  2548,  2549,  2550,  2555,
     1062    2556,  2560,  2562,  2564,  2566,  2568,  2570,  2577,  2579,  2581,
     1063    2583,  2585,  2587,  2589,  2591,  2593,  2595,  2600,  2602,  2604,
     1064    2609,  2635,  2636,  2638,  2642,  2643,  2647,  2649,  2651,  2653,
     1065    2655,  2657,  2664,  2666,  2668,  2670,  2672,  2674,  2679,  2684,
     1066    2686,  2688,  2708,  2710,  2715,  2716
    10681067};
    10691068#endif
     
    12401239     228,   228,   228,   229,   229,   229,   229,   230,   230,   230,
    12411240     231,   231,   231,   231,   232,   232,   232,   233,   233,   234,
    1242      234,   234,   234,   234,   234,   234,   234,   234,   234,   235,
    1243      235,   236,   236,   237,   237,   237,   237,   238,   238,   238,
    1244      238,   239,   239,   240,   240,   240,   240,   240,   241,   241,
    1245      242,   243,   244,   244,   244,   245,   245,   246,   246,   247,
    1246      247,   248,   248,   248,   248,   248,   249,   249,   249,   249,
    1247      250,   250,   251,   251,   252,   252,   253,   253,   253,   253,
    1248      254,   254,   254,   254,   254,   255,   255,   255,   255,   255,
    1249      256,   256,   257,   257,   258,   258,   259,   259,   259,   260,
    1250      260,   260,   261,   261,   262,   262,   262,   263,   263,   263,
     1241     234,   234,   234,   234,   234,   234,   234,   234,   235,   235,
     1242     236,   236,   237,   237,   237,   237,   238,   238,   238,   238,
     1243     239,   239,   240,   240,   240,   240,   240,   241,   241,   242,
     1244     243,   244,   244,   244,   245,   245,   246,   246,   247,   247,
     1245     248,   248,   248,   248,   248,   249,   249,   249,   249,   250,
     1246     250,   251,   251,   252,   252,   253,   253,   253,   253,   254,
     1247     254,   254,   254,   254,   255,   255,   255,   255,   255,   256,
     1248     256,   257,   257,   258,   258,   259,   259,   259,   260,   260,
     1249     260,   261,   261,   261,   262,   262,   262,   263,   263,   263,
    12511250     263,   264,   264,   265,   265,   266,   266,   266,   266,   267,
    12521251     267,   268,   268,   269,   269,   269,   269,   269,   270,   270,
     
    13191318       4,     4,     4,     1,     2,     2,     3,     1,     2,     2,
    13201319       1,     2,     2,     3,     1,     2,     2,     1,     1,     4,
    1321        2,     5,     9,     7,    10,    12,     5,     7,    13,     2,
    1322        2,     1,     2,     2,     3,     2,     3,     1,     2,     3,
    1323        2,     2,     4,     0,     1,     2,     2,     1,     0,     1,
    1324        2,     2,     5,     6,     2,     2,     4,     0,     2,     0,
    1325        1,     1,     1,     5,     5,     5,     1,     5,     5,     9,
    1326        1,     5,     0,     1,     1,     5,     1,     1,     5,     5,
    1327        1,     3,     3,     4,     1,     1,     1,     1,     2,     1,
    1328        3,     3,     1,     2,     1,     3,     1,     1,     1,     1,
     1320       2,     5,     9,     7,    10,    12,     7,    13,     2,     2,
     1321       1,     2,     2,     3,     2,     3,     1,     2,     3,     2,
     1322       2,     4,     0,     1,     2,     2,     1,     0,     1,     2,
     1323       2,     5,     6,     2,     2,     4,     0,     2,     0,     1,
     1324       1,     1,     5,     5,     5,     1,     5,     5,     9,     1,
     1325       5,     0,     1,     1,     5,     1,     1,     5,     5,     1,
     1326       3,     3,     4,     1,     1,     1,     1,     2,     1,     3,
     1327       3,     1,     2,     1,     3,     1,     1,     1,     1,     1,
    13291328       1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
    13301329       2,     0,     2,     1,     4,     1,     2,     3,     4,     2,
     
    13771376     573,   574,   279,     0,   714,   715,     0,    12,   279,     0,
    13781377     255,   256,     0,   280,   275,   276,   277,   278,   510,   290,
    1379      381,   532,   533,   359,   360,    12,   433,   431,    11,   429,
    1380      432,     0,   487,   482,   473,   433,     0,     0,   512,     0,
    1381      280,   279,     0,     0,     0,     0,     0,     0,     0,     0,
    1382      279,     2,     0,   716,   280,   566,   578,   720,   713,   711,
    1383      718,     0,     0,   238,     2,     0,   516,   427,   428,   426,
    1384        0,     0,     0,     0,   531,     0,   588,     0,     0,   529,
    1385      525,   531,   546,   531,   531,   526,     2,   527,   531,   585,
    1386      531,   531,     0,     0,     0,   279,   279,   298,   345,     0,
    1387        2,   279,   245,   282,   293,   326,   338,     0,     2,     0,
    1388      441,   246,   280,   319,   334,   341,   459,     0,     2,     0,
    1389      296,   320,   327,   328,     0,   335,   339,   342,   346,     0,
    1390        2,   279,   350,     0,   384,   460,   464,     0,     0,     0,
     1378     380,   532,   533,   358,   359,    12,   432,   433,    11,   428,
     1379     431,     0,   487,   482,   473,   432,   433,     0,     0,   512,
     1380       0,   280,   279,     0,     0,     0,     0,     0,     0,     0,
     1381       0,   279,     2,     0,   716,   280,   566,   578,   720,   713,
     1382     711,   718,     0,     0,   238,     2,     0,   516,   426,   427,
     1383     425,     0,     0,     0,     0,   531,     0,   588,     0,     0,
     1384     529,   525,   531,   546,   531,   531,   526,     2,   527,   531,
     1385     585,   531,   531,     0,     0,     0,   279,   279,   298,   345,
     1386       0,     2,   279,   245,   282,   293,   326,   338,     0,     2,
     1387       0,   441,   246,   280,   319,   334,   341,   459,     0,     2,
     1388       0,   296,   320,   327,   328,     0,   335,   339,   342,   346,
     1389       2,   279,   350,     0,   383,   460,   464,     0,     0,     0,
    13911390       1,   279,     2,   514,   560,   562,   279,     2,   724,   280,
    13921391     727,   529,   529,   280,     0,     0,     0,   258,   531,   526,
     
    13971396      76,    79,    84,    87,    89,    91,    93,    95,    97,   102,
    13981397     479,   734,   439,   478,     0,   437,   438,     0,   550,   565,
    1399      568,   571,   577,   580,   583,     2,   279,     0,     3,   414,
    1400        0,   422,   280,   279,   292,   318,   272,   333,   340,     3,
    1401        3,   396,   400,   410,   415,   458,   279,   416,   689,   690,
    1402      279,   417,   419,   279,     2,   567,   579,   712,     2,     2,
     1398     568,   571,   577,   580,   583,     2,   279,     0,     3,   413,
     1399       0,   421,   280,   279,   292,   318,   272,   333,   340,     3,
     1400       3,   395,   399,   409,   414,   458,   279,   415,   689,   690,
     1401     279,   416,   418,   279,     2,   567,   579,   712,     2,     2,
    14031402     233,     2,     0,     0,   443,   442,   137,     2,     2,   235,
    14041403       2,     2,   234,     2,   266,     2,   267,     0,   265,     0,
     
    14081407       0,   280,   279,   279,   717,   721,   719,   518,   279,   529,
    14091408     239,   247,   294,     0,     2,   519,   279,   483,   321,   322,
    1410      268,   336,   343,   279,   279,   279,     2,   373,   279,   361,
    1411        0,     0,   367,   711,   279,   732,   387,     0,   461,   484,
    1412      236,   237,   504,   279,   424,     0,   279,   221,     0,     2,
    1413      223,     0,   280,     0,   241,     2,   242,   263,     0,     0,
    1414        2,   279,   529,   279,   470,   472,   471,     0,     0,   734,
    1415        0,   279,     0,   279,   474,   279,   544,   542,   543,   541,
    1416        0,   536,   539,    66,   101,     0,   279,    54,    50,   279,
    1417       59,   279,   279,    48,    49,    61,     2,   124,     0,     0,
    1418      435,     0,   434,   279,    52,    53,    16,     0,    30,    31,
    1419       35,     2,     0,   114,   115,   116,   117,   118,   119,   120,
    1420      121,   122,   123,     0,     0,    51,     0,     0,     0,     0,
     1409     268,   336,   343,   279,   279,     2,   372,   279,   360,     0,
     1410       0,   366,   711,   279,   732,   386,     0,   461,   484,   236,
     1411     237,   504,   279,   423,     0,   279,   221,     0,     2,   223,
     1412       0,   280,     0,   241,     2,   242,   263,     0,     0,     2,
     1413     279,   529,   279,   470,   472,   471,     0,     0,   734,     0,
     1414     279,     0,   279,   474,   279,   544,   542,   543,   541,     0,
     1415     536,   539,    66,   101,     0,   279,    54,    50,   279,    59,
     1416     279,   279,    48,    49,    61,     2,   124,     0,     0,   435,
     1417       0,   434,   279,    52,    53,    16,     0,    30,    31,    35,
     1418       2,     0,   114,   115,   116,   117,   118,   119,   120,   121,
     1419     122,   123,     0,     0,    51,     0,     0,     0,     0,     0,
    14211420       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1422        0,     0,     0,     0,     0,     0,   105,     2,   629,   440,
    1423      626,   531,   531,   634,   462,   279,     2,   569,     2,   570,
    1424        0,   581,   582,   279,     2,   279,     0,   691,   280,   695,
    1425      686,   687,   693,   279,     0,   618,     2,     2,   651,   531,
    1426      734,   601,   531,   531,   734,   531,   615,   531,   531,   665,
    1427      423,   648,   531,   531,   656,   663,   279,   418,   280,     0,
    1428        0,   279,   701,   280,   706,   734,   698,   279,   703,   734,
    1429        0,   279,   279,     0,     3,    17,     2,     0,     0,   445,
    1430      732,     0,     0,   451,   225,     0,   279,     0,     0,     0,
    1431      529,   553,   557,   559,   589,   592,   596,   599,   552,   591,
    1432        0,   269,     3,     0,   279,   262,     0,     0,     0,     0,
    1433      260,     0,     2,     0,     0,   243,   520,   279,     0,     0,
    1434      439,     3,     3,     0,     0,   279,     0,     0,   675,   371,
    1435      374,   378,   531,   378,   680,   377,   672,   531,   531,   349,
    1436      362,   370,   363,   531,   365,   368,   279,   733,     0,     0,
    1437      385,   732,   280,     3,   403,     3,   407,   406,   575,     0,
    1438      515,   279,     3,     3,   279,   422,   280,     3,   416,   417,
    1439        2,     0,     0,     0,   469,   291,   279,   465,   467,     3,
    1440        2,     2,     0,   486,     3,     0,   538,   126,     0,   210,
    1441        0,     0,     2,     0,     0,    36,     0,     0,   279,    21,
    1442        0,    22,     0,   675,   436,     0,   106,     0,     3,     2,
    1443       28,     2,     0,    33,     0,     2,    26,   103,   104,    70,
    1444       71,    72,    74,    75,    77,    78,    82,    83,    80,    81,
    1445       85,    86,    88,    90,    92,    94,    96,     0,     0,   735,
    1446      279,     0,     0,     0,   630,   631,   627,   628,   481,   480,
    1447      279,     0,     0,     0,   280,   279,   279,   645,   688,   344,
    1448        0,   722,   279,   725,   644,     2,   279,     0,     0,     0,
    1449        0,     0,     0,     0,     0,     3,   652,   604,   619,   653,
    1450        2,   600,   607,   420,   602,   603,   421,     2,   614,   622,
    1451      616,   617,   649,   650,   664,   692,   696,   694,   734,   253,
    1452        2,   728,     2,   411,   700,   705,   412,   279,     3,   390,
    1453        3,     3,     3,   441,     0,     3,     3,     2,   453,   450,
    1454      733,     0,   446,     2,   449,   452,     0,   279,   226,   248,
    1455        3,   257,   259,     0,   441,     2,   555,   556,     2,   594,
    1456      595,     0,     3,     0,   521,     3,   330,   329,   332,   331,
    1457      463,   279,     0,   522,     0,   523,   356,     2,   629,     0,
    1458        0,   364,   366,     2,     0,     0,     0,     0,     0,   380,
    1459      676,   677,   375,   379,   376,   673,   674,   369,   373,   351,
    1460      387,   382,   388,     0,     0,     0,   425,   224,     0,     0,
    1461        3,     2,   651,   418,     0,   511,     0,   734,   473,     0,
    1462      279,   279,   279,     0,   535,   537,   127,     0,   206,     0,
    1463        0,   211,   212,    55,    60,   279,     0,    58,    57,     0,
    1464        0,   125,   676,     0,    67,    68,   107,   112,     3,   108,
    1465      106,     0,     0,     3,    25,    35,     3,     0,    99,     0,
    1466        3,   633,   637,   640,   632,     3,   576,   108,     2,   279,
    1467        3,     3,   280,     0,     2,     2,   723,   726,     0,     3,
    1468      606,   610,   613,   621,   655,   659,   662,   279,     0,     3,
    1469      605,   620,   654,   279,   279,   413,   279,   279,   279,     0,
    1470        0,     0,     0,   240,   108,     0,   101,     0,     3,     3,
    1471        0,   447,     0,   444,     0,     0,   229,   279,     0,     0,
    1472      126,     0,     0,     0,     0,     0,   126,     0,     0,     0,
    1473        2,     0,     0,     3,   128,   129,     2,   139,   130,   131,
    1474      132,   133,   134,   135,   141,   143,     0,     0,     0,   270,
    1475      279,   279,   531,   641,     0,     0,     0,   524,   630,     0,
    1476        0,   279,   279,   679,   683,   685,   678,   372,   386,   383,
    1477      563,     2,   647,   646,     0,   652,     2,   466,   468,   488,
    1478        3,   496,   497,     0,     2,   492,     3,     3,     0,     0,
    1479      540,     0,     0,   210,     0,     3,    37,   108,   732,   106,
    1480        0,     3,   644,    42,     3,    40,     3,    34,     0,     3,
    1481       98,   100,     0,     2,   635,   636,     0,   697,   279,   702,
    1482      279,     0,     0,     0,     3,   279,   279,   279,   621,     0,
    1483        2,   608,   609,     2,   623,     2,   657,   658,     0,   666,
    1484        0,     3,     0,     3,     3,     3,     3,   398,   397,   401,
    1485        0,   731,     2,     2,   730,   109,     0,     0,     0,     0,
    1486        3,   448,     3,     0,   227,   142,     3,   280,   279,     0,
    1487        0,     0,     0,     2,   187,     0,   185,     0,     0,     0,
    1488        0,     0,     0,   191,     0,   279,   531,   147,   144,   279,
    1489        0,     0,   252,   264,     3,     3,   530,   642,   597,   279,
    1490      279,   279,   353,   357,     0,     2,   681,   682,   279,   251,
    1491      279,     0,   499,   476,   279,     0,     0,   475,   490,     0,
    1492      207,     0,   213,   106,     0,     0,   113,   110,     0,     0,
    1493        0,     0,     0,     0,    24,     0,   638,   279,   564,   699,
    1494      704,   707,   708,   709,     0,     3,     3,   660,   279,   279,
    1495      279,     3,     3,     0,   668,     0,     0,     0,     0,   729,
    1496      279,   279,     3,   528,   109,   455,     0,     0,   230,   280,
    1497        0,     0,     0,     0,   279,   188,   186,     0,   183,   189,
    1498        0,     0,     0,   192,   195,   193,   190,     0,   126,   140,
    1499      138,   228,     0,     0,     0,   279,   279,   108,   279,   405,
    1500      409,   408,     0,   493,     2,   494,     2,   495,   489,   279,
    1501      214,     0,     0,     3,   644,    32,   111,     2,    45,     2,
    1502       43,    41,    29,   109,    27,     3,   710,     0,     0,     3,
    1503        3,     3,     0,     0,   667,   669,   611,   624,   254,     2,
    1504      395,     3,   394,     0,   457,   454,   126,     0,     0,   126,
    1505        3,     0,   126,   184,     0,     2,   200,   194,     0,   108,
    1506      136,   558,   598,     0,   352,   279,     3,     2,     0,     0,
    1507        2,   208,   215,     0,     0,     0,     0,     0,     0,   250,
    1508      249,     0,     0,     0,   670,   671,   279,     0,   456,   148,
    1509        0,     0,     2,   161,   126,   150,     0,   178,     0,   126,
    1510        0,     2,   152,     0,     2,     2,   279,     0,   354,     0,
    1511      279,   498,   500,   491,     0,     0,   111,    38,     3,     3,
    1512      639,   612,   625,   661,   399,   126,   154,   157,     0,   156,
    1513      160,     3,   163,   162,     0,   126,   180,   126,     3,     0,
    1514      279,     0,     2,   279,   279,   684,     2,   209,   216,     0,
    1515        0,     0,   149,     0,     0,   159,   217,   164,     2,   219,
    1516      179,     0,   182,   168,   196,     3,   201,   205,     0,   279,
    1517      355,   279,     0,    39,    46,    44,   155,   158,   126,     0,
    1518      165,   279,   126,   126,     0,   169,     0,     0,   675,   202,
    1519      203,   204,   197,     3,   358,   279,   145,   166,   151,   126,
    1520      220,   181,   176,   174,   170,   153,   126,     0,   676,     0,
    1521        0,   146,   167,   177,   171,   175,   174,   172,     3,     0,
    1522      477,   173,   198,     3,   199
     1421       0,     0,     0,     0,     0,   105,     2,   629,   440,   626,
     1422     531,   531,   634,   462,   279,     2,   569,     2,   570,     0,
     1423     581,   582,   279,     2,   279,     0,   691,   280,   695,   686,
     1424     687,   693,   279,     0,   618,     2,     2,   651,   531,   734,
     1425     601,   531,   531,   734,   531,   615,   531,   531,   665,   422,
     1426     648,   531,   531,   656,   663,   279,   417,   280,     0,     0,
     1427     279,   701,   280,   706,   734,   698,   279,   703,   734,     0,
     1428     279,   279,     0,     3,    17,     2,     0,     0,   445,   732,
     1429       0,     0,   451,   225,     0,   279,     0,     0,     0,   529,
     1430     553,   557,   559,   589,   592,   596,   599,   552,   591,     0,
     1431     269,     3,     0,   279,   262,     0,     0,     0,     0,   260,
     1432       0,     2,     0,     0,   243,   520,   279,     0,   439,     3,
     1433       3,     0,     0,   279,     0,     0,   675,   370,   373,   377,
     1434     531,   377,   680,   376,   672,   531,   531,   349,   361,   369,
     1435     362,   531,   364,   367,   279,   733,     0,     0,   384,   732,
     1436     280,     3,   402,     3,   406,   405,   575,     0,   515,   279,
     1437       3,     3,   279,   421,   280,     3,   415,   416,     2,     0,
     1438       0,     0,   469,   291,   279,   465,   467,     3,     2,     2,
     1439       0,   486,     3,     0,   538,   126,     0,   210,     0,     0,
     1440       2,     0,     0,    36,     0,     0,   279,    21,     0,    22,
     1441       0,   675,   436,     0,   106,     0,     3,     2,    28,     2,
     1442       0,    33,     0,     2,    26,   103,   104,    70,    71,    72,
     1443      74,    75,    77,    78,    82,    83,    80,    81,    85,    86,
     1444      88,    90,    92,    94,    96,     0,     0,   735,   279,     0,
     1445       0,     0,   630,   631,   627,   628,   481,   480,   279,     0,
     1446       0,     0,   280,   279,   279,   645,   688,   344,     0,   722,
     1447     279,   725,   644,     2,   279,     0,     0,     0,     0,     0,
     1448       0,     0,     0,     3,   652,   604,   619,   653,     2,   600,
     1449     607,   419,   602,   603,   420,     2,   614,   622,   616,   617,
     1450     649,   650,   664,   692,   696,   694,   734,   253,     2,   728,
     1451       2,   410,   700,   705,   411,   279,     3,   389,     3,     3,
     1452       3,   441,     0,     3,     3,     2,   453,   450,   733,     0,
     1453     446,     2,   449,   452,     0,   279,   226,   248,     3,   257,
     1454     259,     0,   441,     2,   555,   556,     2,   594,   595,     0,
     1455       3,     0,   521,     3,   330,   329,   332,   331,   463,   279,
     1456       0,   522,     0,   523,     2,   629,     0,     0,   363,   365,
     1457       2,     0,     0,     0,     0,     0,   379,   676,   677,   374,
     1458     378,   375,   673,   674,   368,   372,   351,   386,   381,   387,
     1459       0,     0,     0,   424,   224,     0,     0,     3,     2,   651,
     1460     417,     0,   511,     0,   734,   473,     0,   279,   279,   279,
     1461       0,   535,   537,   127,     0,   206,     0,     0,   211,   212,
     1462      55,    60,   279,     0,    58,    57,     0,     0,   125,   676,
     1463       0,    67,    68,   107,   112,     3,   108,   106,     0,     0,
     1464       3,    25,    35,     3,     0,    99,     0,     3,   633,   637,
     1465     640,   632,     3,   576,   108,     2,   279,     3,     3,   280,
     1466       0,     2,     2,   723,   726,     0,     3,   606,   610,   613,
     1467     621,   655,   659,   662,   279,     0,     3,   605,   620,   654,
     1468     279,   279,   412,   279,   279,   279,     0,     0,     0,     0,
     1469     240,   108,     0,   101,     0,     3,     3,     0,   447,     0,
     1470     444,     0,     0,   229,   279,     0,     0,   126,     0,     0,
     1471       0,     0,     0,   126,     0,     0,     0,     2,     0,     0,
     1472       3,   128,   129,     2,   139,   130,   131,   132,   133,   134,
     1473     135,   141,   143,     0,     0,     0,   270,   279,   279,   531,
     1474     641,     0,     0,     0,   524,   630,     0,     0,   279,   279,
     1475     679,   683,   685,   678,   371,   385,   382,   563,     2,   647,
     1476     646,     0,   652,     2,   466,   468,   488,     3,   496,   497,
     1477       0,     2,   492,     3,     3,     0,     0,   540,     0,     0,
     1478     210,     0,     3,    37,   108,   732,   106,     0,     3,   644,
     1479      42,     3,    40,     3,    34,     0,     3,    98,   100,     0,
     1480       2,   635,   636,     0,   697,   279,   702,   279,     0,     0,
     1481       0,     3,   279,   279,   279,   621,     0,     2,   608,   609,
     1482       2,   623,     2,   657,   658,     0,   666,     0,     3,     0,
     1483       3,     3,     3,     3,   397,   396,   400,     0,   731,     2,
     1484       2,   730,   109,     0,     0,     0,     0,     3,   448,     3,
     1485       0,   227,   142,     3,   280,   279,     0,     0,     0,     0,
     1486       2,   187,     0,   185,     0,     0,     0,     0,     0,     0,
     1487     191,     0,   279,   531,   147,   144,   279,     0,     0,   252,
     1488     264,     3,     3,   530,   642,   597,   279,   279,   279,   353,
     1489     356,     0,     2,   681,   682,   279,   251,   279,     0,   499,
     1490     476,   279,     0,     0,   475,   490,     0,   207,     0,   213,
     1491     106,     0,     0,   113,   110,     0,     0,     0,     0,     0,
     1492       0,    24,     0,   638,   279,   564,   699,   704,   707,   708,
     1493     709,     0,     3,     3,   660,   279,   279,   279,     3,     3,
     1494       0,   668,     0,     0,     0,     0,   729,   279,   279,     3,
     1495     528,   109,   455,     0,     0,   230,   280,     0,     0,     0,
     1496       0,   279,   188,   186,     0,   183,   189,     0,     0,     0,
     1497     192,   195,   193,   190,     0,   126,   140,   138,   228,     0,
     1498       0,     0,   279,   279,   108,   279,   404,   408,   407,     0,
     1499     493,     2,   494,     2,   495,   489,   279,   214,     0,     0,
     1500       3,   644,    32,   111,     2,    45,     2,    43,    41,    29,
     1501     109,    27,     3,   710,     0,     0,     3,     3,     3,     0,
     1502       0,   667,   669,   611,   624,   254,     2,   394,     3,   393,
     1503       0,   457,   454,   126,     0,     0,   126,     3,     0,   126,
     1504     184,     0,     2,   200,   194,     0,   108,   136,   558,   598,
     1505       0,   352,   279,     3,     2,     0,     0,     2,   208,   215,
     1506       0,     0,     0,     0,     0,     0,   250,   249,     0,     0,
     1507       0,   670,   671,   279,     0,   456,   148,     0,     0,     2,
     1508     161,   126,   150,     0,   178,     0,   126,     0,     2,   152,
     1509       0,     2,     2,   279,     0,   354,     0,   279,   498,   500,
     1510     491,     0,     0,   111,    38,     3,     3,   639,   612,   625,
     1511     661,   398,   126,   154,   157,     0,   156,   160,     3,   163,
     1512     162,     0,   126,   180,   126,     3,     0,   279,     0,     2,
     1513     279,   279,   684,     2,   209,   216,     0,     0,     0,   149,
     1514       0,     0,   159,   217,   164,     2,   219,   179,     0,   182,
     1515     168,   196,     3,   201,   205,     0,   279,   355,   279,     0,
     1516      39,    46,    44,   155,   158,   126,     0,   165,   279,   126,
     1517     126,     0,   169,     0,     0,   675,   202,   203,   204,   197,
     1518       3,   357,   279,   145,   166,   151,   126,   220,   181,   176,
     1519     174,   170,   153,   126,     0,   676,     0,     0,   146,   167,
     1520     177,   171,   175,   174,   172,     3,     0,   477,   173,   198,
     1521       3,   199
    15231522};
    15241523
     
    15261525static const yytype_int16 yydefgoto[] =
    15271526{
    1528       -1,   816,   457,   291,    45,   129,   130,   292,   293,   294,
    1529      295,   762,   744,  1134,  1135,   296,   297,   298,   299,   300,
    1530      301,   302,   303,   304,   305,   306,   307,   308,   309,  1037,
    1531      507,   977,   311,   978,   534,   956,  1062,  1526,  1064,  1065,
    1532     1066,  1067,  1527,  1068,  1069,  1457,  1458,  1423,  1424,  1425,
    1533     1509,  1510,  1514,  1515,  1544,  1545,  1070,  1381,  1071,  1072,
    1534     1313,  1314,  1315,  1495,  1073,   960,   961,   962,  1403,  1487,
    1535     1488,   458,   459,   877,   878,  1045,    48,    49,    50,    51,
    1536       52,   329,   152,    55,    56,    57,    58,    59,   331,    61,
     1527      -1,   814,   456,   291,    45,   129,   130,   292,   293,   294,
     1528     295,   760,   742,  1131,  1132,   296,   297,   298,   299,   300,
     1529     301,   302,   303,   304,   305,   306,   307,   308,   309,  1034,
     1530     506,   974,   311,   975,   533,   953,  1059,  1523,  1061,  1062,
     1531    1063,  1064,  1524,  1065,  1066,  1454,  1455,  1420,  1421,  1422,
     1532    1506,  1507,  1511,  1512,  1541,  1542,  1067,  1378,  1068,  1069,
     1533    1310,  1311,  1312,  1492,  1070,   957,   958,   959,  1400,  1484,
     1534    1485,   457,   458,   875,   876,  1042,    48,    49,    50,    51,
     1535      52,   329,   153,    55,    56,    57,    58,    59,   331,    61,
    15371536      62,   253,    64,    65,   264,   333,   334,    68,    69,    70,
    1538       71,   114,    73,   195,   336,   115,    76,   116,    78,    79,
    1539       80,   438,   439,   440,   441,   679,   922,   680,    81,    82,
    1540      445,   700,   858,   859,   339,   340,   703,   704,   705,   341,
    1541      342,   343,   344,   455,   170,   131,   132,   511,   313,   163,
    1542      629,   630,   631,   632,   633,    83,   117,   478,   479,   948,
    1543      480,   267,   484,   314,    85,   133,   134,    86,  1339,  1114,
    1544     1115,  1116,  1117,    87,    88,   721,    89,   263,    90,    91,
    1545      179,  1039,   665,   393,   121,    92,   490,   491,   492,   180,
    1546      258,   182,   183,   184,   259,    95,    96,    97,    98,    99,
    1547      100,   101,   187,   188,   189,   190,   191,   827,   591,   592,
    1548      593,   594,   595,   596,   597,   598,   559,   560,   561,   562,
    1549      684,   102,   600,   601,   602,   603,   604,   605,   921,   686,
    1550      687,   688,   579,   347,   348,   349,   350,   442,   158,   104,
    1551      105,   351,   352,   698,   556
     1537      71,   114,    73,   196,   336,   115,    76,   116,    78,    79,
     1538      80,   437,   438,   439,   440,   677,   919,   678,    81,    82,
     1539     444,   698,   856,   857,   339,   340,   701,   702,   703,   341,
     1540     342,   343,   344,   454,   171,   131,   132,   510,   313,   164,
     1541     628,   629,   630,   631,   632,    83,   117,   477,   478,   945,
     1542     479,   267,   483,   314,    85,   133,   134,    86,  1336,  1111,
     1543    1112,  1113,  1114,    87,    88,   719,    89,   263,    90,    91,
     1544     180,  1036,   664,   393,   121,    92,   489,   490,   491,   181,
     1545     258,   183,   184,   185,   259,    95,    96,    97,    98,    99,
     1546     100,   101,   188,   189,   190,   191,   192,   825,   590,   591,
     1547     592,   593,   594,   595,   596,   597,   558,   559,   560,   561,
     1548     682,   102,   599,   600,   601,   602,   603,   604,   918,   684,
     1549     685,   686,   578,   347,   348,   349,   350,   441,   159,   104,
     1550     105,   351,   352,   696,   555
    15521551};
    15531552
    15541553/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15551554   STATE-NUM.  */
    1556 #define YYPACT_NINF -1297
     1555#define YYPACT_NINF -1306
    15571556static const yytype_int16 yypact[] =
    15581557{
    1559     5063, 10209, -1297,   115, -1297, -1297, -1297, -1297, -1297, -1297,
    1560    -1297,   109, -1297, -1297, -1297, -1297, -1297, -1297, -1297, -1297,
    1561    -1297, -1297, -1297, -1297, -1297,   252,   252,   252,   866,   397,
    1562      123,  7705,   771, -1297, -1297, -1297, -1297, -1297,   225, -1297,
    1563    -1297, -1297,   776, -1297,  9574, -1297, -1297, -1297, -1297, -1297,
    1564    -1297,   208,   239, -1297,  1099, -1297, -1297, -1297, -1297,   242,
    1565      505,   360,   130,  7814, -1297, -1297,  9642,   626, -1297, -1297,
    1566    -1297,   693,   365,  5846,   163,   733,   693,  1021, -1297, -1297,
    1567      289,   218, -1297,   693,  1254,   275, -1297,   401,   413, -1297,
    1568    -1297, -1297, -1297,   327,   239,   252, -1297,   252, -1297, -1297,
    1569    -1297, -1297, 10445,  1099, -1297, -1297,  1099, -1297, 10504,   344,
    1570    -1297, -1297,   638, 10563, -1297,   771,   771,   771, -1297, -1297,
    1571    -1297,   252, -1297, -1297, -1297,   380,   384, -1297, -1297, -1297,
    1572    -1297,   400, -1297, -1297, -1297, -1297,   457,   466, -1297,   486,
    1573      771,  9150,  2777,    75,   495,   519,   568,   584,   594,   602,
    1574     3892, -1297,   608, -1297,  9710, -1297, -1297, -1297, -1297,   617,
    1575    -1297,   206,  4815, -1297,   643,   243, -1297, -1297, -1297, -1297,
    1576      639,   325,   326,   385,   252,   663, -1297,   505,  1914,   735,
    1577    -1297,    84, -1297,   252,   252,   239, -1297, -1297,   105, -1297,
    1578      252,   252,  2563,   705,   742,   771, 11342, -1297, -1297,   746,
    1579    -1297,  9574, -1297, -1297,   693, -1297, -1297,   239, -1297,  1099,
    1580      208, -1297,  3694, -1297,   771,   771,   771,   239, -1297,   866,
    1581    -1297,  3561, -1297, -1297,   691,   771, -1297,   771, -1297,   769,
    1582    -1297, 10268,   768,   397,   795,   771, -1297,   866,   782,   789,
    1583    -1297,  7705,   852, -1297, -1297, -1297,  3826, -1297, -1297, 11035,
    1584    -1297,   735,   121, 10563,  6255,   638,  2563, -1297,   136, -1297,
    1585    -1297, 10504,  1099,   814, 12170, -1297, -1297,   422, -1297, 11905,
    1586    11622, 11679, 11622, 11736, -1297,   824, -1297, -1297, -1297, -1297,
    1587    11793, 11793,   852,  8832, -1297, 11622,  9256, -1297, -1297, -1297,
    1588    -1297, -1297, -1297,   872, -1297,   996,  2005, 11622, -1297,   482,
    1589      140,   497,   633,   675,   843,   844,   870,   901,    28, -1297,
    1590    -1297,   884,   516, -1297,   314, -1297, -1297,  2777, -1297, -1297,
    1591      551,   911, -1297,   588,   911, -1297,  8938,   933, -1297, -1297,
    1592     1002,  1428,  8472, 11342,   693, -1297,   693,   771,   771, -1297,
    1593    -1297, -1297, -1297, -1297, -1297,   771, 10622,  1099, -1297, -1297,
    1594    10681,  1019, -1297,  3892, -1297, -1297, -1297, -1297, -1297, -1297,
    1595    -1297, -1297,  4608, 11622, -1297, -1297, -1297, -1297, -1297, -1297,
    1596    -1297, -1297, -1297, -1297, -1297, -1297, -1297,   638, -1297,   839,
    1597      916,   938,   940,   867,   949,   963,   970,  1914, -1297, -1297,
    1598      979,   208, -1297, -1297, -1297,   980, -1297, -1297, -1297,  3826,
    1599    -1297, -1297, -1297, -1297, -1297,  2563, -1297,  9150,  9150, -1297,
    1600      638, 12198,  9150,  8124, -1297, -1297, -1297, -1297,  3826,   121,
    1601    -1297, -1297,   693,   239, -1297, -1297,  3826, -1297,  4002, -1297,
    1602    -1297,   771,   771,  9150,  8726, 10740, -1297,   377,  4504, -1297,
    1603      388,   402,   397, -1297, 10268,   981,   975,   397,   771, -1297,
    1604    -1297, -1297, -1297, 11159, -1297,   339,  8392, -1297,   239,   994,
    1605    -1297,   638, 11980,  6754, -1297, -1297, -1297, -1297,   926,  2563,
    1606    -1297,  8537,   735,  6493, -1297, -1297, -1297,   944,   540,   884,
    1607      397, 12170,   276, 10504, -1297, 12170, -1297, -1297, -1297, -1297,
    1608      571, -1297,  1009, -1297, -1297,    18,  8832, -1297, -1297,  8832,
    1609    -1297,  9044,  8832, -1297, -1297, -1297, -1297, -1297,   604,  1010,
    1610      581,  1012, -1297,  7016, -1297, -1297, -1297,   147, -1297, -1297,
    1611     6903, -1297,   152, -1297, -1297, -1297, -1297, -1297, -1297, -1297,
    1612    -1297, -1297, -1297,  6255,  6255, -1297, 11622, 11622, 11622, 11622,
    1613    11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622,
    1614    11622, 11622, 11622, 11622,  5083,  6255, -1297,   516,   886, -1297,
    1615    -1297,   252,   252, -1297, -1297,  9150, -1297, -1297, -1297,   980,
    1616      852, -1297,   980,  7016, -1297,  9362,  1015, -1297, 10799, -1297,
    1617    -1297,   617, -1297,  9846,  1017, -1297,   804, -1297,  1782,   146,
    1618      884, -1297,   252,   252,   884,   236, -1297,   252,   252,   980,
    1619    -1297, -1297,   252,   252, -1297,   911, 10858,  1099, 12111,   198,
    1620      427, 10858, -1297, 11094, -1297,   884, -1297, 10622, -1297,    14,
    1621     1020,  8189,  8189,  1099,  5252,  1014, -1297,   210,  1022, -1297,
    1622     1025,  4815,   367, -1297,  1106,  1099,  8189,   852,   638,   852,
    1623      735,   737,   911, -1297, -1297,   753,   911, -1297, -1297, -1297,
    1624     1060, -1297, 11565,   239, 11159, -1297,   629,  1035,   670,  1036,
    1625    -1297,   699, -1297,  1037,   239, -1297, -1297,  3826,   239,   701,
    1626      889,  1032,  1034,   405,   425,  7368,  1486, 11622,  2366, -1297,
    1627    -1297,  1039,   125,  1039, -1297, -1297, -1297,   252,   252, -1297,
    1628    -1297,   397, -1297,   252, -1297, -1297,  9914,   397,  1038, 11622,
    1629    -1297,   981, 12111, -1297, -1297,  1047, -1297, -1297, -1297,   852,
    1630    -1297, 12046, 11622, -1297,  8189,   610,  8472, -1297, -1297,   617,
    1631     1048,  1050,   944,  2999, -1297, -1297, 12170, -1297, -1297,  1032,
    1632    -1297, -1297,  1053, -1297,  1032,  1056, 11905,  6255,  1045,  1085,
    1633     1059,  1061, -1297,  1062,  1068, -1297,  1075,  1077,  7128, -1297,
    1634     6255, -1297,   581,  1714, -1297,  5360,  6255,  1076,  1078, -1297,
    1635    -1297, -1297,   711, -1297,  6255, -1297, -1297, -1297, -1297, -1297,
    1636    -1297, -1297,   482,   482,   140,   140,   497,   497,   497,   497,
    1637      633,   633,   675,   843,   844,   870,   901, 11622,   667, -1297,
    1638    11159,  1081,  1082,  1083,   886, -1297, -1297, -1297, -1297, -1297,
    1639    11159, 11565,   714,  1084,  7480,  9468,  3892, -1297, -1297,  1086,
    1640     1088, -1297, 10445, -1297, -1297,   804, 11159,   945,  1089,  1090,
    1641     1093,  1094,  1095,  1096,  1100,  4041,  1782, -1297, -1297, -1297,
    1642    -1297, -1297, -1297, -1297, -1297, -1297, -1297, -1297, -1297, -1297,
    1643    -1297, -1297, -1297, -1297,   980, -1297, -1297, -1297,   884, -1297,
    1644    -1297, -1297, -1297, -1297, -1297, -1297, -1297, 10327, -1297, -1297,
    1645     1103,  1105, -1297,   208,  1104,  1078,  5252, -1297, -1297, -1297,
    1646     4608,  1114, -1297, -1297, -1297, -1297,   397,  6608,  1162, -1297,
    1647    -1297, -1297, -1297,  1087,   208, -1297, -1297,   980, -1297, -1297,
    1648      980,   203, 11622,  1109, -1297, -1297, -1297, -1297, -1297, -1297,
    1649    -1297,  3892,   721, -1297,   239, -1297, -1297,   889,  2623,  1120,
    1650     1124, -1297, -1297, -1297,  1123,   848,  1128,  1130,  1132, -1297,
    1651     2366, -1297, -1297, -1297, -1297, -1297, -1297, -1297,   377, -1297,
    1652      975, -1297, -1297,  1133,  1135,  1127, -1297, -1297,  1139,  1140,
    1653    -1297,   610,  1909, -1297,   496, -1297,  2999,   884, -1297,  1137,
    1654    12170, 10917,  9150,  1144, -1297, -1297,  1141,  1145, -1297,  1147,
    1655      301,  1148, -1297,  1146,  1146,  7016,  6255, -1297, -1297,  1146,
    1656     1149, -1297,  1714,  4608, -1297, -1297, -1297, -1297,  1153,  5205,
    1657     6255,  1158,   852,  5252, -1297,  6903, -1297,   852, -1297,  6255,
    1658    -1297,   788,   911, -1297, -1297, -1297, -1297,  5490, -1297,  8938,
    1659    -1297, -1297,  7592,  1159, -1297, -1297, -1297, -1297,  1167, -1297,
    1660      877,   911, -1297,   882,   907,   911, -1297,   771,  1168,  4314,
    1661    -1297, -1297, -1297, 11159, 11159, -1297,  8602,  8602,  8189,  1171,
    1662     1169,  1170,  1177, -1297, -1297,  1176,   557,    37,  1078, -1297,
    1663      852, -1297,  4815, -1297,  6255,   444, -1297,  6884,  1180,  1181,
    1664    11508,  1189,  1191,    15,    96,    38,  6255,  1193,   239,  4178,
    1665    -1297,  1187,  1173, -1297, -1297, -1297,  1192, -1297, -1297, -1297,
    1666    -1297, -1297, -1297, -1297, -1297, -1297,   397,  1198,  6255, -1297,
    1667    11159, 11159,   252,   911,  1200,  1201,  1086, -1297,  2623,   331,
    1668      397,  7016, 10976,   914,   911, -1297, -1297, -1297, -1297, -1297,
    1669    -1297, -1297, -1297, -1297,  1205,  1909, -1297, -1297,  1188, -1297,
    1670     1032, -1297, -1297,   638,  1203, -1297, -1297, -1297,   722,  1202,
    1671    -1297, 11622,  1194,  1085,  1085,  1207, -1297,  6185,  1025,  6255,
    1672     1212,  1153,   307,   288,  1211, -1297,  1207, -1297,  1216,  1211,
    1673    -1297, -1297,  1209, -1297, -1297,   980,  1219, -1297, 10622, -1297,
    1674     7241,  1222,  1223,  1224, -1297, 10386,  8189,  8189, -1297,  1221,
    1675    -1297, -1297,   980, -1297, -1297, -1297, -1297,   980,  6255, -1297,
    1676     6255, 11622,  1228, -1297, -1297, -1297, -1297, -1297, -1297, -1297,
    1677     1231, -1297, -1297, -1297, -1297, -1297, 11622, 11622,  1230,  1234,
    1678     1211, -1297, -1297,   397, -1297, -1297, -1297,  8059, 10917,  6255,
    1679     6255,  1294,  6255, -1297, -1297,  1217, -1297,  1218,  6255,  1220,
    1680     1226,  6255,   831, -1297,  1232,  7016,   252, -1297, -1297,  6608,
    1681     1233,   452, -1297, -1297, -1297, -1297, -1297,   980, -1297,  9778,
    1682     9150, 10268,  1237, -1297,  1243, -1297, -1297,   980, 11314, -1297,
    1683     8537,  1246, -1297, -1297, 10917,   467,   542, -1297,  1251,  1260,
    1684    -1297,   359, -1297,  6255,  1263,  1261, -1297, -1297,  1265,   245,
    1685      257,   852,  1267,  1269, -1297,  1270, -1297, 11159, -1297, -1297,
    1686    -1297, -1297, -1297, -1297,  1272, -1297, -1297, -1297, 11159, 11159,
    1687    11159, -1297, -1297,  1276, -1297,  1277,  1280,  1281,   619, -1297,
    1688     8256,  8364, -1297, -1297,   625, -1297,  1283,  1284, -1297,  8667,
    1689      727,   731,  1288,   740,  6735, -1297, -1297,   543, -1297, -1297,
    1690      756,  1289,   239,  1329,  1338, -1297, -1297,  1290, 11508, -1297,
    1691    -1297, -1297,  1291,  1293,   780,  9973, 10268,  6075, 11159, -1297,
    1692    -1297, -1297,  1292, -1297, -1297, -1297, -1297, -1297, -1297, 10917,
    1693    -1297,  1275,  1327,  1153,   537, -1297, -1297, -1297, -1297, -1297,
    1694    -1297, -1297, -1297,  1295, -1297, -1297, -1297,  1301,  1305, -1297,
    1695    -1297, -1297,  1306,  1308, -1297, -1297, -1297, -1297, -1297, -1297,
    1696    -1297,  1307, -1297,  1309, -1297, -1297, 11508,    90,  6255, 11508,
    1697    -1297,  1313,  6255, -1297,   187,  1328, -1297, -1297,  1315,  5778,
    1698    -1297, -1297, -1297,   332, -1297, 10032, -1297, -1297,  1099,   638,
    1699     1311, -1297, -1297,   800,  1317,  6255,   852,   852,  1320, -1297,
    1700    -1297,  1322,  1323,  1324, -1297, -1297,  8602,  1321, -1297,  1379,
    1701    11622,  1325, -1297, -1297, 11428, -1297,   810, -1297,  1312, 11508,
    1702     1318, -1297, -1297,  1333, -1297,  1341, 10268,  1335, -1297,  1343,
    1703    10917, -1297, -1297, -1297,  1319,  1356,  1339, -1297,  1211,  1211,
    1704    -1297, -1297, -1297, -1297, -1297, 11508,   270, -1297,   951, -1297,
    1705    -1297,  7923, -1297, -1297,  1326,  6255, -1297,  6255,  7923,   239,
    1706    10740,  1345, -1297, 10091, 10268, -1297,  1342, -1297, -1297,  6255,
    1707     1347,  1348, -1297, 11622, 11622, -1297, -1297,   952,   237, -1297,
    1708    -1297,  1331, -1297,   952, -1297, -1297,  1642,   852,   239, 10740,
    1709    -1297, 10150,  1355, -1297, -1297, -1297, -1297, -1297, 11428,  1353,
    1710      952,  7992,  6255, 11348,  1354,   952,  1360,  1642,  2460, -1297,
    1711    -1297, -1297, -1297, -1297, -1297,  9150, -1297, 11193, -1297, 11428,
    1712    -1297, -1297,  1340,  4905, -1297, -1297, 11348,   239,  2460,  1361,
    1713      819, -1297, 11193, -1297, -1297, -1297,  4905, -1297, -1297,   239,
    1714    -1297, -1297, -1297, -1297, -1297
     1558    6112, 10121, -1306,    45, -1306, -1306, -1306, -1306, -1306, -1306,
     1559   -1306,    27, -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306,
     1560   -1306, -1306, -1306, -1306, -1306,    94,    94,    94,   808,   829,
     1561      69,  7553,   431, -1306, -1306, -1306, -1306, -1306,   134, -1306,
     1562   -1306, -1306,  1527, -1306,  4935, -1306, -1306, -1306, -1306, -1306,
     1563   -1306,    26,   185, -1306,  1590, -1306, -1306, -1306, -1306,   194,
     1564     544,   310,   103,  4656, -1306, -1306,  9491,  1148, -1306, -1306,
     1565   -1306,   779,   321,  3969,   180,  1184,   779,  1266, -1306, -1306,
     1566     614,   276, -1306,   779,  1398,   228, -1306,   350,   396, -1306,
     1567   -1306, -1306, -1306,   244,   185,    94, -1306,    94, -1306, -1306,
     1568   -1306, -1306, 10357,  1590, -1306, -1306,  1590, -1306, 10416,   306,
     1569   -1306, -1306,   946, 10475, -1306,   431,   431,   431, -1306, -1306,
     1570   -1306,    94, -1306, -1306, -1306,   360,   406,   415, -1306, -1306,
     1571   -1306,   427, -1306, -1306, -1306, -1306, -1306,   436,   460, -1306,
     1572     463,   431,  8930,  3037,   712,   484,   502,   510,   513,   524,
     1573     541,  6995, -1306,   566, -1306,  9560, -1306, -1306, -1306, -1306,
     1574     571, -1306,   234,  4195, -1306,   344,   251, -1306, -1306, -1306,
     1575   -1306,   601,   345,   349,   389,    94,   611, -1306,   544,  2525,
     1576     633, -1306,   129, -1306,    94,    94,   185, -1306, -1306,   222,
     1577   -1306,    94,    94,  2900,   637,   644,   431, 11276, -1306, -1306,
     1578     661, -1306,  4935, -1306, -1306,   779, -1306, -1306,   185, -1306,
     1579    1590,    26, -1306,  7796, -1306,   431,   431,   431,   185, -1306,
     1580     808, -1306,  6454, -1306, -1306,   657,   431, -1306,   431, -1306,
     1581   -1306, 10180,   647,   829,   671,   431, -1306,   808,   669,   673,
     1582   -1306,  7553,   752, -1306, -1306, -1306,  9361, -1306, -1306,  5911,
     1583   -1306,   633,   191, 10475,  5789,   946,  2900, -1306,   291, -1306,
     1584   -1306, 10416,  1590,   704,  2725, -1306, -1306,   255, -1306, 11839,
     1585   11556, 11613, 11556, 11670, -1306,   734, -1306, -1306, -1306, -1306,
     1586   11727, 11727,   752,  8612, -1306, 11556,  9036, -1306, -1306, -1306,
     1587   -1306, -1306, -1306,   770, -1306,   468,  1857, 11556, -1306,   446,
     1588     717,   853,   280,   793,   751,   737,   733,   795,   166, -1306,
     1589   -1306,   778,   551, -1306,   298, -1306, -1306,  3037, -1306, -1306,
     1590     401,   802, -1306,   490,   802, -1306,  8718,   811, -1306, -1306,
     1591    1169,   608,  8252, 11276,   779, -1306,   779,   431,   431, -1306,
     1592   -1306, -1306, -1306, -1306, -1306,   431, 10534,  1590, -1306, -1306,
     1593   10593,  1775, -1306,  6995, -1306, -1306, -1306, -1306, -1306, -1306,
     1594   -1306, -1306,  4717, 11556, -1306, -1306, -1306, -1306, -1306, -1306,
     1595   -1306, -1306, -1306, -1306, -1306, -1306, -1306,   946, -1306,   807,
     1596     826,   840,   846,   849,   855,   868,   875,  2525, -1306, -1306,
     1597     820,    26, -1306, -1306, -1306,   881, -1306, -1306, -1306,  9361,
     1598   -1306, -1306, -1306, -1306, -1306,  2900, -1306,  8930,  8930, -1306,
     1599     946, 12073,  8930,  7904, -1306, -1306, -1306, -1306,  9361,   191,
     1600   -1306, -1306,   779,   185, -1306, -1306,  9361, -1306,  6576, -1306,
     1601   -1306,   431,   431,  8506, 10652, -1306,  1231,  3253, -1306,   400,
     1602     418,   829, -1306, 10180,   884,   864,   829,   431, -1306, -1306,
     1603   -1306, -1306, 11012, -1306,   521,  8172, -1306,   185,   891, -1306,
     1604     946, 11914,  5969, -1306, -1306, -1306, -1306,   916,  2900, -1306,
     1605    8317,   633,  7444, -1306, -1306, -1306,  1642,   538,   778,   829,
     1606    2725,   700, 10416, -1306,  2725, -1306, -1306, -1306, -1306,   572,
     1607   -1306,   901, -1306, -1306,   122,  8612, -1306, -1306,  8612, -1306,
     1608    8824,  8612, -1306, -1306, -1306, -1306, -1306,   581,   912,   557,
     1609     918, -1306,  6659, -1306, -1306, -1306,   100, -1306, -1306,  6125,
     1610   -1306,   113, -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306,
     1611   -1306, -1306,  5789,  5789, -1306, 11556, 11556, 11556, 11556, 11556,
     1612   11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556,
     1613   11556, 11556, 11556,  4485,  5789, -1306,   551,   858, -1306, -1306,
     1614      94,    94, -1306, -1306,  8930, -1306, -1306, -1306,   881,   752,
     1615   -1306,   881,  6659, -1306,  9142,   924, -1306, 10711, -1306, -1306,
     1616     571, -1306,  9696,   928, -1306,  1037, -1306,  2282,   292,   778,
     1617   -1306,    94,    94,   778,   300, -1306,    94,    94,   881, -1306,
     1618   -1306,    94,    94, -1306,   802, 10770,  1590, 12045,   172,   352,
     1619   10770, -1306, 10947, -1306,   778, -1306, 10534, -1306,   171,   931,
     1620    7969,  7969,  1590,  4778,   929, -1306,   372,   935, -1306,   956,
     1621    4195,   607, -1306,  1042,  1590,  7969,   752,   946,   752,   633,
     1622     763,   802, -1306, -1306,   797,   802, -1306, -1306, -1306,   997,
     1623   -1306, 11499,   185, 11012, -1306,   589,   976,   605,   984, -1306,
     1624     626, -1306,   986,   185, -1306, -1306,  9361,   185,  1612,   980,
     1625     983,   435,   443,  7107,  1354, 11556,  2791, -1306, -1306,   987,
     1626      87,   987, -1306, -1306, -1306,    94,    94, -1306, -1306,   829,
     1627   -1306,    94, -1306, -1306,  9764,   829,   996, 11556, -1306,   884,
     1628   12045, -1306, -1306,  1003, -1306, -1306, -1306,   752, -1306, 11980,
     1629   11556, -1306,  7969,   585,  8252, -1306, -1306,   571,  1001,  1002,
     1630    1642,  3314, -1306, -1306,  2725, -1306, -1306,   980, -1306, -1306,
     1631    1010, -1306,   980,  1013, 11839,  5789,   992,  1044,  1018,  1019,
     1632   -1306,  1015,  1025, -1306,  1026,  1027,  6771, -1306,  5789, -1306,
     1633     557,   926, -1306,  5040,  5789,  1029,  1022, -1306, -1306, -1306,
     1634     629, -1306,  5789, -1306, -1306, -1306, -1306, -1306, -1306, -1306,
     1635     446,   446,   717,   717,   853,   853,   853,   853,   280,   280,
     1636     793,   751,   737,   733,   795, 11556,   886, -1306, 11012,  1032,
     1637    1034,  1035,   858, -1306, -1306, -1306, -1306, -1306, 11012, 11499,
     1638     653,  1038,  7219,  9248,  6995, -1306, -1306,  1030,  1043, -1306,
     1639   10357, -1306, -1306,  1037, 11012,   923,  1045,  1048,  1049,  1056,
     1640    1057,  1058,  1060,  3551,  2282, -1306, -1306, -1306, -1306, -1306,
     1641   -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306,
     1642   -1306, -1306,   881, -1306, -1306, -1306,   778, -1306, -1306, -1306,
     1643   -1306, -1306, -1306, -1306, -1306, 10239, -1306, -1306,  1061,  1062,
     1644   -1306,    26,  1041,  1022,  4778, -1306, -1306, -1306,  4717,  1039,
     1645   -1306, -1306, -1306, -1306,   829,  6270,  1111, -1306, -1306, -1306,
     1646   -1306,  1047,    26, -1306, -1306,   881, -1306, -1306,   881,   347,
     1647   11556,  1063, -1306, -1306, -1306, -1306, -1306, -1306, -1306,  6995,
     1648     899, -1306,   185, -1306,  1612,  2196,  1070,  1074, -1306, -1306,
     1649   -1306,  1077,   953,  1076,  1086,  1087, -1306,  2791, -1306, -1306,
     1650   -1306, -1306, -1306, -1306, -1306,  1231, -1306,   864, -1306, -1306,
     1651    1083,  1089,  1084, -1306, -1306,  1095,  1107, -1306,   585,  1172,
     1652   -1306,   375, -1306,  3314,   778, -1306,  1091,  2725, 10829,  8930,
     1653    1114, -1306, -1306,  1109,  1116, -1306,  1118,   295,  1112, -1306,
     1654    1117,  1117,  6659,  5789, -1306, -1306,  1117,  1120, -1306,   926,
     1655    4717, -1306, -1306, -1306, -1306,  1119,  5240,  5789,  1121,   752,
     1656    4778, -1306,  6125, -1306,   752, -1306,  5789, -1306,   828,   802,
     1657   -1306, -1306, -1306, -1306,  9389, -1306,  8718, -1306, -1306,  7331,
     1658    1127, -1306, -1306, -1306, -1306,  1131, -1306,   852,   802, -1306,
     1659     870,   879,   802, -1306,   431,  1135,  5490, -1306, -1306, -1306,
     1660   11012, 11012, -1306,  8382,  8382,  7969,  1133,  1132,  1134,  1139,
     1661   -1306, -1306,  1144,   596,    62,  1022, -1306,   752, -1306,  4195,
     1662   -1306,  5789,   458, -1306,  6547,  1149,  1151, 11442,  1152,  1153,
     1663      52,    75,    37,  5789,  1158,   185,  4069, -1306,  1113,  1138,
     1664   -1306, -1306, -1306,  1156, -1306, -1306, -1306, -1306, -1306, -1306,
     1665   -1306, -1306, -1306,   829,  1162,  5789, -1306, 11012, 11012,    94,
     1666     802,  1164,  1163,  1030, -1306,  2196,   819,   829,  6659, 10888,
     1667     887,   802, -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306,
     1668   -1306,  1179,  1172, -1306, -1306,  1165, -1306,   980, -1306, -1306,
     1669     946,  1167, -1306, -1306, -1306,   662,  1183, -1306, 11556,  1161,
     1670    1044,  1044,  1182, -1306,  9823,   956,  5789,  1189,  1119,   540,
     1671      74,  1186, -1306,  1182, -1306,  1191,  1186, -1306, -1306,  1195,
     1672   -1306, -1306,   881,  1197, -1306, 10534, -1306,  6883,  1198,  1200,
     1673    1205, -1306, 10298,  7969,  7969, -1306,  1208, -1306, -1306,   881,
     1674   -1306, -1306, -1306, -1306,   881,  5789, -1306,  5789, 11556,  1209,
     1675   -1306, -1306, -1306, -1306, -1306, -1306, -1306,  1213, -1306, -1306,
     1676   -1306, -1306, -1306, 11556, 11556,  1212,  1214,  1186, -1306, -1306,
     1677     829, -1306, -1306, -1306,  3779, 10829,  5789,  5789,  1272,  5789,
     1678   -1306, -1306,  1203, -1306,  1204,  5789,  1206,  1207,  5789,  1006,
     1679   -1306,  1215,  6659,    94, -1306, -1306,  6270,  1222,   477, -1306,
     1680   -1306, -1306, -1306, -1306,   881, -1306,  9628,  8930, 10180,  1216,
     1681   -1306,  1229, -1306, -1306,   881, 11248, -1306,  8317,  1217, -1306,
     1682   -1306, 10829,   486,   495, -1306,  1230,  1245, -1306,   308, -1306,
     1683    5789,  1244,  1242, -1306, -1306,  1248,   136,   146,   752,  1251,
     1684    1254, -1306,  1256, -1306, 11012, -1306, -1306, -1306, -1306, -1306,
     1685   -1306,  1257, -1306, -1306, -1306, 11012, 11012, 11012, -1306, -1306,
     1686    1260, -1306,  1264,  1267,  1268,   646, -1306,  8036,  8144, -1306,
     1687   -1306,   715, -1306,  1270,  1273, -1306,  8447,   690,   721,  1275,
     1688     725,  6425, -1306, -1306,   508, -1306, -1306,   730,  1277,   185,
     1689    1316,  1326, -1306, -1306,  1278, 11442, -1306, -1306, -1306,  1279,
     1690    1282,   740,  9885, 10180,  5774, 11012, -1306, -1306, -1306,  1281,
     1691   -1306, -1306, -1306, -1306, -1306, -1306, 10829, -1306,  1261,  1315,
     1692    1119,   357, -1306, -1306, -1306, -1306, -1306, -1306, -1306, -1306,
     1693    1283, -1306, -1306, -1306,  1289,  1293, -1306, -1306, -1306,  1295,
     1694    1296, -1306, -1306, -1306, -1306, -1306, -1306, -1306,  1302, -1306,
     1695    1301, -1306, -1306, 11442,   130,  5789, 11442, -1306,  1304,  5789,
     1696   -1306,   155,  1328, -1306, -1306,  1314,  9458, -1306, -1306, -1306,
     1697     320, -1306,  9944, -1306, -1306,  1590,   946,  1311, -1306, -1306,
     1698     742,  1320,  5789,   752,   752,  1325, -1306, -1306,  1330,  1331,
     1699    1334, -1306, -1306,  8382,  1329, -1306,  1401, 11556,  1333, -1306,
     1700   -1306, 11362, -1306,   745, -1306,  1319, 11442,  1324, -1306, -1306,
     1701    1336, -1306,  1355, 10180,  1343, -1306,  1352, 10829, -1306, -1306,
     1702   -1306,  1332,  1387,  1358, -1306,  1186,  1186, -1306, -1306, -1306,
     1703   -1306, -1306, 11442,   118, -1306,   954, -1306, -1306,  7662, -1306,
     1704   -1306,  1339,  5789, -1306,  5789,  7662,   185, 10652,  1362, -1306,
     1705   10003, 10180, -1306,  1364, -1306, -1306,  5789,  1365,  1370, -1306,
     1706   11556, 11556, -1306, -1306,  1024,   101, -1306, -1306,  1356, -1306,
     1707    1024, -1306, -1306,  1567,   752,   185, 10652, -1306, 10062,  1375,
     1708   -1306, -1306, -1306, -1306, -1306, 11362,  1372,  1024,  7731,  5789,
     1709   11282,  1377,  1024,  1380,  1567,  2919, -1306, -1306, -1306, -1306,
     1710   -1306, -1306,  8930, -1306, 11127, -1306, 11362, -1306, -1306,  1361,
     1711   11046, -1306, -1306, 11282,   185,  2919,  1385,   747, -1306, 11127,
     1712   -1306, -1306, -1306, 11046, -1306, -1306,   185, -1306, -1306, -1306,
     1713   -1306, -1306
    17151714};
    17161715
     
    17181717static const yytype_int16 yypgoto[] =
    17191718{
    1720    -1297,  4539,  3474, -1297,    22, -1297,    -1,     2,   817, -1297,
    1721    -1297, -1297,  -495,  -902,  -132,  5887, -1297,  1449,   523,   552,
    1722      430,   558,   919,   920,   921,   922,   924, -1297,   150,  -242,
    1723     5319,   346,  -694,  -917, -1297,    87,  -701,   234, -1297,   157,
    1724    -1297,   254, -1077, -1297, -1297,    -6, -1297, -1273,  -892,    95,
    1725    -1297, -1297, -1297, -1297,   -60, -1267, -1297, -1297, -1297, -1297,
    1726    -1297, -1297,   168,   -11,    51,   368, -1297,   375, -1297,    33,
    1727    -1297,  -295, -1297, -1297, -1297,   432,  -848, -1297, -1297,     6,
    1728     -970,    26,  2983, -1297, -1297, -1297,  -117, -1297,    66,   718,
    1729      -14,  1458,  4231, -1297, -1297,    55,   134,   124,  -247,  1805,
    1730    -1297,  1752, -1297, -1297,   135,  2146, -1297,  2351,  1577, -1297,
    1731    -1297,  -431,  -435,  1074,  1079,   582,   830,   342, -1297, -1297,
    1732     1070,   585,  -481, -1297,  -462,   -65,  -412, -1297, -1297,  -973,
    1733     -968,   783,  1252,   948,   156, -1297,    83,   233,  -297,  -199,
    1734     -148,   548,   655, -1297,   904, -1297,  2844,  -402,   807, -1297,
    1735    -1297,   590, -1297,  -393, -1297,   101, -1297, -1297, -1297, -1251,
    1736      299, -1297, -1297, -1297,  1071, -1297,    63, -1297, -1297,  -839,
    1737     -111, -1296,  -104,  2118, -1297,  3091, -1297,   811, -1297,  -172,
    1738     1440,  -168,  -165,  -162,     4,   -37,   -34,   -32,   611,    36,
    1739       67,    71,  -161,  -156,  -154,  -153,  -138,  -284,  -490,  -488,
    1740     -486,  -538, -1297,  -480, -1297, -1297,  -524,  -520,  -505,  -499,
    1741     1640,  5025,  -528,  -541,  -515,  -512,  -459, -1297,  -388,  -645,
    1742     -634,  -633,  -576,  -124,  -277, -1297, -1297,   710,   153,   -86,
    1743    -1297,   361,   821,  -610,  -304
     1719   -1306,  4178,  3354, -1306,  1595, -1306,    -1,     2,   839, -1306,
     1720   -1306, -1306,  -497,  -915,  -215,  4919, -1306,   975,   537,   542,
     1721     346,   554,   941,   943,   950,   945,   949, -1306,    17,  -251,
     1722    5020,   377,  -700,  -894, -1306,  -198,  -684,  -459, -1306,    77,
     1723   -1306,   290, -1062, -1306, -1306,    40, -1306, -1305, -1076,   127,
     1724   -1306, -1306, -1306, -1306,   -21, -1283, -1306, -1306, -1306, -1306,
     1725   -1306, -1306,   216,    31,    14,   408, -1306,   414, -1306,    76,
     1726   -1306,  -305, -1306, -1306, -1306,   467,  -851, -1306, -1306,     8,
     1727    -929,    10,  2660, -1306, -1306, -1306,  -110, -1306,   299,   597,
     1728     -29,  1428,  4046, -1306, -1306,    55,    49,    79,  -229,  1809,
     1729   -1306,  1752, -1306, -1306,    66,  2021, -1306,  2437,  1677, -1306,
     1730   -1306,  -412,  -376,  1122,  1124,   625,   871,  -270, -1306, -1306,
     1731    1105,   627,  -558, -1306,  -460,  -395,    48, -1306, -1306,  -855,
     1732    -990,   470,   652,   990,   -16, -1306,   727,    -5,  -244,  -195,
     1733    -127,   583,   692, -1306,   930, -1306,  2734,  -373,   841, -1306,
     1734   -1306,   619, -1306,  -405, -1306,    85, -1306, -1306, -1306, -1245,
     1735     327, -1306, -1306, -1306,  1097, -1306,    28, -1306, -1306,  -832,
     1736    -104, -1279,  -133,  2533, -1306,  3317, -1306,   836, -1306,  -122,
     1737    1439,  -163,  -160,  -157,     4,   -41,   -37,   -36,   587,    42,
     1738      51,    90,  -121,  -155,  -152,  -151,  -149,  -294,  -486,  -446,
     1739    -427,  -545, -1306,  -531, -1306, -1306,  -525,  -485,  -484,  -477,
     1740    1927,  4727,  -549,  -504,  -503,  -475,  -461, -1306,  -386,  -662,
     1741    -654,  -649,  -575,  -248,  -333, -1306, -1306,   226,   125,   -50,
     1742   -1306,   339,   169,  -590,  -241
    17441743};
    17451744
     
    17501749static const yytype_int16 yytable[] =
    17511750{
    1752      109,   257,    46,   690,    94,   144,   388,   110,   145,   380,
    1753      146,   420,   381,   696,   365,   382,   250,   389,   139,   661,
    1754      871,   383,   487,   384,   385,   763,    53,   111,   495,  1074,
    1755      846,   916,   671,    46,   795,    94,   957,   791,  1075,   386,
    1756      669,   672,   917,   918,    46,   822,    46,   590,   155,   685,
    1757      828,    47,   792,  1177,  1178,    66,    46,    53,   793,  1179,
    1758      829,   975,    46,  1131,   185,    46,    60,   207,    46,   614,
    1759      217,   823,   210,   618,   824,   391,   169,  1196,   147,   729,
    1760      107,   406,    47,   734,   388,  1139,    66,   380,  1400,   202,
    1761      381,   933,   211,   382,   138,   389,   818,    60,   819,   383,
    1762      820,   384,   385,   107,   653,    46,   821,   916,    46,   148,
    1763      657,   659,   136,   149,    46,   465,   553,   386,   917,   918,
    1764      738,    30,   754,   664,  1459,   169,  1186,   739,   169,   460,
    1765      832,   668,  1420,  1421,    67,    74,   839,   555,  1190,  1204,
    1766      144,   862,    30,   145,    46,   146,   155,   464,   466,  1208,
    1767      554,  1463,  1187,   103,   103,   880,    46,   193,   355,   860,
    1768      860,   107,    30,   232,   234,    67,    74,     2,   197,     4,
    1769        5,     6,     7,    30,   860,   727,   242,   318,   390,    46,
    1770       46,   409,   155,    30,   103,   242,   733,   392,  1459,  1476,
    1771      118,   220,   651,   724,    46,   221,  1422,   204,   225,  1195,
    1772      227,   194,   580,    46,   746,   155,   400,   235,   392,   166,
    1773      119,    46,   107,   147,    46,   648,   423,   107,   144,   103,
    1774     1206,   145,   465,   146,   137,    34,   649,    35,   392,  1420,
    1775     1421,   169,   818,   940,   819,  1463,   820,   470,   421,   392,
    1776     1463,   454,   895,    46,   148,    94,  1534,   830,   149,   587,
    1777      759,   243,   860,   539,   540,   765,  1463,    46,    46,   251,
    1778      155,   690,   252,  1463,    46,   681,   640,    53,   799,  1547,
    1779      994,    46,  1179,    30,   822,   107,   683,   135,   516,  -218,
    1780     -218,   505,   460,   107,   169,   135,   833,    -3,  1021,    30,
    1781      836,   169,    47,  1431,   655,  1141,    66,   648,  1022,   660,
    1782      823,   460,   849,   824,   452,  1082,   850,    60,   649,   460,
    1783      107,   853,   461,   867,   359,   856,   446,  1177,  1178,    46,
    1784      427,   355,   107,  1179,   233,   818,   141,   819,   220,   820,
    1785      360,   162,    46,    46,  1196,  1008,  1343,   837,   449,   587,
    1786      855,   107,   398,   135,  -218,   164,   422,   718,  1347,    46,
    1787      174,   368,   169,    46,   107,  1210,   135,   229,   832,  1483,
    1788     1349,   106,   106,   192,   417,   419,  1259,   369,  -275,   169,
    1789      508,  1074,   904,   169,   425,    67,    74,   730,   990,    46,
    1790     1075,    74,   731,   237,   795,  1187,   724,   791,   995,    46,
    1791      230,   355,   106,  1260,   103,   231,   107,   107,   135,   135,
    1792      822,   240,   792,  1122,  1009,   159,   717,    46,   793,  -109,
    1793     1123,  -109,    46,  -502,   829,  -109,   564,   818,   472,   819,
    1794      494,   820,   565,   846,   209,   489,   823,   106,   242,   824,
    1795     -109,  -109,  1230,   371,   373,   919,  1533,  1231,  1436,    46,
    1796      509,   708,    36,  1454,   176,   628,    39,   709,  1179,   372,
    1797      374,   580,  1542,    40,    41,   109,  1382,   932,   220,  1546,
    1798      225,  1341,   107,    46,   135,   461,   204,   254,  1342,   159,
    1799      873,    46,   627,   355,   262,    46,   874,    94,   676,    46,
    1800      392,   -10,   580,   872,   461,  -430,   677,   580,   678,   487,
    1801     1137,  1196,   461,   375,   656,   658,   691,   813,  1196,    53,
    1802      743,   266,   159,   615,  1448,  1449,   388,   619,   380,   376,
    1803      693,   381,   692,   691,   382,   357,   760,   389,  1255,   743,
    1804      383,   766,   384,   385,    47,   695,   694,   882,    66,   911,
    1805      446,   851,  1096,   693,    74,   852,   884,   715,   386,    60,
    1806      685,  1196,  1020,   482,  1025,   483,   220,  1180,  1110,   912,
    1807      460,   718,  1193,    74,  1164,  1166,   861,   861,   268,  1118,
    1808     1193,    74,   159,   728,   994,   732,   860,   269,  1194,   454,
    1809       36,   861,   176,   209,    39,  1334,  1321,  1022,   541,   542,
    1810      666,    40,    41,   508,  1096,    46,   508,   270,    46,   508,
    1811       46,  1335,   443,   536,   937,  1508,   204,   319,   537,   538,
    1812      851,  1513,   106,  1380,  1106,   810,   177,    67,    74,    46,
    1813      717,  1174,  1175,  1489,   357,   710,   178,   557,  1529,   392,
    1814     1489,   320,   159,  1536,   718,    46,   103,   558,   805,   169,
    1815        2,   197,     4,     5,     6,     7,   881,    46,   883,  -109,
    1816       46,   788,   725,  1107,   443,   169,  1405,   159,   726,   861,
    1817     1336,   750,   566,   509,   392,   156,   509,   169,   219,   509,
    1818     -109,  -102,  1020,  1530,  1033,  -102,  1337,  1383,  1224,  1225,
    1819      321,   186,    46,   735,   208,  1275,  1276,   218,    46,   736,
    1820       46,  1430,   752,   717,   392,  1079,   322,   581,    34,   570,
    1821       35,   392,   753,   607,   860,   860,   323,     2,   197,     4,
    1822        5,     6,     7,    36,   324,   176,   749,    39,   936,   354,
    1823      868,   941,   750,   587,    40,    41,   543,   544,   358,   112,
    1824     1149,   942,  1041,  1368,    46,    46,  1007,  1369,  -454,   740,
    1825     -454,   896,   741,   461,  -454,   747,  -276,   750,    46,   255,
    1826      370,   715,   422,     8,     9,    10,    11,    12,   648,   256,
    1827      366,   545,   546,   156,   157,    34,   681,    35,   169,   649,
    1828      547,   548,   153,   848,  1491,   356,  1492,   683,   159,   159,
    1829       30,   813,   898,   159,   927,   750,   989,   461,   750,   863,
    1830      930,     8,     9,    10,    11,    12,    36,   378,  1086,   156,
    1831       39,   879,   390,    33,   159,   159,   443,    40,    41,   443,
    1832     1325,   900,    74,   906,  1020,   443,   407,   565,    30,   565,
    1833      894,  1531,   156,   984,   715,   430,   996,    46,   157,   985,
    1834      248,   903,   709,   424,  1247,   905,   153,   494,    46,  1376,
    1835      565,    33,   719,  1377,   106,   750,   204,  1324,   885,   750,
    1836      392,    36,  1379,   408,   159,    39,    74,   412,   750,   494,
    1837      204,   315,    40,    41,   888,  1355,   392,   443,  1384,   312,
    1838      443,   805,   159,   443,   750,   160,  1359,  1360,  1361,    36,
    1839      433,  1270,   916,    39,   444,   580,  1061,    42,  1149,  1249,
    1840       40,    41,  1393,   917,   918,  1311,  1312,   142,   565,  1143,
    1841      690,   392,   489,   813,  1191,  1395,     8,     9,    10,    11,
    1842       12,   447,  1444,    53,    46,   815,   450,   587,  1445,    46,
    1843       46,   415,  1464,   451,   410,   588,  1396,   107,   750,   414,
    1844      473,  1550,    46,    30,   810,   501,   159,   565,   356,   160,
    1845       46,   125,    66,   126,   127,   128,   581,   988,   204,   808,
    1846      242,   318,   392,    60,  1292,  1293,    33,   516,    46,   437,
    1847      318,   392,  1149,   628,    36,   549,   805,  1111,    39,  1046,
    1848      690,  1176,   316,   861,   550,    40,    41,   581,   400,   644,
    1849      392,   415,   581,   776,   777,   778,   779,  1112,  1160,   414,
    1850      392,  1133,   477,  1163,   743,   587,  1133,   557,   552,   392,
    1851      907,   551,   392,   512,  1420,  1421,   157,   558,   356,    46,
    1852      908,   510,  1242,  1168,   153,  1473,   813,   555,  1165,    36,
    1853      587,    67,    74,    39,   568,  1235,  1036,   392,   641,   810,
    1854       40,    41,   416,   923,  -277,   923,   718,   470,   318,   392,
    1855      103,     8,     9,    10,    11,    12,   719,   583,   690,  1133,
    1856      642,   813,   643,  1501,   577,   722,   830,   318,   587,  1061,
    1857     1149,   645,  1205,  1207,  1209,   723,   628,   443,    30,  1484,
    1858     1485,  1087,   772,   773,   612,   646,   690,    36,   616,   167,
    1859      168,    39,   647,    53,   517,   518,   519,   943,    40,    41,
    1860      650,    33,   416,   247,    36,   717,   167,   168,    39,   697,
    1861       46,   861,   861,   774,   775,    40,    41,   520,   699,   521,
    1862     -222,   522,  1198,   354,   103,   780,   781,   160,  1520,   719,
    1863      737,  1063,   751,   461,   755,    46,   718,   315,   315,   807,
    1864      358,   814,   315,   -12,   857,   312,   312,  1348,  1350,  1351,
    1865      312,   869,  1540,   870,   876,   279,   422,   897,   899,  1140,
    1866      726,   902,   565,   315,   315,   931,   805,   582,   677,  -404,
    1867     1096,   312,   670,   437,   952,  -506,   437,   945,   954,  1046,
    1868      959,   963,   437,   964,    36,   607,   167,   168,    39,   958,
    1869      967,   966,  1232,  1233,   112,    40,    41,   968,  1456,   969,
    1870      979,    67,    74,   991,   992,   993,   980,  1004,   997,  1005,
    1871     1076,  1010,  1011,   315,  1036,  1012,  1013,  1014,  1015,   477,
    1872      103,   312,  1016,   477,   210,  -392,   512,  -391,  1034,   512,
    1873     1078,   315,   512,  1083,   510,  1212,   715,   510,  1061,   312,
    1874      510,  1043,  1089,   202,   211,  1371,  1090,  1092,   316,   316,
    1875     1093,    46,  1094,   316,  1095,  1101,   706,  1100,   106,  1109,
    1876     1099,  1506,  1456,  1102,  1103,    53,  1119,  1120,  1121,   750,
    1877     1111,   810,   973,  1127,   316,   316,  1124,  -278,  1133,  1133,
    1878     1133,  1129,  1132,  1155,     8,     9,    10,    11,    12,  1158,
    1879     1112,   494,  1169,  1181,    66,   315,  1298,  1182,  1183,  1184,
    1880     1185,  1199,  1200,   312,  1201,    60,  1300,  1301,  1442,  1303,
    1881     1202,    30,  1203,   577,  1211,  1307,  1216,  1217,  1310,    -3,
    1882     1222,   811,  1228,   813,   316,  1229,   715,  1239,  1248,   482,
    1883     1243,  1266,   106,   159,    33,  1253,  1257,  1061,  1250,  1261,
    1884     1264,  1268,   316,  1277,   845,   421,  1271,  1272,  1273,   577,
    1885       53,   204,  1284,  1289,  1294,   854,   494,   494,  1295,  1302,
    1886     1320,  1305,  1306,  1326,  1308,  1111,   388,  1327,  1332,   380,
    1887     1309,   103,   381,    67,    74,   382,  1316,   389,  1338,  1198,
    1888      581,   383,  1340,   384,   385,  1112,   648,  1344,  1345,  1346,
    1889      461,  1352,   103,  1353,  1354,  1061,  1356,   649,  1061,   386,
    1890     1364,  1365,  1366,  1367,  1312,  1519,   316,  1374,  1375,  1378,
    1891     1385,    46,  1388,  1391,  1389,  1392,   582,   103,  1397,  1401,
    1892       46,    46,  1402,  1409,  1405,  1133,  1133,  1410,   106,  -393,
    1893     1414,   810,  1415,  1418,   437,  1429,  1435,  1433,  1443,  1455,
    1894      169,  1446,  1450,  1061,  1451,  1452,  1453,   847,  1061,  1369,
    1895     1471,  1478,   582,   422,  1460,  1469,  1465,   706,    67,    74,
    1896       93,  1474,  1467,  1477,   477,  1475,  1111,  1498,  1479,  1502,
    1897     1490,  1504,  1505,  1063,  1061,  1512,  1525,   103,    63,   113,
    1898     1528,  1535,  1537,  1549,  1543,  1426,  1112,   891,   782,  1386,
    1899      783,    93,   784,  1319,   785,  1256,  1437,   786,  1507,  1432,
    1900      144,  1387,   143,   145,    93,   146,  1551,    53,  1523,    63,
    1901      140,  1251,   103,    36,    53,   585,  1521,    39,    46,  1252,
    1902      181,  1493,   154,    93,    40,    41,    93,  1061,  1221,   673,
    1903     1097,   719,  1061,   924,   674,  1098,  1198,   701,   802,    46,
    1904       46,  1128,   155,  1198,   212,  1042,  1061,   461,  1061,   586,
    1905     1006,   587,  1061,   947,   461,  1061,   875,    53,  1108,   588,
    1906       46,  1061,   355,  1333,   720,  1061,     0,   955,     0,     0,
    1907        0,    36,  1390,   176,  1441,    39,     0,     0,   209,   106,
    1908      249,     0,    40,    41,     0,     0,  1198,     0,     0,     0,
    1909      494,     0,     0,   706,     0,   811,     0,   461,     0,     0,
    1910      106,     0,    93,   706,     0,     0,     0,   676,     0,   392,
    1911        0,   159,   443,   103,    93,    67,    74,   678,     0,   706,
    1912      317,   719,    67,    74,     0,   106,     0,     0,   332,     0,
    1913     1419,     0,     0,  1427,   103,     0,     0,   379,   181,     0,
    1914        0,   103,     0,     0,     0,     0,  1494,     0,     0,     0,
    1915        0,     0,     0,   494,   494,     0,   387,     0,     0,     0,
    1916      206,    93,     0,     0,     0,    67,    74,     0,     0,     0,
    1917      405,     0,    93,   140,   411,  1522,     0,     0,  1462,   154,
    1918      209,     0,   315,  1466,   103,   106,     0,     0,   477,  1113,
    1919      312,     0,     0,     0,     0,     0,     0,     0,     0,   428,
    1920        0,    93,     0,   431,     0,   432,   443,   443,     0,  1482,
    1921      206,     0,     0,   448,  1548,   468,     0,   811,     0,    63,
    1922      106,     0,     0,     0,   462,   707,  1553,    36,     0,   176,
    1923        0,    39,     0,     0,   469,  1147,     0,   845,    40,    41,
    1924        0,   498,   411,     0,     8,     9,    10,    11,    12,     0,
    1925        0,   206,     0,     0,   514,   515,     0,     0,     0,     0,
    1926        0,     0,     0,  1517,     0,   392,   535,     0,     0,     0,
    1927        0,    30,    72,  1518,     0,     0,   443,    93,     0,     0,
    1928        0,  1541,     0,     0,     0,     0,     0,  1541,     0,     0,
    1929        0,   589,     0,   316,    33,   515,  1541,     0,     0,     0,
    1930     1541,     0,     0,    72,   578,     0,     0,     0,     0,   206,
    1931        0,   608,     8,     9,    10,    11,    12,   443,     0,     0,
    1932        0,   106,     0,     0,   613,     0,   706,   706,   613,     0,
    1933      811,   332,   515,     0,     0,   752,     0,   392,   213,    30,
    1934      847,   394,   106,     0,     0,   753,   206,   181,   402,   106,
    1935      206,   443,     0,     0,   443,   443,     0,     0,     0,     0,
    1936        0,     0,    33,     0,     0,   811,     0,    36,     0,   585,
    1937        0,    39,     0,     0,     0,     0,     0,   462,    40,    41,
    1938      443,     0,   443,   706,   706,     0,  1269,     0,   205,     0,
    1939        0,   332,   106,  1147,     0,     0,   462,   682,   223,     0,
    1940        0,     0,     0,   586,   462,   587,   159,     0,     0,     0,
    1941        0,     0,     0,   588,     0,     0,     0,     0,   394,     0,
    1942        0,     0,   335,     0,     0,     0,   707,     0,     0,   206,
    1943        0,   702,     0,    93,   411,     0,     0,   589,   205,     8,
    1944        9,    10,    11,    12,     8,     9,    10,    11,    12,   716,
    1945        0,    63,     0,     0,     0,     0,     0,     0,     0,   411,
    1946      315,     0,     0,   411,     0,     0,    30,  1147,   312,   437,
    1947        0,    30,   563,     0,     0,     0,     0,     0,     0,   205,
    1948      567,     0,  1113,   571,     0,     0,     0,     0,     0,    33,
    1949        0,   332,     0,   429,    33,     0,     0,     0,     0,    36,
    1950        0,   176,     0,    39,     0,   769,   770,   771,   206,     0,
    1951       40,    41,     0,    72,     0,     0,     0,     0,    72,     0,
     1751     109,   145,    46,   140,    94,   146,   147,   660,   257,   110,
     1752      53,   111,   913,   613,    47,   380,   420,   617,   381,   494,
     1753     914,   382,   761,   383,  1071,   915,   384,   385,   670,   386,
     1754     844,   694,   793,    46,  1176,    94,   365,   589,   827,   869,
     1755     486,    53,   826,  1072,    46,    47,    46,   391,   156,    67,
     1756     683,   954,   250,   972,   819,    66,    46,   388,   389,   139,
     1757     669,   688,    46,   860,   186,    46,    74,   208,    46,  1136,
     1758     218,   789,   790,   203,   211,   715,   212,   878,   579,   791,
     1759      67,   820,   821,  1128,   148,   507,    66,   251,   913,   406,
     1760     252,  1397,   380,   149,   652,   381,   914,    74,   382,   816,
     1761     383,   915,   107,   384,   385,    46,   386,   727,    46,   930,
     1762     822,   732,   205,   663,    46,  1193,  1460,   107,   463,   465,
     1763     118,   667,  1187,   752,    30,   103,   103,   830,   119,   167,
     1764     194,    30,   150,   837,   388,   389,   459,   145,  1456,   817,
     1765     107,   146,   147,  -218,  -218,    46,   221,   156,  1205,   163,
     1766     222,  1183,  1256,   226,   937,   228,   103,    46,   818,   355,
     1767     858,   858,   235,   656,   658,   107,    30,   409,  1174,  1175,
     1768     138,   243,  1417,  1418,   195,   858,  1201,  1184,   107,  1257,
     1769      46,    46,   722,   156,     2,   198,     4,     5,     6,     7,
     1770     392,   103,  1473,  1192,   419,    46,   650,  1417,  1418,  1203,
     1771    1460,   107,  1456,   757,    46,  1460,   156,  1480,  -218,   655,
     1772     657,   107,    46,   161,   145,    46,   763,   423,   146,   147,
     1773     148,  1460,   716,   421,   736,   859,   859,  1531,  1460,   149,
     1774     242,   737,   392,  1184,   816,   142,  1419,   725,   731,  1344,
     1775     859,   453,    34,    46,    35,    94,   471,  1176,   390,  1346,
     1776    1544,    53,   858,   488,   552,    47,   744,    46,    46,    30,
     1777     156,  1428,   422,   398,    46,   647,   648,   991,   150,   451,
     1778     158,    46,   464,   639,   817,  1019,   847,   161,   715,  1018,
     1779     848,   504,  1005,   853,   221,   417,  1138,   493,   553,   459,
     1780      67,   165,   464,   818,   554,   425,    66,   507,  1176,    60,
     1781     507,   654,   175,   507,    -3,   427,   659,    74,   459,   820,
     1782     821,   316,    74,   193,   679,   681,   459,   859,   688,    46,
     1783     797,   355,   448,   400,  -275,   392,   579,   816,    30,    30,
     1784      60,   614,    46,    46,   158,   618,   237,    30,   822,   106,
     1785     106,   107,   359,   135,   136,   242,   647,   648,   831,    46,
     1786     240,   715,   834,    46,   830,   786,  1340,   579,   360,   368,
     1787     508,   902,   579,   542,   543,  1071,   103,   817,   315,  1207,
     1788     106,   416,  1193,   851,   722,   369,   481,   854,   482,    46,
     1789     793,   205,   233,   160,  1072,   107,   818,   135,   136,    46,
     1790     827,   355,   469,   828,   392,   586,  -502,  1119,   544,   545,
     1791     563,   835,   210,   586,  1120,   106,   564,    46,  1505,   920,
     1792    1338,   920,    46,   221,  1510,   226,  1060,  1339,   816,   789,
     1793     790,   844,   515,  1176,   916,   716,  1433,   791,   415,   254,
     1794     416,  1526,  1174,  1175,   820,   821,  1533,   107,    46,   135,
     1795     136,     8,     9,    10,    11,    12,   929,   160,  1530,  1079,
     1796    1379,   366,   262,   371,   109,   161,   849,   373,   817,  -109,
     1797     850,   -10,    46,   822,  1539,    74,  1402,  1177,    30,   372,
     1798      46,  1543,   355,   374,    46,   865,    94,   818,    46,   849,
     1799    -109,   160,    53,  1103,    74,  1134,    47,   415,  1445,  1446,
     1800     738,    33,    74,   739,   357,   581,   745,   375,   716,   741,
     1801     665,   221,   565,   870,   392,   486,   882,  -429,   689,   511,
     1802     205,   380,   158,   376,   381,   758,  -430,   382,   741,   383,
     1803     764,    67,   384,   385,   690,   386,   691,    66,   266,  1193,
     1804    1017,  1093,   811,   880,   708,  1252,  1193,   268,    74,   683,
     1805      60,   160,   692,   689,  1115,   460,   516,   517,   518,  1161,
     1806    1163,   691,   210,  1019,   388,   389,   459,   535,  1451,   908,
     1807     991,   269,   536,   537,   270,   858,  1190,   909,   453,   519,
     1808     442,   520,   508,   521,  1107,   508,   316,   316,   508,  1193,
     1809     106,   316,  1191,  1093,    46,  1190,   319,    46,  1198,    46,
     1810     846,   569,   357,   392,  1331,  1272,  1273,   103,   112,   934,
     1811     160,  1318,   316,  1333,   320,  1022,   861,  1486,    46,    36,
     1812    1332,   177,   321,    39,  1486,   322,   748,  1377,   877,  1334,
     1813      40,    41,   442,   706,    46,   160,   323,   803,  1173,   707,
     1814     859,   157,  1380,   315,   315,   879,    46,   881,   315,    46,
     1815     723,   154,  -109,   324,  -109,   178,   724,   187,  -109,  1017,
     1816     209,   316,   556,   219,   392,   179,   422,  1527,   750,   315,
     1817     392,  1146,   557,  -109,  -109,   580,  1030,   354,   751,   316,
     1818      46,   606,   358,    36,   733,   584,    46,    39,    46,   107,
     1819     734,   135,   136,   747,    40,    41,   938,  1076,   586,   748,
     1820     390,   894,   493,   858,   858,  1427,   939,   748,   460,   248,
     1821    -102,   893,   370,  1104,  -102,   154,   933,   896,   315,   585,
     1822     871,   586,   626,   748,   493,   230,   872,   460,   488,   587,
     1823     231,   511,    46,    46,   511,   460,   315,   511,   898,   892,
     1824     157,   981,    74,   316,   564,   378,    46,   982,   407,   312,
     1825     901,  1038,   356,   581,   903,   408,   160,   160,   579,   205,
     1826    1365,   160,   715,   443,  1366,   993,   137,  1060,   859,   859,
     1827    1004,   707,   412,   205,  1244,   107,   157,   135,   136,   713,
     1828     564,    60,   160,   442,   845,    74,   442,   446,  1488,   581,
     1829    1489,   430,   442,     2,   198,     4,     5,     6,     7,   157,
     1830     315,  1017,  1373,   449,   410,   647,   648,   450,   748,   414,
     1831     424,   728,   985,   679,   681,   811,   729,   232,   234,   717,
     1832     472,   106,  1267,   242,   318,    46,  1322,   107,  -454,  1146,
     1833    -454,   160,  1321,  1374,  -454,  1528,    46,  1376,   436,   748,
     1834     538,   539,  1381,   748,   442,   500,   987,   442,   748,   160,
     1835     442,    34,  1390,    35,  1441,   515,   992,  1461,   564,  1547,
     1836    1442,   205,   913,   748,   550,   564,  1387,   549,   414,   803,
     1837     914,   476,  1006,   548,   883,   915,   392,  1246,     8,     9,
     1838      10,    11,    12,   125,  1058,   126,   127,   128,   546,   547,
     1839     509,  1033,   551,   154,   107,    53,   135,   136,   774,   775,
     1840     776,   777,  1368,  1146,   107,    30,   135,   136,   886,   716,
     1841     392,   554,    46,   160,   356,   567,    46,    46,   242,   318,
     1842     392,  1392,  1188,   580,  1416,   582,   806,  1424,    33,    46,
     1843    1227,   649,   704,   576,    67,  1228,   811,    46,   640,  1140,
     1844      66,   392,  1289,  1290,   540,   541,     8,     9,    10,    11,
     1845      12,    74,   641,   611,   580,    46,   688,   615,   642,   580,
     1846     400,   643,   392,  1157,   803,   392,  1108,   644,  1109,   556,
     1847     445,   392,  1459,    30,    36,   460,  1083,  1463,    39,   557,
     1848     645,  1160,   713,   586,   356,    40,    41,   646,  1130,  1084,
     1849    1162,   741,   586,  1130,   247,  1165,    33,   697,  1232,   716,
     1850     392,  1146,   695,  1479,   748,   986,    46,  -222,  1297,  1298,
     1851     103,  1300,   735,  1137,   312,   312,  1239,  1304,   460,   312,
     1852    1307,    36,   717,   177,   749,    39,   688,   469,   318,   392,
     1853     753,  1470,    40,    41,   828,   318,   586,   750,   805,   392,
     1854     668,   436,   812,   442,   436,   855,  1130,   751,   -12,   811,
     1855     436,  1345,  1347,  1348,   867,   713,  1058,   255,   422,  1202,
     1856    1204,  1206,   112,   940,    53,   318,   392,   256,  1033,  1498,
     1857    1308,  1309,  1481,  1482,   868,  1538,  1417,  1418,  1171,  1172,
     1858     874,  1538,   279,   103,   811,   770,   771,   476,   895,   312,
     1859    1538,   476,   772,   773,  1538,   717,   897,    46,   724,   627,
     1860     900,   564,   509,    67,   688,   509,   675,   312,   509,  1195,
     1861     778,   779,    36,   928,   705,  -403,    39,  1517,  -506,   942,
     1862      74,   949,    46,    40,    41,   951,   955,  1537,   316,   956,
     1863     960,   961,   688,   704,   963,  1221,  1222,   964,   965,   966,
     1864     977,  1001,  1209,   976,   988,   493,   989,   990,   813,  1073,
     1865     586,   606,   994,   803,  1002,  1031,  1040,  1007,   587,  1093,
     1866    1008,  1009,     2,   198,     4,     5,     6,     7,  1010,  1011,
     1867    1012,   312,  1013,  -391,  -390,   845,  1453,  1080,   693,   103,
     1868    1075,   576,  1086,   445,    60,   315,  1087,  1423,  1090,   809,
     1869     220,  1089,     8,     9,    10,    11,    12,  -276,  1091,  1092,
     1870    1096,  1097,  1098,  1106,     8,     9,    10,    11,    12,  1099,
     1871     493,   493,   843,   211,   203,   212,   726,   576,   730,    30,
     1872      34,  1100,    35,   852,   106,  1058,  1116,   748,  1117,  1118,
     1873    1121,    30,  1213,   970,  1124,  1129,    53,  1126,    46,  1503,
     1874    1453,  1152,    33,  1155,    36,  1178,   168,   169,    39,  1166,
     1875    1179,  1181,  1180,   205,    33,    40,    41,   497,  1182,  1108,
     1876    1196,  1109,  1197,  1199,  1200,  1130,  1130,  1130,   704,  1208,
     1877     513,   514,  1214,    -3,  1219,    67,  1225,  1226,   704,  -277,
     1878     354,    66,   534,   938,  1240,   586,     8,     9,    10,    11,
     1879      12,  1236,    74,   939,   704,  1247,   481,   106,   160,  1245,
     1880    1250,   436,  1439,  1254,  1258,  1261,    36,  1263,   177,  1265,
     1881      39,   514,  1268,    30,  1269,   705,   421,    40,    41,  1270,
     1882    1274,    53,  1352,  1281,  1058,  1286,  1291,  1299,  1292,  1329,
     1883     103,   476,  1323,  1356,  1357,  1358,    33,  1302,  1303,  1317,
     1884    1305,  1306,   674,  1324,   392,   580,   811,  1335,   514,  1313,
     1885     675,   103,   676,   460,  1108,   422,  1109,  1337,  1341,  1342,
     1886      67,   380,  1343,   866,   381,  1349,  1195,   382,  1350,   383,
     1887    1351,  1353,   384,   385,  1361,   386,   103,    74,  1362,  1363,
     1888    1364,  1309,  1058,  1393,  1371,  1058,  1375,  1372,  1382,  1438,
     1889    1385,  1388,  1386,   106,  1389,  1398,  1383,  1394,    46,  1516,
     1890    1399,  1406,  1402,   388,   389,  1407,   316,    46,    46,  1411,
     1891    1412,  -278,  1130,  1130,  -392,  1415,  1426,  1003,     8,     9,
     1892      10,    11,    12,   647,   648,  1432,   924,  1430,  1440,    36,
     1893    1058,   177,   927,    39,  1443,  1058,   103,  1447,    63,   113,
     1894      40,    41,  1448,  1449,   493,    30,  1450,  1366,  1466,    93,
     1895     705,  1452,  1457,  1462,  1468,  1108,   713,  1109,  1464,  1471,
     1896     705,  1058,   809,   315,  1472,   674,  1474,   392,    33,    63,
     1897     141,   103,  1475,  1487,  1495,   676,   705,  1476,    53,  1501,
     1898      93,  1499,   155,   145,  1502,    53,  1522,   146,   147,  1525,
     1899    1509,   144,  1534,    93,  1532,  1540,   717,  1546,   889,   780,
     1900     704,   704,   781,  1518,   213,    46,   783,   493,   493,   182,
     1901     782,   784,    93,  1253,  1058,    93,  1316,    67,  1429,  1058,
     1902     767,   768,   769,  1195,    67,    60,    46,    46,    53,   156,
     1903    1195,  1504,  1548,  1058,    74,  1058,  1384,  1520,  1248,  1058,
     1904     249,    74,  1058,   210,   106,  1249,   713,    46,  1058,   355,
     1905    1218,  1490,  1058,  1491,   476,  1110,   312,   704,   704,   514,
     1906    1094,   699,   921,  1125,  1095,   106,   671,    67,   672,   800,
     1907    1039,   873,   103,  1195,  1105,   944,   160,   442,  1330,   718,
     1908     952,   317,  1519,   809,    74,     0,   717,     0,     0,   332,
     1909     106,     0,    93,   103,     0,     0,     0,     0,     0,     0,
     1910     103,  1144,    36,   843,    93,   627,    39,     0,     0,     0,
     1911     460,  1043,     0,    40,    41,     0,     0,   387,     0,     0,
     1912       0,  1545,     0,     0,     0,     0,     0,   379,   182,     0,
     1913       0,   405,     0,  1550,   141,   411,     0,     0,    42,     0,
     1914     155,     0,    36,   103,   177,   210,    39,     0,   143,     0,
     1915     106,    93,     0,    40,    41,     0,     0,     0,     0,   170,
     1916     428,     0,    93,     0,   431,    36,   432,   168,   169,    39,
     1917       0,   442,   442,   447,     0,     0,    40,    41,  1514,    63,
     1918     392,     0,   705,   705,   461,   106,     0,    36,  1515,     0,
     1919      93,    39,     0,     0,   468,   514,   809,     0,    40,    41,
     1920       0,   316,   411,  1494,   467,     0,     0,   627,   170,     0,
     1921       0,   170,     0,     0,     0,  1327,     0,    36,     0,     0,
     1922       0,    39,     0,   904,     0,   392,     0,     0,    40,    41,
     1923       0,   809,  1494,   905,     0,     0,     0,     0,   971,   705,
     1924     705,   442,     0,     0,   704,     0,     0,     0,     0,     0,
     1925     207,     0,  1266,   720,     0,   704,   704,   704,   315,  1144,
     1926       0,     0,    72,   721,   577,     0,    93,   460,     0,     0,
     1927       0,   607,     0,     0,   460,     0,     0,     0,     0,     0,
     1928     588,     0,   442,     0,   612,     0,   106,     0,   612,     0,
     1929       0,   332,     0,    72,     0,     0,     0,     0,     0,     0,
     1930     207,     0,     0,     0,     0,   704,     0,   106,     0,     0,
     1931    1043,     0,     0,     0,   106,   170,   442,   460,     0,   442,
     1932     442,     0,     0,  1229,  1230,     0,     0,     0,   214,     0,
     1933       0,     0,     0,  1144,   312,   436,   182,   461,     0,     0,
     1934       0,     0,   207,     0,     0,   442,     0,   442,  1110,     0,
     1935      36,   332,   168,   169,    39,     0,   461,   106,     0,     0,
     1936       0,    40,    41,     0,   461,     0,     0,   170,     0,     0,
     1937       0,   160,     0,     0,   170,   514,     0,     0,     0,     0,
     1938       0,     0,   206,     0,     0,   680,   358,     0,     0,     0,
     1939     700,     0,   224,   411,     0,     0,     0,  1328,     0,     0,
     1940     207,     0,     0,     0,     0,     0,     0,     0,   714,     0,
     1941      63,     0,     0,   335,     0,     0,     0,     0,   411,     0,
     1942       0,    93,   411,     0,     0,   588,   705,  1295,     0,   436,
     1943     436,  1144,   206,     0,     0,   170,   207,   705,   705,   705,
     1944     207,     0,     0,  1110,     0,     0,     0,     0,     0,     0,
     1945     332,     0,   170,     0,     0,     0,   170,   522,   523,   524,
     1946     525,   526,   527,   528,   529,   530,   531,     0,     0,     0,
     1947       0,     0,     0,     0,   206,     0,     0,     0,     0,     0,
     1948       0,   514,     0,     0,   429,     0,     0,   705,     0,     0,
     1949     532,     0,     0,   809,     0,   792,     0,     0,     0,   436,
     1950       0,     0,     0,    72,     0,     0,     0,     0,    72,     0,
     1951     802,     0,   577,     0,     0,     0,     0,     0,     0,   207,
     1952     249,     0,     0,     0,     0,   824,     0,     0,     0,   497,
     1953       0,    75,   206,     0,   815,     0,   588,     0,     0,     0,
     1954     436,     0,     0,   577,  1110,     0,     0,     0,   577,     0,
     1955       0,     0,     0,     0,   612,     0,     0,     0,   332,   332,
     1956       0,     0,    75,     0,     0,     0,     0,     0,   206,     0,
     1957       0,     0,   206,   332,  1493,     0,     0,   436,   436,     0,
     1958       0,     0,     0,     0,     0,     0,     0,     0,   487,     0,
     1959       0,   700,     0,     0,     0,   214,     0,   215,   207,     0,
     1960       0,     0,     0,  1493,   461,   436,     0,     0,     0,     0,
     1961       0,   714,     0,     0,   917,   335,     0,   588,     0,   394,
     1962       0,     0,     0,   912,     0,   680,   402,  1434,     0,   312,
    19521963       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1953      941,     0,   587,     0,     0,   177,   794,   205,     0,   394,
    1954      942,  1330,     0,   402,   515,   178,   817,     0,   589,     0,
    1955        0,   804,     0,   578,     0,     0,     0,     0,     0,   206,
    1956        0,   249,   707,   437,   437,  1147,   826,     0,     0,     0,
    1957      706,   316,   707,     0,   205,     0,     0,  1113,   205,     0,
    1958        0,   706,   706,   706,   578,     0,     0,     0,   707,   578,
    1959        0,     0,     0,     0,   488,   613,     0,     0,     0,   332,
    1960      332,     0,     0,     0,     0,   213,     0,     0,     0,     0,
    1961        0,     0,     0,     0,   332,   523,   524,   525,   526,   527,
    1962      528,   529,   530,   531,   532,   335,     0,   811,   394,     0,
    1963      589,   706,   702,   437,     0,     0,   915,     0,   682,     0,
    1964        0,     0,     0,     0,     0,   462,     0,     0,   533,     0,
    1965        0,     0,     0,   716,     0,     0,   920,   205,     0,     0,
    1966        0,     0,     0,   120,   123,   124,    75,     0,     0,     0,
    1967        0,    72,     0,     0,   437,   206,     0,     0,  1113,     0,
    1968        0,   515,   817,   589,     0,   335,     0,     0,     0,   462,
    1969       72,     0,   332,     0,     0,     0,     0,    75,    72,     0,
    1970     1497,   946,     0,     0,   411,   206,     0,     0,  1496,     0,
    1971      206,   437,   437,     0,     0,     0,     0,   563,   563,     0,
    1972        0,     0,     0,     0,   974,   335,   716,     0,     0,  1497,
    1973        0,   972,   214,   244,     0,   245,   205,  1496,     0,   437,
    1974        0,     0,     0,   335,     0,    72,     0,     0,     0,     0,
    1975        0,     0,     0,   205,     0,   315,     0,     0,     0,     0,
    1976        0,     0,     0,   312,     0,     0,     0,     0,   702,     0,
    1977        0,     0,     0,     0,     0,   817,     0,     0,   702,     0,
    1978        0,     0,     0,  1002,   804,   335,   589,   205,     0,     0,
    1979      249,     0,     0,     0,   702,   707,   707,     0,     0,   206,
    1980        0,   886,     0,  1019,     0,   889,     0,     0,     0,     0,
    1981        0,     0,   377,   206,     0,     0,   337,     0,     0,     0,
    1982        0,   396,   397,     0,     0,     0,   401,     0,   403,   404,
    1983      563,     0,     0,     0,     0,   249,     0,     0,     0,     0,
    1984        0,     0,   394,     0,     0,   335,     0,     0,     0,     0,
    1985        0,     0,   707,   707,     0,    63,     0,     0,     0,     0,
    1986        0,   515,     0,     0,     0,     0,   316,   817,   589,     0,
    1987        0,    77,     0,     0,     0,     0,     0,     0,     0,   804,
    1988      682,     0,     0,     0,     0,     0,  1088,     0,   682,     0,
    1989        0,     0,     0,   335,   335,     0,     8,     9,    10,    11,
    1990       12,   206,    77,   205,     0,     0,   589,    75,   335,     0,
    1991        0,     0,    75,     0,     0,     0,     0,     0,     0,     0,
    1992     1105,     0,     0,    30,     0,     0,   335,     0,   411,   113,
    1993        0,     0,     0,   205,     0,     0,     0,   215,   205,    72,
    1994        0,     0,     0,   332,     0,     0,    33,   335,     0,     0,
    1995        0,    36,     0,   176,   563,    39,     0,   249,     0,     0,
    1996        0,     0,    40,    41,     0,     0,     0,     0,   515,     0,
    1997        0,     0,     0,     0,     0,   613,     0,   578,     0,     0,
    1998        0,     0,     0,    72,     0,     0,   335,   676,     0,   392,
    1999        8,     9,    10,    11,    12,   140,     0,   678,     0,   214,
    2000        0,   702,   702,     0,   332,   332,   332,     0,     0,     0,
    2001     1331,     0,     0,     0,     0,     0,   498,    30,     0,   337,
    2002      335,   338,     0,     0,     0,  1197,     0,   205,     0,     0,
    2003        0,     0,     0,     0,     0,     0,     0,     0,     0,   707,
    2004       33,   205,     0,     0,     0,    36,     0,   176,   589,    39,
    2005      707,   707,   707,     0,     0,     0,    40,    41,   702,   702,
    2006        0,   488,   335,     0,     0,    75,     0,   563,   563,   804,
    2007      249,     0,   335,     0,     0,   394,     0,   213,   335,   337,
    2008        0,  1517,     0,   392,    75,     0,     0,     0,   335,     0,
    2009        0,  1518,    75,     8,     9,    10,    11,    12,     0,   206,
    2010      707,     0,     0,     0,     0,   249,     0,     0,     0,     0,
    2011        0,     0,    77,     0,     0,     0,     0,    77,     0,   337,
    2012       30,     0,     0,     0,     0,     0,   613,     0,   716,   205,
    2013        0,     0,     0,   613,   332,   332,     0,   337,     0,    75,
    2014      515,     0,     0,    33,     0,     0,     0,     0,    36,    72,
    2015      176,  1144,    39,     8,     9,    10,    11,    12,     0,    40,
    2016       41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2017     1161,     0,     0,   335,     0,     0,  1299,     0,     0,   337,
    2018       30,     0,     0,     0,   255,     0,     0,     0,     0,     0,
    2019        0,     0,     0,   332,   256,     0,     0,    63,     0,   796,
    2020      797,     0,     0,    33,   215,     0,     0,   613,    36,     0,
    2021        0,     0,    39,     0,     0,     0,   702,     0,   716,    40,
    2022       41,     0,   113,     0,   338,     0,     0,   831,     0,     0,
    2023      834,   835,     0,   838,     0,   840,   841,   335,     0,   337,
    2024      842,   843,     0,     0,   907,   702,   392,     0,   563,     0,
    2025        0,     0,     0,  1236,   908,     0,   702,   702,   702,     0,
    2026        0,     0,     0,     0,     0,     0,     0,     0,   332,   332,
    2027       77,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2028        0,     0,  1197,     0,   338,     0,     0,   337,   337,    77,
    2029        0,     0,     0,     0,   206,   335,   335,    77,   335,   335,
    2030      335,     0,   337,     0,     0,   613,   702,     8,     9,    10,
    2031       11,    12,     0,     0,     0,     0,     0,   113,     0,    72,
    2032      337,     0,     0,     0,   338,   925,   926,   205,     0,     0,
    2033        0,   928,     0,    75,    30,     0,     0,     0,     0,     0,
    2034        0,   337,   338,     0,    77,     0,     0,     0,     0,     0,
    2035        0,     0,   335,   335,     0,     0,     0,    33,     0,     0,
    2036        0,     0,    36,   335,    84,     0,    39,   249,     0,     0,
    2037        0,     0,     0,    40,    41,     0,     0,    75,     0,     0,
    2038      337,     0,     0,     0,   338,     0,     0,     0,     0,     0,
    2039        0,     0,     0,     0,   332,    84,   206,     0,    42,     0,
    2040        0,     0,     0,     0,     0,     0,     0,     0,   142,     0,
    2041        0,     0,     0,     0,   337,     0,     0,     0,   113,     0,
    2042        0,     0,   335,     0,     0,     0,     0,     0,   335,   335,
    2043      216,     0,     0,     0,     0,     0,     0,     0,     0,  1197,
    2044        0,     0,     0,     0,   338,     0,  1197,     0,     0,     0,
    2045        0,     0,     0,     0,     0,     0,   337,     0,     0,     0,
    2046        0,     0,     0,     0,     0,     0,   337,     0,     0,     0,
    2047      213,   214,   337,     0,     0,     0,     0,   468,     0,     0,
    2048        0,     0,   337,     0,     0,     0,     0,   335,     0,  1197,
    2049        0,    72,   338,   338,     0,     0,  1538,     0,     0,     0,
    2050        0,     0,     0,    54,    54,     0,     0,   338,     0,     0,
    2051      335,     0,   335,     0,   345,     0,     0,     0,     0,     0,
    2052        0,     0,   205,     0,     0,   338,     0,     0,     0,     8,
    2053        9,    10,    11,    12,    54,     0,     0,     0,    77,   335,
    2054        0,     0,     0,    75,     0,     0,   338,     0,     0,     0,
    2055      335,   335,   335,     0,     0,     0,    30,     0,     0,     0,
    2056        0,     0,   335,   335,     0,     0,    54,   337,     0,    54,
    2057        0,     0,     0,     0,     0,     0,    72,     0,     0,    33,
    2058        0,     0,    77,     0,    36,   338,     0,     0,    39,     0,
    2059        0,     0,     0,     0,     0,    40,    41,     0,     0,     0,
    2060      335,     0,     0,     0,     0,    84,     0,     0,     0,     0,
    2061       84,     0,     0,     0,     0,     0,     0,     0,     0,   338,
    2062      722,     0,     0,     0,   205,     0,     0,     0,     0,     0,
    2063      723,   337,     0,     0,     0,     0,   122,   122,   122,     0,
     1964       0,     0,     0,     0,     0,     0,     0,   461,   207,     0,
     1965     332,   206,     0,   514,     0,     0,     0,     0,     0,   943,
     1966       0,    72,   411,     0,     0,     0,     0,     0,     0,   815,
     1967     588,     0,     0,     0,     0,   335,     0,     0,     0,     0,
     1968      72,     0,   337,     0,   714,     0,     0,   808,    72,   969,
     1969       0,     0,     0,     0,     0,   394,     0,     0,     0,     0,
    20641970       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1971       0,   170,     0,     0,   335,     0,     8,     9,    10,    11,
     1972      12,     0,     0,     0,     0,     0,   700,   170,     0,     0,
     1973     206,     0,   335,     0,    72,     0,   700,     0,     0,   170,
     1974       0,   999,   802,    30,     0,     0,     0,   206,   249,   562,
     1975       0,     0,   700,     0,     0,     0,     0,   566,     0,     0,
     1976     570,  1016,   815,     0,   207,     0,    33,     0,     0,     0,
     1977       0,    36,    75,   588,   335,    39,     0,    75,     0,     0,
     1978     206,     0,    40,    41,     0,     0,     0,     0,     0,     0,
     1979       0,     0,     0,   249,   207,     0,     0,     0,     0,   207,
     1980       0,     0,     8,     9,    10,    11,    12,   904,     0,   392,
     1981       0,     0,     0,    63,     0,     0,   394,   905,     0,     0,
     1982     402,     0,     0,     0,     0,     0,     0,     0,     0,    30,
     1983       0,     0,     0,     0,   335,     0,     0,   802,     0,   170,
     1984       0,     0,     0,  1085,     0,     0,     0,     0,     0,     0,
     1985       0,     0,    33,   815,   588,     0,     0,    36,     0,   584,
     1986       0,    39,     0,     0,   215,     0,   680,     0,    40,    41,
     1987       0,     0,     0,     0,   680,     0,     0,  1102,     0,     0,
     1988       0,     0,   335,   335,   337,   411,   113,   207,     0,     0,
     1989       0,     0,   588,   585,     0,   586,   206,   335,     0,     0,
     1990     332,   207,     0,   587,   394,     0,     0,     0,     0,     0,
     1991       0,     0,     0,     0,   249,   335,     0,     0,     0,     0,
     1992       0,     0,     0,     0,     0,     0,   206,     0,    72,     0,
     1993      75,   206,   612,     0,   577,   335,     0,     0,     0,     0,
     1994       0,     0,     0,     0,   337,     0,     0,    77,     0,    75,
     1995       0,     0,   141,     0,     0,     0,     0,    75,   700,   700,
     1996       0,   332,   332,   332,     0,     0,     0,     0,     0,     0,
     1997       0,    72,     0,     0,   335,     0,     0,     0,    77,     0,
     1998       0,     0,  1194,   337,     0,     0,     0,     0,     0,   207,
     1999       0,     0,     0,   562,   562,     0,     0,     0,     0,     0,
     2000       0,   337,     0,    75,     0,   808,     0,     0,   335,     0,
     2001       0,     0,     0,   216,     0,   700,   700,     0,     0,   206,
     2002       0,     0,     0,     0,     0,     0,   802,   249,     0,     0,
     2003       0,     0,     0,   206,   588,     0,     0,     0,     0,     0,
     2004       0,     0,     0,   337,     0,     8,     9,    10,    11,    12,
     2005     335,     0,     0,   487,     0,     0,     0,     0,     0,     0,
     2006     335,     0,   249,     0,     0,   214,   335,     0,   120,   123,
     2007     124,     0,    30,     0,     0,     0,   335,   884,     0,     0,
     2008       0,   887,     0,   612,     0,   714,     0,     0,     0,     0,
     2009     612,   332,   332,     0,     0,    33,     0,     0,   338,   808,
     2010      36,     0,   177,   337,    39,   562,     0,     0,     0,     0,
     2011       0,    40,    41,     0,     0,     0,     0,   394,     0,     0,
     2012       0,   206,     0,     0,     0,     0,     0,     0,     0,     0,
     2013       0,     0,     0,  1296,     0,     0,   178,    72,   244,     0,
     2014     245,     0,     0,     0,     0,     0,   179,     0,     0,     0,
     2015     332,   337,   337,     0,    63,     0,     0,     0,     0,     0,
     2016       0,   335,     0,     0,   612,     0,   337,     0,     0,     0,
     2017      54,    54,     0,   700,     0,   714,     0,     0,     0,   113,
     2018       0,     0,     0,     0,   337,     0,   207,     0,    77,     0,
     2019       0,     0,     0,    77,     0,     0,     0,    75,     0,     0,
     2020       0,    54,   700,     0,   337,     0,     0,     0,     0,     0,
     2021       0,     0,     0,   700,   700,   700,     0,     0,   377,     0,
     2022       0,     0,     0,     0,   335,   332,   332,   396,   397,   562,
     2023       0,     0,   401,    54,   403,   404,    54,     0,     0,  1194,
     2024      75,     0,     0,   337,    84,     8,     9,    10,    11,    12,
     2025      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2026      23,    24,   612,   700,    25,    26,    27,   473,   474,   475,
     2027       0,     0,    30,     0,   113,    84,     0,   337,     0,     0,
     2028     216,     0,   335,   335,     0,   335,   335,   335,     0,     0,
     2029       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2030     338,     0,    37,    38,     0,     0,    72,     0,     0,     0,
     2031     217,     8,     9,    10,    11,    12,     0,     0,   206,   337,
     2032       0,   330,     0,     0,   249,     0,     0,     0,     0,   337,
     2033       0,   808,     0,     0,   215,   337,     0,     0,    30,   335,
     2034     335,   562,   562,     0,     0,   337,    77,     0,     0,   394,
     2035     335,   332,     0,     0,     0,     0,     0,     0,     0,     0,
     2036     338,    33,     0,     0,     0,    77,    36,     0,   177,     0,
     2037      39,     0,     0,    77,     0,   113,     0,    40,    41,     0,
     2038       0,   207,     0,    54,     0,     0,     0,     0,     0,     0,
     2039       0,     0,     0,     0,     0,   345,  1194,     0,     0,   338,
     2040       0,     0,   674,  1194,   392,     0,    75,     0,     0,   335,
     2041       0,    54,   676,     0,     0,   335,   335,   338,     0,    77,
     2042       8,     9,    10,    11,    12,  1141,     0,     0,     0,     0,
     2043     337,     0,     0,     0,     0,     0,     0,     0,     0,     8,
     2044       9,    10,    11,    12,  1158,     0,  1194,    30,     0,     0,
     2045       0,     0,     0,  1535,     0,     0,     0,   214,     0,   338,
     2046       0,     0,     0,   467,     0,     0,    30,     0,     0,     0,
     2047      33,     0,     0,     0,   335,    36,     0,   177,    72,    39,
     2048       0,     0,     0,   207,     0,    84,    40,    41,     0,    33,
     2049      84,   808,     0,   337,    36,     0,   177,   335,    39,   335,
     2050     170,     0,     0,     0,     0,    40,    41,     0,     0,     0,
     2051       0,   255,     0,   206,     0,     0,     0,     0,     0,   338,
     2052       0,   256,   562,   330,     0,     0,   335,  1233,     0,     0,
     2053    1514,     0,   392,     0,     0,     0,     0,   335,   335,   335,
     2054    1515,     0,     0,     0,     0,     0,     0,     0,     0,   335,
     2055     335,   337,   337,     0,   337,   337,   337,     8,     9,    10,
     2056      11,    12,     0,    72,     0,     0,     0,   338,   338,     0,
     2057       0,     0,     0,     0,     0,    75,     0,   217,     0,     0,
     2058       0,     0,   338,   330,    30,     0,     0,   335,     0,     0,
     2059       0,     0,     0,     0,     0,     0,     0,   345,     0,     0,
     2060     338,     0,     0,   794,   795,     0,     0,    33,   337,   337,
     2061       0,     0,    36,    77,     0,   206,    39,     0,     0,   337,
     2062     338,     0,     0,    40,    41,     0,     0,     0,     0,     0,
     2063       0,   829,     0,     0,   832,   833,     0,   836,     0,   838,
     2064     839,     0,    54,    84,   840,   841,     0,     0,    42,     0,
     2065       0,     0,     0,     0,     0,     0,    77,   345,   143,   338,
     2066       0,     0,    84,     0,     0,     0,     0,     0,     0,     0,
     2067      84,     0,     0,     0,     0,   335,     0,     0,   337,     0,
     2068       0,     0,   330,     0,   337,   337,     0,     0,     0,     0,
     2069       0,     0,     0,   338,     0,     0,   345,     0,     0,     0,
     2070       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2071       0,     0,     0,     0,   345,     0,    84,     0,     0,     0,
     2072      72,     0,     0,     0,     0,     0,   215,    72,   922,   923,
     2073       0,     0,     0,     0,   925,   338,     0,     0,     0,     0,
     2074       0,     0,   330,   337,     0,   338,     0,    75,     0,     0,
     2075     216,   338,     0,     0,     0,     0,   345,     0,     0,     0,
     2076       0,   338,     0,     0,     0,     0,   337,     0,   337,     0,
     2077      72,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2078      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2079     330,   330,    25,    26,    27,   337,     0,     0,     0,     0,
     2080      30,   434,     0,     0,     0,   330,   337,   337,   337,     0,
     2081       0,     0,     0,     0,     0,     0,   345,     0,   337,   337,
     2082       0,     0,    77,    33,     0,     0,     0,     0,     0,     0,
     2083      37,    38,    75,     0,     8,     9,    10,    11,    12,     0,
     2084       0,     0,     0,     0,     0,     0,   338,     0,     0,     0,
     2085       0,     0,   122,   122,   122,     0,   337,     0,     0,     0,
     2086       0,    30,     0,     0,   345,   345,   435,     0,     0,     0,
     2087     687,     0,     0,     0,   108,     0,     0,     0,     0,   345,
     2088       0,     0,   330,     0,    33,     0,     0,     0,     0,    36,
     2089       0,     0,     0,    39,     0,     0,     0,   345,     0,     0,
     2090      40,    41,     0,     0,     0,     0,     0,     0,     0,   338,
     2091      84,     0,     0,     0,   162,     0,   166,   345,     0,   172,
     2092     173,   174,   122,   176,   122,   720,     0,     0,     0,     0,
     2093       0,     0,     0,     0,     0,   721,     0,     0,   225,     0,
     2094       0,     0,     0,     0,   337,     0,     0,     0,   265,   238,
     2095     239,     0,     0,    84,     0,     0,   345,     0,     0,     0,
     2096       0,     0,     0,     0,     0,     0,     0,   338,   338,     0,
     2097     338,   338,   338,     0,   330,     0,     0,     0,     0,     0,
     2098       0,     0,     0,     0,     0,     0,     0,     0,     0,    75,
     2099     345,    77,     0,     0,     0,     0,    75,     0,     0,     0,
     2100       0,     0,   122,     0,     0,     0,     0,     0,     0,   122,
     2101       0,   122,   122,     0,     0,   327,   122,     0,   122,   122,
     2102       0,     0,     0,     0,   338,   338,     0,     0,     0,     0,
     2103       0,     0,   345,     0,     0,   338,     0,     0,     0,    75,
     2104       0,     0,   345,     0,     0,    54,     0,   217,   345,     0,
     2105       0,     0,     0,     0,     0,     0,     0,     0,   345,     0,
     2106       0,     0,     0,     0,     0,     0,     0,     0,  1014,   330,
     2107       0,     8,     9,    10,    11,    12,     0,     0,     0,     0,
     2108       0,     0,     0,     0,     0,   122,     0,     0,     0,     0,
     2109       0,     0,     0,     0,   338,     0,     0,   271,    30,   272,
     2110     338,   338,     0,     0,     0,     0,     0,     0,     0,     0,
     2111       0,     0,     0,     0,     0,     0,     0,     0,    54,    84,
     2112     273,    33,  1223,     0,     0,     0,   274,     0,     0,     0,
     2113     275,     0,   330,   276,   277,   278,   279,    40,    41,     0,
     2114     280,   281,   216,   345,     0,     0,     0,     0,   282,     0,
     2115       0,     0,     0,     0,     0,     0,     0,     0,     0,   338,
     2116       0,     0,   283,    77,   361,     0,     0,     0,     0,     0,
     2117       0,   285,   890,   287,   288,   289,   290,     0,     0,     0,
     2118       0,     0,   338,     0,   338,     0,     0,     0,     0,     0,
     2119     575,     0,   583,   330,   330,   330,     0,     0,     0,     0,
     2120       0,     0,     0,   608,   609,     0,   345,     0,     0,     0,
     2121       0,   338,     0,     0,    54,     0,     0,   619,     0,     0,
     2122       0,     0,   338,   338,   338,     0,     0,     0,     0,     0,
     2123       0,     0,     0,     0,   338,   338,     0,     0,     0,     0,
     2124       0,     0,     0,     0,     0,     0,     0,     0,    77,     0,
     2125       0,     0,     0,     0,     0,     0,  1315,     0,   330,     0,
     2126       0,     0,     0,     0,   345,   345,     0,   345,   345,   345,
     2127       0,     0,   338,     0,     0,     0,     0,   662,     0,     0,
     2128       0,     0,     0,     0,     0,     0,     0,     0,    84,     0,
     2129       0,     0,   197,     2,   198,     4,     5,     6,     7,     8,
     2130       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2131      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2132      27,   345,   345,   330,   330,     0,    30,     0,     0,     0,
     2133       0,     0,   345,     0,     0,     0,     0,     0,     0,     0,
     2134       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2135       0,    34,     0,    35,     0,     0,   199,   200,     0,     0,
     2136     338,     0,     0,     0,    54,    54,     0,     0,     0,     0,
     2137       0,     0,     0,     0,     0,     0,   755,     0,     0,     0,
     2138       0,     0,   330,     0,     0,     0,    54,   122,   122,     0,
     2139       0,   345,   201,     0,     0,     0,     0,   345,   345,     0,
     2140     261,     0,     0,     0,     0,    77,     0,     0,     0,     0,
     2141       0,    54,    77,     0,     0,   122,     0,     0,   122,   122,
     2142       0,   122,     0,   122,   122,     0,     0,     0,   122,   122,
     2143       0,     0,     0,     0,     0,     0,   801,     0,     0,   217,
     2144       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2145       0,     0,     0,     0,     0,    77,   345,   330,   330,     0,
     2146      84,     0,     0,     0,     0,     0,    54,     0,     0,     0,
     2147       0,    54,     0,     0,     0,     0,     0,     0,     0,   345,
     2148       0,   345,     0,     0,     0,     0,     0,   862,     0,     8,
     2149       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2150      19,    20,    21,    22,    23,    24,    54,   122,   345,     0,
     2151       0,     0,   122,   122,     0,   891,    30,     0,   122,   345,
     2152     345,   345,     0,     0,     0,     0,     0,     0,     0,     0,
     2153       0,   345,   345,   906,   907,     0,     0,   911,     0,    33,
     2154       0,     0,     0,     0,     0,    84,     0,     0,     0,     0,
     2155       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2156       0,     0,     0,     0,     0,   931,     0,   932,     0,   345,
     2157       0,     0,     0,     0,   935,   936,     0,     0,     0,   941,
    20652158       0,     0,     0,   330,     0,     0,     0,     0,     0,     0,
    2066        0,   338,     0,     0,     0,     0,     0,     0,     0,     0,
    2067        0,   338,     0,     0,     0,     0,   215,   338,     0,     0,
    2068        0,     0,     0,     0,     0,     0,     0,   338,   335,   337,
    2069      337,     0,   337,   337,   337,     0,     0,   216,     0,     0,
    2070        0,     0,     0,     0,     0,     0,   122,     0,   122,     0,
    2071        0,     0,     0,    75,     0,    54,     0,   345,     0,     0,
    2072     1226,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2073        0,     0,   265,    72,     0,     0,     0,     0,     0,     0,
    2074       72,     0,     0,     0,    54,     0,   337,   337,    77,     0,
    2075        0,     0,     0,     0,     0,     0,     0,   337,     0,     0,
    2076        0,     0,     0,    84,     0,     0,     0,     0,     0,     0,
    2077        0,     0,   338,     0,     0,     0,     0,   345,     0,     0,
    2078        0,     0,    84,    72,     0,   122,     0,     0,     0,     0,
    2079       84,     0,   122,     0,   122,   122,     0,     0,     0,   122,
    2080        0,   122,   122,     0,     0,     0,     0,     0,     0,     0,
    2081        0,     0,     0,     0,     0,     0,   337,   345,     0,     0,
    2082        0,     0,   337,   337,     0,     0,     0,     0,     0,     0,
    2083        0,     0,     0,     0,     0,   345,   338,    84,     0,     0,
     2159       0,   946,     0,     0,     0,     0,   950,     0,     0,     0,
     2160       0,     0,     0,     0,     0,     0,     0,    54,     0,     0,
     2161     967,     0,     0,     0,     0,   271,     0,   272,     0,   204,
     2162     978,     0,     0,     0,     0,     0,     0,     0,    54,   223,
     2163       0,   227,     0,   229,     0,    54,     0,     0,   273,     0,
     2164     236,     0,     0,     0,   274,     0,     0,     0,   275,     0,
     2165       0,   276,   277,   278,   279,    40,    41,   345,   280,   281,
     2166       0,     0,     0,     0,     0,     0,   282,     0,  1000,   204,
     2167       0,   227,   229,   236,     0,     0,     0,     0,    54,     0,
     2168     283,     0,   361,     0,     0,     0,     0,  1015,     0,   285,
     2169     363,   287,   288,   289,   290,     0,     0,   204,     0,     0,
     2170       0,     0,    84,  1210,     0,     0,     0,     0,     0,    84,
     2171       0,   204,     0,     0,     0,     0,     0,     0,     0,     0,
     2172    1026,     0,  1027,  1028,  1029,     0,     0,  1032,   862,     0,
     2173       0,   151,     0,     0,     0,     0,     0,     0,     0,     0,
     2174       0,   271,  1074,   272,     0,     0,     0,     0,     0,     0,
     2175       0,     0,    84,     0,   575,     0,     0,  1081,     0,     0,
     2176       0,     0,     0,  1082,   273,     0,     0,     0,     0,   204,
     2177     274,   227,   229,   236,   275,     0,   241,   276,   277,   278,
     2178     279,    40,    41,     0,   280,   281,   246,     0,     0,     0,
     2179       0,     0,   282,     0,     0,     0,     0,     0,     0,     0,
     2180       0,  1101,     0,     0,     0,   204,   283,     0,   361,   204,
     2181       0,   362,     0,     0,     0,   285,   363,   287,   288,   289,
     2182     290,     0,     0,     0,     0,   485,   755,     0,     0,     0,
     2183       0,     0,     0,     0,     0,     0,     0,     0,     0,  1127,
     2184     353,     0,     0,     0,   862,     0,     0,  1135,     0,     0,
     2185       0,  1139,     0,   367,     0,     0,  1143,     0,     0,     0,
     2186    1148,  1149,  1150,     0,     0,     0,     0,     0,     0,     0,
     2187    1156,     0,     0,   204,     0,   399,     0,     0,     0,     0,
     2188    1169,     0,     0,     0,     0,     0,     0,     0,   204,   413,
     2189       0,     0,     0,   227,   229,     0,     0,   418,     0,  1185,
     2190    1186,   236,     0,     0,     0,     0,   122,   426,     0,     0,
     2191       0,     0,     0,     0,     0,     0,     0,     0,   433,     0,
     2192       0,     0,     0,     0,  1215,     0,     0,  1217,     0,     0,
     2193     452,     0,     0,     0,     0,   462,     0,     0,     0,     0,
     2194       0,     0,     0,   204,     0,     0,     0,     0,   470,     0,
     2195       0,     0,  1231,     0,   480,     0,   484,     0,     0,     0,
     2196       0,   204,     0,     0,     0,     0,     0,   204,     0,     0,
     2197       0,  1238,   512,     0,     0,     0,     0,  1242,  1243,     0,
     2198       0,     0,     0,     0,   204,     0,  1251,   204,   204,     0,
     2199       0,     0,  1255,     0,     0,  1259,     0,  1260,     0,     0,
     2200    1262,     0,     0,   204,     0,     0,     0,     0,     0,     0,
     2201       0,   862,     0,   572,     0,  1271,     0,   204,     0,     0,
     2202       0,     0,     0,     0,   204,     0,     0,     0,     0,     0,
     2203       0,   271,  1280,   272,  1282,  1283,  1284,  1285,     0,     0,
     2204     122,     0,   620,     0,     0,     0,   621,   622,     0,   623,
     2205       0,  1293,     0,  1294,   273,   633,   634,   166,   635,   636,
     2206     274,   637,     0,   638,   275,     0,     0,   276,   277,   278,
     2207     279,    40,    41,     0,   280,   281,  1314,     0,     0,     0,
     2208     651,     0,   282,     0,     0,  1319,  1320,     0,   653,     0,
     2209       0,     0,     0,     0,     0,     0,   283,     0,   361,     0,
     2210       0,     0,     0,     0,   785,   285,   363,   287,   288,   289,
     2211     290,     0,   666,     0,     0,     0,     0,     0,     0,     0,
     2212       0,     0,     0,   673,     0,     0,     0,     0,     0,     0,
     2213       0,     0,     0,   204,     0,     0,  1354,  1355,     0,     0,
     2214       0,     0,  1359,  1360,     0,     0,   709,     0,     0,     0,
     2215       0,     0,   712,  1370,     0,     0,     0,   452,     0,     0,
     2216       0,     0,     0,   204,     0,     0,     0,     0,   204,   197,
     2217       2,   198,     4,     5,     6,     7,     8,     9,    10,    11,
     2218      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2219      22,    23,    24,   746,     0,    25,    26,    27,     0,     0,
     2220       0,     0,     0,    30,  1401,     0,     0,     0,   762,     0,
     2221       0,     0,     0,     0,     0,     0,  1405,     0,     0,     0,
     2222    1408,  1409,  1410,     0,     0,     0,    33,     0,    34,     0,
     2223      35,    36,  1414,   199,   200,    39,     0,     0,     0,     0,
     2224       0,  1425,    40,    41,   788,     0,     0,     0,     0,     0,
     2225       0,     0,     0,   798,     0,   799,   204,  1436,     0,     0,
     2226       0,   804,     0,   271,     0,   272,     0,    42,     0,   201,
     2227     204,     0,     0,     0,   823,     0,     0,   202,     0,     0,
     2228       0,     0,     0,     0,     0,     0,   273,     0,     0,     0,
     2229     485,     0,   624,     0,   135,   136,   275,     0,     0,   276,
     2230     277,   278,   279,    40,    41,     0,   280,   281,     0,  1477,
     2231    1478,     0,     0,   864,   282,     0,     0,     0,     0,     0,
     2232       0,     0,  1483,     0,   271,     0,   272,     0,   283,  1483,
     2233     625,     0,   626,   362,     0,     0,     0,   285,   363,   287,
     2234     288,   289,   290,     0,     0,     0,     0,   273,   204,   899,
     2235       0,     0,     0,   274,     0,     0,  1513,   275,   204,     0,
     2236     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
     2237       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
     2238     204,     0,     0,     0,  1536,     0,     0,     0,   346,   283,
     2239       0,   361,     0,     0,     0,     0,   754,     0,   285,   363,
     2240     287,   288,   289,   290,     0,     0,   241,     0,     0,  1549,
     2241       0,     0,     0,     0,  1551,     0,   947,   948,     0,   395,
     2242       0,     0,     0,     0,     0,     0,   395,     0,   962,     0,
    20842243       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2085        0,     0,     0,     0,  1318,     0,   330,     0,     0,     0,
    2086        0,     0,     0,     0,   214,     0,     0,     0,     0,   122,
    2087        0,     0,     0,     0,     0,     0,     0,   345,     0,     0,
    2088        0,   337,     0,     0,     0,    75,     0,     0,     0,     0,
    2089        0,     0,     0,     0,   338,   338,     0,   338,   338,   338,
    2090        0,     0,     0,     0,   337,     0,   337,     0,     0,     0,
    2091        0,     0,     0,     0,     0,     0,   330,     0,    77,     0,
     2244       0,     0,     0,     0,     0,   979,     0,   980,     0,     0,
     2245       0,   984,     0,     0,     0,     8,     9,    10,    11,    12,
     2246      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2247      23,    24,     0,   204,    25,    26,    27,     0,     0,     0,
     2248       0,     0,    30,     0,     0,     0,     0,     0,     0,     0,
     2249       0,     0,     0,     0,     0,   395,     0,     0,     0,   204,
     2250       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2251      36,     0,    37,    38,    39,     0,  1020,     0,     0,     0,
     2252       0,    40,    41,  1021,     0,   204,     0,     0,     0,     0,
     2253       0,     0,     0,     0,     0,     0,  1023,     0,  1024,     0,
     2254       0,     0,     0,     0,     0,     0,    42,     0,   152,   395,
     2255       0,     0,     0,  1037,     0,   204,    44,   395,   568,  1041,
     2256     395,   571,     0,   346,     0,     0,     0,     0,   598,     0,
     2257       0,  1077,   204,     0,  1078,     0,     0,     0,     0,     0,
     2258       0,     0,     0,     0,     0,     0,   271,   616,   272,     0,
     2259     346,     0,   788,     0,     0,     0,     0,     0,  1088,     0,
     2260       0,     0,     0,     0,     0,     0,     0,     0,     0,   273,
     2261       0,     0,     0,     0,     0,   274,   395,     0,     0,   275,
     2262     395,     0,   276,   277,   278,   279,    40,    41,     0,   280,
     2263     281,     0,     0,     0,     0,     0,     0,   282,     0,     0,
     2264       0,   204,     0,     0,     0,     0,     0,     0,     0,     0,
     2265     346,   283,     0,   361,     0,     0,   970,     0,   204,     0,
     2266     285,   363,   287,   288,   289,   290,     0,     0,     0,     0,
     2267       0,     0,   310,   395,     0,     0,     0,     0,     0,     0,
     2268       0,   328,     0,  1147,     0,     0,     0,     0,     0,  1153,
     2269    1154,     0,     0,   364,     0,     0,     0,     0,     0,   492,
     2270     496,   492,   499,     0,   395,     0,     0,   346,     0,   502,
     2271     503,     0,     0,     0,   492,   492,     0,     0,     0,     0,
     2272       0,     0,     0,     0,     0,     0,   492,     0,     0,     0,
    20922273       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2093        0,     0,     0,   337,     0,     0,     0,   345,     0,     0,
    2094        0,     0,     0,     0,   337,   337,   337,     0,     0,     0,
    2095        0,   338,   338,     0,     0,     0,   337,   337,     0,     0,
    2096        0,     0,   338,     0,     0,     0,     0,     0,     0,     0,
    2097       75,     0,     0,     0,     0,     0,    54,     0,     0,     0,
    2098        0,     0,     0,     0,     0,   345,   345,     0,     0,     0,
    2099        0,     0,     0,     0,   337,     0,     0,     0,     0,     0,
    2100      345,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2101        0,     0,     0,     0,     0,     0,   330,     0,   345,     0,
    2102        0,   338,     0,     0,     0,     0,     0,   338,   338,     0,
    2103        0,    84,     0,     0,     0,     0,     0,     0,     0,   345,
    2104        0,     0,     0,     0,   161,     0,   165,     0,     0,   171,
    2105      172,   173,     0,   175,     0,     0,     0,     0,     0,     0,
    2106        0,     0,     0,     0,     0,     0,     0,     0,   224,   215,
    2107        0,     0,     0,     0,     0,    84,   330,     0,   345,   238,
    2108      239,     0,   337,     0,     0,     0,   338,     0,     0,     0,
    2109       77,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2110       17,    18,    19,    20,    21,    22,    23,    24,  -279,   338,
    2111        0,   338,   345,     0,     0,     0,     0,     0,    30,     0,
    2112        0,     0,     0,     0,   330,   330,     0,    75,     0,     0,
    2113        0,     0,     0,     0,    75,     0,     0,     0,   338,   330,
    2114        0,    33,     0,     0,   327,     0,     0,     0,     0,   338,
    2115      338,   338,  -279,     0,   345,     0,     0,     0,     0,     0,
    2116        0,   338,   338,     0,   345,     0,     0,     0,     0,   216,
    2117      345,     0,   122,   122,     0,    77,     0,    75,     0,     0,
    2118      345,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2119        0,     0,     0,     0,     0,     0,     0,     0,     0,   338,
    2120      122,     0,     0,   122,   122,     0,   122,     0,   122,   122,
    2121        0,     0,     0,   122,   122,     0,     0,   330,     2,   197,
    2122        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2274       0,     0,     0,     0,     0,  1212,   395,     0,     0,   346,
     2275     204,  1216,     0,     0,     0,   492,     0,     0,     0,     0,
     2276       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2277      18,    19,    20,    21,    22,    23,    24,  -279,     0,    25,
     2278      26,    27,     0,     0,   466,     0,  1235,    30,     0,     0,
     2279       0,  1237,   492,   395,   395,     0,     0,     0,     0,  1241,
     2280       0,     0,     0,     0,     0,     0,     0,     0,     0,   346,
     2281      33,   346,     0,     0,     0,     0,     0,    37,    38,   810,
     2282       0,  -279,   598,     0,   598,   598,     0,     0,  1264,     0,
     2283       0,   598,     0,     0,     0,     0,     0,     0,     0,     0,
     2284       0,   842,   346,     0,     0,  1275,     0,   346,  1276,     0,
     2285    1277,  1025,   204,   567,     0,     0,     0,   346,   346,     0,
     2286       0,   108,     0,     0,     0,     0,     0,  1287,  1288,     0,
     2287       0,     0,   346,     0,     0,     0,     0,   395,   885,     0,
     2288       0,   395,   888,   328,     0,     0,     0,     0,  1301,     0,
     2289       0,     0,   364,     0,     0,     0,     0,     0,     0,     0,
     2290       0,     0,     0,     0,     0,   395,     0,     0,     0,     0,
     2291     346,   395,     0,   395,     0,     0,     0,   395,     0,     0,
     2292    1325,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2293       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2294       0,     0,   310,     0,     0,     0,     0,     0,     0,   346,
     2295     598,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2296       0,     0,     0,   310,   492,   492,   492,   492,   492,   492,
     2297     492,   492,   492,   492,   492,   492,   492,   492,   492,   492,
     2298     492,   492,     0,   346,     0,     0,     0,   395,   395,     0,
     2299       0,     0,   711,     0,     0,     0,     0,     0,     0,     0,
     2300       0,     0,     0,   492,     0,     0,     0,  1167,     0,     0,
     2301       8,     9,    10,    11,    12,     0,     0,     0,     0,  1395,
     2302       0,  1396,     0,     0,     0,     0,     0,     0,     0,   395,
     2303     743,     0,  1403,     0,  1404,     0,   271,    30,   272,     0,
     2304       0,   346,   756,     0,     0,     0,     0,     0,     0,   743,
     2305     598,     0,   598,     0,  1413,     0,     0,     0,     0,   273,
     2306      33,   598,   765,   766,     0,   274,     0,     0,     0,   275,
     2307    1431,     0,   276,   277,   278,   279,    40,    41,     0,   280,
     2308     281,     0,  1437,     0,   787,  1241,     0,   282,     0,     0,
     2309       0,   204,   810,     0,   796,     0,     0,     0,     0,     0,
     2310       0,   283,   756,   361,   492,     0,     0,  1458,     0,     0,
     2311     285,  1168,   287,   288,   289,   290,  1465,     0,     0,  1467,
     2312    1469,     0,     0,     0,     0,     0,   492,     0,     0,     0,
     2313       0,     0,     0,     0,     0,     0,   346,     0,     0,   492,
     2314       0,   395,   395,     0,     0,     0,     0,     0,     0,   395,
     2315       0,     0,     0,   863,   395,     0,     0,  1496,     0,     0,
     2316     364,  1241,   395,     0,     0,     0,     0,     0,     0,     0,
     2317       0,     0,     0,  1508,     0,   598,   598,     0,     0,     0,
     2318       0,   328,   492,     0,     0,     0,     0,     0,     0,     0,
     2319       0,     0,     0,     0,     0,     0,     0,     0,     0,   346,
     2320       0,     0,     0,   328,     0,     0,   395,     0,     0,     0,
     2321       0,     0,     0,   810,   492,     0,     0,     0,     0,     0,
     2322       0,     0,     0,     0,     0,   395,  1142,     0,     0,     0,
     2323       0,  1145,     0,   346,     0,     0,     0,     0,     0,     0,
     2324       0,     0,     0,     0,   395,  1159,     0,   598,   598,  1164,
     2325       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2326     346,   346,   346,     0,     0,     0,     0,     0,     0,     0,
     2327       0,     0,     0,     0,     0,     0,   756,     0,   968,     0,
     2328       0,     0,     0,     0,   973,     0,     0,     0,     0,     0,
     2329       0,     0,   983,     0,     8,     9,    10,    11,    12,    13,
    21232330      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2124       24,    84,     0,    25,    26,    27,     0,     0,     0,     0,
    2125        0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    2126        0,     0,     0,     0,     0,   345,     0,     0,     0,     0,
    2127        0,     0,     0,     0,    33,     0,    34,     0,    35,    36,
    2128        0,   198,   199,    39,     0,     0,     0,   338,     0,     0,
    2129       40,    41,     0,   122,     0,     0,     0,     0,   122,   122,
    2130        0,     0,     0,     0,   122,     0,     0,     0,     0,   330,
    2131        0,     0,     0,     0,     0,    42,     0,   200,     0,     0,
    2132      576,     0,   584,     0,     0,   201,     0,     0,     0,   345,
    2133        0,     0,    77,   609,   610,     0,     0,     0,     0,    77,
    2134        0,     0,     0,     0,     0,     0,     0,   620,     0,   456,
    2135        2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
    2136       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2137       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2138       54,     0,    77,    30,     0,     0,     0,   345,   345,     0,
    2139      345,   345,   345,     0,     0,     0,     0,     0,     0,     0,
    2140        0,     0,     0,     0,   330,     0,    33,   663,    34,     0,
    2141       35,    84,     0,    37,    38,     0,     2,   197,     4,     5,
     2331      24,  -279,     0,    25,    26,    27,     0,  1224,     0,   492,
     2332       0,    30,   395,     0,     0,   346,   810,   395,  1234,   328,
     2333       0,     0,   997,   998,   328,   271,     0,   272,     0,   598,
     2334       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2335       0,    37,    38,   328,     0,  -279,     0,     0,   273,     0,
     2336       0,   810,     0,     0,   274,     0,     0,     0,   275,     0,
     2337       0,   276,   277,   278,   279,    40,    41,     0,   280,   281,
     2338       0,     0,     0,     0,   346,  1025,   282,   567,     0,  1145,
     2339     346,   346,     0,     0,  1035,   610,     0,     0,   364,     0,
     2340     283,     0,   361,     0,     0,     0,     0,     0,     0,   285,
     2341     363,   287,   288,   289,   290,   492,     0,     0,     0,     0,
     2342       0,     0,     0,     0,     0,   492,     0,     0,     0,   328,
     2343       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2344      17,    18,    19,    20,    21,    22,    23,    24,     0,   346,
     2345      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2346       0,     0,     0,  1145,     0,     0,     0,     0,     0,     0,
     2347       0,     0,     0,   492,   346,     0,     0,     0,     0,   310,
     2348       0,    33,     0,     0,     0,     0,     0,     0,   199,   200,
     2349       0,     0,  1122,  1123,     0,     0,     0,     0,     0,     0,
     2350     364,     0,     0,     0,     0,     0,     0,   973,     0,     0,
     2351    1133,     0,   743,     0,     0,   271,     0,   272,     0,     0,
     2352       0,     0,     0,     0,   346,   346,     0,     0,     0,  1151,
     2353       0,     0,   261,     0,     0,     0,     0,     0,   273,     0,
     2354       0,     0,     0,     0,   274,     0,  1170,   492,   275,     0,
     2355       0,   276,   277,   278,   279,    40,    41,     0,   280,   281,
     2356       0,  1145,     0,     0,     0,     0,   282,     0,     0,   364,
     2357       0,  1189,     0,     0,     0,     0,     0,     0,     0,     0,
     2358     283,     0,   361,     0,     0,     0,  1211,     0,     0,   285,
     2359     710,   287,   288,   289,   290,     0,     0,   492,     0,     0,
     2360       0,     0,     0,     0,     0,  1220,     0,     0,     0,     0,
     2361       0,     0,   492,   492,     0,     0,     0,     0,   756,     0,
     2362       0,     0,  -501,   810,     0,     1,     2,     3,     4,     5,
    21422363       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    21432364      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2144        0,    25,    26,    27,   345,   345,     0,     0,   271,    30,
    2145      272,     0,    -3,     0,    54,   345,     0,     0,     0,     0,
    2146        0,     0,     0,     0,     0,     0,     0,     0,   330,     0,
    2147        0,   273,    33,     0,    34,     0,    35,   274,     0,    37,
    2148       38,   275,     0,     0,   276,   277,   278,   279,    40,    41,
    2149        0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    2150        0,     0,     0,     0,     0,     0,     0,   757,     0,     0,
    2151        0,     0,     0,   283,   345,   325,    -3,     0,     0,     0,
    2152      345,   345,   285,   326,   287,   288,   289,   290,     0,   330,
    2153      330,   330,     8,     9,    10,    11,    12,    13,    14,    15,
    2154       16,    17,    18,    19,    20,    21,    22,    23,    24,  -280,
    2155       54,     0,     0,     0,     0,     0,     0,     0,     0,    30,
    2156        0,     0,   216,     0,     0,     0,     0,   803,  1017,     0,
    2157        0,     8,     9,    10,    11,    12,     0,     0,     0,   345,
    2158        0,     0,    33,    84,     0,     0,     0,     0,     0,     0,
    2159        0,     0,     0,  -280,   330,     0,     0,   271,    30,   272,
    2160        0,     0,   345,     0,   345,     0,     0,     0,     0,     0,
    2161        0,     0,     0,     0,     0,     0,     0,     0,   864,     0,
    2162      273,    33,     0,     0,     0,     0,   274,     0,     0,     0,
    2163      275,   345,     0,   276,   277,   278,   279,    40,    41,     0,
    2164      280,   281,   345,   345,   345,     0,   893,     0,   282,     0,
    2165        0,     0,     0,     0,   345,   345,     0,     0,     0,   330,
    2166      330,     0,   283,     0,   361,   909,   910,     0,    84,   914,
    2167        0,   285,   892,   287,   288,   289,   290,     0,     0,     0,
     2365     346,    25,    26,    27,    28,     0,   973,    29,     0,    30,
     2366      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2367       0,   271,     0,   272,     0,     0,     0,   863,     0,    32,
     2368       0,     0,    33,     0,    34,     0,    35,    36,     0,    37,
     2369      38,    39,     0,     0,   273,  1278,     0,  1279,    40,    41,
     2370     624,     0,     0,     0,   275,     0,     0,   276,   277,   278,
     2371     279,    40,    41,     0,   280,   281,     0,     0,     0,     0,
     2372       0,     0,   282,    42,     0,    43,     0,     0,     0,     0,
     2373     395,     0,     0,    44,     0,     0,   283,     0,   759,     0,
     2374       0,     0,   756,     0,     0,   285,   363,   287,   288,   289,
     2375     290,   395,   395,     0,     0,     0,     0,   310,     0,     0,
    21682376       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2169        0,     0,   345,   122,     0,     0,     0,   934,     0,   935,
    2170       54,    54,     0,     0,     0,     0,   938,   939,     0,     0,
    2171        0,   944,     0,     0,     0,     0,     0,     0,   330,     0,
    2172        0,     0,    54,   949,     0,     0,     0,     0,   953,     0,
    2173        0,     0,     0,     0,   271,     0,   272,     0,     0,     0,
    2174        0,     0,   970,     0,     0,     0,     0,    54,     0,     0,
    2175        0,     0,   981,     0,     0,     0,     0,   273,     0,     0,
    2176        0,     0,     0,   274,     0,     0,     0,   275,     0,     0,
    2177      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2178      345,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2179        0,     0,     0,   330,   330,     0,     0,     0,     0,   283,
    2180     1003,   361,    54,     0,     0,     0,     0,    54,   285,   363,
    2181      287,   288,   289,   290,   203,     0,     0,     0,     0,  1018,
    2182        0,     0,  1213,     0,   222,    84,   226,   122,   228,     0,
    2183        0,     0,    84,     0,     0,   236,     0,     0,     0,     0,
    2184        0,  1170,    54,     0,     8,     9,    10,    11,    12,     0,
    2185        0,     0,  1029,     0,  1030,  1031,  1032,     0,     0,  1035,
    2186      864,     0,     0,     0,   203,     0,   226,   228,   236,     0,
    2187      271,    30,   272,     0,  1077,    84,     0,     0,     0,     0,
    2188        0,     0,     0,     0,     0,     0,   576,     0,     0,  1084,
    2189        0,   203,     0,   273,    33,  1085,     0,     0,     0,   274,
    2190        0,     0,     0,   275,     0,   203,   276,   277,   278,   279,
    2191       40,    41,     0,   280,   281,     0,     0,     0,     0,   330,
    2192        0,   282,     0,     0,     0,     0,     0,     0,     0,     0,
    2193        0,     0,     0,     0,  1104,   283,     0,   361,     0,     0,
    2194        0,     0,     0,    54,   285,  1171,   287,   288,   289,   290,
    2195        0,     0,     0,     0,     0,     0,     0,     0,     0,   757,
    2196        0,     0,     0,   203,    54,   226,   228,   236,     0,     0,
    2197        0,    54,  1130,     0,     0,     0,     0,   864,     0,     0,
    2198     1138,     0,     0,     0,  1142,     0,     0,     0,     0,  1146,
    2199        0,     0,     0,  1151,  1152,  1153,     0,     0,     0,     0,
    2200      203,     0,     0,  1159,   203,     0,     0,     0,     0,     0,
    2201        0,     0,     0,  1172,    54,     0,     0,     0,     0,     0,
    2202      486,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2203        0,     0,  1188,  1189,     8,     9,    10,    11,    12,    13,
    2204       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2205       24,     0,     0,    25,    26,    27,     0,  1218,     0,     0,
    2206     1220,    30,   435,     0,     0,     0,     0,     0,   203,     0,
     2377       0,     0,   395,     0,     0,     0,     0,     0,     0,     0,
     2378     973,     0,     0,     1,     2,   198,     4,     5,     6,     7,
     2379       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2380      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2381      26,    27,    28,     0,     0,    29,   271,    30,  1044,  1045,
     2382       0,  1046,     0,     0,  1047,  1048,  1049,  1050,  1051,  1052,
     2383    1053,  1054,     0,  1055,     0,     0,  1056,    32,     0,   273,
     2384      33,     0,    34,     0,    35,   624,   492,    37,    38,   275,
     2385       0,     0,   276,   277,   278,   279,    40,    41,     0,   280,
     2386     281,     0,     0,     0,     0,     0,     0,   282,     0,     0,
    22072387       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2208        0,     0,     0,   203,    33,  1234,     0,     0,   226,   228,
    2209        0,    37,    38,     0,     0,     0,   236,     0,     0,     0,
    2210        0,     0,   150,     0,  1241,     0,     0,     0,     0,     0,
    2211     1245,  1246,     0,     0,     0,     0,     0,     0,     0,  1254,
    2212        0,     0,     0,     0,     0,  1258,     0,   436,  1262,     0,
    2213     1263,   689,     0,  1265,     0,   108,     0,     0,   203,     0,
    2214        0,     0,     0,     0,   864,     0,     0,   241,  1274,     0,
    2215        0,     0,     0,     0,     0,     0,   203,   246,     0,     0,
    2216        0,     0,   203,     0,   271,  1283,   272,  1285,  1286,  1287,
    2217     1288,     0,     0,     0,     0,     0,     0,     0,     0,   203,
    2218        0,     0,   203,   203,  1296,     0,  1297,   273,     0,     0,
    2219      165,     0,     0,   625,     0,   135,     0,   275,     0,   203,
    2220      276,   277,   278,   279,    40,    41,     0,   280,   281,  1317,
    2221      353,     0,     0,   203,     0,   282,     0,     0,  1322,  1323,
    2222      203,     0,     0,   367,     0,     0,     0,     0,     0,   283,
    2223        0,   626,     0,   627,   362,     0,     0,     0,   285,   363,
    2224      287,   288,   289,   290,     0,   399,     0,     0,     0,     0,
    2225        0,     0,     0,     0,     0,     0,     0,     0,     0,   413,
    2226        0,     0,     0,     0,     0,     0,     0,   418,     0,  1357,
    2227     1358,     0,     0,     0,     0,  1362,  1363,   426,     0,     0,
    2228        0,     0,     0,     0,     0,     0,  1373,     0,     0,   434,
     2388       0,   283,     0,  1057,     0,     0,   165,     0,     0,     0,
     2389     285,   286,   287,   288,   289,   290,     0,     0,     0,     0,
     2390       0,     0,     0,     0,  -126,     0,     0,     0,     0,   492,
     2391     492,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    22292392       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2230        0,   453,     0,     0,     0,     0,   463,     0,     0,     0,
    2231        0,     0,     0,     0,     0,     0,     0,     0,     0,   471,
    2232        0,     0,     0,     0,     0,   481,     0,   485,     0,   203,
    2233        0,     0,     0,     0,     0,     0,     0,  1404,     0,     0,
    2234        0,     0,     0,   513,     0,     0,     0,     0,     0,  1408,
    2235        0,     0,     0,  1411,  1412,  1413,     0,     0,     0,   203,
    2236        0,     0,     0,     0,   203,  1417,     0,     0,     0,     0,
    2237        0,   271,     0,   272,  1428,     0,     0,     0,     0,     0,
    2238        0,     0,     0,     0,   573,     0,     0,     0,     0,     0,
    2239     1439,     0,     0,     0,   273,     0,     0,     0,     0,     0,
    2240      274,     0,     0,     0,   275,     0,     0,   276,   277,   278,
    2241      279,    40,    41,   621,   280,   281,     0,   622,   623,     0,
    2242      624,     0,   282,     0,     0,     0,   634,   635,     0,   636,
    2243      637,     0,   638,     0,   639,     0,   283,     0,   361,     0,
    2244        0,   362,  1480,  1481,     0,   285,   363,   287,   288,   289,
    2245      290,   652,     0,   203,     0,  1486,     0,     0,     0,   654,
    2246        0,   271,  1486,   272,  1048,     0,  1049,   203,     0,  1050,
    2247     1051,  1052,  1053,  1054,  1055,  1056,  1057,  1532,  1058,     0,
    2248        0,  1059,    32,   667,   273,     0,     0,   486,     0,  1516,
    2249      625,     0,     0,     0,   275,   675,     0,   276,   277,   278,
    2250      279,    40,    41,     0,   280,   281,     0,     0,     0,     0,
    2251        0,     0,   282,     0,     0,     0,     0,  1539,   711,     0,
    2252        0,     0,     0,     0,   714,     0,   283,     0,   361,   453,
    2253        0,   164,     0,     0,     0,   285,   363,   287,   288,   289,
    2254      290,     0,  1552,     0,     0,   203,     0,  1554,     0,  -126,
    2255        0,     0,     0,     0,     0,   203,     0,     0,     0,     0,
    2256        0,     0,     0,     0,     0,   748,     0,     0,     0,     0,
    2257        0,     0,     0,     0,     0,     0,     0,   203,     0,     0,
    2258      764,     0,     0,  -501,     0,     0,     1,     2,     3,     4,
    2259        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2260       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2261        0,     0,    25,    26,    27,    28,   790,     0,    29,     0,
    2262       30,    31,     0,     0,     0,   800,     0,   801,     0,     0,
    2263        0,     0,     0,   806,     0,     0,     0,     0,     0,   271,
    2264       32,   272,     0,    33,     0,    34,   825,    35,    36,     0,
    2265       37,    38,    39,     0,     0,     0,     0,     0,     0,    40,
    2266       41,     0,   273,     0,     0,     0,     0,     0,   274,     0,
    2267        0,   203,   275,     0,     0,   276,   277,   278,   279,    40,
    2268       41,     0,   280,   281,    42,   866,    43,     0,     0,     0,
    2269      282,     0,     0,     0,    44,   346,     0,   203,     0,     0,
    2270        0,     0,     0,     0,   283,     0,   361,     0,     0,     0,
    2271        0,     0,   787,   285,   363,   287,   288,   289,   290,     0,
    2272        0,   901,     0,   203,     0,     0,   395,     0,     0,     0,
    2273        0,     0,     0,   395,     0,     8,     9,    10,    11,    12,
    2274       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2275       23,    24,  -279,   203,    25,    26,    27,     0,     0,     0,
    2276        0,     0,    30,     0,     0,     0,     0,     0,     0,     0,
    2277      203,     0,     0,     0,     0,     0,     0,     0,     0,   241,
    2278        0,     0,     0,     0,     0,    33,     0,     0,     0,   950,
    2279      951,     0,    37,    38,     0,     0,  -279,     0,     0,     0,
    2280        0,   965,     0,   395,     0,     0,     0,     0,   271,     0,
    2281      272,     0,     0,     0,     0,     0,     0,     0,   982,     0,
    2282      983,     0,     0,     0,   987,     0,  1028,     0,   568,     0,
    2283        0,   273,     0,     0,     0,     0,   108,   274,     0,   203,
    2284        0,   275,     0,     0,   276,   277,   278,   279,    40,    41,
    2285        0,   280,   281,     0,     0,     0,   203,   395,     0,   282,
    2286        0,     0,     0,     0,     0,   395,   569,     0,   395,   572,
    2287        0,   346,     0,   283,     0,   361,   599,     0,     0,     0,
    2288      756,     0,   285,   363,   287,   288,   289,   290,     0,  1023,
    2289        0,     0,     0,     0,     0,   617,  1024,     0,   346,     0,
    2290        0,     0,     0,     0,     0,     0,     0,     0,     0,  1026,
    2291        0,  1027,     0,     0,     0,     0,   271,     0,   272,     0,
    2292        0,     0,     0,     0,   395,     0,  1040,     0,   395,     0,
    2293        0,     0,  1044,     0,     0,     0,     0,     0,     0,   273,
    2294        0,     0,     0,     0,  1080,   274,     0,  1081,   203,   275,
    2295        0,     0,   276,   277,   278,   279,    40,    41,   346,   280,
    2296      281,     0,     0,     0,     0,     0,   790,   282,     0,     0,
    2297        0,     0,  1091,     0,     0,     0,     0,     0,     0,     0,
    2298      310,   283,   395,   361,     0,     0,   973,     0,     0,   328,
    2299      285,   363,   287,   288,   289,   290,     0,     0,     0,     0,
    2300        0,   364,     0,     0,     0,     0,     0,     0,     0,     0,
    2301        0,     0,     0,   395,     0,     0,   346,     0,     0,     0,
    2302        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2303       18,    19,    20,    21,    22,    23,    24,  -279,     0,    25,
    2304       26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
    2305      203,     0,     0,     0,     0,   395,     0,  1150,   346,     0,
    2306        0,     0,     0,  1156,  1157,     0,     0,     0,     0,     0,
    2307       33,     0,     0,     0,     0,    36,     0,   809,    38,    39,
    2308        0,  -279,     0,     0,     0,     0,    40,    41,     0,     0,
    2309        0,     0,     0,   467,     0,     0,     0,     0,     0,     0,
    2310        0,     0,   395,   395,     0,     0,     0,     0,     0,     0,
    2311        0,  1028,     0,   568,     0,     0,     0,     0,   346,  1215,
    2312      346,   611,     0,     0,     0,  1219,     0,     0,   812,     0,
    2313        0,   599,     0,   599,   599,     0,     0,     0,     0,     0,
    2314      599,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2315      844,   346,     0,     0,     0,     0,   346,     0,     0,     0,
    2316     1238,     0,     0,     0,     0,  1240,   346,   346,     0,     0,
    2317        0,     0,     0,  1244,     0,     0,     0,     0,     0,     0,
    2318        0,   346,     0,     0,     0,     0,   395,   887,     0,     0,
    2319      395,   890,   328,     0,     0,     0,     0,     0,     0,     0,
    2320        0,   364,  1267,     0,     0,     0,     0,     0,     0,     0,
    2321        0,     0,     0,     0,     0,   395,     0,     0,     0,  1278,
    2322      346,   395,  1279,   395,  1280,     0,     0,   395,     0,     0,
    2323        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2324        0,  1290,  1291,     0,     0,     0,     0,     0,     0,     0,
    2325        0,   310,     0,     0,     0,     0,     0,     0,     0,   346,
    2326      599,     0,  1304,     0,     0,     0,     0,     0,     0,     0,
    2327        0,     0,   310,   310,     0,     0,     0,     0,     0,     0,
    2328        0,     0,     0,     0,     0,     0,     0,     0,     0,   203,
    2329        0,     0,     0,   346,  1328,     0,     0,   395,   395,     0,
    2330        0,     0,   713,     0,     0,     0,     0,     0,     8,     9,
    2331       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2332       20,    21,    22,    23,    24,  -279,     0,    25,    26,    27,
    2333        0,     0,     0,     0,     0,    30,     0,     0,     0,   395,
    2334      745,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2335        0,   346,   758,     0,     0,     0,     0,     0,    33,   745,
    2336      599,     0,   599,    36,     0,   809,    38,    39,     0,  -279,
    2337        0,   599,   767,   768,    40,    41,     8,     9,    10,    11,
    2338       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2339       22,    23,    24,  1398,   789,  1399,     0,     0,     0,     0,
    2340        0,   568,   812,    30,   798,     0,  1406,     0,  1407,   108,
    2341        0,     0,   758,     0,     0,     0,     0,     0,     0,     0,
    2342        0,     0,     0,     0,     0,     0,    33,     0,  1416,     0,
    2343        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2344        0,     0,     0,     0,  1434,     0,   346,     0,     0,     0,
    2345        0,     0,   395,   395,     0,     0,  1440,     0,     0,  1244,
    2346      395,     0,     0,   865,     0,   395,     0,     0,     0,     0,
    2347      364,     0,     0,   395,     0,     0,     0,     0,     0,     0,
    2348        0,  1461,     0,     0,     0,     0,   599,   599,     0,     0,
    2349     1468,   328,     0,  1470,  1472,     0,     0,     0,     0,     0,
    2350        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2351      346,     0,     0,     0,   328,     0,     0,   395,     0,     0,
    2352        0,     0,     0,     0,   812,     0,     0,     0,     0,     0,
    2353        0,  1499,     0,     0,     0,  1244,   395,  1145,     0,     0,
    2354        0,     0,  1148,     0,   346,     0,     0,  1511,     0,     0,
    2355        0,     0,     0,     0,     0,   395,  1162,     0,   599,   599,
    2356     1167,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2357        0,   346,   346,   346,     0,     0,     0,     0,     0,     0,
    2358        0,     0,     0,     0,     0,     0,     0,   758,     0,   971,
    2359        0,     0,     0,     0,     0,   976,     0,     0,     0,     0,
    2360        0,     0,     0,   986,     0,     8,     9,    10,    11,    12,
    2361       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2362       23,    24,  -279,     0,    25,    26,    27,     0,  1227,     0,
    2363        0,     0,    30,   395,     0,     0,   346,   812,   395,  1237,
    2364      328,     0,     0,  1000,  1001,   328,     0,     0,     0,     0,
    2365      599,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2366        0,     0,    37,    38,   328,     0,  -279,     0,     0,     0,
    2367        0,     0,   812,     0,     0,     0,     0,   493,   497,   493,
    2368      500,     0,     0,     0,     0,     0,     0,   503,   504,     0,
    2369        0,     0,   493,   493,     0,   346,  1028,     0,   568,     0,
    2370     1148,   346,   346,     0,   493,  1038,   611,     0,     0,   364,
    2371        0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    2372       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2373       23,    24,  -279,   493,    25,    26,    27,     0,     0,     0,
    2374      328,     0,    30,     0,     0,     0,     0,     0,     0,     0,
    2375        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2376      346,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2377      493,     0,    37,    38,  1148,     0,  -279,     0,     0,     0,
    2378        0,     0,     0,     0,     0,   346,     0,     0,     0,     0,
    2379        0,   310,     0,     0,     0,     0,     0,     0,     0,     0,
    2380        0,     0,     0,     0,  1125,  1126,     0,     0,   568,     0,
    2381        0,   271,   364,   272,     0,     0,   108,     0,     0,   976,
    2382        0,     0,  1136,     0,   745,     0,     0,     0,     0,     0,
    2383        0,     0,     0,     0,   273,   346,   346,     0,     0,     0,
    2384      274,  1154,     0,     0,   275,     0,     0,   276,   277,   278,
    2385      279,    40,    41,     0,   280,   281,     0,     0,  1173,     0,
    2386        0,     0,   282,     0,     0,     0,     0,     0,     0,     0,
    2387        0,     0,  1148,     0,     0,     0,   283,     0,   361,     0,
    2388        0,   364,     0,  1192,     0,   285,   363,   287,   288,   289,
    2389      290,     0,     0,     0,     0,     0,     0,     0,  1214,     0,
    2390        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2391        0,     0,     0,     0,     0,     0,     0,  1223,     0,     0,
    2392        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2393      758,     0,     0,     0,   812,     0,     0,     0,     0,     0,
    2394        0,     0,     0,   493,   493,   493,   493,   493,   493,   493,
    2395      493,   493,   493,   493,   493,   493,   493,   493,   493,   493,
    2396      493,   346,     0,     0,     0,     0,     0,     0,   976,     0,
    2397        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2398        0,     0,   493,     0,     0,     0,     0,     0,     0,   865,
    2399        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2400        0,     0,     0,     0,     0,     0,     0,  1281,     0,  1282,
    2401        0,     0,     0,     0,     0,     0,     1,     2,     3,     4,
    2402        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2403       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2404        0,   395,    25,    26,    27,    28,     0,     0,    29,     0,
    2405       30,    31,     0,     0,   758,     0,     0,     0,     0,     0,
    2406        0,     0,   395,   395,     0,     0,     0,     0,     0,   310,
    2407       32,     0,     0,    33,     0,    34,     0,    35,    36,     0,
    2408       37,    38,    39,   395,   493,     0,     0,     0,     0,    40,
    2409       41,     0,   976,     0,     0,     0,     0,     0,     0,     0,
    2410        0,     0,     0,     0,     0,     0,   493,     0,     0,     0,
    2411        0,     0,     0,     0,    42,     0,    43,     0,     0,   493,
    2412     -505,     0,     0,     0,    44,     0,     0,     0,     0,     0,
    2413        0,     1,     2,   197,     4,     5,     6,     7,     8,     9,
    2414       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2415       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2416       28,     0,   493,    29,   271,    30,  1047,  1048,     0,  1049,
    2417        0,     0,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
    2418        0,  1058,     0,     0,  1059,    32,     0,   273,    33,     0,
    2419       34,     0,    35,   625,   493,    37,    38,   275,     0,     0,
    2420      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2421        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2422        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2423        0,  1060,     0,     0,   164,     0,     0,     0,   285,   286,
    2424      287,   288,   289,   290,  1447,     0,     0,     0,     0,     0,
    2425        0,     0,  -126,     0,     0,     0,     0,     0,     1,     2,
    2426      197,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2393       0,     0,  1444,     0,     0,     0,     0,     0,     1,     2,
     2394     198,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    24272395      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    24282396      23,    24,     0,     0,    25,    26,    27,    28,     0,     0,
    2429       29,   271,    30,   272,     0,     0,     0,     0,     0,   493,
     2397      29,   271,    30,   272,     8,     9,    10,    11,    12,    13,
     2398      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2399      24,  -279,     0,     0,   273,    33,     0,    34,     0,    35,
     2400     274,    30,    37,    38,   275,     0,  1500,   276,   277,   278,
     2401     279,    40,    41,     0,   280,   281,     0,     0,     0,     0,
     2402       0,     0,   282,     0,    33,     0,     0,     0,     0,     0,
     2403       0,     0,     0,     0,     0,  -279,   283,     0,  1057,     0,
     2404       0,     0,     0,     0,     0,   285,   286,   287,   288,   289,
     2405     290,     0,   310,     0,     0,     0,     0,     0,     0,  -126,
     2406       1,     2,   198,     4,     5,     6,     7,     8,     9,    10,
     2407      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2408      21,    22,    23,    24,     0,     0,    25,    26,    27,    28,
     2409       0,     0,    29,   271,    30,   272,     8,     9,    10,    11,
     2410      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2411      22,    23,    24,  -280,     0,     0,   273,    33,     0,    34,
     2412       0,    35,   274,    30,    37,    38,   275,     0,     0,   276,
     2413     277,   278,   279,    40,    41,     0,   280,   281,     0,     0,
     2414       0,     0,     0,     0,   282,     0,    33,     0,     0,     0,
     2415       0,     0,     0,     0,     0,     0,     0,  -280,   283,     0,
     2416      43,     0,     0,     0,     0,     0,     0,   285,   286,   287,
     2417     288,   289,   290,     2,   198,     4,     5,     6,     7,     8,
     2418       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2419      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2420      27,     0,     0,     0,     0,   271,    30,   272,     0,     0,
    24302421       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2431      271,     0,   272,     0,   273,    33,     0,    34,  1503,    35,
    2432      274,     0,    37,    38,   275,     0,     0,   276,   277,   278,
    2433      279,    40,    41,   273,   280,   281,     0,     0,     0,   274,
    2434        0,     0,   282,   275,     0,     0,   276,   277,   278,   279,
    2435       40,    41,     0,   280,   281,     0,   283,     0,  1060,     0,
    2436        0,   282,     0,     0,   310,   285,   286,   287,   288,   289,
    2437      290,     0,     0,     0,     0,   283,     0,   361,     0,  -126,
    2438        0,     0,     0,     0,   285,   712,   287,   288,   289,   290,
    2439        0,     0,     0,     0,     0,     0,   493,     0,     0,     0,
    2440        0,     0,     0,     0,     0,     0,   493,     1,     2,   197,
    2441        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2442       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2443       24,     0,     0,    25,    26,    27,    28,     0,     0,    29,
    2444      271,    30,   272,     0,     0,     0,     0,     0,     0,     0,
    2445        0,     0,     0,     0,   493,     0,     0,     0,     0,   271,
    2446        0,   272,     0,   273,    33,     0,    34,     0,    35,   274,
    2447        0,    37,    38,   275,     0,     0,   276,   277,   278,   279,
    2448       40,    41,   273,   280,   281,     0,     0,     0,   625,     0,
    2449        0,   282,   275,     0,     0,   276,   277,   278,   279,    40,
    2450       41,     0,   280,   281,     0,   283,     0,    43,     0,     0,
    2451      282,     0,     0,     0,   285,   286,   287,   288,   289,   290,
    2452        0,     0,     0,     0,   283,     0,   761,     0,   493,     0,
    2453        0,     0,     0,   285,   363,   287,   288,   289,   290,     0,
    2454        2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
    2455       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2456       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2457        0,     0,   271,    30,   272,     0,     0,     0,   493,     0,
     2422       0,     0,     0,     0,     0,     0,     0,     0,   273,    33,
     2423       0,    34,     0,    35,   274,     0,    37,    38,   275,     0,
     2424       0,   276,   277,   278,   279,    40,    41,     0,   280,   281,
     2425       0,     0,     0,     0,     0,     0,   282,     0,     0,     0,
    24582426       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2459        0,     0,     0,   493,   493,   273,    33,     0,    34,     0,
    2460       35,   274,     0,    37,    38,   275,     0,     0,   276,   277,
    2461      278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
    2462        0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
    2463        0,     0,     0,     0,     0,     0,     0,   283,     0,   325,
    2464       -3,     0,     0,     0,   756,     0,   285,   326,   287,   288,
    2465      289,   290,     2,   197,     4,     5,     6,     7,     8,     9,
    2466       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2467       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2468        0,     0,     0,     0,   271,    30,   272,     0,     0,     0,
    2469        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2470        0,     0,     0,     0,     0,     0,     0,   273,    33,     0,
    2471       34,     0,    35,   274,     0,    37,    38,   275,     0,     0,
    2472      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2473        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2474        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2475        0,   913,    -3,     0,     0,     0,   756,     0,   285,   326,
    2476      287,   288,   289,   290,     0,     2,   197,     4,     5,     6,
     2427     283,     0,   325,    -3,     0,     0,     0,   754,     0,   285,
     2428     326,   287,   288,   289,   290,     2,   198,     4,     5,     6,
    24772429       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    24782430      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     
    24802432       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24812433       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2482      273,    33,     0,    34,     0,    35,   274,   493,    37,    38,
     2434     273,    33,     0,    34,     0,    35,   274,     0,    37,    38,
    24832435     275,     0,     0,   276,   277,   278,   279,    40,    41,     0,
    24842436     280,   281,     0,     0,     0,     0,     0,     0,   282,     0,
    24852437       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2486        0,     0,   283,     0,   913,    -3,     0,     0,     0,   756,
    2487        0,   285,   575,   287,   288,   289,   290,     0,     0,     0,
     2438       0,     0,   283,     0,   910,    -3,     0,     0,     0,   754,
     2439       0,   285,   326,   287,   288,   289,   290,     2,   198,     4,
     2440       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2441      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2442       0,     0,    25,    26,    27,     0,     0,     0,     0,   271,
     2443      30,   272,     0,     0,     0,     0,     0,     0,     0,     0,
    24882444       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2489      493,   493,     2,   197,     4,     5,     6,     7,     8,     9,
    2490       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2491       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2492        0,     0,     0,     0,   271,    30,   272,     0,     0,     0,
     2445       0,     0,   273,    33,     0,    34,     0,    35,   274,     0,
     2446      37,    38,   275,     0,     0,   276,   277,   278,   279,    40,
     2447      41,     0,   280,   281,     0,     0,     0,     0,     0,     0,
     2448     282,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2449       0,     0,     0,     0,   283,     0,   910,    -3,     0,     0,
     2450       0,   754,     0,   285,   574,   287,   288,   289,   290,     2,
     2451     198,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2452      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2453      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2454       0,   271,    30,   272,     0,     0,     0,     0,     0,     0,
    24932455       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2494        0,     0,     0,     0,     0,     0,     0,   273,    33,     0,
    2495       34,     0,    35,   274,     0,    37,    38,   275,     0,     0,
    2496      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2497        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2498        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2499        0,   913,    -3,     0,     0,     0,     0,     0,   285,   326,
    2500      287,   288,   289,   290,     2,   197,     4,     5,     6,     7,
    2501        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2502       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2503       26,    27,     0,     0,     0,     0,   271,    30,   272,     0,
     2456       0,     0,     0,     0,   273,    33,     0,    34,     0,    35,
     2457     274,     0,    37,    38,   275,     0,     0,   276,   277,   278,
     2458     279,    40,    41,     0,   280,   281,     0,     0,     0,     0,
     2459       0,     0,   282,     0,     0,     0,     0,     0,     0,     0,
     2460       0,     0,     0,     0,     0,     0,   283,     0,   325,    -3,
     2461       0,     0,     0,     0,     0,   285,   326,   287,   288,   289,
     2462     290,     2,   198,     4,     5,     6,     7,     8,     9,    10,
     2463      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2464      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2465       0,     0,     0,   271,    30,   272,     0,     0,     0,     0,
    25042466       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2505        0,     0,     0,     0,     0,     0,     0,     0,     0,   273,
    2506       33,     0,    34,     0,    35,   274,     0,   198,   199,   275,
    2507        0,     0,   276,   277,   278,   279,    40,    41,     0,   280,
    2508      281,     0,     0,     0,     0,     0,     0,   282,     0,     0,
     2467       0,     0,     0,     0,     0,     0,   273,    33,     0,    34,
     2468       0,    35,   274,     0,    37,    38,   275,     0,     0,   276,
     2469     277,   278,   279,    40,    41,     0,   280,   281,     0,     0,
     2470       0,     0,     0,     0,   282,     0,     0,     0,     0,     0,
     2471       0,     0,     0,     0,     0,     0,     0,     0,   283,     0,
     2472     910,    -3,     0,     0,     0,     0,     0,   285,   326,   287,
     2473     288,   289,   290,     2,   198,     4,     5,     6,     7,     8,
     2474       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2475      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2476      27,     0,     0,     0,     0,   271,    30,   272,     0,     0,
    25092477       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2510        0,   283,     0,   998,     0,     0,     0,     0,     0,     0,
    2511      285,   999,   287,   288,   289,   290,     2,   197,     4,     5,
     2478       0,     0,     0,     0,     0,     0,     0,     0,   273,    33,
     2479       0,    34,     0,    35,   274,     0,   199,   200,   275,     0,
     2480       0,   276,   277,   278,   279,    40,    41,     0,   280,   281,
     2481       0,     0,     0,     0,     0,     0,   282,     0,     0,     0,
     2482       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2483     283,     0,   995,     0,     0,     0,     0,     0,     0,   285,
     2484     996,   287,   288,   289,   290,     2,   198,     4,     5,     6,
     2485       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2486      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2487      25,    26,    27,     0,     0,     0,     0,   271,    30,   272,
     2488       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2489       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2490     273,    33,     0,    34,     0,    35,   274,     0,   199,   200,
     2491     275,     0,     0,   276,   277,   278,   279,    40,    41,     0,
     2492     280,   281,     0,     0,     0,     0,     0,     0,   282,     0,
     2493       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2494       0,     0,   283,     0,   361,     0,     0,     0,     0,     0,
     2495       0,   285,   363,   287,   288,   289,   290,     1,     2,     3,
     2496       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2497      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2498      24,     0,     0,    25,    26,    27,    28,     0,     0,    29,
     2499       0,    30,    31,     0,     0,     0,     0,     0,     0,     0,
     2500       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2501       0,    32,     0,     0,    33,     0,    34,     0,    35,    36,
     2502       0,    37,    38,    39,     0,     0,     0,     0,     0,     0,
     2503      40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
     2504       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2505       0,     0,     0,     0,     0,    42,     0,    43,     0,     0,
     2506       0,  -505,     0,     0,     0,    44,     1,     2,     3,     4,
     2507       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2508      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2509       0,     0,    25,    26,    27,    28,     0,     0,    29,     0,
     2510      30,    31,     0,     0,     0,     0,     0,     0,     0,     0,
     2511       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2512      32,     0,     0,    33,     0,    34,     0,    35,    36,     0,
     2513      37,    38,    39,     0,     0,     0,     0,     0,     0,    40,
     2514      41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2515       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2516       0,     0,     0,     0,    42,     0,    43,     0,     0,     0,
     2517       0,     0,     0,     0,    44,     1,     2,   198,     4,     5,
    25122518       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2513       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2514        0,    25,    26,    27,     0,     0,     0,     0,   271,    30,
    2515      272,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2519      16,    17,    18,    19,    20,    21,    22,    23,    24,  -279,
     2520       0,    25,    26,    27,    28,     0,     0,    29,     0,    30,
    25162521       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2517        0,   273,    33,     0,    34,     0,    35,   274,     0,   198,
    2518      199,   275,     0,     0,   276,   277,   278,   279,    40,    41,
    2519        0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    25202522       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2521        0,     0,     0,   283,     0,   361,     0,     0,     0,     0,
    2522        0,     0,   285,   363,   287,   288,   289,   290,     1,     2,
    2523        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2524       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2525       23,    24,     0,     0,    25,    26,    27,    28,     0,     0,
    2526       29,     0,    30,    31,     0,     0,     0,     0,     0,     0,
     2523       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
     2524      38,     0,     0,  -279,     1,     2,   198,     4,     5,     6,
     2525       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2526      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2527      25,    26,    27,    28,     0,    43,    29,     0,    30,     0,
     2528       0,     0,     0,   108,     0,     0,     0,     0,     0,     0,
    25272529       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2528        0,     0,    32,     0,     0,    33,     0,    34,     0,    35,
    2529       36,     0,    37,    38,    39,     0,     0,     0,     0,     0,
    2530        0,    40,    41,     0,     0,     0,     0,     0,     0,     0,
     2530       0,    33,     0,    34,     0,    35,     0,     0,    37,    38,
     2531       2,   198,     4,     5,     6,     7,     8,     9,    10,    11,
     2532      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2533      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2534       0,     0,     0,    30,    43,     0,     0,     0,     0,     0,
     2535       0,     0,   108,     0,     0,     0,     0,     0,     0,     0,
     2536       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
     2537      35,    36,     0,   199,   200,    39,     0,     0,     0,     0,
     2538       0,     0,    40,    41,     0,     0,     0,     0,     0,     0,
    25312539       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2532        0,     0,     0,     0,     0,     0,    42,     0,    43,     0,
    2533        0,     0,     0,     0,     0,     0,    44,   196,     2,   197,
     2540       0,     0,     0,     0,     0,     0,     0,    42,     0,   201,
     2541       0,     0,     0,     0,     0,     0,     0,   202,     2,   198,
    25342542       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    25352543      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    25372545       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    25382546       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2539        0,     0,     0,     0,    33,     0,    34,     0,    35,    36,
    2540        0,   198,   199,    39,     0,     0,     0,     0,     0,     0,
    2541       40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
    2542        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2543        0,     0,     0,     0,     0,    42,     0,   200,     0,     0,
    2544        0,     0,     0,     0,     0,   201,     1,     2,   197,     4,
    2545        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2546       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2547     -279,     0,    25,    26,    27,    28,     0,     0,    29,     0,
    2548       30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2549        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2550        0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
    2551       37,    38,     0,     0,  -279,     1,     2,   197,     4,     5,
    2552        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2553       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2554        0,    25,    26,    27,    28,     0,    43,    29,     0,    30,
    2555        0,     0,     0,     0,   108,     0,     0,     0,     0,     0,
    2556        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2557        0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
    2558       38,     0,   196,     2,   197,     4,     5,     6,     7,     8,
     2547       0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
     2548       0,    37,    38,     2,   198,     4,     5,     6,     7,     8,
    25592549       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    25602550      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2561       27,     0,     0,     0,     0,    43,    30,     0,     0,     0,
    2562        0,     0,     0,   108,     0,     0,     0,     0,     0,     0,
    2563        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2564        0,    34,     0,    35,     0,     0,   198,   199,     2,   197,
    2565        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2566       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2567       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2568        0,    30,   200,     0,     0,     0,     0,     0,     0,     0,
    2569      261,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2570        0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
    2571        0,    37,    38,     2,   197,     4,     5,     6,     7,     8,
    2572        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2573       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2574       27,     0,     0,     0,     0,     0,    30,   662,    -3,     0,
    2575        0,     0,     0,     0,     0,   611,     0,     0,     0,     0,
     2551      27,     0,     0,     0,     0,     0,    30,   661,    -3,     0,
     2552       0,     0,     0,     0,     0,   610,     0,     0,     0,     0,
    25762553       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    25772554       0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
    2578        2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
     2555       2,   198,     4,     5,     6,     7,     8,     9,    10,    11,
    25792556      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    25802557      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2581        0,  -389,   662,    30,     0,     0,     0,     0,     0,     0,
    2582      611,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2558       0,  -388,   661,    30,     0,     0,     0,     0,     0,     0,
     2559     610,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25832560       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    25842561      35,     0,     0,    37,    38,     0,     0,     0,     0,     0,
    25852562       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2586        0,     0,     0,     0,     0,  1370,     0,     0,     0,     0,
    2587        0,     0,     0,     0,     0,     0,     0,     0,     0,   662,
    2588        0,     0,     0,     0,     0,     0,     0,   611,     2,   197,
     2563       0,     0,     0,     0,     0,  1367,     0,     0,     0,     0,
     2564       0,     0,     0,     0,     0,     0,     0,     0,     0,   661,
     2565       0,     0,     0,     0,     0,     0,     0,   610,     2,   198,
    25892566       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    25902567      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    25952572       0,    37,    38,     0,     0,     0,     0,     0,     0,     0,
    25962573       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2597        0,     0,    33,  1372,     0,     0,     0,   107,     0,    37,
    2598       38,     0,     0,     0,     0,     0,     0,   662,     0,     0,
    2599        0,     0,     0,     0,     0,   611,     2,   197,     4,     5,
     2574       0,     0,    33,  1369,     0,     0,     0,   107,     0,    37,
     2575      38,     0,     0,     0,     0,     0,     0,   661,     0,     0,
     2576       0,     0,     0,     0,     0,   610,     2,   198,     4,     5,
    26002577       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    26012578      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     
    26032580       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26042581       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2605        0,     0,    33,     0,    34,     0,    35,     0,     0,   198,
    2606      199,     2,   197,     4,     5,     6,     7,     8,     9,    10,
     2582       0,     0,    33,     0,    34,     0,    35,     0,     0,   199,
     2583     200,     2,   198,     4,     5,     6,     7,     8,     9,    10,
    26072584      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    26082585      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    26092586       0,     0,     0,     0,    30,   260,     0,     0,     0,     0,
    2610        0,     0,     0,   606,     0,     0,     0,     0,     0,     0,
     2587       0,     0,     0,   605,     0,     0,     0,     0,     0,     0,
    26112588       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2612        0,    35,     0,     0,    37,    38,     2,   197,     4,     5,
     2589       0,    35,     0,     0,    37,    38,     2,   198,     4,     5,
    26132590       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    26142591      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    26152592       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2616      574,     0,     0,     0,     0,     0,     0,     0,   611,     0,
     2593     573,     0,     0,     0,     0,     0,     0,     0,   610,     0,
    26172594       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26182595       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
    2619       38,     2,   197,     4,     5,     6,     7,     8,     9,    10,
     2596      38,     2,   198,     4,     5,     6,     7,     8,     9,    10,
    26202597      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    26212598      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2622        0,     0,     0,     0,    30,   662,     0,     0,     0,     0,
    2623        0,     0,     0,   611,     0,     0,     0,     0,     0,     0,
     2599       0,     0,     0,     0,    30,   661,     0,     0,     0,     0,
     2600       0,     0,     0,   610,     0,     0,     0,     0,     0,     0,
    26242601       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2625        0,    35,     0,     0,   198,   199,     8,     9,    10,    11,
     2602       0,    35,     0,     0,   199,   200,     8,     9,    10,    11,
    26262603      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2627       22,    23,    24,     0,     0,    25,    26,    27,   474,   475,
    2628      476,     0,   271,    30,   272,     0,     0,     0,     0,     0,
    2629      200,     0,     0,     0,     0,     0,     0,     0,   261,     0,
     2604      22,    23,    24,     0,     0,    25,    26,    27,   473,   474,
     2605     475,     0,   271,    30,   272,     0,     0,     0,     0,     0,
     2606     201,     0,     0,     0,     0,     0,     0,     0,   261,     0,
    26302607       0,     0,     0,     0,     0,   273,    33,     0,     0,     0,
    26312608       0,   274,     0,    37,    38,   275,     0,     0,   276,   277,
     
    26432620       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    26442621       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2645        0,     0,     0,   283,     0,   506,     0,     0,   164,     0,
     2622       0,     0,     0,   283,     0,   505,     0,     0,   165,     0,
    26462623       0,     0,   285,   286,   287,   288,   289,   290,     8,     9,
    26472624      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     
    26542631       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    26552632       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2656        0,   574,    -3,     0,     0,     0,     0,     0,   285,   575,
     2633       0,   573,    -3,     0,     0,     0,     0,     0,   285,   574,
    26572634     287,   288,   289,   290,     8,     9,    10,    11,    12,    13,
    26582635      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    26602637     271,    30,   272,     0,     0,     0,     0,     0,     0,     0,
    26612638       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2662        0,     0,     0,   273,    33,     0,     0,     0,     0,   625,
     2639       0,     0,     0,   273,    33,     0,     0,     0,     0,   624,
    26632640       0,    37,    38,   275,     0,     0,   276,   277,   278,   279,
    26642641      40,    41,     0,   280,   281,     0,     0,     0,     0,     0,
    26652642       0,   282,     0,     0,     0,     0,     0,     0,     0,     0,
    2666        0,     0,     0,     0,     0,   283,   -35,   742,     0,     0,
     2643       0,     0,     0,     0,     0,   283,   -35,   740,     0,     0,
    26672644       0,     0,     0,     0,   285,   286,   287,   288,   289,   290,
    26682645       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     
    26852662     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
    26862663       0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
    2687        0,     0,     0,     0,     0,     0,     0,   283,     0,   151,
     2664       0,     0,     0,     0,     0,     0,     0,   283,     0,   152,
    26882665       0,     0,     0,     0,     0,     0,   285,   286,   287,   288,
    26892666     289,   290,     8,     9,    10,    11,    12,    13,    14,    15,
     
    26962673       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    26972674       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2698        0,     0,     0,   283,     0,   574,     0,     0,     0,     0,
    2699        0,     0,   285,   575,   287,   288,   289,   290,     8,     9,
     2675       0,     0,     0,   283,     0,   573,     0,     0,     0,     0,
     2676       0,     0,   285,   574,   287,   288,   289,   290,     8,     9,
    27002677      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    27012678      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     
    27082685       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    27092686       0,   361,     0,     0,     0,     0,     0,     0,   285,   363,
    2710      287,   288,   289,   290,     8,     9,    10,    11,    12,    13,
    2711       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2712       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2713        0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
     2687     287,   288,   289,   290,   455,     2,   198,     4,     5,     6,
     2688       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2689      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2690      25,    26,    27,     0,     0,     0,     0,     0,    30,     8,
     2691       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2692      19,    20,    21,    22,    23,    24,  -279,     0,    25,    26,
     2693      27,    33,     0,    34,     0,    35,    30,     0,    37,    38,
    27142694       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2715        0,     0,     0,     0,    33,     0,     0,     0,     0,    36,
    2716        0,    37,    38,    39,     0,     0,     0,     0,     0,     0,
    2717       40,    41,     8,     9,    10,    11,    12,    13,    14,    15,
    2718       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2719        0,    25,    26,    27,     0,    42,     0,   151,     0,    30,
    2720        0,     0,     0,     0,     0,    44,     0,     0,     0,     0,
     2695       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2696       0,     0,     0,     0,    36,     0,   807,    38,    39,     0,
     2697    -279,     0,     0,     0,     0,    40,    41,    -3,     8,     9,
     2698      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2699      20,    21,    22,    23,    24,  -279,     0,    25,    26,    27,
     2700    1025,     0,   567,     0,     0,    30,     0,     0,     0,     0,
     2701     610,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2702      17,    18,    19,    20,    21,    22,    23,    24,    33,     0,
     2703      25,    26,    27,    36,     0,   807,    38,    39,    30,  -279,
     2704       0,     0,     0,     0,    40,    41,     0,     0,     0,     0,
    27212705       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2722        0,     0,    33,     0,     0,     0,     0,    36,     0,    37,
    2723       38,    39,     0,     0,     0,     0,     0,     0,    40,    41,
     2706       0,    33,     0,     0,     0,     0,    36,     0,    37,    38,
     2707      39,   567,     0,     0,     0,     0,     0,    40,    41,   108,
    27242708       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    27252709      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2726       26,    27,     0,    42,     0,    43,     0,    30,     0,     0,
    2727        0,     0,     0,    44,     0,     0,     0,     0,     0,     0,
     2710      26,    27,    42,     0,    43,     0,     0,    30,     0,     0,
     2711       0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
    27282712       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2729       33,     0,     0,     0,     0,    36,     0,   198,   199,    39,
     2713      33,     0,     0,     0,     0,    36,     0,   199,   200,    39,
    27302714       0,     0,     0,     0,     0,     0,    40,    41,     8,     9,
    27312715      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    27322716      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    27332717       0,    42,     0,   260,     0,    30,     0,     0,     0,     0,
    2734        0,   201,     0,     0,     0,     0,     0,     0,     0,     0,
     2718       0,   202,     0,     0,     0,     0,     0,     0,     0,     0,
    27352719       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2736        0,     0,     0,    36,     0,   809,    38,    39,     0,     0,
     2720       0,     0,     0,    36,     0,   807,    38,    39,     0,     0,
    27372721       0,     0,     0,     0,    40,    41,     8,     9,    10,    11,
    27382722      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2739       22,    23,    24,     0,     0,    25,    26,    27,     0,  1028,
    2740        0,   568,     0,    30,     0,     0,     0,     0,     0,   611,
     2723      22,    23,    24,     0,     0,    25,    26,    27,     0,  1025,
     2724       0,   567,     0,    30,     0,     0,     0,     0,     0,   610,
    27412725       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27422726       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2743        0,    36,     0,   809,    38,    39,     0,     0,     0,     0,
     2727       0,    36,     0,   807,    38,    39,     0,     0,     0,     0,
    27442728       0,     0,    40,    41,     8,     9,    10,    11,    12,    13,
    27452729      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2746       24,     0,     0,    25,    26,    27,     0,     0,     0,   568,
    2747        0,    30,   435,     0,     0,     0,     0,   108,     0,     0,
     2730      24,     0,     0,    25,    26,    27,     0,     0,     0,   567,
     2731       0,    30,   434,     0,     0,     0,     0,   108,     0,     0,
    27482732       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27492733       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    27502734       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    27512735      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2736    -279,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2737      30,     0,     0,     0,     0,     0,     0,   435,     0,     0,
     2738       0,   926,     0,     0,     0,   108,     0,     0,     0,     0,
     2739       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2740      37,    38,     0,     0,  -279,     8,     9,    10,    11,    12,
     2741      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2742      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2743       0,     0,    30,   434,     0,     0,   567,     0,     0,     0,
     2744       0,     0,     0,     0,   108,     0,     0,     0,     0,     0,
     2745       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2746       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2747      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2748      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2749       0,    30,   434,     0,     0,     0,     0,     0,   435,     0,
     2750       0,     0,  1391,     0,     0,     0,   108,     0,     0,     0,
     2751       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2752       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
     2753      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    27522754       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2753       30,   435,     0,     0,     0,     0,     0,   436,     0,     0,
    2754        0,   929,     0,     0,     0,   108,     0,     0,     0,     0,
     2755      30,   434,     0,     0,     0,     0,     0,   435,     0,     0,
     2756       0,  1435,     0,     0,     0,   108,     0,     0,     0,     0,
    27552757       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    27562758      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
    27572759      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    27582760       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2759      435,     0,     0,     0,     0,     0,   436,     0,     0,     0,
    2760     1394,     0,     0,     0,   108,     0,     0,     0,     0,     0,
     2761     434,     0,     0,     0,     0,     0,   435,     0,     0,     0,
     2762    1497,     0,     0,     0,   108,     0,     0,     0,     0,     0,
    27612763       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    27622764      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    27632765      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2764       25,    26,    27,     0,     0,     0,     0,     0,    30,   435,
    2765        0,     0,     0,     0,     0,   436,     0,     0,     0,  1438,
     2766      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2767       0,     0,     0,     0,     0,   435,     0,     0,     0,  1521,
    27662768       0,     0,     0,   108,     0,     0,     0,     0,     0,     0,
    2767        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
     2769       0,    33,     0,     0,     0,     0,   107,     0,    37,    38,
    27682770       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    27692771      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2770       26,    27,     0,     0,     0,     0,     0,    30,   435,     0,
    2771        0,     0,     0,     0,   436,     0,     0,     0,  1500,     0,
     2772      26,    27,     0,     0,     0,     0,     0,    30,   434,     0,
     2773       0,     0,     0,     0,    43,     0,     0,     0,     0,     0,
    27722774       0,     0,   108,     0,     0,     0,     0,     0,     0,     0,
    27732775      33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
     
    27752777      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    27762778      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2777        0,     0,     0,   436,     0,     0,     0,  1524,     0,     0,
     2779       0,     0,     0,   435,     0,     0,     0,     0,     0,     0,
    27782780       0,   108,     0,     0,     0,     0,     0,     0,     0,    33,
    2779        0,     0,     0,     0,   107,     0,    37,    38,     8,     9,
     2781       0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
    27802782      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    27812783      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2782        0,     0,     0,     0,     0,    30,   435,     0,     0,     0,
     2784       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
     2785    1025,     0,   567,     0,     0,     0,     0,     0,     0,     0,
     2786     108,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2787       0,     0,     0,     0,     0,    37,    38,     8,     9,    10,
     2788      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2789      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2790       0,     0,     0,     0,    30,     0,     0,     0,     0,  1025,
     2791       0,   567,     0,     0,     0,     0,     0,     0,     0,   610,
     2792       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
     2793       0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
     2794      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2795      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2796       0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
     2797     247,     0,     0,     0,     0,     0,     0,     0,   108,     0,
     2798       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
     2799       0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
     2800      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2801      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2802       0,     0,    30,     0,     0,     0,     0,     0,     0,   152,
     2803       0,     0,     0,     0,     0,     0,     0,   108,     0,     0,
     2804       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2805       0,     0,   199,   200,     8,     9,    10,    11,    12,    13,
     2806      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2807      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2808       0,    30,     0,     0,     0,     0,     0,     0,   260,     0,
     2809       0,     0,     0,     0,     0,     0,   261,     0,     0,     0,
     2810       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2811       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
     2812      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2813       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2814      30,     0,     0,     0,     0,     0,     0,   247,     0,     0,
     2815       0,     0,     0,     0,     0,   610,     0,     0,     0,     0,
     2816       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2817      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
     2818      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2819       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2820       0,     0,     0,     0,     0,     0,   567,     0,     0,     0,
     2821       0,     0,     0,     0,   610,     0,     0,     0,     0,     0,
     2822       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
     2823      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2824      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2825      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2826       0,     0,     0,     0,     0,   435,     0,     0,     0,     0,
     2827       0,     0,     0,   108,     0,     0,     0,     0,     0,     0,
     2828       0,    33,     0,     0,     0,     0,     0,     0,   199,   200,
     2829       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2830      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2831      26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
     2832       0,     0,     0,     0,   260,     0,     0,     0,     0,     0,
     2833       0,     0,   605,     0,     0,     0,     0,     0,     0,     0,
     2834      33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
     2835       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2836      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2837      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
     2838       0,     0,     0,   573,     0,     0,     0,     0,     0,     0,
     2839       0,   610,     0,     0,     0,     0,     0,     0,     0,    33,
     2840       0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
     2841      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2842      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2843       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    27832844       0,     0,    43,     0,     0,     0,     0,     0,     0,     0,
    27842845     108,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     
    27872848      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    27882849       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2789        0,   436,     0,     0,     0,     0,     0,     0,     0,   108,
     2850       0,   567,     0,     0,     0,     0,     0,     0,     0,   108,
    27902851       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2791        0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
    2792       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2793       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2794        0,     0,     0,    30,     0,     0,     0,     0,  1028,     0,
    2795      568,     0,     0,     0,     0,     0,     0,     0,   108,     0,
    2796        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2797        0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
    2798       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2799       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2800        0,     0,    30,     0,     0,     0,     0,  1028,     0,   568,
    2801        0,     0,     0,     0,     0,     0,     0,   611,     0,     0,
    2802        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2803        0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
    2804       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2805       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2806        0,    30,     0,     0,     0,     0,     0,     0,   247,     0,
    2807        0,     0,     0,     0,     0,     0,   108,     0,     0,     0,
    2808        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2809        0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    2810       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2811        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2812       30,     0,     0,     0,     0,     0,     0,   151,     0,     0,
    2813        0,     0,     0,     0,     0,   108,     0,     0,     0,     0,
    2814        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2815      198,   199,     8,     9,    10,    11,    12,    13,    14,    15,
     2852       0,     0,     0,     0,   199,   200,     2,   198,     4,     5,
     2853       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    28162854      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    28172855       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2818        0,     0,     0,     0,     0,     0,   260,     0,     0,     0,
    2819        0,     0,     0,     0,   261,     0,     0,     0,     0,     0,
    2820        0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    2821       38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2822       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2823       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2824        0,     0,     0,     0,     0,   247,     0,     0,     0,     0,
    2825        0,     0,     0,   611,     0,     0,     0,     0,     0,     0,
    2826        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2827        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2828       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2829       26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
    2830        0,     0,     0,     0,   568,     0,     0,     0,     0,     0,
    2831        0,     0,   611,     0,     0,     0,     0,     0,     0,     0,
    2832       33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
    2833        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2834       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2835       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2836        0,     0,     0,   436,     0,     0,     0,     0,     0,     0,
    2837        0,   108,     0,     0,     0,     0,     0,     0,     0,    33,
    2838        0,     0,     0,     0,     0,     0,   198,   199,     8,     9,
     2856       0,     0,     0,     0,     0,     0,     0,     0,   605,     0,
     2857       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2858       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
     2859      38,     0,   271,     0,   272,  1045,     0,  1046,     0,     0,
     2860    1047,  1048,  1049,  1050,  1051,  1052,  1053,  1054,  1529,  1055,
     2861       0,     0,  1056,    32,     0,   273,     0,     0,     0,     0,
     2862       0,   624,     0,     0,  -401,   275,     0,     0,   276,   277,
     2863     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
     2864       0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
     2865       0,     0,     0,     0,     0,     0,     0,   283,     0,   361,
     2866       0,     0,   165,     0,     0,     0,   285,   363,   287,   288,
     2867     289,   290,     0,   271,     0,   272,  1045,     0,  1046,     0,
     2868    -126,  1047,  1048,  1049,  1050,  1051,  1052,  1053,  1054,     0,
     2869    1055,     0,     0,  1056,    32,     0,   273,     0,     0,     0,
     2870       0,     0,   624,     0,     0,     0,   275,     0,     0,   276,
     2871     277,   278,   279,    40,    41,     0,   280,   281,     0,     0,
     2872       0,     0,     0,     0,   282,     0,     0,     0,     0,     0,
     2873       0,     0,     0,     0,     0,     0,     0,     0,   283,     0,
     2874     361,     0,     0,   165,     0,     0,     0,   285,   363,   287,
     2875     288,   289,   290,     0,     0,     0,     0,     0,     0,     0,
     2876       0,  -126,     2,   198,     4,     5,     6,     7,     8,     9,
    28392877      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    28402878      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2841        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2842        0,     0,   260,     0,     0,     0,     0,     0,     0,     0,
    2843      606,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2844        0,     0,     0,     0,     0,    37,    38,     8,     9,    10,
    2845       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2846       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2847        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2848        0,   574,     0,     0,     0,     0,     0,     0,     0,   611,
    2849        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2850        0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
     2879       0,     0,     0,     0,     0,    30,     8,     9,    10,    11,
    28512880      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2852       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2853        0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
    2854       43,     0,     0,     0,     0,     0,     0,     0,   108,     0,
    2855        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2856        0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
    2857       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2858       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2859        0,     0,    30,     0,     0,     0,     0,     0,     0,   568,
    2860        0,     0,     0,     0,     0,     0,     0,   108,     0,     0,
    2861        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2862        0,     0,   198,   199,     8,     9,    10,    11,    12,    13,
    2863       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2864       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2865        0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    2866        0,     0,     0,     0,     0,     0,   261,     0,     0,     0,
    2867        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2868        0,   198,   199,     2,   197,     4,     5,     6,     7,     8,
    2869        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2870       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2871       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2872        0,     0,     0,     0,     0,   606,     0,     0,     0,     0,
    2873        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2874        0,    34,     0,    35,     0,     0,    37,    38,     0,   271,
    2875        0,   272,  1048,     0,  1049,     0,     0,  1050,  1051,  1052,
    2876     1053,  1054,  1055,  1056,  1057,     0,  1058,     0,     0,  1059,
    2877       32,     0,   273,     0,     0,     0,     0,     0,   625,     0,
    2878        0,  -402,   275,     0,     0,   276,   277,   278,   279,    40,
    2879       41,     0,   280,   281,     0,     0,     0,     0,     0,     0,
    2880      282,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2881        0,     0,     0,     0,   283,     0,   361,     0,     0,   164,
    2882        0,     0,     0,   285,   363,   287,   288,   289,   290,     0,
    2883        0,     0,     0,     0,     0,     0,     0,  -126,     2,   197,
    2884        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2885       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2886       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2887        0,    30,     8,     9,    10,    11,    12,    13,    14,    15,
    2888       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2889        0,    25,    26,    27,    33,     0,    34,     0,    35,    30,
    2890        0,    37,    38,     0,   271,     0,   272,  1048,     0,  1049,
    2891     1420,  1421,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
    2892     1532,  1058,    33,  1329,  1059,    32,     0,   273,     0,    37,
    2893       38,     0,     0,   625,     0,     0,     0,   275,     0,     0,
    2894      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2895        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2896        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2897        0,   361,     0,     0,   164,     0,     0,     0,   285,   363,
    2898      287,   288,   289,   290,   271,     0,   272,  1048,     0,  1049,
    2899     1420,  1421,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
    2900        0,  1058,     0,     0,  1059,    32,     0,   273,     0,     0,
    2901        0,     0,     0,   625,     0,     0,     0,   275,     0,     0,
    2902      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2903        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2904        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2905        0,   361,     0,     0,   164,     0,     0,     0,   285,   363,
    2906      287,   288,   289,   290,   271,     0,   272,  1048,     0,  1049,
    2907        0,     0,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
    2908        0,  1058,     0,     0,  1059,    32,     0,   273,     0,     0,
    2909        0,     0,     0,   625,     0,     0,     0,   275,     0,     0,
    2910      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2911        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2912        0,   271,     0,   272,     0,     0,     0,     0,     0,   283,
    2913        0,   361,     0,     0,   164,     0,     0,     0,   285,   363,
    2914      287,   288,   289,   290,   273,     0,     0,     0,     0,     0,
    2915      274,     0,     0,     0,   275,     0,     0,   276,   277,   278,
    2916      279,    40,    41,     0,   280,   281,     0,     0,     0,     0,
    2917        0,     0,   282,     0,     0,     0,     0,     0,   271,     0,
    2918      272,     0,     0,     0,     0,     0,   283,     0,   361,     0,
    2919        0,     0,     0,     0,     0,   285,   892,   287,   288,   289,
    2920      290,   273,     0,     0,     0,     0,     0,   274,     0,     0,
     2881      22,    23,    24,     0,     0,    25,    26,    27,    33,     0,
     2882      34,     0,    35,    30,     0,    37,    38,     0,   271,     0,
     2883     272,  1045,     0,  1046,  1417,  1418,  1047,  1048,  1049,  1050,
     2884    1051,  1052,  1053,  1054,  1529,  1055,    33,  1326,  1056,    32,
     2885       0,   273,     0,    37,    38,     0,     0,   624,     0,     0,
     2886       0,   275,     0,     0,   276,   277,   278,   279,    40,    41,
     2887       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
     2888       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2889       0,     0,     0,   283,     0,   361,     0,     0,   165,     0,
     2890       0,     0,   285,   363,   287,   288,   289,   290,   271,     0,
     2891     272,  1045,     0,  1046,  1417,  1418,  1047,  1048,  1049,  1050,
     2892    1051,  1052,  1053,  1054,     0,  1055,     0,     0,  1056,    32,
     2893       0,   273,     0,     0,     0,     0,     0,   624,     0,     0,
     2894       0,   275,     0,     0,   276,   277,   278,   279,    40,    41,
     2895       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
     2896       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2897       0,     0,     0,   283,     0,   361,     0,     0,   165,     0,
     2898       0,     0,   285,   363,   287,   288,   289,   290,   271,     0,
     2899     272,  1045,     0,  1046,     0,     0,  1047,  1048,  1049,  1050,
     2900    1051,  1052,  1053,  1054,     0,  1055,     0,     0,  1056,    32,
     2901       0,   273,     0,     0,     0,     0,     0,   624,     0,     0,
    29212902       0,   275,     0,     0,   276,   277,   278,   279,    40,    41,
    29222903       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    29232904       0,     0,     0,     0,     0,   271,     0,   272,     0,     0,
    2924        0,     0,     0,   283,     0,     0,     0,     0,     0,     0,
     2905       0,     0,     0,   283,     0,   361,     0,     0,   165,     0,
    29252906       0,     0,   285,   363,   287,   288,   289,   290,   273,     0,
    29262907       0,     0,     0,     0,   274,     0,     0,     0,   275,     0,
     
    29282909       0,     0,     0,     0,     0,     0,   282,     0,     0,     0,
    29292910       0,     0,   271,     0,   272,     0,     0,     0,     0,     0,
    2930      496,     0,     0,     0,     0,     0,     0,     0,     0,   285,
    2931      363,   287,   288,   289,   290,   273,     0,     0,     0,     0,
     2911     283,     0,   361,     0,     0,     0,     0,     0,     0,   285,
     2912     890,   287,   288,   289,   290,   273,     0,     0,     0,     0,
    29322913       0,   274,     0,     0,     0,   275,     0,     0,   276,   277,
    29332914     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
    29342915       0,     0,     0,   282,     0,     0,     0,     0,     0,   271,
    2935        0,   272,     0,     0,     0,     0,     0,   499,     0,     0,
     2916       0,   272,     0,     0,     0,     0,     0,   283,     0,     0,
    29362917       0,     0,     0,     0,     0,     0,   285,   363,   287,   288,
    29372918     289,   290,   273,     0,     0,     0,     0,     0,   274,     0,
    29382919       0,     0,   275,     0,     0,   276,   277,   278,   279,    40,
    29392920      41,     0,   280,   281,     0,     0,     0,     0,     0,     0,
    2940      282,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2941        0,     0,     0,     0,   502,     0,     0,     0,     0,     0,
    2942        0,     0,     0,   285,   363,   287,   288,   289,   290,     2,
    2943      197,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2944       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2945       23,    24,     0,     0,     0,     0,     0,     0,     0,     0,
    2946        0,     0,    30,     0,     0,     0,     0,     0,     0,     0,
     2921     282,     0,     0,     0,     0,     0,   271,     0,   272,     0,
     2922       0,     0,     0,     0,   495,     0,     0,     0,     0,     0,
     2923       0,     0,     0,   285,   363,   287,   288,   289,   290,   273,
     2924       0,     0,     0,     0,     0,   274,     0,     0,     0,   275,
     2925       0,     0,   276,   277,   278,   279,    40,    41,     0,   280,
     2926     281,     0,     0,     0,     0,     0,     0,   282,     0,     0,
     2927       0,     0,     0,   271,     0,   272,     0,     0,     0,     0,
     2928       0,   498,     0,     0,     0,     0,     0,     0,     0,     0,
     2929     285,   363,   287,   288,   289,   290,   273,     0,     0,     0,
     2930       0,     0,   274,     0,     0,     0,   275,     0,     0,   276,
     2931     277,   278,   279,    40,    41,     0,   280,   281,     0,     0,
     2932       0,     0,     0,     0,   282,     0,     0,     0,     0,     0,
     2933       0,     0,     0,     0,     0,     0,     0,     0,   501,     0,
     2934       0,     0,     0,     0,     0,     0,     0,   285,   363,   287,
     2935     288,   289,   290,     2,   198,     4,     5,     6,     7,     8,
     2936       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2937      19,    20,    21,    22,    23,    24,     0,     0,     0,     0,
     2938       0,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    29472939       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2948        0,     0,     0,     0,     0,    33,     0,    34,     0,    35,
    2949       36,     0,   167,   168,    39,     0,     0,     0,     0,     0,
    2950        0,    40,    41,   196,     2,   197,     4,     5,     6,     7,
     2940       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2941       0,    34,     0,    35,    36,     0,   168,   169,    39,     0,
     2942       0,     0,     0,     0,     0,    40,    41,   197,     2,   198,
     2943       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2944      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2945      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2946       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
     2947       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2948       0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
     2949       0,   199,   200,   455,     2,   198,     4,     5,     6,     7,
    29512950       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    29522951      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     
    29542953       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    29552954       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2956       33,     0,    34,     0,    35,     0,     0,   198,   199,   456,
    2957        2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
    2958       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2959       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2960        0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
     2955      33,     0,    34,     0,    35,     0,     0,    37,    38,     2,
     2956     198,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2957      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2958      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2959       0,     0,    30,     8,     9,    10,    11,    12,    13,    14,
     2960      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2961       0,     0,    25,    26,    27,    33,     0,    34,     0,    35,
     2962      30,     0,   199,   200,     0,     0,     0,     0,     0,     0,
    29612963       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2962        0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    2963       35,     0,     0,    37,    38,     2,   197,     4,     5,     6,
    2964        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2965       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2966       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2967        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2968        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2969        0,    33,     0,    34,     0,    35,     0,     0,   198,   199,
    2970        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2971       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2972       26,    27,   474,   475,   476,     0,     0,    30,     8,     9,
    2973       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2974       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2975       33,     0,     0,     0,     0,    30,     0,    37,    38,     0,
    2976        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2977        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2978        0,     0,     0,     0,     0,   198,   199
     2964       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2965     199,   200
    29792966};
    29802967
    29812968#define yypact_value_is_default(yystate) \
    2982   ((yystate) == (-1297))
     2969  ((yystate) == (-1306))
    29832970
    29842971#define yytable_value_is_error(yytable_value) \
     
    29872974static const yytype_int16 yycheck[] =
    29882975{
    2989        1,   112,     0,   438,     0,    42,   178,     1,    42,   177,
    2990       42,   210,   177,   444,   162,   177,   102,   178,    32,   412,
    2991      630,   177,   269,   177,   177,   520,     0,     1,   270,   877,
    2992      606,   676,   434,    31,   558,    31,   737,   557,   877,   177,
    2993      433,   434,   676,   676,    42,   586,    44,   331,    44,   437,
    2994      588,     0,   557,  1026,  1027,     0,    54,    31,   557,  1027,
    2995      588,   755,    60,   980,    60,    63,     0,    63,    66,   346,
    2996       66,   586,    66,   350,   586,   179,    54,  1047,    42,   481,
    2997       65,   192,    31,   485,   256,   987,    31,   255,  1339,    63,
    2998      255,   701,    66,   255,    31,   256,   586,    31,   586,   255,
    2999      586,   255,   255,    65,   399,   103,   586,   752,   106,    42,
    3000      407,   408,    29,    42,   112,   101,    88,   255,   752,   752,
    3001      102,    37,   510,   418,  1420,   103,    89,   109,   106,   246,
    3002      589,   426,    42,    43,     0,     0,   595,   123,  1040,   124,
    3003      177,   622,    37,   177,   142,   177,   142,   251,   252,   111,
    3004      122,  1424,   115,     0,     1,   636,   154,    27,   154,   621,
    3005      622,    65,    37,    80,    81,    31,    31,     4,     5,     6,
    3006        7,     8,     9,    37,   636,   479,   101,   102,    57,   177,
    3007      178,   195,   178,    37,    31,   101,   483,   103,  1484,  1440,
    3008       75,    67,   391,   477,   192,    71,   106,    63,    74,  1047,
    3009       76,    71,   326,   201,   501,   201,   101,    83,   103,    52,
    3010      101,   209,    65,   177,   212,   387,   212,    65,   255,    66,
    3011      124,   255,   101,   255,   101,    62,   387,    64,   103,    42,
    3012       43,   209,   722,   714,   722,  1508,   722,   101,   212,   103,
    3013     1513,   242,   654,   241,   177,   241,  1513,   101,   177,   103,
    3014      103,    94,   714,   113,   114,   103,  1529,   255,   256,   103,
    3015      256,   696,   106,  1536,   262,   437,   377,   241,   565,  1536,
    3016      794,   269,  1240,    37,   815,    65,   437,    67,    75,    42,
    3017       43,   282,   399,    65,   262,    67,   590,   124,   826,    37,
    3018      594,   269,   241,   106,   405,   989,   241,   469,   826,   410,
    3019      815,   418,   104,   815,   241,   102,   108,   241,   469,   426,
    3020       65,   615,   246,   103,   108,   619,   233,  1290,  1291,   317,
    3021      219,   317,    65,  1291,   106,   815,   101,   815,   204,   815,
    3022      124,   123,   330,   331,  1304,   815,  1253,   101,   237,   103,
    3023      617,    65,   185,    67,   107,   106,   212,   471,   103,   347,
    3024      108,   108,   330,   351,    65,  1056,    67,    68,   817,    89,
    3025      103,     0,     1,     3,   207,   209,    78,   124,     3,   347,
    3026      283,  1219,   667,   351,   217,   241,   241,   101,   790,   377,
    3027     1219,   246,   106,   108,   908,   115,   670,   907,   800,   387,
    3028      101,   387,    31,   105,   241,   106,    65,    65,    67,    67,
    3029      941,     0,   907,   102,   816,    44,   471,   405,   907,   102,
    3030      109,   104,   410,     0,   942,   108,   102,   907,   262,   907,
    3031      270,   907,   108,   999,    63,   269,   941,    66,   101,   941,
    3032      123,   124,   101,   108,   108,   677,  1513,   106,   106,   437,
    3033      283,   102,    65,  1416,    67,   362,    69,   108,  1416,   124,
    3034      124,   575,  1529,    76,    77,   456,  1304,   699,   334,  1536,
    3035      336,   102,    65,   461,    67,   399,   332,   123,   109,   108,
    3036      103,   469,   105,   469,   113,   473,   109,   473,   101,   477,
    3037      103,   101,   606,   631,   418,   101,   109,   611,   111,   736,
    3038      985,  1461,   426,   108,   407,   408,   108,   583,  1468,   473,
    3039      501,   101,   141,   347,  1406,  1407,   678,   351,   676,   124,
    3040      108,   676,   124,   108,   676,   154,   517,   678,  1128,   520,
    3041      676,   522,   676,   676,   473,   442,   124,   638,   473,   124,
    3042      447,   104,   920,   108,   399,   108,   640,   471,   676,   473,
    3043      928,  1511,   826,   121,   848,   123,   422,  1028,   950,   124,
    3044      667,   675,   108,   418,  1013,  1014,   621,   622,   101,   952,
    3045      108,   426,   201,   480,  1088,   482,  1028,   101,   124,   570,
    3046       65,   636,    67,   212,    69,   108,   124,  1105,    81,    82,
    3047      423,    76,    77,   496,   972,   583,   499,   101,   586,   502,
    3048      588,   124,   231,   111,   711,  1487,   462,   102,   116,   117,
    3049      104,  1493,   241,  1304,   108,   583,   101,   473,   473,   607,
    3050      675,  1023,  1024,  1461,   253,   458,   111,   101,  1510,   103,
    3051     1468,   102,   261,  1515,   748,   623,   473,   111,   573,   607,
    3052        4,     5,     6,     7,     8,     9,   637,   635,   639,   102,
    3053      638,   554,   102,   947,   283,   623,   109,   286,   108,   714,
    3054      108,   108,   101,   496,   103,    44,   499,   635,    32,   502,
    3055      123,   104,   946,  1511,   863,   108,   124,   124,  1080,  1081,
    3056      102,    60,   670,   102,    63,  1156,  1157,    66,   676,   108,
    3057      678,  1382,   101,   748,   103,   884,   102,   326,    62,   101,
    3058       64,   103,   111,   332,  1156,  1157,   102,     4,     5,     6,
    3059        7,     8,     9,    65,   102,    67,   102,    69,   709,   101,
    3060      627,   101,   108,   103,    76,    77,    83,    84,   101,     1,
    3061      997,   111,   870,   104,   722,   723,   812,   108,   103,   496,
    3062      105,   102,   499,   667,   109,   502,     3,   108,   736,   101,
    3063      101,   675,   608,    10,    11,    12,    13,    14,   920,   111,
    3064      107,   118,   119,   142,    44,    62,   928,    64,   736,   920,
    3065       85,    86,    44,   607,  1465,   154,  1467,   928,   407,   408,
    3066       37,   857,   102,   412,   691,   108,   109,   711,   108,   623,
    3067      697,    10,    11,    12,    13,    14,    65,   124,    67,   178,
    3068       69,   635,    57,    60,   433,   434,   435,    76,    77,   438,
    3069     1231,   102,   667,   102,  1088,   444,   101,   108,    37,   108,
    3070      653,  1512,   201,   102,   748,   124,   102,   815,   108,   108,
    3071      102,   664,   108,   212,   102,   668,   108,   677,   826,   102,
    3072      108,    60,   471,   102,   473,   108,   702,  1230,   101,   108,
    3073      103,    65,   102,   101,   483,    69,   711,   101,   108,   699,
    3074      716,   141,    76,    77,   101,  1267,   103,   496,   102,   141,
    3075      499,   806,   501,   502,   108,    44,  1278,  1279,  1280,    65,
    3076      101,  1148,  1517,    69,   106,   999,   877,   101,  1155,  1121,
    3077       76,    77,   102,  1517,  1517,    54,    55,   111,   108,   101,
    3078     1325,   103,   736,   979,  1042,  1326,    10,    11,    12,    13,
    3079       14,   106,   102,   877,   902,   101,   124,   103,   108,   907,
    3080      908,   201,   102,   124,   196,   111,  1328,    65,   108,   201,
    3081      106,   102,   920,    37,   902,   101,   565,   108,   317,   108,
    3082      928,    65,   877,    67,    68,    69,   575,   787,   804,   578,
    3083      101,   102,   103,   877,  1186,  1187,    60,    75,   946,   231,
    3084      102,   103,  1229,   870,    65,   112,   901,   951,    69,   876,
    3085     1395,  1026,   141,  1028,   120,    76,    77,   606,   101,   102,
    3086      103,   261,   611,   543,   544,   545,   546,   951,   101,   261,
    3087      103,   982,   264,   101,   985,   103,   987,   101,    87,   103,
    3088      101,   121,   103,   283,    42,    43,   286,   111,   387,   997,
    3089      111,   283,  1113,  1017,   286,  1436,  1092,   123,   101,    65,
    3090      103,   877,   877,    69,   103,   101,   866,   103,   102,   997,
    3091       76,    77,   201,   681,     3,   683,  1150,   101,   102,   103,
    3092      877,    10,    11,    12,    13,    14,   675,   104,  1473,  1040,
    3093      102,  1127,   102,  1474,   326,   101,   101,   102,   103,  1050,
    3094     1327,   102,  1053,  1054,  1055,   111,   973,   696,    37,   108,
    3095      109,   904,   539,   540,   346,   102,  1501,    65,   350,    67,
    3096       68,    69,   102,  1047,    78,    79,    80,   716,    76,    77,
    3097      101,    60,   261,   103,    65,  1150,    67,    68,    69,   108,
    3098     1088,  1156,  1157,   541,   542,    76,    77,   101,   123,   103,
    3099      106,   105,  1047,   101,   951,   547,   548,   286,  1496,   748,
    3100      101,   877,   102,  1047,   102,  1113,  1240,   407,   408,   104,
    3101      101,   104,   412,   109,   104,   407,   408,  1259,  1260,  1261,
    3102      412,   109,  1525,   108,    28,    75,  1002,   102,   102,   989,
    3103      108,   104,   108,   433,   434,   107,  1091,   326,   109,   102,
    3104     1538,   433,   434,   435,   101,   107,   438,   107,   102,  1076,
    3105       75,   102,   444,   102,    65,   804,    67,    68,    69,   124,
    3106      102,   109,  1089,  1090,   456,    76,    77,   102,  1420,   102,
    3107      104,  1047,  1047,   102,   102,   102,   108,   101,   104,   101,
    3108       28,   102,   102,   483,  1044,   102,   102,   102,   102,   481,
    3109     1047,   483,   102,   485,  1198,   102,   496,   102,   104,   499,
    3110      123,   501,   502,   104,   496,  1058,  1150,   499,  1219,   501,
    3111      502,   107,   102,  1197,  1198,  1290,   102,   104,   407,   408,
    3112      102,  1229,   102,   412,   102,   108,   453,   102,   877,   102,
    3113      107,  1483,  1484,   104,   104,  1219,   102,   102,   101,   108,
    3114     1244,  1229,   106,   104,   433,   434,   108,     3,  1259,  1260,
    3115     1261,   108,   104,   104,    10,    11,    12,    13,    14,   102,
    3116     1244,  1121,   104,   102,  1219,   565,  1193,   108,   108,   102,
    3117      104,   101,   101,   565,  1050,  1219,  1199,  1200,  1399,  1202,
    3118      101,    37,   101,   575,   101,  1208,   109,   124,  1211,   107,
    3119      102,   583,   102,  1389,   483,   104,  1240,   102,   106,   121,
    3120      107,   102,   951,   952,    60,   108,   104,  1318,   124,   108,
    3121      104,   102,   501,   102,   606,  1299,   104,   104,   104,   611,
    3122     1304,  1197,   104,   102,   104,   617,  1186,  1187,   104,    45,
    3123      107,   124,   124,   106,   124,  1339,  1518,   104,   102,  1517,
    3124      124,  1198,  1517,  1219,  1219,  1517,   124,  1518,   107,  1304,
    3125      999,  1517,   102,  1517,  1517,  1339,  1538,   104,   107,   104,
    3126     1304,   104,  1219,   104,   104,  1376,   104,  1538,  1379,  1517,
    3127      104,   104,   102,   102,    55,  1496,   565,   104,   104,   101,
    3128      101,  1389,    54,   102,   104,   102,   575,  1244,   106,   124,
    3129     1398,  1399,    75,   102,   109,  1406,  1407,   102,  1047,   102,
    3130      104,  1389,   104,   104,   696,   102,   101,    89,   107,    40,
    3131     1398,   104,   102,  1424,   102,   102,   102,   606,  1429,   108,
    3132       89,    75,   611,  1299,   109,   102,   124,   654,  1304,  1304,
    3133        0,   106,   124,   124,   726,   102,  1440,   102,   109,   107,
    3134      124,   104,   104,  1219,  1455,   124,   101,  1304,     0,     1,
    3135      107,   107,   102,   102,   124,  1378,  1440,   650,   549,  1312,
    3136      550,    31,   551,  1219,   552,  1129,  1393,   553,  1484,  1384,
    3137     1517,  1313,    42,  1517,    44,  1517,  1546,  1461,  1499,    31,
    3138       32,  1123,  1339,    65,  1468,    67,  1497,    69,  1496,  1124,
    3139       60,  1468,    44,    63,    76,    77,    66,  1508,  1076,   435,
    3140      928,  1150,  1513,   683,   435,   930,  1461,   447,   570,  1517,
    3141     1518,   973,  1518,  1468,    66,   870,  1527,  1461,  1529,   101,
    3142      812,   103,  1533,   726,  1468,  1536,   632,  1511,   948,   111,
    3143     1538,  1542,  1538,  1244,   473,  1546,    -1,   736,    -1,    -1,
    3144       -1,    65,  1318,    67,  1398,    69,    -1,    -1,  1197,  1198,
    3145      102,    -1,    76,    77,    -1,    -1,  1511,    -1,    -1,    -1,
    3146     1420,    -1,    -1,   790,    -1,   857,    -1,  1511,    -1,    -1,
    3147     1219,    -1,   142,   800,    -1,    -1,    -1,   101,    -1,   103,
    3148       -1,  1230,  1231,  1440,   154,  1461,  1461,   111,    -1,   816,
    3149      142,  1240,  1468,  1468,    -1,  1244,    -1,    -1,   150,    -1,
    3150     1376,    -1,    -1,  1379,  1461,    -1,    -1,   177,   178,    -1,
    3151       -1,  1468,    -1,    -1,    -1,    -1,  1469,    -1,    -1,    -1,
    3152       -1,    -1,    -1,  1483,  1484,    -1,   178,    -1,    -1,    -1,
    3153       63,   201,    -1,    -1,    -1,  1511,  1511,    -1,    -1,    -1,
    3154      192,    -1,   212,   195,   196,  1498,    -1,    -1,  1424,   201,
    3155     1299,    -1,   952,  1429,  1511,  1304,    -1,    -1,   950,   951,
    3156      952,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   221,
    3157       -1,   241,    -1,   225,    -1,   227,  1325,  1326,    -1,  1455,
    3158      113,    -1,    -1,   235,  1537,   255,    -1,   979,    -1,   241,
    3159     1339,    -1,    -1,    -1,   246,   453,  1549,    65,    -1,    67,
    3160       -1,    69,    -1,    -1,   256,   997,    -1,   999,    76,    77,
    3161       -1,   272,   264,    -1,    10,    11,    12,    13,    14,    -1,
    3162       -1,   154,    -1,    -1,   285,   286,    -1,    -1,    -1,    -1,
    3163       -1,    -1,    -1,   101,    -1,   103,   297,    -1,    -1,    -1,
    3164       -1,    37,     0,   111,    -1,    -1,  1395,   317,    -1,    -1,
    3165       -1,  1527,    -1,    -1,    -1,    -1,    -1,  1533,    -1,    -1,
    3166       -1,   331,    -1,   952,    60,   326,  1542,    -1,    -1,    -1,
    3167     1546,    -1,    -1,    31,   326,    -1,    -1,    -1,    -1,   212,
    3168       -1,   333,    10,    11,    12,    13,    14,  1436,    -1,    -1,
    3169       -1,  1440,    -1,    -1,   346,    -1,  1023,  1024,   350,    -1,
    3170     1092,   353,   363,    -1,    -1,   101,    -1,   103,    66,    37,
    3171      999,   181,  1461,    -1,    -1,   111,   249,   387,   188,  1468,
    3172      253,  1470,    -1,    -1,  1473,  1474,    -1,    -1,    -1,    -1,
    3173       -1,    -1,    60,    -1,    -1,  1127,    -1,    65,    -1,    67,
    3174       -1,    69,    -1,    -1,    -1,    -1,    -1,   399,    76,    77,
    3175     1499,    -1,  1501,  1080,  1081,    -1,  1148,    -1,    63,    -1,
    3176       -1,   413,  1511,  1155,    -1,    -1,   418,   437,    73,    -1,
    3177       -1,    -1,    -1,   101,   426,   103,  1525,    -1,    -1,    -1,
    3178       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,   258,    -1,
    3179       -1,    -1,   150,    -1,    -1,    -1,   654,    -1,    -1,   332,
    3180       -1,   453,    -1,   473,   456,    -1,    -1,   477,   113,    10,
    3181       11,    12,    13,    14,    10,    11,    12,    13,    14,   471,
    3182       -1,   473,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   481,
    3183     1230,    -1,    -1,   485,    -1,    -1,    37,  1229,  1230,  1231,
    3184       -1,    37,   312,    -1,    -1,    -1,    -1,    -1,    -1,   154,
    3185      320,    -1,  1244,   323,    -1,    -1,    -1,    -1,    -1,    60,
    3186       -1,   513,    -1,   221,    60,    -1,    -1,    -1,    -1,    65,
    3187       -1,    67,    -1,    69,    -1,   536,   537,   538,   411,    -1,
    3188       76,    77,    -1,   241,    -1,    -1,    -1,    -1,   246,    -1,
     2976       1,    42,     0,    32,     0,    42,    42,   412,   112,     1,
     2977       0,     1,   674,   346,     0,   178,   211,   350,   178,   270,
     2978     674,   178,   519,   178,   875,   674,   178,   178,   433,   178,
     2979     605,   443,   557,    31,  1024,    31,   163,   331,   587,   629,
     2980     269,    31,   587,   875,    42,    31,    44,   180,    44,     0,
     2981     436,   735,   102,   753,   585,     0,    54,   179,   179,    31,
     2982     433,   437,    60,   621,    60,    63,     0,    63,    66,   984,
     2983      66,   556,   556,    63,    66,   470,    66,   635,   326,   556,
     2984      31,   585,   585,   977,    42,   283,    31,   103,   750,   193,
     2985     106,  1336,   255,    42,   399,   255,   750,    31,   255,   585,
     2986     255,   750,    65,   255,   255,   103,   255,   480,   106,   699,
     2987     585,   484,    63,   418,   112,  1044,  1421,    65,   251,   252,
     2988      75,   426,  1037,   509,    37,     0,     1,   588,   101,    52,
     2989      27,    37,    42,   594,   256,   256,   246,   178,  1417,   585,
     2990      65,   178,   178,    42,    43,   143,    67,   143,   111,   123,
     2991      71,    89,    78,    74,   712,    76,    31,   155,   585,   155,
     2992     620,   621,    83,   407,   408,    65,    37,   196,  1023,  1024,
     2993     101,    94,    42,    43,    71,   635,   124,   115,    65,   105,
     2994     178,   179,   476,   179,     4,     5,     6,     7,     8,     9,
     2995     103,    66,  1437,  1044,   210,   193,   391,    42,    43,   124,
     2996    1505,    65,  1481,   103,   202,  1510,   202,    89,   107,   407,
     2997     408,    65,   210,    44,   255,   213,   103,   213,   255,   255,
     2998     178,  1526,   470,   213,   102,   620,   621,  1510,  1533,   178,
     2999     101,   109,   103,   115,   720,   101,   106,   478,   482,   103,
     3000     635,   242,    62,   241,    64,   241,   262,  1237,    57,   103,
     3001    1533,   241,   712,   269,    88,   241,   500,   255,   256,    37,
     3002     256,   106,   213,   186,   262,   387,   387,   792,   178,   241,
     3003      44,   269,   101,   377,   720,   824,   104,   108,   673,   824,
     3004     108,   282,   813,   616,   205,   208,   986,   270,   122,   399,
     3005     241,   106,   101,   720,   123,   218,   241,   495,  1288,     0,
     3006     498,   405,   108,   501,   124,   220,   410,   241,   418,   813,
     3007     813,   142,   246,     3,   436,   436,   426,   712,   694,   317,
     3008     564,   317,   237,   101,     3,   103,   574,   813,    37,    37,
     3009      31,   347,   330,   331,   108,   351,   108,    37,   813,     0,
     3010       1,    65,   108,    67,    68,   101,   468,   468,   589,   347,
     3011       0,   746,   593,   351,   815,   553,  1250,   605,   124,   108,
     3012     283,   666,   610,    83,    84,  1216,   241,   813,   142,  1053,
     3013      31,   202,  1301,   614,   668,   124,   121,   618,   123,   377,
     3014     905,   332,   106,    44,  1216,    65,   813,    67,    68,   387,
     3015     939,   387,   101,   101,   103,   103,     0,   102,   118,   119,
     3016     102,   101,    63,   103,   109,    66,   108,   405,  1484,   679,
     3017     102,   681,   410,   334,  1490,   336,   875,   109,   904,   904,
     3018     904,   996,    75,  1413,   675,   673,   106,   904,   202,   123,
     3019     261,  1507,  1287,  1288,   938,   938,  1512,    65,   436,    67,
     3020      68,    10,    11,    12,    13,    14,   697,   108,  1510,   102,
     3021    1301,   107,   113,   108,   455,   286,   104,   108,   904,   102,
     3022     108,   101,   460,   938,  1526,   399,   109,  1025,    37,   124,
     3023     468,  1533,   468,   124,   472,   103,   472,   904,   476,   104,
     3024     123,   142,   472,   108,   418,   982,   472,   261,  1403,  1404,
     3025     495,    60,   426,   498,   155,   326,   501,   108,   746,   500,
     3026     423,   422,   101,   630,   103,   734,   639,   101,   108,   283,
     3027     461,   674,   286,   124,   674,   516,   101,   674,   519,   674,
     3028     521,   472,   674,   674,   124,   674,   108,   472,   101,  1458,
     3029     824,   917,   582,   637,   457,  1125,  1465,   101,   472,   925,
     3030     241,   202,   124,   108,   949,   246,    78,    79,    80,  1010,
     3031    1011,   108,   213,  1102,   676,   676,   666,   111,  1413,   124,
     3032    1085,   101,   116,   117,   101,  1025,   108,   124,   569,   101,
     3033     231,   103,   495,   105,   947,   498,   407,   408,   501,  1508,
     3034     241,   412,   124,   969,   582,   108,   102,   585,  1047,   587,
     3035     606,   101,   253,   103,   108,  1153,  1154,   472,     1,   709,
     3036     261,   124,   433,   108,   102,   846,   622,  1458,   606,    65,
     3037     124,    67,   102,    69,  1465,   102,   108,  1301,   634,   124,
     3038      76,    77,   283,   102,   622,   286,   102,   572,  1023,   108,
     3039    1025,    44,   124,   407,   408,   636,   634,   638,   412,   637,
     3040     102,    44,   102,   102,   104,   101,   108,    60,   108,   943,
     3041      63,   482,   101,    66,   103,   111,   607,  1508,   101,   433,
     3042     103,   994,   111,   123,   124,   326,   861,   101,   111,   500,
     3043     668,   332,   101,    65,   102,    67,   674,    69,   676,    65,
     3044     108,    67,    68,   102,    76,    77,   101,   882,   103,   108,
     3045      57,   102,   675,  1153,  1154,  1379,   111,   108,   399,   102,
     3046     104,   653,   101,   944,   108,   108,   707,   102,   482,   101,
     3047     103,   103,   105,   108,   697,   101,   109,   418,   734,   111,
     3048     106,   495,   720,   721,   498,   426,   500,   501,   102,   652,
     3049     143,   102,   666,   564,   108,   124,   734,   108,   101,   142,
     3050     663,   868,   155,   574,   667,   101,   407,   408,   996,   700,
     3051     104,   412,  1147,   106,   108,   102,    29,  1216,  1153,  1154,
     3052     810,   108,   101,   714,   102,    65,   179,    67,    68,   470,
     3053     108,   472,   433,   434,   605,   709,   437,   106,  1462,   610,
     3054    1464,   124,   443,     4,     5,     6,     7,     8,     9,   202,
     3055     564,  1085,   102,   124,   197,   917,   917,   124,   108,   202,
     3056     213,   101,   785,   925,   925,   855,   106,    80,    81,   470,
     3057     106,   472,  1145,   101,   102,   813,  1228,    65,   103,  1152,
     3058     105,   482,  1227,   102,   109,  1509,   824,   102,   231,   108,
     3059     113,   114,   102,   108,   495,   101,   788,   498,   108,   500,
     3060     501,    62,   102,    64,   102,    75,   798,   102,   108,   102,
     3061     108,   802,  1514,   108,   121,   108,  1315,   120,   261,   804,
     3062    1514,   264,   814,   112,   101,  1514,   103,  1118,    10,    11,
     3063      12,    13,    14,    65,   875,    67,    68,    69,    85,    86,
     3064     283,   864,    87,   286,    65,   875,    67,    68,   542,   543,
     3065     544,   545,  1287,  1226,    65,    37,    67,    68,   101,  1147,
     3066     103,   123,   900,   564,   317,   103,   904,   905,   101,   102,
     3067     103,  1323,  1039,   574,  1373,   104,   577,  1376,    60,   917,
     3068     101,   101,   452,   326,   875,   106,   976,   925,   102,   101,
     3069     875,   103,  1183,  1184,    81,    82,    10,    11,    12,    13,
     3070      14,   875,   102,   346,   605,   943,  1322,   350,   102,   610,
     3071     101,   102,   103,   101,   899,   103,   948,   102,   948,   101,
     3072     233,   103,  1421,    37,    65,   666,    67,  1426,    69,   111,
     3073     102,   101,   673,   103,   387,    76,    77,   102,   979,   902,
     3074     101,   982,   103,   984,   103,  1014,    60,   123,   101,  1237,
     3075     103,  1324,   108,  1452,   108,   109,   994,   106,  1196,  1197,
     3076     875,  1199,   101,   986,   407,   408,  1110,  1205,   709,   412,
     3077    1208,    65,   673,    67,   102,    69,  1392,   101,   102,   103,
     3078     102,  1433,    76,    77,   101,   102,   103,   101,   104,   103,
     3079     433,   434,   104,   694,   437,   104,  1037,   111,   109,  1089,
     3080     443,  1256,  1257,  1258,   109,   746,  1047,   101,   999,  1050,
     3081    1051,  1052,   455,   714,  1044,   102,   103,   111,  1041,  1471,
     3082      54,    55,   108,   109,   108,  1524,    42,    43,  1020,  1021,
     3083      28,  1530,    75,   948,  1124,   538,   539,   480,   102,   482,
     3084    1539,   484,   540,   541,  1543,   746,   102,  1085,   108,   362,
     3085     104,   108,   495,  1044,  1470,   498,   109,   500,   501,  1044,
     3086     546,   547,    65,   107,   452,   102,    69,  1493,   107,   107,
     3087    1044,   101,  1110,    76,    77,   102,   124,  1522,   949,    75,
     3088     102,   102,  1498,   653,   109,  1077,  1078,   102,   102,   102,
     3089     108,   101,  1055,   104,   102,  1118,   102,   102,   101,    28,
     3090     103,   802,   104,  1088,   101,   104,   107,   102,   111,  1535,
     3091     102,   102,     4,     5,     6,     7,     8,     9,   102,   102,
     3092     102,   564,   102,   102,   102,   996,  1417,   104,   441,  1044,
     3093     123,   574,   102,   446,   875,   949,   102,  1375,   102,   582,
     3094      32,   104,    10,    11,    12,    13,    14,     3,   102,   102,
     3095     107,   102,   108,   102,    10,    11,    12,    13,    14,   104,
     3096    1183,  1184,   605,  1195,  1194,  1195,   479,   610,   481,    37,
     3097      62,   104,    64,   616,   875,  1216,   102,   108,   102,   101,
     3098     108,    37,   109,   106,   104,   104,  1216,   108,  1226,  1480,
     3099    1481,   104,    60,   102,    65,   102,    67,    68,    69,   104,
     3100     108,   102,   108,  1194,    60,    76,    77,   272,   104,  1241,
     3101     101,  1241,   101,   101,   101,  1256,  1257,  1258,   788,   101,
     3102     285,   286,   124,   107,   102,  1216,   102,   104,   798,     3,
     3103     101,  1216,   297,   101,   107,   103,    10,    11,    12,    13,
     3104      14,   102,  1216,   111,   814,   124,   121,   948,   949,   106,
     3105     108,   694,  1396,   104,   108,   104,    65,   102,    67,   102,
     3106      69,   326,   104,    37,   104,   653,  1296,    76,    77,   104,
     3107     102,  1301,  1264,   104,  1315,   102,   104,    45,   104,   102,
     3108    1195,   724,   106,  1275,  1276,  1277,    60,   124,   124,   107,
     3109     124,   124,   101,   104,   103,   996,  1386,   107,   363,   124,
     3110     109,  1216,   111,  1044,  1336,  1296,  1336,   102,   104,   107,
     3111    1301,  1514,   104,   626,  1514,   104,  1301,  1514,   104,  1514,
     3112     104,   104,  1514,  1514,   104,  1514,  1241,  1301,   104,   102,
     3113     102,    55,  1373,  1325,   104,  1376,   101,   104,   101,  1395,
     3114      54,   102,   104,  1044,   102,   124,  1309,   106,  1386,  1493,
     3115      75,   102,   109,  1515,  1515,   102,  1227,  1395,  1396,   104,
     3116     104,     3,  1403,  1404,   102,   104,   102,   810,    10,    11,
     3117      12,    13,    14,  1535,  1535,   101,   689,    89,   107,    65,
     3118    1421,    67,   695,    69,   104,  1426,  1301,   102,     0,     1,
     3119      76,    77,   102,   102,  1417,    37,   102,   108,   102,     0,
     3120     788,    40,   109,   124,    89,  1437,  1147,  1437,   124,   106,
     3121     798,  1452,   855,  1227,   102,   101,   124,   103,    60,    31,
     3122      32,  1336,    75,   124,   102,   111,   814,   109,  1458,   104,
     3123      31,   107,    44,  1514,   104,  1465,   101,  1514,  1514,   107,
     3124     124,    42,   102,    44,   107,   124,  1147,   102,   649,   548,
     3125    1020,  1021,   549,  1494,    66,  1493,   551,  1480,  1481,    60,
     3126     550,   552,    63,  1126,  1505,    66,  1216,  1458,  1381,  1510,
     3127     535,   536,   537,  1458,  1465,  1216,  1514,  1515,  1508,  1515,
     3128    1465,  1481,  1543,  1524,  1458,  1526,  1310,  1496,  1120,  1530,
     3129     102,  1465,  1533,  1194,  1195,  1121,  1237,  1535,  1539,  1535,
     3130    1073,  1465,  1543,  1466,   947,   948,   949,  1077,  1078,   574,
     3131     925,   446,   681,   970,   927,  1216,   434,  1508,   434,   569,
     3132     868,   631,  1437,  1508,   945,   724,  1227,  1228,  1241,   472,
     3133     734,   143,  1495,   976,  1508,    -1,  1237,    -1,    -1,   151,
     3134    1241,    -1,   143,  1458,    -1,    -1,    -1,    -1,    -1,    -1,
     3135    1465,   994,    65,   996,   155,   868,    69,    -1,    -1,    -1,
     3136    1301,   874,    -1,    76,    77,    -1,    -1,   179,    -1,    -1,
     3137      -1,  1534,    -1,    -1,    -1,    -1,    -1,   178,   179,    -1,
     3138      -1,   193,    -1,  1546,   196,   197,    -1,    -1,   101,    -1,
     3139     202,    -1,    65,  1508,    67,  1296,    69,    -1,   111,    -1,
     3140    1301,   202,    -1,    76,    77,    -1,    -1,    -1,    -1,    54,
     3141     222,    -1,   213,    -1,   226,    65,   228,    67,    68,    69,
     3142      -1,  1322,  1323,   235,    -1,    -1,    76,    77,   101,   241,
     3143     103,    -1,  1020,  1021,   246,  1336,    -1,    65,   111,    -1,
     3144     241,    69,    -1,    -1,   256,   710,  1089,    -1,    76,    77,
     3145      -1,  1522,   264,  1467,   255,    -1,    -1,   970,   103,    -1,
     3146      -1,   106,    -1,    -1,    -1,  1235,    -1,    65,    -1,    -1,
     3147      -1,    69,    -1,   101,    -1,   103,    -1,    -1,    76,    77,
     3148      -1,  1124,  1496,   111,    -1,    -1,    -1,    -1,   753,  1077,
     3149    1078,  1392,    -1,    -1,  1264,    -1,    -1,    -1,    -1,    -1,
     3150      63,    -1,  1145,   101,    -1,  1275,  1276,  1277,  1522,  1152,
     3151      -1,    -1,     0,   111,   326,    -1,   317,  1458,    -1,    -1,
     3152      -1,   333,    -1,    -1,  1465,    -1,    -1,    -1,    -1,    -1,
     3153     331,    -1,  1433,    -1,   346,    -1,  1437,    -1,   350,    -1,
     3154      -1,   353,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,
     3155     113,    -1,    -1,    -1,    -1,  1325,    -1,  1458,    -1,    -1,
     3156    1073,    -1,    -1,    -1,  1465,   210,  1467,  1508,    -1,  1470,
     3157    1471,    -1,    -1,  1086,  1087,    -1,    -1,    -1,    66,    -1,
     3158      -1,    -1,    -1,  1226,  1227,  1228,   387,   399,    -1,    -1,
     3159      -1,    -1,   155,    -1,    -1,  1496,    -1,  1498,  1241,    -1,
     3160      65,   413,    67,    68,    69,    -1,   418,  1508,    -1,    -1,
     3161      -1,    76,    77,    -1,   426,    -1,    -1,   262,    -1,    -1,
     3162      -1,  1522,    -1,    -1,   269,   890,    -1,    -1,    -1,    -1,
     3163      -1,    -1,    63,    -1,    -1,   436,   101,    -1,    -1,    -1,
     3164     452,    -1,    73,   455,    -1,    -1,    -1,  1235,    -1,    -1,
     3165     213,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   470,    -1,
     3166     472,    -1,    -1,   151,    -1,    -1,    -1,    -1,   480,    -1,
     3167      -1,   472,   484,    -1,    -1,   476,  1264,  1190,    -1,  1322,
     3168    1323,  1324,   113,    -1,    -1,   330,   249,  1275,  1276,  1277,
     3169     253,    -1,    -1,  1336,    -1,    -1,    -1,    -1,    -1,    -1,
     3170     512,    -1,   347,    -1,    -1,    -1,   351,    90,    91,    92,
     3171      93,    94,    95,    96,    97,    98,    99,    -1,    -1,    -1,
     3172      -1,    -1,    -1,    -1,   155,    -1,    -1,    -1,    -1,    -1,
     3173      -1,   996,    -1,    -1,   222,    -1,    -1,  1325,    -1,    -1,
     3174     123,    -1,    -1,  1386,    -1,   557,    -1,    -1,    -1,  1392,
     3175      -1,    -1,    -1,   241,    -1,    -1,    -1,    -1,   246,    -1,
     3176     572,    -1,   574,    -1,    -1,    -1,    -1,    -1,    -1,   332,
     3177     582,    -1,    -1,    -1,    -1,   587,    -1,    -1,    -1,  1044,
     3178      -1,     0,   213,    -1,   585,    -1,   587,    -1,    -1,    -1,
     3179    1433,    -1,    -1,   605,  1437,    -1,    -1,    -1,   610,    -1,
     3180      -1,    -1,    -1,    -1,   616,    -1,    -1,    -1,   620,   621,
     3181      -1,    -1,    31,    -1,    -1,    -1,    -1,    -1,   249,    -1,
     3182      -1,    -1,   253,   635,  1467,    -1,    -1,  1470,  1471,    -1,
     3183      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   269,    -1,
     3184      -1,   653,    -1,    -1,    -1,   333,    -1,    66,   411,    -1,
     3185      -1,    -1,    -1,  1496,   666,  1498,    -1,    -1,    -1,    -1,
     3186      -1,   673,    -1,    -1,   676,   353,    -1,   668,    -1,   182,
     3187      -1,    -1,    -1,   674,    -1,   676,   189,  1390,    -1,  1522,
    31893188      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3190      101,    -1,   103,    -1,    -1,   101,   558,   212,    -1,   379,
    3191      111,  1238,    -1,   383,   575,   111,   586,    -1,   588,    -1,
    3192       -1,   573,    -1,   575,    -1,    -1,    -1,    -1,    -1,   462,
    3193       -1,   583,   790,  1325,  1326,  1327,   588,    -1,    -1,    -1,
    3194     1267,  1230,   800,    -1,   249,    -1,    -1,  1339,   253,    -1,
    3195       -1,  1278,  1279,  1280,   606,    -1,    -1,    -1,   816,   611,
    3196       -1,    -1,    -1,    -1,   269,   617,    -1,    -1,    -1,   621,
    3197      622,    -1,    -1,    -1,    -1,   333,    -1,    -1,    -1,    -1,
    3198       -1,    -1,    -1,    -1,   636,    90,    91,    92,    93,    94,
    3199       95,    96,    97,    98,    99,   353,    -1,  1389,   468,    -1,
    3200      670,  1328,   654,  1395,    -1,    -1,   676,    -1,   678,    -1,
    3201       -1,    -1,    -1,    -1,    -1,   667,    -1,    -1,   123,    -1,
    3202       -1,    -1,    -1,   675,    -1,    -1,   678,   332,    -1,    -1,
    3203       -1,    -1,    -1,    25,    26,    27,     0,    -1,    -1,    -1,
    3204       -1,   399,    -1,    -1,  1436,   578,    -1,    -1,  1440,    -1,
    3205       -1,   712,   722,   723,    -1,   413,    -1,    -1,    -1,   711,
    3206      418,    -1,   714,    -1,    -1,    -1,    -1,    31,   426,    -1,
    3207     1470,   723,    -1,    -1,   726,   608,    -1,    -1,  1470,    -1,
    3208      613,  1473,  1474,    -1,    -1,    -1,    -1,   557,   558,    -1,
    3209       -1,    -1,    -1,    -1,   755,   453,   748,    -1,    -1,  1499,
    3210       -1,   753,    66,    95,    -1,    97,   411,  1499,    -1,  1501,
    3211       -1,    -1,    -1,   471,    -1,   473,    -1,    -1,    -1,    -1,
    3212       -1,    -1,    -1,   428,    -1,  1525,    -1,    -1,    -1,    -1,
    3213       -1,    -1,    -1,  1525,    -1,    -1,    -1,    -1,   790,    -1,
    3214       -1,    -1,    -1,    -1,    -1,   815,    -1,    -1,   800,    -1,
    3215       -1,    -1,    -1,   805,   806,   513,   826,   462,    -1,    -1,
    3216      812,    -1,    -1,    -1,   816,  1023,  1024,    -1,    -1,   702,
    3217       -1,   641,    -1,   825,    -1,   645,    -1,    -1,    -1,    -1,
    3218       -1,    -1,   174,   716,    -1,    -1,   150,    -1,    -1,    -1,
    3219       -1,   183,   184,    -1,    -1,    -1,   188,    -1,   190,   191,
    3220      670,    -1,    -1,    -1,    -1,   857,    -1,    -1,    -1,    -1,
    3221       -1,    -1,   682,    -1,    -1,   573,    -1,    -1,    -1,    -1,
    3222       -1,    -1,  1080,  1081,    -1,   877,    -1,    -1,    -1,    -1,
    3223       -1,   892,    -1,    -1,    -1,    -1,  1525,   907,   908,    -1,
    3224       -1,     0,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   901,
    3225      920,    -1,    -1,    -1,    -1,    -1,   908,    -1,   928,    -1,
    3226       -1,    -1,    -1,   621,   622,    -1,    10,    11,    12,    13,
    3227       14,   804,    31,   578,    -1,    -1,   946,   241,   636,    -1,
    3228       -1,    -1,   246,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3229      942,    -1,    -1,    37,    -1,    -1,   654,    -1,   950,   951,
    3230       -1,    -1,    -1,   608,    -1,    -1,    -1,    66,   613,   667,
    3231       -1,    -1,    -1,   965,    -1,    -1,    60,   675,    -1,    -1,
    3232       -1,    65,    -1,    67,   794,    69,    -1,   979,    -1,    -1,
    3233       -1,    -1,    76,    77,    -1,    -1,    -1,    -1,   999,    -1,
    3234       -1,    -1,    -1,    -1,    -1,   997,    -1,   999,    -1,    -1,
    3235       -1,    -1,    -1,   711,    -1,    -1,   714,   101,    -1,   103,
    3236       10,    11,    12,    13,    14,  1017,    -1,   111,    -1,   333,
    3237       -1,  1023,  1024,    -1,  1026,  1027,  1028,    -1,    -1,    -1,
    3238     1238,    -1,    -1,    -1,    -1,    -1,  1047,    37,    -1,   353,
    3239      748,   150,    -1,    -1,    -1,  1047,    -1,   702,    -1,    -1,
    3240       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1267,
    3241       60,   716,    -1,    -1,    -1,    65,    -1,    67,  1088,    69,
    3242     1278,  1279,  1280,    -1,    -1,    -1,    76,    77,  1080,  1081,
    3243       -1,   736,   790,    -1,    -1,   399,    -1,   907,   908,  1091,
    3244     1092,    -1,   800,    -1,    -1,   915,    -1,   805,   806,   413,
    3245       -1,   101,    -1,   103,   418,    -1,    -1,    -1,   816,    -1,
    3246       -1,   111,   426,    10,    11,    12,    13,    14,    -1,  1002,
    3247     1328,    -1,    -1,    -1,    -1,  1127,    -1,    -1,    -1,    -1,
    3248       -1,    -1,   241,    -1,    -1,    -1,    -1,   246,    -1,   453,
    3249       37,    -1,    -1,    -1,    -1,    -1,  1148,    -1,  1150,   804,
    3250       -1,    -1,    -1,  1155,  1156,  1157,    -1,   471,    -1,   473,
    3251     1171,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,   877,
    3252       67,   991,    69,    10,    11,    12,    13,    14,    -1,    76,
    3253       77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3254     1010,    -1,    -1,   901,    -1,    -1,  1198,    -1,    -1,   513,
    3255       37,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
    3256       -1,    -1,    -1,  1215,   111,    -1,    -1,  1219,    -1,   561,
    3257      562,    -1,    -1,    60,   333,    -1,    -1,  1229,    65,    -1,
    3258       -1,    -1,    69,    -1,    -1,    -1,  1238,    -1,  1240,    76,
    3259       77,    -1,  1244,    -1,   353,    -1,    -1,   589,    -1,    -1,
    3260      592,   593,    -1,   595,    -1,   597,   598,   965,    -1,   573,
    3261      602,   603,    -1,    -1,   101,  1267,   103,    -1,  1088,    -1,
    3262       -1,    -1,    -1,  1093,   111,    -1,  1278,  1279,  1280,    -1,
    3263       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1290,  1291,
    3264      399,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3265       -1,    -1,  1304,    -1,   413,    -1,    -1,   621,   622,   418,
    3266       -1,    -1,    -1,    -1,  1197,  1023,  1024,   426,  1026,  1027,
    3267     1028,    -1,   636,    -1,    -1,  1327,  1328,    10,    11,    12,
    3268       13,    14,    -1,    -1,    -1,    -1,    -1,  1339,    -1,  1047,
    3269      654,    -1,    -1,    -1,   453,   687,   688,  1002,    -1,    -1,
    3270       -1,   693,    -1,   667,    37,    -1,    -1,    -1,    -1,    -1,
    3271       -1,   675,   471,    -1,   473,    -1,    -1,    -1,    -1,    -1,
    3272       -1,    -1,  1080,  1081,    -1,    -1,    -1,    60,    -1,    -1,
    3273       -1,    -1,    65,  1091,     0,    -1,    69,  1389,    -1,    -1,
    3274       -1,    -1,    -1,    76,    77,    -1,    -1,   711,    -1,    -1,
    3275      714,    -1,    -1,    -1,   513,    -1,    -1,    -1,    -1,    -1,
    3276       -1,    -1,    -1,    -1,  1416,    31,  1299,    -1,   101,    -1,
    3277       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3278       -1,    -1,    -1,    -1,   748,    -1,    -1,    -1,  1440,    -1,
    3279       -1,    -1,  1150,    -1,    -1,    -1,    -1,    -1,  1156,  1157,
    3280       66,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1461,
    3281       -1,    -1,    -1,    -1,   573,    -1,  1468,    -1,    -1,    -1,
    3282       -1,    -1,    -1,    -1,    -1,    -1,   790,    -1,    -1,    -1,
    3283       -1,    -1,    -1,    -1,    -1,    -1,   800,    -1,    -1,    -1,
    3284     1198,   805,   806,    -1,    -1,    -1,    -1,  1517,    -1,    -1,
    3285       -1,    -1,   816,    -1,    -1,    -1,    -1,  1215,    -1,  1511,
    3286       -1,  1219,   621,   622,    -1,    -1,  1518,    -1,    -1,    -1,
    3287       -1,    -1,    -1,     0,     1,    -1,    -1,   636,    -1,    -1,
    3288     1238,    -1,  1240,    -1,   150,    -1,    -1,    -1,    -1,    -1,
    3289       -1,    -1,  1197,    -1,    -1,   654,    -1,    -1,    -1,    10,
    3290       11,    12,    13,    14,    31,    -1,    -1,    -1,   667,  1267,
    3291       -1,    -1,    -1,   877,    -1,    -1,   675,    -1,    -1,    -1,
    3292     1278,  1279,  1280,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    3293       -1,    -1,  1290,  1291,    -1,    -1,    63,   901,    -1,    66,
    3294       -1,    -1,    -1,    -1,    -1,    -1,  1304,    -1,    -1,    60,
    3295       -1,    -1,   711,    -1,    65,   714,    -1,    -1,    69,    -1,
    3296       -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,
    3297     1328,    -1,    -1,    -1,    -1,   241,    -1,    -1,    -1,    -1,
    3298      246,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   748,
    3299      101,    -1,    -1,    -1,  1299,    -1,    -1,    -1,    -1,    -1,
    3300      111,   965,    -1,    -1,    -1,    -1,    25,    26,    27,    -1,
     3189      -1,    -1,    -1,    -1,    -1,    -1,    -1,   709,   461,    -1,
     3190     712,   332,    -1,  1168,    -1,    -1,    -1,    -1,    -1,   721,
     3191      -1,   399,   724,    -1,    -1,    -1,    -1,    -1,    -1,   720,
     3192     721,    -1,    -1,    -1,    -1,   413,    -1,    -1,    -1,    -1,
     3193     418,    -1,   151,    -1,   746,    -1,    -1,   582,   426,   751,
     3194      -1,    -1,    -1,    -1,    -1,   258,    -1,    -1,    -1,    -1,
    33013195      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3302       -1,    -1,    -1,   150,    -1,    -1,    -1,    -1,    -1,    -1,
    3303       -1,   790,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3304       -1,   800,    -1,    -1,    -1,    -1,   805,   806,    -1,    -1,
    3305       -1,    -1,    -1,    -1,    -1,    -1,    -1,   816,  1416,  1023,
    3306     1024,    -1,  1026,  1027,  1028,    -1,    -1,   333,    -1,    -1,
    3307       -1,    -1,    -1,    -1,    -1,    -1,    95,    -1,    97,    -1,
    3308       -1,    -1,    -1,  1047,    -1,   212,    -1,   353,    -1,    -1,
    3309     1082,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3310       -1,    -1,   121,  1461,    -1,    -1,    -1,    -1,    -1,    -1,
    3311     1468,    -1,    -1,    -1,   241,    -1,  1080,  1081,   877,    -1,
    3312       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1091,    -1,    -1,
    3313       -1,    -1,    -1,   399,    -1,    -1,    -1,    -1,    -1,    -1,
    3314       -1,    -1,   901,    -1,    -1,    -1,    -1,   413,    -1,    -1,
    3315       -1,    -1,   418,  1511,    -1,   174,    -1,    -1,    -1,    -1,
    3316      426,    -1,   181,    -1,   183,   184,    -1,    -1,    -1,   188,
    3317       -1,   190,   191,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3318       -1,    -1,    -1,    -1,    -1,    -1,  1150,   453,    -1,    -1,
    3319       -1,    -1,  1156,  1157,    -1,    -1,    -1,    -1,    -1,    -1,
    3320       -1,    -1,    -1,    -1,    -1,   471,   965,   473,    -1,    -1,
     3196      -1,   606,    -1,    -1,   452,    -1,    10,    11,    12,    13,
     3197      14,    -1,    -1,    -1,    -1,    -1,   788,   622,    -1,    -1,
     3198     411,    -1,   470,    -1,   472,    -1,   798,    -1,    -1,   634,
     3199      -1,   803,   804,    37,    -1,    -1,    -1,   428,   810,   312,
     3200      -1,    -1,   814,    -1,    -1,    -1,    -1,   320,    -1,    -1,
     3201     323,   823,   813,    -1,   577,    -1,    60,    -1,    -1,    -1,
     3202      -1,    65,   241,   824,   512,    69,    -1,   246,    -1,    -1,
     3203     461,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,
     3204      -1,    -1,    -1,   855,   607,    -1,    -1,    -1,    -1,   612,
     3205      -1,    -1,    10,    11,    12,    13,    14,   101,    -1,   103,
     3206      -1,    -1,    -1,   875,    -1,    -1,   379,   111,    -1,    -1,
     3207     383,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
     3208      -1,    -1,    -1,    -1,   572,    -1,    -1,   899,    -1,   734,
     3209      -1,    -1,    -1,   905,    -1,    -1,    -1,    -1,    -1,    -1,
     3210      -1,    -1,    60,   904,   905,    -1,    -1,    65,    -1,    67,
     3211      -1,    69,    -1,    -1,   333,    -1,   917,    -1,    76,    77,
     3212      -1,    -1,    -1,    -1,   925,    -1,    -1,   939,    -1,    -1,
     3213      -1,    -1,   620,   621,   353,   947,   948,   700,    -1,    -1,
     3214      -1,    -1,   943,   101,    -1,   103,   577,   635,    -1,    -1,
     3215     962,   714,    -1,   111,   467,    -1,    -1,    -1,    -1,    -1,
     3216      -1,    -1,    -1,    -1,   976,   653,    -1,    -1,    -1,    -1,
     3217      -1,    -1,    -1,    -1,    -1,    -1,   607,    -1,   666,    -1,
     3218     399,   612,   994,    -1,   996,   673,    -1,    -1,    -1,    -1,
     3219      -1,    -1,    -1,    -1,   413,    -1,    -1,     0,    -1,   418,
     3220      -1,    -1,  1014,    -1,    -1,    -1,    -1,   426,  1020,  1021,
     3221      -1,  1023,  1024,  1025,    -1,    -1,    -1,    -1,    -1,    -1,
     3222      -1,   709,    -1,    -1,   712,    -1,    -1,    -1,    31,    -1,
     3223      -1,    -1,  1044,   452,    -1,    -1,    -1,    -1,    -1,   802,
     3224      -1,    -1,    -1,   556,   557,    -1,    -1,    -1,    -1,    -1,
     3225      -1,   470,    -1,   472,    -1,   900,    -1,    -1,   746,    -1,
     3226      -1,    -1,    -1,    66,    -1,  1077,  1078,    -1,    -1,   700,
     3227      -1,    -1,    -1,    -1,    -1,    -1,  1088,  1089,    -1,    -1,
     3228      -1,    -1,    -1,   714,  1085,    -1,    -1,    -1,    -1,    -1,
     3229      -1,    -1,    -1,   512,    -1,    10,    11,    12,    13,    14,
     3230     788,    -1,    -1,   734,    -1,    -1,    -1,    -1,    -1,    -1,
     3231     798,    -1,  1124,    -1,    -1,   803,   804,    -1,    25,    26,
     3232      27,    -1,    37,    -1,    -1,    -1,   814,   640,    -1,    -1,
     3233      -1,   644,    -1,  1145,    -1,  1147,    -1,    -1,    -1,    -1,
     3234    1152,  1153,  1154,    -1,    -1,    60,    -1,    -1,   151,   994,
     3235      65,    -1,    67,   572,    69,   668,    -1,    -1,    -1,    -1,
     3236      -1,    76,    77,    -1,    -1,    -1,    -1,   680,    -1,    -1,
     3237      -1,   802,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3238      -1,    -1,    -1,  1195,    -1,    -1,   101,   875,    95,    -1,
     3239      97,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3240    1212,   620,   621,    -1,  1216,    -1,    -1,    -1,    -1,    -1,
     3241      -1,   899,    -1,    -1,  1226,    -1,   635,    -1,    -1,    -1,
     3242       0,     1,    -1,  1235,    -1,  1237,    -1,    -1,    -1,  1241,
     3243      -1,    -1,    -1,    -1,   653,    -1,   999,    -1,   241,    -1,
     3244      -1,    -1,    -1,   246,    -1,    -1,    -1,   666,    -1,    -1,
     3245      -1,    31,  1264,    -1,   673,    -1,    -1,    -1,    -1,    -1,
     3246      -1,    -1,    -1,  1275,  1276,  1277,    -1,    -1,   175,    -1,
     3247      -1,    -1,    -1,    -1,   962,  1287,  1288,   184,   185,   792,
     3248      -1,    -1,   189,    63,   191,   192,    66,    -1,    -1,  1301,
     3249     709,    -1,    -1,   712,     0,    10,    11,    12,    13,    14,
     3250      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3251      25,    26,  1324,  1325,    29,    30,    31,    32,    33,    34,
     3252      -1,    -1,    37,    -1,  1336,    31,    -1,   746,    -1,    -1,
     3253     333,    -1,  1020,  1021,    -1,  1023,  1024,  1025,    -1,    -1,
     3254      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     3255     353,    -1,    67,    68,    -1,    -1,  1044,    -1,    -1,    -1,
     3256      66,    10,    11,    12,    13,    14,    -1,    -1,   999,   788,
     3257      -1,   151,    -1,    -1,  1386,    -1,    -1,    -1,    -1,   798,
     3258      -1,  1226,    -1,    -1,   803,   804,    -1,    -1,    37,  1077,
     3259    1078,   904,   905,    -1,    -1,   814,   399,    -1,    -1,   912,
     3260    1088,  1413,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3261     413,    60,    -1,    -1,    -1,   418,    65,    -1,    67,    -1,
     3262      69,    -1,    -1,   426,    -1,  1437,    -1,    76,    77,    -1,
     3263      -1,  1194,    -1,   213,    -1,    -1,    -1,    -1,    -1,    -1,
     3264      -1,    -1,    -1,    -1,    -1,   151,  1458,    -1,    -1,   452,
     3265      -1,    -1,   101,  1465,   103,    -1,   875,    -1,    -1,  1147,
     3266      -1,   241,   111,    -1,    -1,  1153,  1154,   470,    -1,   472,
     3267      10,    11,    12,    13,    14,   988,    -1,    -1,    -1,    -1,
     3268     899,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,
     3269      11,    12,    13,    14,  1007,    -1,  1508,    37,    -1,    -1,
     3270      -1,    -1,    -1,  1515,    -1,    -1,    -1,  1195,    -1,   512,
     3271      -1,    -1,    -1,  1514,    -1,    -1,    37,    -1,    -1,    -1,
     3272      60,    -1,    -1,    -1,  1212,    65,    -1,    67,  1216,    69,
     3273      -1,    -1,    -1,  1296,    -1,   241,    76,    77,    -1,    60,
     3274     246,  1386,    -1,   962,    65,    -1,    67,  1235,    69,  1237,
     3275    1395,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,
     3276      -1,   101,    -1,  1194,    -1,    -1,    -1,    -1,    -1,   572,
     3277      -1,   111,  1085,   353,    -1,    -1,  1264,  1090,    -1,    -1,
     3278     101,    -1,   103,    -1,    -1,    -1,    -1,  1275,  1276,  1277,
     3279     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1287,
     3280    1288,  1020,  1021,    -1,  1023,  1024,  1025,    10,    11,    12,
     3281      13,    14,    -1,  1301,    -1,    -1,    -1,   620,   621,    -1,
     3282      -1,    -1,    -1,    -1,    -1,  1044,    -1,   333,    -1,    -1,
     3283      -1,    -1,   635,   413,    37,    -1,    -1,  1325,    -1,    -1,
     3284      -1,    -1,    -1,    -1,    -1,    -1,    -1,   353,    -1,    -1,
     3285     653,    -1,    -1,   560,   561,    -1,    -1,    60,  1077,  1078,
     3286      -1,    -1,    65,   666,    -1,  1296,    69,    -1,    -1,  1088,
     3287     673,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,
     3288      -1,   588,    -1,    -1,   591,   592,    -1,   594,    -1,   596,
     3289     597,    -1,   472,   399,   601,   602,    -1,    -1,   101,    -1,
     3290      -1,    -1,    -1,    -1,    -1,    -1,   709,   413,   111,   712,
     3291      -1,    -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3292     426,    -1,    -1,    -1,    -1,  1413,    -1,    -1,  1147,    -1,
     3293      -1,    -1,   512,    -1,  1153,  1154,    -1,    -1,    -1,    -1,
     3294      -1,    -1,    -1,   746,    -1,    -1,   452,    -1,    -1,    -1,
    33213295      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3322       -1,    -1,    -1,    -1,  1216,    -1,   353,    -1,    -1,    -1,
    3323       -1,    -1,    -1,    -1,  1198,    -1,    -1,    -1,    -1,   258,
    3324       -1,    -1,    -1,    -1,    -1,    -1,    -1,   513,    -1,    -1,
    3325       -1,  1215,    -1,    -1,    -1,  1219,    -1,    -1,    -1,    -1,
    3326       -1,    -1,    -1,    -1,  1023,  1024,    -1,  1026,  1027,  1028,
    3327       -1,    -1,    -1,    -1,  1238,    -1,  1240,    -1,    -1,    -1,
    3328       -1,    -1,    -1,    -1,    -1,    -1,   413,    -1,  1047,    -1,
     3296      -1,    -1,    -1,    -1,   470,    -1,   472,    -1,    -1,    -1,
     3297    1458,    -1,    -1,    -1,    -1,    -1,  1195,  1465,   685,   686,
     3298      -1,    -1,    -1,    -1,   691,   788,    -1,    -1,    -1,    -1,
     3299      -1,    -1,   572,  1212,    -1,   798,    -1,  1216,    -1,    -1,
     3300     803,   804,    -1,    -1,    -1,    -1,   512,    -1,    -1,    -1,
     3301      -1,   814,    -1,    -1,    -1,    -1,  1235,    -1,  1237,    -1,
     3302    1508,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3303      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3304     620,   621,    29,    30,    31,  1264,    -1,    -1,    -1,    -1,
     3305      37,    38,    -1,    -1,    -1,   635,  1275,  1276,  1277,    -1,
     3306      -1,    -1,    -1,    -1,    -1,    -1,   572,    -1,  1287,  1288,
     3307      -1,    -1,   875,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3308      67,    68,  1301,    -1,    10,    11,    12,    13,    14,    -1,
     3309      -1,    -1,    -1,    -1,    -1,    -1,   899,    -1,    -1,    -1,
     3310      -1,    -1,    25,    26,    27,    -1,  1325,    -1,    -1,    -1,
     3311      -1,    37,    -1,    -1,   620,   621,   103,    -1,    -1,    -1,
     3312     107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,   635,
     3313      -1,    -1,   712,    -1,    60,    -1,    -1,    -1,    -1,    65,
     3314      -1,    -1,    -1,    69,    -1,    -1,    -1,   653,    -1,    -1,
     3315      76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   962,
     3316     666,    -1,    -1,    -1,    50,    -1,    52,   673,    -1,    55,
     3317      56,    57,    95,    59,    97,   101,    -1,    -1,    -1,    -1,
     3318      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    74,    -1,
     3319      -1,    -1,    -1,    -1,  1413,    -1,    -1,    -1,   121,    85,
     3320      86,    -1,    -1,   709,    -1,    -1,   712,    -1,    -1,    -1,
     3321      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1020,  1021,    -1,
     3322    1023,  1024,  1025,    -1,   804,    -1,    -1,    -1,    -1,    -1,
     3323      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1458,
     3324     746,  1044,    -1,    -1,    -1,    -1,  1465,    -1,    -1,    -1,
     3325      -1,    -1,   175,    -1,    -1,    -1,    -1,    -1,    -1,   182,
     3326      -1,   184,   185,    -1,    -1,   151,   189,    -1,   191,   192,
     3327      -1,    -1,    -1,    -1,  1077,  1078,    -1,    -1,    -1,    -1,
     3328      -1,    -1,   788,    -1,    -1,  1088,    -1,    -1,    -1,  1508,
     3329      -1,    -1,   798,    -1,    -1,   875,    -1,   803,   804,    -1,
     3330      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   814,    -1,
     3331      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,   899,
     3332      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
     3333      -1,    -1,    -1,    -1,    -1,   258,    -1,    -1,    -1,    -1,
     3334      -1,    -1,    -1,    -1,  1147,    -1,    -1,    36,    37,    38,
     3335    1153,  1154,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3336      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   948,   875,
     3337      59,    60,  1079,    -1,    -1,    -1,    65,    -1,    -1,    -1,
     3338      69,    -1,   962,    72,    73,    74,    75,    76,    77,    -1,
     3339      79,    80,  1195,   899,    -1,    -1,    -1,    -1,    87,    -1,
     3340      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1212,
     3341      -1,    -1,   101,  1216,   103,    -1,    -1,    -1,    -1,    -1,
     3342      -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
     3343      -1,    -1,  1235,    -1,  1237,    -1,    -1,    -1,    -1,    -1,
     3344     326,    -1,   328,  1023,  1024,  1025,    -1,    -1,    -1,    -1,
     3345      -1,    -1,    -1,   339,   340,    -1,   962,    -1,    -1,    -1,
     3346      -1,  1264,    -1,    -1,  1044,    -1,    -1,   353,    -1,    -1,
     3347      -1,    -1,  1275,  1276,  1277,    -1,    -1,    -1,    -1,    -1,
     3348      -1,    -1,    -1,    -1,  1287,  1288,    -1,    -1,    -1,    -1,
     3349      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1301,    -1,
     3350      -1,    -1,    -1,    -1,    -1,    -1,  1213,    -1,  1088,    -1,
     3351      -1,    -1,    -1,    -1,  1020,  1021,    -1,  1023,  1024,  1025,
     3352      -1,    -1,  1325,    -1,    -1,    -1,    -1,   413,    -1,    -1,
     3353      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1044,    -1,
     3354      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3355      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3356      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3357      31,  1077,  1078,  1153,  1154,    -1,    37,    -1,    -1,    -1,
     3358      -1,    -1,  1088,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3359      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     3360      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,
     3361    1413,    -1,    -1,    -1,  1194,  1195,    -1,    -1,    -1,    -1,
     3362      -1,    -1,    -1,    -1,    -1,    -1,   512,    -1,    -1,    -1,
     3363      -1,    -1,  1212,    -1,    -1,    -1,  1216,   560,   561,    -1,
     3364      -1,  1147,   103,    -1,    -1,    -1,    -1,  1153,  1154,    -1,
     3365     111,    -1,    -1,    -1,    -1,  1458,    -1,    -1,    -1,    -1,
     3366      -1,  1241,  1465,    -1,    -1,   588,    -1,    -1,   591,   592,
     3367      -1,   594,    -1,   596,   597,    -1,    -1,    -1,   601,   602,
     3368      -1,    -1,    -1,    -1,    -1,    -1,   572,    -1,    -1,  1195,
    33293369      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3330       -1,    -1,    -1,  1267,    -1,    -1,    -1,   573,    -1,    -1,
    3331       -1,    -1,    -1,    -1,  1278,  1279,  1280,    -1,    -1,    -1,
    3332       -1,  1080,  1081,    -1,    -1,    -1,  1290,  1291,    -1,    -1,
    3333       -1,    -1,  1091,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3334     1304,    -1,    -1,    -1,    -1,    -1,   473,    -1,    -1,    -1,
    3335       -1,    -1,    -1,    -1,    -1,   621,   622,    -1,    -1,    -1,
    3336       -1,    -1,    -1,    -1,  1328,    -1,    -1,    -1,    -1,    -1,
    3337      636,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3338       -1,    -1,    -1,    -1,    -1,    -1,   513,    -1,   654,    -1,
    3339       -1,  1150,    -1,    -1,    -1,    -1,    -1,  1156,  1157,    -1,
    3340       -1,   667,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   675,
    3341       -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,    55,
    3342       56,    57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,
    3343       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    74,  1198,
    3344       -1,    -1,    -1,    -1,    -1,   711,   573,    -1,   714,    85,
    3345       86,    -1,  1416,    -1,    -1,    -1,  1215,    -1,    -1,    -1,
    3346     1219,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3347       19,    20,    21,    22,    23,    24,    25,    26,    27,  1238,
    3348       -1,  1240,   748,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    3349       -1,    -1,    -1,    -1,   621,   622,    -1,  1461,    -1,    -1,
    3350       -1,    -1,    -1,    -1,  1468,    -1,    -1,    -1,  1267,   636,
    3351       -1,    60,    -1,    -1,   150,    -1,    -1,    -1,    -1,  1278,
    3352     1279,  1280,    71,    -1,   790,    -1,    -1,    -1,    -1,    -1,
    3353       -1,  1290,  1291,    -1,   800,    -1,    -1,    -1,    -1,   805,
    3354      806,    -1,   561,   562,    -1,  1304,    -1,  1511,    -1,    -1,
    3355      816,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3356       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1328,
    3357      589,    -1,    -1,   592,   593,    -1,   595,    -1,   597,   598,
    3358       -1,    -1,    -1,   602,   603,    -1,    -1,   714,     4,     5,
    3359        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3360       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3361       26,   877,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3362       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3363       -1,    -1,    -1,    -1,    -1,   901,    -1,    -1,    -1,    -1,
    3364       -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    65,
    3365       -1,    67,    68,    69,    -1,    -1,    -1,  1416,    -1,    -1,
    3366       76,    77,    -1,   682,    -1,    -1,    -1,    -1,   687,   688,
    3367       -1,    -1,    -1,    -1,   693,    -1,    -1,    -1,    -1,   806,
    3368       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    3369      326,    -1,   328,    -1,    -1,   111,    -1,    -1,    -1,   965,
    3370       -1,    -1,  1461,   339,   340,    -1,    -1,    -1,    -1,  1468,
    3371       -1,    -1,    -1,    -1,    -1,    -1,    -1,   353,    -1,     3,
     3370      -1,    -1,    -1,    -1,    -1,  1508,  1212,  1287,  1288,    -1,
     3371    1216,    -1,    -1,    -1,    -1,    -1,  1296,    -1,    -1,    -1,
     3372      -1,  1301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1235,
     3373      -1,  1237,    -1,    -1,    -1,    -1,    -1,   623,    -1,    10,
     3374      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3375      21,    22,    23,    24,    25,    26,  1336,   680,  1264,    -1,
     3376      -1,    -1,   685,   686,    -1,   651,    37,    -1,   691,  1275,
     3377    1276,  1277,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3378      -1,  1287,  1288,   669,   670,    -1,    -1,   673,    -1,    60,
     3379      -1,    -1,    -1,    -1,    -1,  1301,    -1,    -1,    -1,    -1,
     3380      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3381      -1,    -1,    -1,    -1,    -1,   701,    -1,   703,    -1,  1325,
     3382      -1,    -1,    -1,    -1,   710,   711,    -1,    -1,    -1,   715,
     3383      -1,    -1,    -1,  1413,    -1,    -1,    -1,    -1,    -1,    -1,
     3384      -1,   727,    -1,    -1,    -1,    -1,   732,    -1,    -1,    -1,
     3385      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1437,    -1,    -1,
     3386     746,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    63,
     3387     756,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1458,    73,
     3388      -1,    75,    -1,    77,    -1,  1465,    -1,    -1,    59,    -1,
     3389      84,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
     3390      -1,    72,    73,    74,    75,    76,    77,  1413,    79,    80,
     3391      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,   804,   113,
     3392      -1,   115,   116,   117,    -1,    -1,    -1,    -1,  1508,    -1,
     3393     101,    -1,   103,    -1,    -1,    -1,    -1,   823,    -1,   110,
     3394     111,   112,   113,   114,   115,    -1,    -1,   141,    -1,    -1,
     3395      -1,    -1,  1458,   124,    -1,    -1,    -1,    -1,    -1,  1465,
     3396      -1,   155,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3397     856,    -1,   858,   859,   860,    -1,    -1,   863,   864,    -1,
     3398      -1,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3399      -1,    36,   878,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3400      -1,    -1,  1508,    -1,   890,    -1,    -1,   893,    -1,    -1,
     3401      -1,    -1,    -1,   899,    59,    -1,    -1,    -1,    -1,   213,
     3402      65,   215,   216,   217,    69,    -1,    88,    72,    73,    74,
     3403      75,    76,    77,    -1,    79,    80,    98,    -1,    -1,    -1,
     3404      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3405      -1,   937,    -1,    -1,    -1,   249,   101,    -1,   103,   253,
     3406      -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3407     115,    -1,    -1,    -1,    -1,   269,   962,    -1,    -1,    -1,
     3408      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   975,
     3409     152,    -1,    -1,    -1,   980,    -1,    -1,   983,    -1,    -1,
     3410      -1,   987,    -1,   165,    -1,    -1,   992,    -1,    -1,    -1,
     3411     996,   997,   998,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3412    1006,    -1,    -1,   317,    -1,   187,    -1,    -1,    -1,    -1,
     3413    1016,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   332,   201,
     3414      -1,    -1,    -1,   337,   338,    -1,    -1,   209,    -1,  1035,
     3415    1036,   345,    -1,    -1,    -1,    -1,  1079,   219,    -1,    -1,
     3416      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   230,    -1,
     3417      -1,    -1,    -1,    -1,  1060,    -1,    -1,  1063,    -1,    -1,
     3418     242,    -1,    -1,    -1,    -1,   247,    -1,    -1,    -1,    -1,
     3419      -1,    -1,    -1,   387,    -1,    -1,    -1,    -1,   260,    -1,
     3420      -1,    -1,  1088,    -1,   266,    -1,   268,    -1,    -1,    -1,
     3421      -1,   405,    -1,    -1,    -1,    -1,    -1,   411,    -1,    -1,
     3422      -1,  1107,   284,    -1,    -1,    -1,    -1,  1113,  1114,    -1,
     3423      -1,    -1,    -1,    -1,   428,    -1,  1122,   431,   432,    -1,
     3424      -1,    -1,  1128,    -1,    -1,  1131,    -1,  1133,    -1,    -1,
     3425    1136,    -1,    -1,   447,    -1,    -1,    -1,    -1,    -1,    -1,
     3426      -1,  1147,    -1,   325,    -1,  1151,    -1,   461,    -1,    -1,
     3427      -1,    -1,    -1,    -1,   468,    -1,    -1,    -1,    -1,    -1,
     3428      -1,    36,  1168,    38,  1170,  1171,  1172,  1173,    -1,    -1,
     3429    1213,    -1,   354,    -1,    -1,    -1,   358,   359,    -1,   361,
     3430      -1,  1187,    -1,  1189,    59,   367,   368,  1193,   370,   371,
     3431      65,   373,    -1,   375,    69,    -1,    -1,    72,    73,    74,
     3432      75,    76,    77,    -1,    79,    80,  1212,    -1,    -1,    -1,
     3433     392,    -1,    87,    -1,    -1,  1221,  1222,    -1,   400,    -1,
     3434      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3435      -1,    -1,    -1,    -1,   109,   110,   111,   112,   113,   114,
     3436     115,    -1,   424,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3437      -1,    -1,    -1,   435,    -1,    -1,    -1,    -1,    -1,    -1,
     3438      -1,    -1,    -1,   577,    -1,    -1,  1272,  1273,    -1,    -1,
     3439      -1,    -1,  1278,  1279,    -1,    -1,   458,    -1,    -1,    -1,
     3440      -1,    -1,   464,  1289,    -1,    -1,    -1,   469,    -1,    -1,
     3441      -1,    -1,    -1,   607,    -1,    -1,    -1,    -1,   612,     3,
    33723442       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    33733443      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3374       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3375      877,    -1,  1511,    37,    -1,    -1,    -1,  1023,  1024,    -1,
    3376     1026,  1027,  1028,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3377       -1,    -1,    -1,    -1,   901,    -1,    60,   413,    62,    -1,
    3378       64,  1047,    -1,    67,    68,    -1,     4,     5,     6,     7,
     3444      24,    25,    26,   505,    -1,    29,    30,    31,    -1,    -1,
     3445      -1,    -1,    -1,    37,  1340,    -1,    -1,    -1,   520,    -1,
     3446      -1,    -1,    -1,    -1,    -1,    -1,  1352,    -1,    -1,    -1,
     3447    1356,  1357,  1358,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3448      64,    65,  1368,    67,    68,    69,    -1,    -1,    -1,    -1,
     3449      -1,  1377,    76,    77,   556,    -1,    -1,    -1,    -1,    -1,
     3450      -1,    -1,    -1,   565,    -1,   567,   700,  1393,    -1,    -1,
     3451      -1,   573,    -1,    36,    -1,    38,    -1,   101,    -1,   103,
     3452     714,    -1,    -1,    -1,   586,    -1,    -1,   111,    -1,    -1,
     3453      -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,
     3454     734,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3455      73,    74,    75,    76,    77,    -1,    79,    80,    -1,  1445,
     3456    1446,    -1,    -1,   625,    87,    -1,    -1,    -1,    -1,    -1,
     3457      -1,    -1,  1458,    -1,    36,    -1,    38,    -1,   101,  1465,
     3458     103,    -1,   105,   106,    -1,    -1,    -1,   110,   111,   112,
     3459     113,   114,   115,    -1,    -1,    -1,    -1,    59,   792,   661,
     3460      -1,    -1,    -1,    65,    -1,    -1,  1492,    69,   802,    -1,
     3461      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
     3462      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
     3463     824,    -1,    -1,    -1,  1520,    -1,    -1,    -1,   151,   101,
     3464      -1,   103,    -1,    -1,    -1,    -1,   108,    -1,   110,   111,
     3465     112,   113,   114,   115,    -1,    -1,   718,    -1,    -1,  1545,
     3466      -1,    -1,    -1,    -1,  1550,    -1,   728,   729,    -1,   182,
     3467      -1,    -1,    -1,    -1,    -1,    -1,   189,    -1,   740,    -1,
     3468      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3469      -1,    -1,    -1,    -1,    -1,   757,    -1,   759,    -1,    -1,
     3470      -1,   763,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3471      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3472      25,    26,    -1,   917,    29,    30,    31,    -1,    -1,    -1,
     3473      -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3474      -1,    -1,    -1,    -1,    -1,   258,    -1,    -1,    -1,   943,
     3475      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     3476      65,    -1,    67,    68,    69,    -1,   828,    -1,    -1,    -1,
     3477      -1,    76,    77,   835,    -1,   969,    -1,    -1,    -1,    -1,
     3478      -1,    -1,    -1,    -1,    -1,    -1,   848,    -1,   850,    -1,
     3479      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,   312,
     3480      -1,    -1,    -1,   865,    -1,   999,   111,   320,   321,   871,
     3481     323,   324,    -1,   326,    -1,    -1,    -1,    -1,   331,    -1,
     3482      -1,   883,  1016,    -1,   886,    -1,    -1,    -1,    -1,    -1,
     3483      -1,    -1,    -1,    -1,    -1,    -1,    36,   350,    38,    -1,
     3484     353,    -1,   904,    -1,    -1,    -1,    -1,    -1,   910,    -1,
     3485      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,
     3486      -1,    -1,    -1,    -1,    -1,    65,   379,    -1,    -1,    69,
     3487     383,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3488      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3489      -1,  1085,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3490     413,   101,    -1,   103,    -1,    -1,   106,    -1,  1102,    -1,
     3491     110,   111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,
     3492      -1,    -1,   142,   436,    -1,    -1,    -1,    -1,    -1,    -1,
     3493      -1,   151,    -1,   995,    -1,    -1,    -1,    -1,    -1,  1001,
     3494    1002,    -1,    -1,   163,    -1,    -1,    -1,    -1,    -1,   270,
     3495     271,   272,   273,    -1,   467,    -1,    -1,   470,    -1,   280,
     3496     281,    -1,    -1,    -1,   285,   286,    -1,    -1,    -1,    -1,
     3497      -1,    -1,    -1,    -1,    -1,    -1,   297,    -1,    -1,    -1,
     3498      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3499      -1,    -1,    -1,    -1,    -1,  1057,   509,    -1,    -1,   512,
     3500    1194,  1063,    -1,    -1,    -1,   326,    -1,    -1,    -1,    -1,
     3501      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3502      20,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
     3503      30,    31,    -1,    -1,   254,    -1,  1098,    37,    -1,    -1,
     3504      -1,  1103,   363,   556,   557,    -1,    -1,    -1,    -1,  1111,
     3505      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   572,
     3506      60,   574,    -1,    -1,    -1,    -1,    -1,    67,    68,   582,
     3507      -1,    71,   585,    -1,   587,   588,    -1,    -1,  1140,    -1,
     3508      -1,   594,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3509      -1,   604,   605,    -1,    -1,  1157,    -1,   610,  1160,    -1,
     3510    1162,   101,  1296,   103,    -1,    -1,    -1,   620,   621,    -1,
     3511      -1,   111,    -1,    -1,    -1,    -1,    -1,  1179,  1180,    -1,
     3512      -1,    -1,   635,    -1,    -1,    -1,    -1,   640,   641,    -1,
     3513      -1,   644,   645,   353,    -1,    -1,    -1,    -1,  1200,    -1,
     3514      -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3515      -1,    -1,    -1,    -1,    -1,   668,    -1,    -1,    -1,    -1,
     3516     673,   674,    -1,   676,    -1,    -1,    -1,   680,    -1,    -1,
     3517    1232,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3518      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3519      -1,    -1,   412,    -1,    -1,    -1,    -1,    -1,    -1,   712,
     3520     713,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3521      -1,    -1,    -1,   433,   535,   536,   537,   538,   539,   540,
     3522     541,   542,   543,   544,   545,   546,   547,   548,   549,   550,
     3523     551,   552,    -1,   746,    -1,    -1,    -1,   750,   751,    -1,
     3524      -1,    -1,   462,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3525      -1,    -1,    -1,   574,    -1,    -1,    -1,     7,    -1,    -1,
     3526      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,  1331,
     3527      -1,  1333,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   792,
     3528     500,    -1,  1344,    -1,  1346,    -1,    36,    37,    38,    -1,
     3529      -1,   804,   512,    -1,    -1,    -1,    -1,    -1,    -1,   519,
     3530     813,    -1,   815,    -1,  1366,    -1,    -1,    -1,    -1,    59,
     3531      60,   824,   532,   533,    -1,    65,    -1,    -1,    -1,    69,
     3532    1382,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3533      80,    -1,  1394,    -1,   554,  1397,    -1,    87,    -1,    -1,
     3534      -1,  1535,   855,    -1,   564,    -1,    -1,    -1,    -1,    -1,
     3535      -1,   101,   572,   103,   675,    -1,    -1,  1419,    -1,    -1,
     3536     110,   111,   112,   113,   114,   115,  1428,    -1,    -1,  1431,
     3537    1432,    -1,    -1,    -1,    -1,    -1,   697,    -1,    -1,    -1,
     3538      -1,    -1,    -1,    -1,    -1,    -1,   899,    -1,    -1,   710,
     3539      -1,   904,   905,    -1,    -1,    -1,    -1,    -1,    -1,   912,
     3540      -1,    -1,    -1,   623,   917,    -1,    -1,  1469,    -1,    -1,
     3541     630,  1473,   925,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3542      -1,    -1,    -1,  1485,    -1,   938,   939,    -1,    -1,    -1,
     3543      -1,   651,   753,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3544      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   962,
     3545      -1,    -1,    -1,   673,    -1,    -1,   969,    -1,    -1,    -1,
     3546      -1,    -1,    -1,   976,   785,    -1,    -1,    -1,    -1,    -1,
     3547      -1,    -1,    -1,    -1,    -1,   988,   989,    -1,    -1,    -1,
     3548      -1,   994,    -1,   996,    -1,    -1,    -1,    -1,    -1,    -1,
     3549      -1,    -1,    -1,    -1,  1007,  1008,    -1,  1010,  1011,  1012,
     3550      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3551    1023,  1024,  1025,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3552      -1,    -1,    -1,    -1,    -1,    -1,   746,    -1,   748,    -1,
     3553      -1,    -1,    -1,    -1,   754,    -1,    -1,    -1,    -1,    -1,
     3554      -1,    -1,   762,    -1,    10,    11,    12,    13,    14,    15,
     3555      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3556      26,    27,    -1,    29,    30,    31,    -1,  1080,    -1,   890,
     3557      -1,    37,  1085,    -1,    -1,  1088,  1089,  1090,  1091,   799,
     3558      -1,    -1,   802,   803,   804,    36,    -1,    38,    -1,  1102,
     3559      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3560      -1,    67,    68,   823,    -1,    71,    -1,    -1,    59,    -1,
     3561      -1,  1124,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
     3562      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3563      -1,    -1,    -1,    -1,  1147,   101,    87,   103,    -1,  1152,
     3564    1153,  1154,    -1,    -1,   864,   111,    -1,    -1,   868,    -1,
     3565     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3566     111,   112,   113,   114,   115,   986,    -1,    -1,    -1,    -1,
     3567      -1,    -1,    -1,    -1,    -1,   996,    -1,    -1,    -1,   899,
     3568      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3569      19,    20,    21,    22,    23,    24,    25,    26,    -1,  1212,
     3570      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
     3571      -1,    -1,    -1,  1226,    -1,    -1,    -1,    -1,    -1,    -1,
     3572      -1,    -1,    -1,  1044,  1237,    -1,    -1,    -1,    -1,   949,
     3573      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
     3574      -1,    -1,   962,   963,    -1,    -1,    -1,    -1,    -1,    -1,
     3575     970,    -1,    -1,    -1,    -1,    -1,    -1,   977,    -1,    -1,
     3576     980,    -1,   982,    -1,    -1,    36,    -1,    38,    -1,    -1,
     3577      -1,    -1,    -1,    -1,  1287,  1288,    -1,    -1,    -1,   999,
     3578      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    59,    -1,
     3579      -1,    -1,    -1,    -1,    65,    -1,  1016,  1118,    69,    -1,
     3580      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3581      -1,  1324,    -1,    -1,    -1,    -1,    87,    -1,    -1,  1039,
     3582      -1,  1041,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3583     101,    -1,   103,    -1,    -1,    -1,  1056,    -1,    -1,   110,
     3584     111,   112,   113,   114,   115,    -1,    -1,  1168,    -1,    -1,
     3585      -1,    -1,    -1,    -1,    -1,  1075,    -1,    -1,    -1,    -1,
     3586      -1,    -1,  1183,  1184,    -1,    -1,    -1,    -1,  1088,    -1,
     3587      -1,    -1,     0,  1386,    -1,     3,     4,     5,     6,     7,
    33793588       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    33803589      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3381       -1,    29,    30,    31,  1080,  1081,    -1,    -1,    36,    37,
    3382       38,    -1,   106,    -1,   951,  1091,    -1,    -1,    -1,    -1,
    3383       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   965,    -1,
    3384       -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,    67,
    3385       68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3386       -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3387       -1,    -1,    -1,    -1,    -1,    -1,    -1,   513,    -1,    -1,
    3388       -1,    -1,    -1,   101,  1150,   103,   104,    -1,    -1,    -1,
    3389     1156,  1157,   110,   111,   112,   113,   114,   115,    -1,  1026,
    3390     1027,  1028,    10,    11,    12,    13,    14,    15,    16,    17,
    3391       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3392     1047,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
    3393       -1,    -1,  1198,    -1,    -1,    -1,    -1,   573,     7,    -1,
    3394       -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,  1215,
    3395       -1,    -1,    60,  1219,    -1,    -1,    -1,    -1,    -1,    -1,
    3396       -1,    -1,    -1,    71,  1091,    -1,    -1,    36,    37,    38,
    3397       -1,    -1,  1238,    -1,  1240,    -1,    -1,    -1,    -1,    -1,
    3398       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,
    3399       59,    60,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    3400       69,  1267,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3401       79,    80,  1278,  1279,  1280,    -1,   652,    -1,    87,    -1,
    3402       -1,    -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,  1156,
    3403     1157,    -1,   101,    -1,   103,   671,   672,    -1,  1304,   675,
    3404       -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
     3590    1413,    29,    30,    31,    32,    -1,  1126,    35,    -1,    37,
     3591      38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3592      -1,    36,    -1,    38,    -1,    -1,    -1,  1147,    -1,    57,
     3593      -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,    67,
     3594      68,    69,    -1,    -1,    59,  1165,    -1,  1167,    76,    77,
     3595      65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
     3596      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3597      -1,    -1,    87,   101,    -1,   103,    -1,    -1,    -1,    -1,
     3598    1493,    -1,    -1,   111,    -1,    -1,   101,    -1,   103,    -1,
     3599      -1,    -1,  1212,    -1,    -1,   110,   111,   112,   113,   114,
     3600     115,  1514,  1515,    -1,    -1,    -1,    -1,  1227,    -1,    -1,
    34053601      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3406       -1,    -1,  1328,  1082,    -1,    -1,    -1,   703,    -1,   705,
    3407     1197,  1198,    -1,    -1,    -1,    -1,   712,   713,    -1,    -1,
    3408       -1,   717,    -1,    -1,    -1,    -1,    -1,    -1,  1215,    -1,
    3409       -1,    -1,  1219,   729,    -1,    -1,    -1,    -1,   734,    -1,
    3410       -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
    3411       -1,    -1,   748,    -1,    -1,    -1,    -1,  1244,    -1,    -1,
    3412       -1,    -1,   758,    -1,    -1,    -1,    -1,    59,    -1,    -1,
    3413       -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
    3414       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3415     1416,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3416       -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,    -1,   101,
    3417      806,   103,  1299,    -1,    -1,    -1,    -1,  1304,   110,   111,
    3418      112,   113,   114,   115,    63,    -1,    -1,    -1,    -1,   825,
    3419       -1,    -1,   124,    -1,    73,  1461,    75,  1216,    77,    -1,
    3420       -1,    -1,  1468,    -1,    -1,    84,    -1,    -1,    -1,    -1,
    3421       -1,     7,  1339,    -1,    10,    11,    12,    13,    14,    -1,
    3422       -1,    -1,   858,    -1,   860,   861,   862,    -1,    -1,   865,
    3423      866,    -1,    -1,    -1,   113,    -1,   115,   116,   117,    -1,
    3424       36,    37,    38,    -1,   880,  1511,    -1,    -1,    -1,    -1,
    3425       -1,    -1,    -1,    -1,    -1,    -1,   892,    -1,    -1,   895,
    3426       -1,   140,    -1,    59,    60,   901,    -1,    -1,    -1,    65,
    3427       -1,    -1,    -1,    69,    -1,   154,    72,    73,    74,    75,
    3428       76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,  1416,
    3429       -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3430       -1,    -1,    -1,    -1,   940,   101,    -1,   103,    -1,    -1,
    3431       -1,    -1,    -1,  1440,   110,   111,   112,   113,   114,   115,
    3432       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   965,
    3433       -1,    -1,    -1,   212,  1461,   214,   215,   216,    -1,    -1,
    3434       -1,  1468,   978,    -1,    -1,    -1,    -1,   983,    -1,    -1,
    3435      986,    -1,    -1,    -1,   990,    -1,    -1,    -1,    -1,   995,
    3436       -1,    -1,    -1,   999,  1000,  1001,    -1,    -1,    -1,    -1,
    3437      249,    -1,    -1,  1009,   253,    -1,    -1,    -1,    -1,    -1,
    3438       -1,    -1,    -1,  1019,  1511,    -1,    -1,    -1,    -1,    -1,
    3439      269,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3440       -1,    -1,  1038,  1039,    10,    11,    12,    13,    14,    15,
    3441       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3442       26,    -1,    -1,    29,    30,    31,    -1,  1063,    -1,    -1,
    3443     1066,    37,    38,    -1,    -1,    -1,    -1,    -1,   317,    -1,
     3602      -1,    -1,  1535,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3603    1250,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
     3604      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3605      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
     3606      30,    31,    32,    -1,    -1,    35,    36,    37,    38,    39,
     3607      -1,    41,    -1,    -1,    44,    45,    46,    47,    48,    49,
     3608      50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,    59,
     3609      60,    -1,    62,    -1,    64,    65,  1417,    67,    68,    69,
     3610      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3611      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
    34443612      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3445       -1,    -1,    -1,   332,    60,  1091,    -1,    -1,   337,   338,
    3446       -1,    67,    68,    -1,    -1,    -1,   345,    -1,    -1,    -1,
    3447       -1,    -1,    43,    -1,  1110,    -1,    -1,    -1,    -1,    -1,
    3448     1116,  1117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1125,
    3449       -1,    -1,    -1,    -1,    -1,  1131,    -1,   103,  1134,    -1,
    3450     1136,   107,    -1,  1139,    -1,   111,    -1,    -1,   387,    -1,
    3451       -1,    -1,    -1,    -1,  1150,    -1,    -1,    88,  1154,    -1,
    3452       -1,    -1,    -1,    -1,    -1,    -1,   405,    98,    -1,    -1,
    3453       -1,    -1,   411,    -1,    36,  1171,    38,  1173,  1174,  1175,
    3454     1176,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   428,
    3455       -1,    -1,   431,   432,  1190,    -1,  1192,    59,    -1,    -1,
    3456     1196,    -1,    -1,    65,    -1,    67,    -1,    69,    -1,   448,
    3457       72,    73,    74,    75,    76,    77,    -1,    79,    80,  1215,
    3458      151,    -1,    -1,   462,    -1,    87,    -1,    -1,  1224,  1225,
    3459      469,    -1,    -1,   164,    -1,    -1,    -1,    -1,    -1,   101,
    3460       -1,   103,    -1,   105,   106,    -1,    -1,    -1,   110,   111,
    3461      112,   113,   114,   115,    -1,   186,    -1,    -1,    -1,    -1,
    3462       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   200,
    3463       -1,    -1,    -1,    -1,    -1,    -1,    -1,   208,    -1,  1275,
    3464     1276,    -1,    -1,    -1,    -1,  1281,  1282,   218,    -1,    -1,
    3465       -1,    -1,    -1,    -1,    -1,    -1,  1292,    -1,    -1,   230,
     3613      -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
     3614     110,   111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,
     3615      -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,    -1,  1480,
     3616    1481,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34663617      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3467       -1,   242,    -1,    -1,    -1,    -1,   247,    -1,    -1,    -1,
    3468       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   260,
    3469       -1,    -1,    -1,    -1,    -1,   266,    -1,   268,    -1,   578,
    3470       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1343,    -1,    -1,
    3471       -1,    -1,    -1,   284,    -1,    -1,    -1,    -1,    -1,  1355,
    3472       -1,    -1,    -1,  1359,  1360,  1361,    -1,    -1,    -1,   608,
    3473       -1,    -1,    -1,    -1,   613,  1371,    -1,    -1,    -1,    -1,
    3474       -1,    36,    -1,    38,  1380,    -1,    -1,    -1,    -1,    -1,
    3475       -1,    -1,    -1,    -1,   325,    -1,    -1,    -1,    -1,    -1,
    3476     1396,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
    3477       65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
    3478       75,    76,    77,   354,    79,    80,    -1,   358,   359,    -1,
    3479      361,    -1,    87,    -1,    -1,    -1,   367,   368,    -1,   370,
    3480      371,    -1,   373,    -1,   375,    -1,   101,    -1,   103,    -1,
    3481       -1,   106,  1448,  1449,    -1,   110,   111,   112,   113,   114,
    3482      115,   392,    -1,   702,    -1,  1461,    -1,    -1,    -1,   400,
    3483       -1,    36,  1468,    38,    39,    -1,    41,   716,    -1,    44,
    3484       45,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
    3485       -1,    56,    57,   424,    59,    -1,    -1,   736,    -1,  1495,
    3486       65,    -1,    -1,    -1,    69,   436,    -1,    72,    73,    74,
    3487       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3488       -1,    -1,    87,    -1,    -1,    -1,    -1,  1523,   459,    -1,
    3489       -1,    -1,    -1,    -1,   465,    -1,   101,    -1,   103,   470,
    3490       -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    3491      115,    -1,  1548,    -1,    -1,   794,    -1,  1553,    -1,   124,
    3492       -1,    -1,    -1,    -1,    -1,   804,    -1,    -1,    -1,    -1,
    3493       -1,    -1,    -1,    -1,    -1,   506,    -1,    -1,    -1,    -1,
    3494       -1,    -1,    -1,    -1,    -1,    -1,    -1,   826,    -1,    -1,
    3495      521,    -1,    -1,     0,    -1,    -1,     3,     4,     5,     6,
    3496        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3497       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3498       -1,    -1,    29,    30,    31,    32,   557,    -1,    35,    -1,
    3499       37,    38,    -1,    -1,    -1,   566,    -1,   568,    -1,    -1,
    3500       -1,    -1,    -1,   574,    -1,    -1,    -1,    -1,    -1,    36,
    3501       57,    38,    -1,    60,    -1,    62,   587,    64,    65,    -1,
    3502       67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
    3503       77,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
    3504       -1,   920,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3505       77,    -1,    79,    80,   101,   626,   103,    -1,    -1,    -1,
    3506       87,    -1,    -1,    -1,   111,   150,    -1,   946,    -1,    -1,
    3507       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    3508       -1,    -1,   109,   110,   111,   112,   113,   114,   115,    -1,
    3509       -1,   662,    -1,   972,    -1,    -1,   181,    -1,    -1,    -1,
    3510       -1,    -1,    -1,   188,    -1,    10,    11,    12,    13,    14,
    3511       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3512       25,    26,    27,  1002,    29,    30,    31,    -1,    -1,    -1,
    3513       -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3514     1019,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   720,
    3515       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,   730,
    3516      731,    -1,    67,    68,    -1,    -1,    71,    -1,    -1,    -1,
    3517       -1,   742,    -1,   258,    -1,    -1,    -1,    -1,    36,    -1,
    3518       38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   759,    -1,
    3519      761,    -1,    -1,    -1,   765,    -1,   101,    -1,   103,    -1,
    3520       -1,    59,    -1,    -1,    -1,    -1,   111,    65,    -1,  1088,
    3521       -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3522       -1,    79,    80,    -1,    -1,    -1,  1105,   312,    -1,    87,
    3523       -1,    -1,    -1,    -1,    -1,   320,   321,    -1,   323,   324,
    3524       -1,   326,    -1,   101,    -1,   103,   331,    -1,    -1,    -1,
    3525      108,    -1,   110,   111,   112,   113,   114,   115,    -1,   830,
    3526       -1,    -1,    -1,    -1,    -1,   350,   837,    -1,   353,    -1,
    3527       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   850,
    3528       -1,   852,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
    3529       -1,    -1,    -1,    -1,   379,    -1,   867,    -1,   383,    -1,
    3530       -1,    -1,   873,    -1,    -1,    -1,    -1,    -1,    -1,    59,
    3531       -1,    -1,    -1,    -1,   885,    65,    -1,   888,  1197,    69,
    3532       -1,    -1,    72,    73,    74,    75,    76,    77,   413,    79,
    3533       80,    -1,    -1,    -1,    -1,    -1,   907,    87,    -1,    -1,
    3534       -1,    -1,   913,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3535      141,   101,   437,   103,    -1,    -1,   106,    -1,    -1,   150,
    3536      110,   111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,
    3537       -1,   162,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3538       -1,    -1,    -1,   468,    -1,    -1,   471,    -1,    -1,    -1,
    3539       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3540       20,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
    3541       30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
    3542     1299,    -1,    -1,    -1,    -1,   510,    -1,   998,   513,    -1,
    3543       -1,    -1,    -1,  1004,  1005,    -1,    -1,    -1,    -1,    -1,
    3544       60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
    3545       -1,    71,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
    3546       -1,    -1,    -1,   254,    -1,    -1,    -1,    -1,    -1,    -1,
    3547       -1,    -1,   557,   558,    -1,    -1,    -1,    -1,    -1,    -1,
    3548       -1,   101,    -1,   103,    -1,    -1,    -1,    -1,   573,  1060,
    3549      575,   111,    -1,    -1,    -1,  1066,    -1,    -1,   583,    -1,
    3550       -1,   586,    -1,   588,   589,    -1,    -1,    -1,    -1,    -1,
    3551      595,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3552      605,   606,    -1,    -1,    -1,    -1,   611,    -1,    -1,    -1,
    3553     1101,    -1,    -1,    -1,    -1,  1106,   621,   622,    -1,    -1,
    3554       -1,    -1,    -1,  1114,    -1,    -1,    -1,    -1,    -1,    -1,
    3555       -1,   636,    -1,    -1,    -1,    -1,   641,   642,    -1,    -1,
    3556      645,   646,   353,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3557       -1,   362,  1143,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3558       -1,    -1,    -1,    -1,    -1,   670,    -1,    -1,    -1,  1160,
    3559      675,   676,  1163,   678,  1165,    -1,    -1,   682,    -1,    -1,
    3560       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3561       -1,  1182,  1183,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3562       -1,   412,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   714,
    3563      715,    -1,  1203,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3564       -1,    -1,   433,   434,    -1,    -1,    -1,    -1,    -1,    -1,
    3565       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1538,
    3566       -1,    -1,    -1,   748,  1235,    -1,    -1,   752,   753,    -1,
    3567       -1,    -1,   463,    -1,    -1,    -1,    -1,    -1,    10,    11,
    3568       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3569       22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
    3570       -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,   794,
    3571      501,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3572       -1,   806,   513,    -1,    -1,    -1,    -1,    -1,    60,   520,
    3573      815,    -1,   817,    65,    -1,    67,    68,    69,    -1,    71,
    3574       -1,   826,   533,   534,    76,    77,    10,    11,    12,    13,
    3575       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3576       24,    25,    26,  1334,   555,  1336,    -1,    -1,    -1,    -1,
    3577       -1,   103,   857,    37,   565,    -1,  1347,    -1,  1349,   111,
    3578       -1,    -1,   573,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3579       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,  1369,    -1,
    3580       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3581       -1,    -1,    -1,    -1,  1385,    -1,   901,    -1,    -1,    -1,
    3582       -1,    -1,   907,   908,    -1,    -1,  1397,    -1,    -1,  1400,
    3583      915,    -1,    -1,   624,    -1,   920,    -1,    -1,    -1,    -1,
    3584      631,    -1,    -1,   928,    -1,    -1,    -1,    -1,    -1,    -1,
    3585       -1,  1422,    -1,    -1,    -1,    -1,   941,   942,    -1,    -1,
    3586     1431,   652,    -1,  1434,  1435,    -1,    -1,    -1,    -1,    -1,
    3587       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3588      965,    -1,    -1,    -1,   675,    -1,    -1,   972,    -1,    -1,
    3589       -1,    -1,    -1,    -1,   979,    -1,    -1,    -1,    -1,    -1,
    3590       -1,  1472,    -1,    -1,    -1,  1476,   991,   992,    -1,    -1,
    3591       -1,    -1,   997,    -1,   999,    -1,    -1,  1488,    -1,    -1,
    3592       -1,    -1,    -1,    -1,    -1,  1010,  1011,    -1,  1013,  1014,
    3593     1015,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3594       -1,  1026,  1027,  1028,    -1,    -1,    -1,    -1,    -1,    -1,
    3595       -1,    -1,    -1,    -1,    -1,    -1,    -1,   748,    -1,   750,
    3596       -1,    -1,    -1,    -1,    -1,   756,    -1,    -1,    -1,    -1,
    3597       -1,    -1,    -1,   764,    -1,    10,    11,    12,    13,    14,
    3598       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3599       25,    26,    27,    -1,    29,    30,    31,    -1,  1083,    -1,
    3600       -1,    -1,    37,  1088,    -1,    -1,  1091,  1092,  1093,  1094,
    3601      801,    -1,    -1,   804,   805,   806,    -1,    -1,    -1,    -1,
    3602     1105,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3603       -1,    -1,    67,    68,   825,    -1,    71,    -1,    -1,    -1,
    3604       -1,    -1,  1127,    -1,    -1,    -1,    -1,   270,   271,   272,
    3605      273,    -1,    -1,    -1,    -1,    -1,    -1,   280,   281,    -1,
    3606       -1,    -1,   285,   286,    -1,  1150,   101,    -1,   103,    -1,
    3607     1155,  1156,  1157,    -1,   297,   866,   111,    -1,    -1,   870,
    3608       -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3609       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3610       25,    26,    27,   326,    29,    30,    31,    -1,    -1,    -1,
    3611      901,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3612       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3613     1215,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3614      363,    -1,    67,    68,  1229,    -1,    71,    -1,    -1,    -1,
    3615       -1,    -1,    -1,    -1,    -1,  1240,    -1,    -1,    -1,    -1,
    3616       -1,   952,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3617       -1,    -1,    -1,    -1,   965,   966,    -1,    -1,   103,    -1,
    3618       -1,    36,   973,    38,    -1,    -1,   111,    -1,    -1,   980,
    3619       -1,    -1,   983,    -1,   985,    -1,    -1,    -1,    -1,    -1,
    3620       -1,    -1,    -1,    -1,    59,  1290,  1291,    -1,    -1,    -1,
    3621       65,  1002,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
    3622       75,    76,    77,    -1,    79,    80,    -1,    -1,  1019,    -1,
    3623       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3624       -1,    -1,  1327,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3625       -1,  1042,    -1,  1044,    -1,   110,   111,   112,   113,   114,
    3626      115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1059,    -1,
    3627       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3628       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1078,    -1,    -1,
    3629       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3630     1091,    -1,    -1,    -1,  1389,    -1,    -1,    -1,    -1,    -1,
    3631       -1,    -1,    -1,   536,   537,   538,   539,   540,   541,   542,
    3632      543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
    3633      553,  1416,    -1,    -1,    -1,    -1,    -1,    -1,  1129,    -1,
    3634       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3635       -1,    -1,   575,    -1,    -1,    -1,    -1,    -1,    -1,  1150,
    3636       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3637       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1168,    -1,  1170,
    3638       -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
    3639        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3640       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3641       -1,  1496,    29,    30,    31,    32,    -1,    -1,    35,    -1,
    3642       37,    38,    -1,    -1,  1215,    -1,    -1,    -1,    -1,    -1,
    3643       -1,    -1,  1517,  1518,    -1,    -1,    -1,    -1,    -1,  1230,
    3644       57,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
    3645       67,    68,    69,  1538,   677,    -1,    -1,    -1,    -1,    76,
    3646       77,    -1,  1253,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3647       -1,    -1,    -1,    -1,    -1,    -1,   699,    -1,    -1,    -1,
    3648       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   712,
    3649      107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3650       -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3651       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3652       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3653       32,    -1,   755,    35,    36,    37,    38,    39,    -1,    41,
    3654       -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
    3655       -1,    53,    -1,    -1,    56,    57,    -1,    59,    60,    -1,
    3656       62,    -1,    64,    65,   787,    67,    68,    69,    -1,    -1,
    3657       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3658       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3659       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3660       -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
    3661      112,   113,   114,   115,  1405,    -1,    -1,    -1,    -1,    -1,
    3662       -1,    -1,   124,    -1,    -1,    -1,    -1,    -1,     3,     4,
     3618      -1,    -1,  1402,    -1,    -1,    -1,    -1,    -1,     3,     4,
    36633619       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    36643620      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    36653621      25,    26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,
    3666       35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,   892,
     3622      35,    36,    37,    38,    10,    11,    12,    13,    14,    15,
     3623      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3624      26,    27,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
     3625      65,    37,    67,    68,    69,    -1,  1476,    72,    73,    74,
     3626      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3627      -1,    -1,    87,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3628      -1,    -1,    -1,    -1,    -1,    71,   101,    -1,   103,    -1,
     3629      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3630     115,    -1,  1522,    -1,    -1,    -1,    -1,    -1,    -1,   124,
     3631       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3632      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3633      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    32,
     3634      -1,    -1,    35,    36,    37,    38,    10,    11,    12,    13,
     3635      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3636      24,    25,    26,    27,    -1,    -1,    59,    60,    -1,    62,
     3637      -1,    64,    65,    37,    67,    68,    69,    -1,    -1,    72,
     3638      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3639      -1,    -1,    -1,    -1,    87,    -1,    60,    -1,    -1,    -1,
     3640      -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,   101,    -1,
     3641     103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     3642     113,   114,   115,     4,     5,     6,     7,     8,     9,    10,
     3643      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3644      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3645      31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    36673646      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3668       36,    -1,    38,    -1,    59,    60,    -1,    62,  1479,    64,
    3669       65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
    3670       75,    76,    77,    59,    79,    80,    -1,    -1,    -1,    65,
    3671       -1,    -1,    87,    69,    -1,    -1,    72,    73,    74,    75,
    3672       76,    77,    -1,    79,    80,    -1,   101,    -1,   103,    -1,
    3673       -1,    87,    -1,    -1,  1525,   110,   111,   112,   113,   114,
    3674      115,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,   124,
    3675       -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    3676       -1,    -1,    -1,    -1,    -1,    -1,   989,    -1,    -1,    -1,
    3677       -1,    -1,    -1,    -1,    -1,    -1,   999,     3,     4,     5,
    3678        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3679       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3680       26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,    35,
    3681       36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3682       -1,    -1,    -1,    -1,  1047,    -1,    -1,    -1,    -1,    36,
    3683       -1,    38,    -1,    59,    60,    -1,    62,    -1,    64,    65,
    3684       -1,    67,    68,    69,    -1,    -1,    72,    73,    74,    75,
    3685       76,    77,    59,    79,    80,    -1,    -1,    -1,    65,    -1,
    3686       -1,    87,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3687       77,    -1,    79,    80,    -1,   101,    -1,   103,    -1,    -1,
    3688       87,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    3689       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,  1121,    -1,
    3690       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
    3691        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3692       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3693       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3694       -1,    -1,    36,    37,    38,    -1,    -1,    -1,  1171,    -1,
     3647      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
     3648      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
     3649      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3650      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    36953651      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3696       -1,    -1,    -1,  1186,  1187,    59,    60,    -1,    62,    -1,
    3697       64,    65,    -1,    67,    68,    69,    -1,    -1,    72,    73,
    3698       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3699       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3700       -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3701      104,    -1,    -1,    -1,   108,    -1,   110,   111,   112,   113,
    3702      114,   115,     4,     5,     6,     7,     8,     9,    10,    11,
    3703       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3704       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3705       -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
    3706       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3707       -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
    3708       62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
    3709       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3710       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3711       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3712       -1,   103,   104,    -1,    -1,    -1,   108,    -1,   110,   111,
    3713      112,   113,   114,   115,    -1,     4,     5,     6,     7,     8,
     3652     101,    -1,   103,   104,    -1,    -1,    -1,   108,    -1,   110,
     3653     111,   112,   113,   114,   115,     4,     5,     6,     7,     8,
    37143654       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    37153655      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     
    37173657      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37183658      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3719       59,    60,    -1,    62,    -1,    64,    65,  1420,    67,    68,
     3659      59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
    37203660      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    37213661      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    37223662      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37233663      -1,    -1,   101,    -1,   103,   104,    -1,    -1,    -1,   108,
    3724       -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
     3664      -1,   110,   111,   112,   113,   114,   115,     4,     5,     6,
     3665       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3666      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3667      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
     3668      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37253669      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3726     1483,  1484,     4,     5,     6,     7,     8,     9,    10,    11,
    3727       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3728       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3729       -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
    3730       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3731       -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
    3732       62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
    3733       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3734       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3735       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3736       -1,   103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3737      112,   113,   114,   115,     4,     5,     6,     7,     8,     9,
    3738       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3739       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3740       30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,
    3741       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3742       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,
    3743       60,    -1,    62,    -1,    64,    65,    -1,    67,    68,    69,
    3744       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3745       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
    3746       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3747       -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
    3748      110,   111,   112,   113,   114,   115,     4,     5,     6,     7,
    3749        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3750       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3751       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,
    3752       38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3753       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3754       -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,    67,
    3755       68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3756       -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3757       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3758       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
    3759       -1,    -1,   110,   111,   112,   113,   114,   115,     3,     4,
     3670      -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,
     3671      67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3672      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3673      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3674      -1,    -1,    -1,    -1,   101,    -1,   103,   104,    -1,    -1,
     3675      -1,   108,    -1,   110,   111,   112,   113,   114,   115,     4,
    37603676       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    37613677      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3762       25,    26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,
    3763       35,    -1,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3678      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3679      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    37643680      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3765       -1,    -1,    57,    -1,    -1,    60,    -1,    62,    -1,    64,
    3766       65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
    3767       -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3681      -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
     3682      65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
     3683      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3684      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3685      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,   104,
     3686      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3687     115,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3688      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3689      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3690      -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
    37683691      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3769       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3770       -1,    -1,    -1,    -1,    -1,    -1,   111,     3,     4,     5,
     3692      -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,
     3693      -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3694      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3695      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3696      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3697     103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     3698     113,   114,   115,     4,     5,     6,     7,     8,     9,    10,
     3699      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3700      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3701      31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
     3702      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3703      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
     3704      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
     3705      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3706      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
     3707      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3708     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3709     111,   112,   113,   114,   115,     4,     5,     6,     7,     8,
     3710       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3711      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3712      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
     3713      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3714      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3715      59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
     3716      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3717      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
     3718      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3719      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3720      -1,   110,   111,   112,   113,   114,   115,     3,     4,     5,
     3721       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3722      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3723      26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,    35,
     3724      -1,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3725      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3726      -1,    57,    -1,    -1,    60,    -1,    62,    -1,    64,    65,
     3727      -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,
     3728      76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3729      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3730      -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
     3731      -1,   107,    -1,    -1,    -1,   111,     3,     4,     5,     6,
     3732       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3733      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3734      -1,    -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,
     3735      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3736      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3737      57,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
     3738      67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
     3739      77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3740      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3741      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3742      -1,    -1,    -1,    -1,   111,     3,     4,     5,     6,     7,
     3743       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3744      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3745      -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,    37,
     3746      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3747      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3748      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
     3749      68,    -1,    -1,    71,     3,     4,     5,     6,     7,     8,
     3750       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3751      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3752      29,    30,    31,    32,    -1,   103,    35,    -1,    37,    -1,
     3753      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3754      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3755      -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,
     3756       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3757      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3758      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
     3759      -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,    -1,
     3760      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3761      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3762      64,    65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,
     3763      -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,
     3764      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3765      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3766      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,     4,     5,
    37713767       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    37723768      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     
    37743770      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37753771      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3776       -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    65,
    3777       -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,
    3778       76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3779       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3780       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    3781       -1,    -1,    -1,    -1,    -1,   111,     3,     4,     5,     6,
    3782        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3783       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3784       27,    -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,
    3785       37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3786       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3787       -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
    3788       67,    68,    -1,    -1,    71,     3,     4,     5,     6,     7,
    3789        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3790       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3791       -1,    29,    30,    31,    32,    -1,   103,    35,    -1,    37,
    3792       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3793       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3794       -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
    3795       68,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3796       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3797       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3798       31,    -1,    -1,    -1,    -1,   103,    37,    -1,    -1,    -1,
    3799       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3800       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3801       -1,    62,    -1,    64,    -1,    -1,    67,    68,     4,     5,
    3802        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3803       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3804       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3805       -1,    37,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3806      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38073772      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
    38083773      -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
     
    39453910      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    39463911      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3947      112,   113,   114,   115,    10,    11,    12,    13,    14,    15,
    3948       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3949       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3950       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3912     112,   113,   114,   115,     3,     4,     5,     6,     7,     8,
     3913       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3914      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3915      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    10,
     3916      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3917      21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
     3918      31,    60,    -1,    62,    -1,    64,    37,    -1,    67,    68,
    39513919      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3952       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,
    3953       -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,
    3954       76,    77,    10,    11,    12,    13,    14,    15,    16,    17,
    3955       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3956       -1,    29,    30,    31,    -1,   101,    -1,   103,    -1,    37,
    3957       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3920      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     3921      -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
     3922      71,    -1,    -1,    -1,    -1,    76,    77,   106,    10,    11,
     3923      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3924      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
     3925     101,    -1,   103,    -1,    -1,    37,    -1,    -1,    -1,    -1,
     3926     111,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3927      19,    20,    21,    22,    23,    24,    25,    26,    60,    -1,
     3928      29,    30,    31,    65,    -1,    67,    68,    69,    37,    71,
     3929      -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
    39583930      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3959       -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
    3960       68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
     3931      -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3932      69,   103,    -1,    -1,    -1,    -1,    -1,    76,    77,   111,
    39613933      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    39623934      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3963       30,    31,    -1,   101,    -1,   103,    -1,    37,    -1,    -1,
    3964       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3935      30,    31,   101,    -1,   103,    -1,    -1,    37,    -1,    -1,
     3936      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39653937      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39663938      60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
     
    39873959      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    39883960      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3961      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3962      37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3963      -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3964      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3965      67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
     3966      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3967      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3968      -1,    -1,    37,    38,    -1,    -1,   103,    -1,    -1,    -1,
     3969      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3970      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     3971      -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
     3972      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3973      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3974      -1,    37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,
     3975      -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3976      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3977      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
     3978      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    39893979      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    39903980      37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     
    39993989      68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    40003990      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    4001       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,
     3991      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    40023992      -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,   107,
    40033993      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    4004       -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
     3994      -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
    40053995      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    40063996      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    40073997      30,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
    4008       -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,   107,    -1,
     3998      -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    40093999      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    40104000      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,
     
    40124002      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    40134003      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    4014       -1,    -1,    -1,   103,    -1,    -1,    -1,   107,    -1,    -1,
     4004      -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
    40154005      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    4016       -1,    -1,    -1,    -1,    65,    -1,    67,    68,    10,    11,
     4006      -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,
    40174007      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    40184008      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    4019       -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,
    4020       -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4009      -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
     4010     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    40214011     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    40224012      -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,
    40234013      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    40244014      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    4025       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
     4015      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,   101,
    40264016      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    40274017      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
     
    40294019      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    40304020      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    4031       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,   101,    -1,
     4021      -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
    40324022     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    40334023      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
     
    40354025      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    40364026      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    4037       -1,    -1,    37,    -1,    -1,    -1,    -1,   101,    -1,   103,
     4027      -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,
    40384028      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    40394029      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     
    40854075      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    40864076      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    4087       -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,    13,
     4077      -1,    -1,    -1,    -1,    67,    68,     4,     5,     6,     7,
     4078       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     4079      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     4080      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     4081      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     4082      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4083      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
     4084      68,    -1,    36,    -1,    38,    39,    -1,    41,    -1,    -1,
     4085      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
     4086      -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,    -1,
     4087      -1,    65,    -1,    -1,   102,    69,    -1,    -1,    72,    73,
     4088      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
     4089      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     4090      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     4091      -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,
     4092     114,   115,    -1,    36,    -1,    38,    39,    -1,    41,    -1,
     4093     124,    44,    45,    46,    47,    48,    49,    50,    51,    -1,
     4094      53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,
     4095      -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
     4096      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     4097      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     4098      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     4099     103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,
     4100     113,   114,   115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4101      -1,   124,     4,     5,     6,     7,     8,     9,    10,    11,
     4102      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     4103      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
     4104      -1,    -1,    -1,    -1,    -1,    37,    10,    11,    12,    13,
    40884105      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    4089       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    4090       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
    4091      103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    4092       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    4093       -1,    -1,    -1,    67,    68,    10,    11,    12,    13,    14,
    4094       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    4095       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    4096       -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,
    4097       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    4098       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    4099       -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
    4100       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4101       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    4102       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4103       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    4104       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
    4105       -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
    4106       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    4107       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    4108       31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    4109       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    4110       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    4111       -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    36,
    4112       -1,    38,    39,    -1,    41,    -1,    -1,    44,    45,    46,
    4113       47,    48,    49,    50,    51,    -1,    53,    -1,    -1,    56,
    4114       57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
    4115       -1,   102,    69,    -1,    -1,    72,    73,    74,    75,    76,
    4116       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    4117       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4118       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,
    4119       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
    4120       -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,     4,     5,
    4121        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    4122       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4123       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    4124       -1,    37,    10,    11,    12,    13,    14,    15,    16,    17,
    4125       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    4126       -1,    29,    30,    31,    60,    -1,    62,    -1,    64,    37,
    4127       -1,    67,    68,    -1,    36,    -1,    38,    39,    -1,    41,
    4128       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
    4129       52,    53,    60,    89,    56,    57,    -1,    59,    -1,    67,
    4130       68,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
    4131       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    4132       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    4133       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    4134       -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
    4135      112,   113,   114,   115,    36,    -1,    38,    39,    -1,    41,
    4136       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
    4137       -1,    53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,
    4138       -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
    4139       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    4140       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    4141       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    4142       -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
    4143      112,   113,   114,   115,    36,    -1,    38,    39,    -1,    41,
    4144       -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
    4145       -1,    53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,
    4146       -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
    4147       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    4148       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    4149       -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,
    4150       -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
    4151      112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,
    4152       65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
    4153       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    4154       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,
    4155       38,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    4156       -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    4157      115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
     4106      24,    25,    26,    -1,    -1,    29,    30,    31,    60,    -1,
     4107      62,    -1,    64,    37,    -1,    67,    68,    -1,    36,    -1,
     4108      38,    39,    -1,    41,    42,    43,    44,    45,    46,    47,
     4109      48,    49,    50,    51,    52,    53,    60,    89,    56,    57,
     4110      -1,    59,    -1,    67,    68,    -1,    -1,    65,    -1,    -1,
     4111      -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
     4112      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
     4113      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4114      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
     4115      -1,    -1,   110,   111,   112,   113,   114,   115,    36,    -1,
     4116      38,    39,    -1,    41,    42,    43,    44,    45,    46,    47,
     4117      48,    49,    50,    51,    -1,    53,    -1,    -1,    56,    57,
     4118      -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
     4119      -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
     4120      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
     4121      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4122      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
     4123      -1,    -1,   110,   111,   112,   113,   114,   115,    36,    -1,
     4124      38,    39,    -1,    41,    -1,    -1,    44,    45,    46,    47,
     4125      48,    49,    50,    51,    -1,    53,    -1,    -1,    56,    57,
     4126      -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
    41584127      -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    41594128      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    41604129      -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,
    4161       -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
     4130      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
    41624131      -1,    -1,   110,   111,   112,   113,   114,   115,    59,    -1,
    41634132      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
     
    41654134      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    41664135      -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,
    4167      101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     4136     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
    41684137     111,   112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,
    41694138      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
     
    41754144      -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
    41764145      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    4177       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4146      87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
    41784147      -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
    4179       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,     4,
    4180        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    4181       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    4182       25,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4183       -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4148      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    59,
     4149      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
     4150      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     4151      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     4152      -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
     4153      -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4154     110,   111,   112,   113,   114,   115,    59,    -1,    -1,    -1,
     4155      -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
     4156      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     4157      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     4158      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     4159      -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     4160     113,   114,   115,     4,     5,     6,     7,     8,     9,    10,
     4161      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     4162      21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    -1,
     4163      -1,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    41844164      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4185       -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,
    4186       65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
    4187       -1,    76,    77,     3,     4,     5,     6,     7,     8,     9,
     4165      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     4166      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
     4167      -1,    -1,    -1,    -1,    -1,    76,    77,     3,     4,     5,
     4168       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     4169      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4170      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     4171      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4172      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4173      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
     4174      -1,    67,    68,     3,     4,     5,     6,     7,     8,     9,
    41884175      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    41894176      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
     
    41914178      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    41924179      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4193       60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,     3,
    4194        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    4195       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    4196       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    4197       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
     4180      60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,     4,
     4181       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     4182      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     4183      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     4184      -1,    -1,    37,    10,    11,    12,    13,    14,    15,    16,
     4185      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4186      -1,    -1,    29,    30,    31,    60,    -1,    62,    -1,    64,
     4187      37,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,
    41984188      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4199       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
    4200       64,    -1,    -1,    67,    68,     4,     5,     6,     7,     8,
    4201        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    4202       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    4203       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    4204       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4205       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4206       -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,
    4207       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    4208       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    4209       30,    31,    32,    33,    34,    -1,    -1,    37,    10,    11,
    4210       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4211       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    4212       60,    -1,    -1,    -1,    -1,    37,    -1,    67,    68,    -1,
    4213       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4214       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    4215       -1,    -1,    -1,    -1,    -1,    67,    68
     4189      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     4190      67,    68
    42164191};
    42174192
     
    42334208     204,   206,   214,   216,   226,   230,   232,   271,    75,   101,
    42344209     298,   299,   300,   298,   298,    65,    67,    68,    69,   130,
    4235      131,   260,   261,   280,   281,    67,   261,   101,   291,   215,
    4236      216,   101,   111,   305,   310,   311,   312,   314,   315,   316,
    4237      126,   103,   207,   214,   216,   309,   313,   352,   353,   356,
    4238      357,   127,   123,   264,   106,   127,   164,    67,    68,   129,
    4239      259,   127,   127,   127,   108,   127,    67,   101,   111,   295,
    4240      304,   305,   306,   307,   308,   309,   313,   317,   318,   319,
    4241      320,   321,     3,    27,    71,   228,     3,     5,    67,    68,
    4242      103,   111,   206,   217,   221,   224,   233,   309,   313,   356,
    4243      204,   206,   216,   226,   230,   232,   271,   309,   313,    32,
    4244      222,   222,   217,   224,   127,   222,   217,   222,   217,    68,
     4210     131,   260,   261,   280,   281,    67,    68,   261,   101,   291,
     4211     215,   216,   101,   111,   305,   310,   311,   312,   314,   315,
     4212     316,   126,   103,   207,   214,   216,   309,   313,   352,   353,
     4213     356,   357,   127,   123,   264,   106,   127,   164,    67,    68,
     4214     129,   259,   127,   127,   127,   108,   127,    67,   101,   111,
     4215     295,   304,   305,   306,   307,   308,   309,   313,   317,   318,
     4216     319,   320,   321,     3,    27,    71,   228,     3,     5,    67,
     4217      68,   103,   111,   206,   217,   221,   224,   233,   309,   313,
     4218     356,   204,   206,   216,   226,   230,   232,   271,   309,   313,
     4219      32,   222,   222,   217,   224,   127,   222,   217,   222,   217,
    42454220     101,   106,   261,   106,   261,   222,   217,   108,   127,   127,
    42464221       0,   126,   101,   164,   298,   298,   126,   103,   214,   216,
     
    42634238     214,   216,   101,   126,   214,   352,   357,   164,   126,   259,
    42644239     264,   206,   221,   309,   313,   164,   126,   280,   216,   226,
    4265      124,   216,   216,   101,   126,    38,   103,   214,   236,   237,
    4266      238,   239,   352,   356,   106,   245,   261,   106,   216,   280,
    4267      124,   124,   291,   126,   131,   258,     3,   127,   196,   197,
    4268      211,   213,   216,   126,   297,   101,   297,   155,   305,   216,
    4269      101,   126,   259,   106,    32,    33,    34,   214,   272,   273,
    4270      275,   126,   121,   123,   277,   126,   217,   223,   224,   259,
    4271      301,   302,   303,   140,   153,   154,   101,   140,   142,   101,
    4272      140,   101,   101,   140,   140,   131,   103,   155,   160,   164,
    4273      214,   262,   352,   126,   142,   142,    75,    78,    79,    80,
    4274      101,   103,   105,    90,    91,    92,    93,    94,    95,    96,
    4275       97,    98,    99,   123,   159,   142,   111,   116,   117,   113,
    4276      114,    81,    82,    83,    84,   118,   119,    85,    86,   112,
    4277      120,   121,    87,    88,   122,   123,   359,   101,   111,   331,
    4278      332,   333,   334,   335,   102,   108,   101,   335,   103,   336,
    4279      101,   335,   336,   126,   103,   111,   127,   214,   216,   347,
    4280      348,   356,   357,   104,   127,    67,   101,   103,   111,   305,
    4281      322,   323,   324,   325,   326,   327,   328,   329,   330,   336,
    4282      337,   338,   339,   340,   341,   342,   111,   356,   216,   127,
    4283      127,   111,   214,   216,   349,   259,   214,   336,   349,   259,
    4284      127,   126,   126,   126,   126,    65,   103,   105,   261,   265,
    4285      266,   267,   268,   269,   126,   126,   126,   126,   126,   126,
    4286      295,   102,   102,   102,   102,   102,   102,   102,   304,   317,
    4287      101,   264,   126,   196,   126,   295,   160,   263,   160,   263,
    4288      295,   278,   103,   127,   196,   297,   164,   126,   196,   278,
    4289      214,   272,   278,   238,   239,   126,   101,   109,   111,   240,
    4290      242,   304,   305,   317,   335,   343,   344,   345,   346,   107,
    4291      237,   108,   124,   108,   124,   261,   236,   108,   358,   123,
    4292      246,   245,   216,   251,   252,   253,   256,   257,   102,   108,
    4293      164,   126,   111,   155,   126,   213,   216,   250,   348,   356,
    4294      289,   290,   101,   111,   322,   102,   108,   359,   261,   272,
    4295      101,   106,   261,   263,   272,   102,   108,   101,   102,   109,
    4296      262,   262,   103,   131,   137,   155,   263,   262,   126,   102,
    4297      108,   102,   101,   111,   343,   102,   108,   127,   155,   103,
    4298      131,   103,   136,   137,   126,   103,   131,   155,   155,   142,
    4299      142,   142,   143,   143,   144,   144,   145,   145,   145,   145,
    4300      146,   146,   147,   148,   149,   150,   151,   109,   160,   155,
    4301      126,   332,   333,   334,   216,   331,   298,   298,   155,   263,
    4302      126,   126,   258,   127,   216,   220,   126,   104,   356,    67,
    4303      129,   214,   336,   354,   104,   101,   126,   305,   323,   324,
    4304      325,   328,   338,   339,   340,   126,   216,   322,   326,   337,
    4305      101,   298,   341,   359,   298,   298,   359,   101,   298,   341,
    4306      298,   298,   298,   298,   336,   214,   347,   357,   259,   104,
    4307      108,   104,   108,   359,   214,   349,   359,   104,   247,   248,
    4308      249,   250,   247,   259,   127,   155,   126,   103,   261,   109,
    4309      108,   358,   265,   103,   109,   269,    28,   198,   199,   259,
    4310      247,   131,   295,   131,   297,   101,   335,   336,   101,   335,
    4311      336,   133,   111,   127,   164,   251,   102,   102,   102,   102,
    4312      102,   126,   104,   164,   196,   164,   102,   101,   111,   127,
    4313      127,   124,   124,   103,   127,   305,   344,   345,   346,   154,
    4314      216,   343,   241,   242,   241,   298,   298,   261,   298,   107,
    4315      261,   107,   154,   358,   127,   127,   131,   211,   127,   127,
    4316      247,   101,   111,   356,   127,   107,   216,   273,   274,   127,
    4317      126,   126,   101,   127,   102,   302,   160,   161,   124,    75,
    4318      190,   191,   192,   102,   102,   126,   109,   102,   102,   102,
    4319      127,   155,   216,   106,   142,   157,   155,   156,   158,   104,
    4320      108,   127,   126,   126,   102,   108,   155,   126,   153,   109,
    4321      251,   102,   102,   102,   331,   251,   102,   104,   103,   111,
    4322      155,   155,   216,   127,   101,   101,   214,   354,   328,   251,
    4323      102,   102,   102,   102,   102,   102,   102,     7,   127,   216,
    4324      322,   326,   337,   126,   126,   359,   126,   126,   101,   127,
    4325      127,   127,   127,   264,   104,   127,   153,   154,   155,   296,
    4326      126,   265,   267,   107,   126,   200,   261,    38,    39,    41,
    4327       44,    45,    46,    47,    48,    49,    50,    51,    53,    56,
    4328      103,   131,   161,   162,   163,   164,   165,   166,   168,   169,
    4329      181,   183,   184,   189,   201,   294,    28,   127,   123,   264,
    4330      126,   126,   102,   104,   127,   127,    67,   164,   216,   102,
    4331      102,   126,   104,   102,   102,   102,   343,   240,   246,   107,
    4332      102,   108,   104,   104,   127,   216,   108,   359,   276,   102,
    4333      272,   204,   206,   214,   284,   285,   286,   287,   278,   102,
    4334      102,   101,   102,   109,   108,   155,   155,   104,   266,   108,
    4335      127,   158,   104,   131,   138,   139,   155,   137,   127,   138,
    4336      153,   157,   127,   101,   335,   336,   127,   214,   336,   349,
    4337      126,   127,   127,   127,   155,   104,   126,   126,   102,   127,
    4338      101,   335,   336,   101,   341,   101,   341,   336,   215,   104,
    4339        7,   111,   127,   155,   251,   251,   250,   254,   254,   255,
    4340      247,   102,   108,   108,   102,   104,    89,   115,   127,   127,
    4341      138,   265,   155,   108,   124,   201,   205,   216,   220,   101,
    4342      101,   162,   101,   101,   124,   131,   124,   131,   111,   131,
    4343      161,   101,   164,   124,   155,   126,   109,   124,   127,   126,
    4344      127,   200,   102,   155,   251,   251,   298,   336,   102,   104,
    4345      101,   106,   261,   261,   127,   101,   335,   336,   126,   102,
    4346      126,   127,   295,   107,   126,   127,   127,   102,   106,   154,
    4347      124,   190,   192,   108,   127,   358,   156,   104,   127,    78,
    4348      105,   108,   127,   127,   104,   127,   102,   126,   102,   214,
    4349      349,   104,   104,   104,   127,   247,   247,   102,   126,   126,
    4350      126,   155,   155,   127,   104,   127,   127,   127,   127,   102,
    4351      126,   126,   154,   154,   104,   104,   127,   127,   261,   216,
    4352      160,   160,    45,   160,   126,   124,   124,   160,   124,   124,
    4353      160,    54,    55,   185,   186,   187,   124,   127,   298,   166,
    4354      107,   124,   127,   127,   278,   236,   106,   104,   126,    89,
    4355      256,   257,   102,   285,   108,   124,   108,   124,   107,   283,
    4356      102,   102,   109,   158,   104,   107,   104,   103,   139,   103,
    4357      139,   139,   104,   104,   104,   251,   104,   127,   127,   251,
    4358      251,   251,   127,   127,   104,   104,   102,   102,   104,   108,
    4359       89,   250,    89,   127,   104,   104,   102,   102,   101,   102,
    4360      161,   182,   201,   124,   102,   101,   164,   187,    54,   104,
    4361      162,   102,   102,   102,   107,   236,   251,   106,   126,   126,
    4362      284,   124,    75,   193,   127,   109,   126,   126,   127,   102,
    4363      102,   127,   127,   127,   104,   104,   126,   127,   104,   162,
    4364       42,    43,   106,   172,   173,   174,   160,   162,   127,   102,
    4365      161,   106,   174,    89,   126,   101,   106,   261,   107,   127,
    4366      126,   259,   295,   107,   102,   108,   104,   155,   138,   138,
    4367      102,   102,   102,   102,   254,    40,   154,   170,   171,   296,
    4368      109,   126,   162,   172,   102,   124,   162,   124,   126,   102,
    4369      126,    89,   126,   236,   106,   102,   284,   124,    75,   109,
    4370      127,   127,   162,    89,   108,   109,   127,   194,   195,   201,
    4371      124,   161,   161,   194,   164,   188,   214,   352,   102,   126,
    4372      107,   236,   107,   155,   104,   104,   154,   170,   173,   175,
    4373      176,   126,   124,   173,   177,   178,   127,   101,   111,   295,
    4374      343,   131,   164,   188,   107,   101,   162,   167,   107,   173,
    4375      201,   161,    52,   167,   180,   107,   173,   102,   216,   127,
    4376      278,   162,   167,   124,   179,   180,   167,   180,   164,   102,
    4377      102,   179,   127,   164,   127
     4240     124,   216,   216,   126,    38,   103,   214,   236,   237,   238,
     4241     239,   352,   356,   106,   245,   261,   106,   216,   280,   124,
     4242     124,   291,   126,   131,   258,     3,   127,   196,   197,   211,
     4243     213,   216,   126,   297,   101,   297,   155,   305,   216,   101,
     4244     126,   259,   106,    32,    33,    34,   214,   272,   273,   275,
     4245     126,   121,   123,   277,   126,   217,   223,   224,   259,   301,
     4246     302,   303,   140,   153,   154,   101,   140,   142,   101,   140,
     4247     101,   101,   140,   140,   131,   103,   155,   160,   164,   214,
     4248     262,   352,   126,   142,   142,    75,    78,    79,    80,   101,
     4249     103,   105,    90,    91,    92,    93,    94,    95,    96,    97,
     4250      98,    99,   123,   159,   142,   111,   116,   117,   113,   114,
     4251      81,    82,    83,    84,   118,   119,    85,    86,   112,   120,
     4252     121,    87,    88,   122,   123,   359,   101,   111,   331,   332,
     4253     333,   334,   335,   102,   108,   101,   335,   103,   336,   101,
     4254     335,   336,   126,   103,   111,   127,   214,   216,   347,   348,
     4255     356,   357,   104,   127,    67,   101,   103,   111,   305,   322,
     4256     323,   324,   325,   326,   327,   328,   329,   330,   336,   337,
     4257     338,   339,   340,   341,   342,   111,   356,   216,   127,   127,
     4258     111,   214,   216,   349,   259,   214,   336,   349,   259,   127,
     4259     126,   126,   126,   126,    65,   103,   105,   261,   265,   266,
     4260     267,   268,   269,   126,   126,   126,   126,   126,   126,   295,
     4261     102,   102,   102,   102,   102,   102,   102,   304,   317,   101,
     4262     264,   126,   196,   126,   295,   160,   263,   160,   263,   295,
     4263     278,   103,   127,   196,   297,   164,   126,   196,   214,   272,
     4264     278,   238,   239,   126,   101,   109,   111,   240,   242,   304,
     4265     305,   317,   335,   343,   344,   345,   346,   107,   237,   108,
     4266     124,   108,   124,   261,   236,   108,   358,   123,   246,   245,
     4267     216,   251,   252,   253,   256,   257,   102,   108,   164,   126,
     4268     111,   155,   126,   213,   216,   250,   348,   356,   289,   290,
     4269     101,   111,   322,   102,   108,   359,   261,   272,   101,   106,
     4270     261,   263,   272,   102,   108,   101,   102,   109,   262,   262,
     4271     103,   131,   137,   155,   263,   262,   126,   102,   108,   102,
     4272     101,   111,   343,   102,   108,   127,   155,   103,   131,   103,
     4273     136,   137,   126,   103,   131,   155,   155,   142,   142,   142,
     4274     143,   143,   144,   144,   145,   145,   145,   145,   146,   146,
     4275     147,   148,   149,   150,   151,   109,   160,   155,   126,   332,
     4276     333,   334,   216,   331,   298,   298,   155,   263,   126,   126,
     4277     258,   127,   216,   220,   126,   104,   356,    67,   129,   214,
     4278     336,   354,   104,   101,   126,   305,   323,   324,   325,   328,
     4279     338,   339,   340,   126,   216,   322,   326,   337,   101,   298,
     4280     341,   359,   298,   298,   359,   101,   298,   341,   298,   298,
     4281     298,   298,   336,   214,   347,   357,   259,   104,   108,   104,
     4282     108,   359,   214,   349,   359,   104,   247,   248,   249,   250,
     4283     247,   259,   127,   155,   126,   103,   261,   109,   108,   358,
     4284     265,   103,   109,   269,    28,   198,   199,   259,   247,   131,
     4285     295,   131,   297,   101,   335,   336,   101,   335,   336,   133,
     4286     111,   127,   164,   251,   102,   102,   102,   102,   102,   126,
     4287     104,   164,   196,   164,   101,   111,   127,   127,   124,   124,
     4288     103,   127,   305,   344,   345,   346,   154,   216,   343,   241,
     4289     242,   241,   298,   298,   261,   298,   107,   261,   107,   154,
     4290     358,   127,   127,   131,   211,   127,   127,   247,   101,   111,
     4291     356,   127,   107,   216,   273,   274,   127,   126,   126,   101,
     4292     127,   102,   302,   160,   161,   124,    75,   190,   191,   192,
     4293     102,   102,   126,   109,   102,   102,   102,   127,   155,   216,
     4294     106,   142,   157,   155,   156,   158,   104,   108,   127,   126,
     4295     126,   102,   108,   155,   126,   153,   109,   251,   102,   102,
     4296     102,   331,   251,   102,   104,   103,   111,   155,   155,   216,
     4297     127,   101,   101,   214,   354,   328,   251,   102,   102,   102,
     4298     102,   102,   102,   102,     7,   127,   216,   322,   326,   337,
     4299     126,   126,   359,   126,   126,   101,   127,   127,   127,   127,
     4300     264,   104,   127,   153,   154,   155,   296,   126,   265,   267,
     4301     107,   126,   200,   261,    38,    39,    41,    44,    45,    46,
     4302      47,    48,    49,    50,    51,    53,    56,   103,   131,   161,
     4303     162,   163,   164,   165,   166,   168,   169,   181,   183,   184,
     4304     189,   201,   294,    28,   127,   123,   264,   126,   126,   102,
     4305     104,   127,   127,    67,   164,   216,   102,   102,   126,   104,
     4306     102,   102,   102,   343,   240,   246,   107,   102,   108,   104,
     4307     104,   127,   216,   108,   359,   276,   102,   272,   204,   206,
     4308     214,   284,   285,   286,   287,   278,   102,   102,   101,   102,
     4309     109,   108,   155,   155,   104,   266,   108,   127,   158,   104,
     4310     131,   138,   139,   155,   137,   127,   138,   153,   157,   127,
     4311     101,   335,   336,   127,   214,   336,   349,   126,   127,   127,
     4312     127,   155,   104,   126,   126,   102,   127,   101,   335,   336,
     4313     101,   341,   101,   341,   336,   215,   104,     7,   111,   127,
     4314     155,   251,   251,   250,   254,   254,   255,   247,   102,   108,
     4315     108,   102,   104,    89,   115,   127,   127,   138,   265,   155,
     4316     108,   124,   201,   205,   216,   220,   101,   101,   162,   101,
     4317     101,   124,   131,   124,   131,   111,   131,   161,   101,   164,
     4318     124,   155,   126,   109,   124,   127,   126,   127,   200,   102,
     4319     155,   251,   251,   298,   336,   102,   104,   101,   106,   261,
     4320     261,   127,   101,   335,   336,   126,   102,   126,   127,   295,
     4321     107,   126,   127,   127,   102,   106,   154,   124,   190,   192,
     4322     108,   127,   358,   156,   104,   127,    78,   105,   108,   127,
     4323     127,   104,   127,   102,   126,   102,   214,   349,   104,   104,
     4324     104,   127,   247,   247,   102,   126,   126,   126,   155,   155,
     4325     127,   104,   127,   127,   127,   127,   102,   126,   126,   154,
     4326     154,   104,   104,   127,   127,   261,   216,   160,   160,    45,
     4327     160,   126,   124,   124,   160,   124,   124,   160,    54,    55,
     4328     185,   186,   187,   124,   127,   298,   166,   107,   124,   127,
     4329     127,   278,   236,   106,   104,   126,    89,   256,   257,   102,
     4330     285,   108,   124,   108,   124,   107,   283,   102,   102,   109,
     4331     158,   104,   107,   104,   103,   139,   103,   139,   139,   104,
     4332     104,   104,   251,   104,   127,   127,   251,   251,   251,   127,
     4333     127,   104,   104,   102,   102,   104,   108,    89,   250,    89,
     4334     127,   104,   104,   102,   102,   101,   102,   161,   182,   201,
     4335     124,   102,   101,   164,   187,    54,   104,   162,   102,   102,
     4336     102,   107,   236,   251,   106,   126,   126,   284,   124,    75,
     4337     193,   127,   109,   126,   126,   127,   102,   102,   127,   127,
     4338     127,   104,   104,   126,   127,   104,   162,    42,    43,   106,
     4339     172,   173,   174,   160,   162,   127,   102,   161,   106,   174,
     4340      89,   126,   101,   106,   261,   107,   127,   126,   259,   295,
     4341     107,   102,   108,   104,   155,   138,   138,   102,   102,   102,
     4342     102,   254,    40,   154,   170,   171,   296,   109,   126,   162,
     4343     172,   102,   124,   162,   124,   126,   102,   126,    89,   126,
     4344     236,   106,   102,   284,   124,    75,   109,   127,   127,   162,
     4345      89,   108,   109,   127,   194,   195,   201,   124,   161,   161,
     4346     194,   164,   188,   214,   352,   102,   126,   107,   236,   107,
     4347     155,   104,   104,   154,   170,   173,   175,   176,   126,   124,
     4348     173,   177,   178,   127,   101,   111,   295,   343,   131,   164,
     4349     188,   107,   101,   162,   167,   107,   173,   201,   161,    52,
     4350     167,   180,   107,   173,   102,   216,   127,   278,   162,   167,
     4351     124,   179,   180,   167,   180,   164,   102,   102,   179,   127,
     4352     164,   127
    43784353};
    43794354
     
    52125187
    52135188/* Line 1806 of yacc.c  */
    5214 #line 279 "parser.yy"
     5189#line 282 "parser.yy"
    52155190    {
    52165191                        typedefTable.enterScope();
     
    52215196
    52225197/* Line 1806 of yacc.c  */
    5223 #line 285 "parser.yy"
     5198#line 288 "parser.yy"
    52245199    {
    52255200                        typedefTable.leaveScope();
     
    52305205
    52315206/* Line 1806 of yacc.c  */
    5232 #line 294 "parser.yy"
     5207#line 298 "parser.yy"
    52335208    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    52345209    break;
     
    52375212
    52385213/* Line 1806 of yacc.c  */
    5239 #line 295 "parser.yy"
     5214#line 299 "parser.yy"
    52405215    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    52415216    break;
     
    52445219
    52455220/* Line 1806 of yacc.c  */
    5246 #line 296 "parser.yy"
     5221#line 300 "parser.yy"
    52475222    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    52485223    break;
     
    52515226
    52525227/* Line 1806 of yacc.c  */
    5253 #line 320 "parser.yy"
     5228#line 324 "parser.yy"
    52545229    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
    52555230    break;
     
    52585233
    52595234/* Line 1806 of yacc.c  */
    5260 #line 321 "parser.yy"
     5235#line 325 "parser.yy"
    52615236    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    52625237    break;
     
    52655240
    52665241/* Line 1806 of yacc.c  */
    5267 #line 328 "parser.yy"
     5242#line 332 "parser.yy"
     5243    { (yyval.en) = new VarRefNode((yyvsp[(1) - (1)].tok)); }
     5244    break;
     5245
     5246  case 18:
     5247
     5248/* Line 1806 of yacc.c  */
     5249#line 334 "parser.yy"
     5250    { (yyval.en) = new VarRefNode((yyvsp[(1) - (1)].tok)); }
     5251    break;
     5252
     5253  case 19:
     5254
     5255/* Line 1806 of yacc.c  */
     5256#line 336 "parser.yy"
     5257    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     5258    break;
     5259
     5260  case 20:
     5261
     5262/* Line 1806 of yacc.c  */
     5263#line 338 "parser.yy"
     5264    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     5265    break;
     5266
     5267  case 21:
     5268
     5269/* Line 1806 of yacc.c  */
     5270#line 340 "parser.yy"
     5271    { (yyval.en) = (yyvsp[(2) - (3)].en); }
     5272    break;
     5273
     5274  case 22:
     5275
     5276/* Line 1806 of yacc.c  */
     5277#line 342 "parser.yy"
     5278    { (yyval.en) = new ValofExprNode((yyvsp[(2) - (3)].sn)); }
     5279    break;
     5280
     5281  case 24:
     5282
     5283/* Line 1806 of yacc.c  */
     5284#line 352 "parser.yy"
     5285    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Index), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en)); }
     5286    break;
     5287
     5288  case 25:
     5289
     5290/* Line 1806 of yacc.c  */
     5291#line 354 "parser.yy"
     5292    { (yyval.en) = new CompositeExprNode((yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en)); }
     5293    break;
     5294
     5295  case 26:
     5296
     5297/* Line 1806 of yacc.c  */
     5298#line 356 "parser.yy"
     5299    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::FieldSel), (yyvsp[(1) - (3)].en), new VarRefNode((yyvsp[(3) - (3)].tok))); }
     5300    break;
     5301
     5302  case 28:
     5303
     5304/* Line 1806 of yacc.c  */
     5305#line 359 "parser.yy"
     5306    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::PFieldSel), (yyvsp[(1) - (3)].en), new VarRefNode((yyvsp[(3) - (3)].tok))); }
     5307    break;
     5308
     5309  case 30:
     5310
     5311/* Line 1806 of yacc.c  */
     5312#line 362 "parser.yy"
     5313    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::IncrPost), (yyvsp[(1) - (2)].en)); }
     5314    break;
     5315
     5316  case 31:
     5317
     5318/* Line 1806 of yacc.c  */
     5319#line 364 "parser.yy"
     5320    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::DecrPost), (yyvsp[(1) - (2)].en)); }
     5321    break;
     5322
     5323  case 32:
     5324
     5325/* Line 1806 of yacc.c  */
     5326#line 367 "parser.yy"
     5327    { (yyval.en) = 0; }
     5328    break;
     5329
     5330  case 34:
     5331
     5332/* Line 1806 of yacc.c  */
     5333#line 373 "parser.yy"
     5334    { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (3)].en)->set_link((yyvsp[(3) - (3)].en))); }
     5335    break;
     5336
     5337  case 35:
     5338
     5339/* Line 1806 of yacc.c  */
     5340#line 378 "parser.yy"
     5341    { (yyval.en) = 0; }
     5342    break;
     5343
     5344  case 37:
     5345
     5346/* Line 1806 of yacc.c  */
     5347#line 381 "parser.yy"
     5348    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_asArgName((yyvsp[(1) - (3)].tok)); }
     5349    break;
     5350
     5351  case 38:
     5352
     5353/* Line 1806 of yacc.c  */
     5354#line 386 "parser.yy"
     5355    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_asArgName((yyvsp[(3) - (7)].en)); }
     5356    break;
     5357
     5358  case 39:
     5359
     5360/* Line 1806 of yacc.c  */
     5361#line 388 "parser.yy"
     5362    { (yyval.en) = (yyvsp[(9) - (9)].en)->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
     5363    break;
     5364
     5365  case 41:
     5366
     5367/* Line 1806 of yacc.c  */
     5368#line 393 "parser.yy"
     5369    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5370    break;
     5371
     5372  case 42:
     5373
     5374/* Line 1806 of yacc.c  */
     5375#line 398 "parser.yy"
    52685376    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    52695377    break;
    52705378
    5271   case 18:
    5272 
    5273 /* Line 1806 of yacc.c  */
    5274 #line 330 "parser.yy"
    5275     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    5276     break;
    5277 
    5278   case 19:
    5279 
    5280 /* Line 1806 of yacc.c  */
    5281 #line 332 "parser.yy"
    5282     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5283     break;
    5284 
    5285   case 20:
    5286 
    5287 /* Line 1806 of yacc.c  */
    5288 #line 334 "parser.yy"
    5289     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5290     break;
    5291 
    5292   case 21:
    5293 
    5294 /* Line 1806 of yacc.c  */
    5295 #line 336 "parser.yy"
    5296     { (yyval.en) = (yyvsp[(2) - (3)].en); }
    5297     break;
    5298 
    5299   case 22:
    5300 
    5301 /* Line 1806 of yacc.c  */
    5302 #line 338 "parser.yy"
    5303     { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    5304     break;
    5305 
    5306   case 24:
    5307 
    5308 /* Line 1806 of yacc.c  */
    5309 #line 348 "parser.yy"
    5310     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
    5311     break;
    5312 
    5313   case 25:
    5314 
    5315 /* Line 1806 of yacc.c  */
    5316 #line 350 "parser.yy"
    5317     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
    5318     break;
    5319 
    5320   case 26:
    5321 
    5322 /* Line 1806 of yacc.c  */
    5323 #line 352 "parser.yy"
    5324     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    5325     break;
    5326 
    5327   case 28:
    5328 
    5329 /* Line 1806 of yacc.c  */
    5330 #line 355 "parser.yy"
    5331     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    5332     break;
    5333 
    5334   case 30:
    5335 
    5336 /* Line 1806 of yacc.c  */
    5337 #line 358 "parser.yy"
    5338     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
    5339     break;
    5340 
    5341   case 31:
    5342 
    5343 /* Line 1806 of yacc.c  */
    5344 #line 360 "parser.yy"
    5345     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
    5346     break;
    5347 
    5348   case 32:
    5349 
    5350 /* Line 1806 of yacc.c  */
    5351 #line 363 "parser.yy"
     5379  case 43:
     5380
     5381/* Line 1806 of yacc.c  */
     5382#line 400 "parser.yy"
     5383    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::FieldSel), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en)); }
     5384    break;
     5385
     5386  case 44:
     5387
     5388/* Line 1806 of yacc.c  */
     5389#line 402 "parser.yy"
     5390    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::FieldSel), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en)); }
     5391    break;
     5392
     5393  case 45:
     5394
     5395/* Line 1806 of yacc.c  */
     5396#line 404 "parser.yy"
     5397    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::PFieldSel), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en)); }
     5398    break;
     5399
     5400  case 46:
     5401
     5402/* Line 1806 of yacc.c  */
     5403#line 406 "parser.yy"
     5404    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::PFieldSel), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en)); }
     5405    break;
     5406
     5407  case 48:
     5408
     5409/* Line 1806 of yacc.c  */
     5410#line 412 "parser.yy"
     5411    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Incr), (yyvsp[(2) - (2)].en)); }
     5412    break;
     5413
     5414  case 49:
     5415
     5416/* Line 1806 of yacc.c  */
     5417#line 414 "parser.yy"
     5418    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Decr), (yyvsp[(2) - (2)].en)); }
     5419    break;
     5420
     5421  case 50:
     5422
     5423/* Line 1806 of yacc.c  */
     5424#line 416 "parser.yy"
     5425    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     5426    break;
     5427
     5428  case 51:
     5429
     5430/* Line 1806 of yacc.c  */
     5431#line 418 "parser.yy"
     5432    { (yyval.en) = new CompositeExprNode((yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en)); }
     5433    break;
     5434
     5435  case 52:
     5436
     5437/* Line 1806 of yacc.c  */
     5438#line 420 "parser.yy"
     5439    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Neg), (yyvsp[(2) - (2)].en)); }
     5440    break;
     5441
     5442  case 53:
     5443
     5444/* Line 1806 of yacc.c  */
     5445#line 422 "parser.yy"
     5446    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::PointTo), (yyvsp[(2) - (2)].en)); }
     5447    break;
     5448
     5449  case 54:
     5450
     5451/* Line 1806 of yacc.c  */
     5452#line 428 "parser.yy"
     5453    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::SizeOf), (yyvsp[(2) - (2)].en)); }
     5454    break;
     5455
     5456  case 55:
     5457
     5458/* Line 1806 of yacc.c  */
     5459#line 430 "parser.yy"
     5460    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::SizeOf), new TypeValueNode((yyvsp[(3) - (4)].decl))); }
     5461    break;
     5462
     5463  case 56:
     5464
     5465/* Line 1806 of yacc.c  */
     5466#line 432 "parser.yy"
     5467    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Attr), new VarRefNode((yyvsp[(1) - (1)].tok))); }
     5468    break;
     5469
     5470  case 57:
     5471
     5472/* Line 1806 of yacc.c  */
     5473#line 434 "parser.yy"
     5474    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Attr), new VarRefNode((yyvsp[(1) - (4)].tok)), new TypeValueNode((yyvsp[(3) - (4)].decl))); }
     5475    break;
     5476
     5477  case 58:
     5478
     5479/* Line 1806 of yacc.c  */
     5480#line 436 "parser.yy"
     5481    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Attr), new VarRefNode((yyvsp[(1) - (4)].tok)), (yyvsp[(3) - (4)].en)); }
     5482    break;
     5483
     5484  case 59:
     5485
     5486/* Line 1806 of yacc.c  */
     5487#line 438 "parser.yy"
     5488    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::AlignOf), (yyvsp[(2) - (2)].en)); }
     5489    break;
     5490
     5491  case 60:
     5492
     5493/* Line 1806 of yacc.c  */
     5494#line 440 "parser.yy"
     5495    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::AlignOf), new TypeValueNode((yyvsp[(3) - (4)].decl))); }
     5496    break;
     5497
     5498  case 61:
     5499
     5500/* Line 1806 of yacc.c  */
     5501#line 442 "parser.yy"
     5502    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::LabelAddress), new VarRefNode((yyvsp[(2) - (2)].tok), true)); }
     5503    break;
     5504
     5505  case 62:
     5506
     5507/* Line 1806 of yacc.c  */
     5508#line 446 "parser.yy"
     5509    { (yyval.en) = new OperatorNode(OperatorNode::AddressOf); }
     5510    break;
     5511
     5512  case 63:
     5513
     5514/* Line 1806 of yacc.c  */
     5515#line 447 "parser.yy"
     5516    { (yyval.en) = new OperatorNode(OperatorNode::UnPlus); }
     5517    break;
     5518
     5519  case 64:
     5520
     5521/* Line 1806 of yacc.c  */
     5522#line 448 "parser.yy"
     5523    { (yyval.en) = new OperatorNode(OperatorNode::UnMinus); }
     5524    break;
     5525
     5526  case 65:
     5527
     5528/* Line 1806 of yacc.c  */
     5529#line 449 "parser.yy"
     5530    { (yyval.en) = new OperatorNode(OperatorNode::BitNeg); }
     5531    break;
     5532
     5533  case 67:
     5534
     5535/* Line 1806 of yacc.c  */
     5536#line 455 "parser.yy"
     5537    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Cast), new TypeValueNode((yyvsp[(2) - (4)].decl)), (yyvsp[(4) - (4)].en)); }
     5538    break;
     5539
     5540  case 68:
     5541
     5542/* Line 1806 of yacc.c  */
     5543#line 457 "parser.yy"
     5544    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Cast), new TypeValueNode((yyvsp[(2) - (4)].decl)), (yyvsp[(4) - (4)].en)); }
     5545    break;
     5546
     5547  case 70:
     5548
     5549/* Line 1806 of yacc.c  */
     5550#line 463 "parser.yy"
     5551    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Mul),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5552    break;
     5553
     5554  case 71:
     5555
     5556/* Line 1806 of yacc.c  */
     5557#line 465 "parser.yy"
     5558    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Div),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5559    break;
     5560
     5561  case 72:
     5562
     5563/* Line 1806 of yacc.c  */
     5564#line 467 "parser.yy"
     5565    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Mod),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5566    break;
     5567
     5568  case 74:
     5569
     5570/* Line 1806 of yacc.c  */
     5571#line 473 "parser.yy"
     5572    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Plus),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5573    break;
     5574
     5575  case 75:
     5576
     5577/* Line 1806 of yacc.c  */
     5578#line 475 "parser.yy"
     5579    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Minus),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5580    break;
     5581
     5582  case 77:
     5583
     5584/* Line 1806 of yacc.c  */
     5585#line 481 "parser.yy"
     5586    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::LShift),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5587    break;
     5588
     5589  case 78:
     5590
     5591/* Line 1806 of yacc.c  */
     5592#line 483 "parser.yy"
     5593    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::RShift),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5594    break;
     5595
     5596  case 80:
     5597
     5598/* Line 1806 of yacc.c  */
     5599#line 489 "parser.yy"
     5600    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::LThan),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5601    break;
     5602
     5603  case 81:
     5604
     5605/* Line 1806 of yacc.c  */
     5606#line 491 "parser.yy"
     5607    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::GThan),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5608    break;
     5609
     5610  case 82:
     5611
     5612/* Line 1806 of yacc.c  */
     5613#line 493 "parser.yy"
     5614    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::LEThan),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5615    break;
     5616
     5617  case 83:
     5618
     5619/* Line 1806 of yacc.c  */
     5620#line 495 "parser.yy"
     5621    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::GEThan),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5622    break;
     5623
     5624  case 85:
     5625
     5626/* Line 1806 of yacc.c  */
     5627#line 501 "parser.yy"
     5628    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Eq), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
     5629    break;
     5630
     5631  case 86:
     5632
     5633/* Line 1806 of yacc.c  */
     5634#line 503 "parser.yy"
     5635    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Neq), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
     5636    break;
     5637
     5638  case 88:
     5639
     5640/* Line 1806 of yacc.c  */
     5641#line 509 "parser.yy"
     5642    { (yyval.en) =new CompositeExprNode(new OperatorNode(OperatorNode::BitAnd), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
     5643    break;
     5644
     5645  case 90:
     5646
     5647/* Line 1806 of yacc.c  */
     5648#line 515 "parser.yy"
     5649    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Xor), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
     5650    break;
     5651
     5652  case 92:
     5653
     5654/* Line 1806 of yacc.c  */
     5655#line 521 "parser.yy"
     5656    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::BitOr), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
     5657    break;
     5658
     5659  case 94:
     5660
     5661/* Line 1806 of yacc.c  */
     5662#line 527 "parser.yy"
     5663    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::And), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
     5664    break;
     5665
     5666  case 96:
     5667
     5668/* Line 1806 of yacc.c  */
     5669#line 533 "parser.yy"
     5670    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Or), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
     5671    break;
     5672
     5673  case 98:
     5674
     5675/* Line 1806 of yacc.c  */
     5676#line 539 "parser.yy"
     5677    { (yyval.en) = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en)) ) ); }
     5678    break;
     5679
     5680  case 99:
     5681
     5682/* Line 1806 of yacc.c  */
     5683#line 541 "parser.yy"
     5684    { (yyval.en)=new CompositeExprNode(new OperatorNode(OperatorNode::NCond),(yyvsp[(1) - (4)].en),(yyvsp[(4) - (4)].en)); }
     5685    break;
     5686
     5687  case 100:
     5688
     5689/* Line 1806 of yacc.c  */
     5690#line 543 "parser.yy"
     5691    { (yyval.en) = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en)) ) ); }
     5692    break;
     5693
     5694  case 103:
     5695
     5696/* Line 1806 of yacc.c  */
     5697#line 554 "parser.yy"
     5698    { (yyval.en) =new CompositeExprNode(new OperatorNode(OperatorNode::Assign), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
     5699    break;
     5700
     5701  case 104:
     5702
     5703/* Line 1806 of yacc.c  */
     5704#line 556 "parser.yy"
     5705    { (yyval.en) =new CompositeExprNode((yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
     5706    break;
     5707
     5708  case 105:
     5709
     5710/* Line 1806 of yacc.c  */
     5711#line 558 "parser.yy"
     5712    { (yyval.en) = ((yyvsp[(2) - (2)].en) == 0) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
     5713    break;
     5714
     5715  case 106:
     5716
     5717/* Line 1806 of yacc.c  */
     5718#line 563 "parser.yy"
     5719    { (yyval.en) = new NullExprNode; }
     5720    break;
     5721
     5722  case 108:
     5723
     5724/* Line 1806 of yacc.c  */
     5725#line 571 "parser.yy"
     5726    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
     5727    break;
     5728
     5729  case 109:
     5730
     5731/* Line 1806 of yacc.c  */
     5732#line 573 "parser.yy"
     5733    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
     5734    break;
     5735
     5736  case 110:
     5737
     5738/* Line 1806 of yacc.c  */
     5739#line 575 "parser.yy"
     5740    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
     5741    break;
     5742
     5743  case 111:
     5744
     5745/* Line 1806 of yacc.c  */
     5746#line 577 "parser.yy"
     5747    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
     5748    break;
     5749
     5750  case 113:
     5751
     5752/* Line 1806 of yacc.c  */
     5753#line 583 "parser.yy"
     5754    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5755    break;
     5756
     5757  case 114:
     5758
     5759/* Line 1806 of yacc.c  */
     5760#line 587 "parser.yy"
     5761    { (yyval.en) = new OperatorNode(OperatorNode::MulAssn); }
     5762    break;
     5763
     5764  case 115:
     5765
     5766/* Line 1806 of yacc.c  */
     5767#line 588 "parser.yy"
     5768    { (yyval.en) = new OperatorNode(OperatorNode::DivAssn); }
     5769    break;
     5770
     5771  case 116:
     5772
     5773/* Line 1806 of yacc.c  */
     5774#line 589 "parser.yy"
     5775    { (yyval.en) = new OperatorNode(OperatorNode::ModAssn); }
     5776    break;
     5777
     5778  case 117:
     5779
     5780/* Line 1806 of yacc.c  */
     5781#line 590 "parser.yy"
     5782    { (yyval.en) = new OperatorNode(OperatorNode::PlusAssn); }
     5783    break;
     5784
     5785  case 118:
     5786
     5787/* Line 1806 of yacc.c  */
     5788#line 591 "parser.yy"
     5789    { (yyval.en) = new OperatorNode(OperatorNode::MinusAssn); }
     5790    break;
     5791
     5792  case 119:
     5793
     5794/* Line 1806 of yacc.c  */
     5795#line 592 "parser.yy"
     5796    { (yyval.en) = new OperatorNode(OperatorNode::LSAssn); }
     5797    break;
     5798
     5799  case 120:
     5800
     5801/* Line 1806 of yacc.c  */
     5802#line 593 "parser.yy"
     5803    { (yyval.en) = new OperatorNode(OperatorNode::RSAssn); }
     5804    break;
     5805
     5806  case 121:
     5807
     5808/* Line 1806 of yacc.c  */
     5809#line 594 "parser.yy"
     5810    { (yyval.en) = new OperatorNode(OperatorNode::AndAssn); }
     5811    break;
     5812
     5813  case 122:
     5814
     5815/* Line 1806 of yacc.c  */
     5816#line 595 "parser.yy"
     5817    { (yyval.en) = new OperatorNode(OperatorNode::ERAssn); }
     5818    break;
     5819
     5820  case 123:
     5821
     5822/* Line 1806 of yacc.c  */
     5823#line 596 "parser.yy"
     5824    { (yyval.en) = new OperatorNode(OperatorNode::OrAssn); }
     5825    break;
     5826
     5827  case 125:
     5828
     5829/* Line 1806 of yacc.c  */
     5830#line 602 "parser.yy"
     5831    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Comma),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5832    break;
     5833
     5834  case 126:
     5835
     5836/* Line 1806 of yacc.c  */
     5837#line 607 "parser.yy"
    53525838    { (yyval.en) = 0; }
    53535839    break;
    53545840
    5355   case 34:
    5356 
    5357 /* Line 1806 of yacc.c  */
    5358 #line 369 "parser.yy"
    5359     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    5360     break;
    5361 
    5362   case 35:
    5363 
    5364 /* Line 1806 of yacc.c  */
    5365 #line 374 "parser.yy"
    5366     { (yyval.en) = 0; }
    5367     break;
    5368 
    5369   case 37:
    5370 
    5371 /* Line 1806 of yacc.c  */
    5372 #line 377 "parser.yy"
    5373     { (yyval.en) = (yyvsp[(3) - (3)].en)->set_asArgName( (yyvsp[(1) - (3)].tok) ); }
    5374     break;
    5375 
    5376   case 38:
    5377 
    5378 /* Line 1806 of yacc.c  */
    5379 #line 382 "parser.yy"
    5380     { (yyval.en) = (yyvsp[(7) - (7)].en)->set_asArgName( (yyvsp[(3) - (7)].en) ); }
    5381     break;
    5382 
    5383   case 39:
    5384 
    5385 /* Line 1806 of yacc.c  */
    5386 #line 384 "parser.yy"
    5387     { (yyval.en) = (yyvsp[(9) - (9)].en)->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
    5388     break;
    5389 
    5390   case 41:
    5391 
    5392 /* Line 1806 of yacc.c  */
    5393 #line 389 "parser.yy"
    5394     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5395     break;
    5396 
    5397   case 42:
    5398 
    5399 /* Line 1806 of yacc.c  */
    5400 #line 394 "parser.yy"
    5401     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    5402     break;
    5403 
    5404   case 43:
    5405 
    5406 /* Line 1806 of yacc.c  */
    5407 #line 396 "parser.yy"
    5408     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    5409     break;
    5410 
    5411   case 44:
    5412 
    5413 /* Line 1806 of yacc.c  */
    5414 #line 398 "parser.yy"
    5415     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    5416     break;
    5417 
    5418   case 45:
    5419 
    5420 /* Line 1806 of yacc.c  */
    5421 #line 400 "parser.yy"
    5422     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    5423     break;
    5424 
    5425   case 46:
    5426 
    5427 /* Line 1806 of yacc.c  */
    5428 #line 402 "parser.yy"
    5429     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    5430     break;
    5431 
    5432   case 48:
    5433 
    5434 /* Line 1806 of yacc.c  */
    5435 #line 408 "parser.yy"
    5436     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
    5437     break;
    5438 
    5439   case 49:
    5440 
    5441 /* Line 1806 of yacc.c  */
    5442 #line 410 "parser.yy"
    5443     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
    5444     break;
    5445 
    5446   case 50:
    5447 
    5448 /* Line 1806 of yacc.c  */
    5449 #line 412 "parser.yy"
    5450     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    5451     break;
    5452 
    5453   case 51:
    5454 
    5455 /* Line 1806 of yacc.c  */
    5456 #line 414 "parser.yy"
    5457     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    5458     break;
    5459 
    5460   case 52:
    5461 
    5462 /* Line 1806 of yacc.c  */
    5463 #line 416 "parser.yy"
    5464     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
    5465     break;
    5466 
    5467   case 53:
    5468 
    5469 /* Line 1806 of yacc.c  */
    5470 #line 418 "parser.yy"
    5471     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
    5472     break;
    5473 
    5474   case 54:
    5475 
    5476 /* Line 1806 of yacc.c  */
    5477 #line 424 "parser.yy"
    5478     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
    5479     break;
    5480 
    5481   case 55:
    5482 
    5483 /* Line 1806 of yacc.c  */
    5484 #line 426 "parser.yy"
    5485     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5486     break;
    5487 
    5488   case 56:
    5489 
    5490 /* Line 1806 of yacc.c  */
    5491 #line 428 "parser.yy"
    5492     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
    5493     break;
    5494 
    5495   case 57:
    5496 
    5497 /* Line 1806 of yacc.c  */
    5498 #line 430 "parser.yy"
    5499     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5500     break;
    5501 
    5502   case 58:
    5503 
    5504 /* Line 1806 of yacc.c  */
    5505 #line 432 "parser.yy"
    5506     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
    5507     break;
    5508 
    5509   case 59:
    5510 
    5511 /* Line 1806 of yacc.c  */
    5512 #line 434 "parser.yy"
    5513     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
    5514     break;
    5515 
    5516   case 60:
    5517 
    5518 /* Line 1806 of yacc.c  */
    5519 #line 436 "parser.yy"
    5520     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5521     break;
    5522 
    5523   case 61:
    5524 
    5525 /* Line 1806 of yacc.c  */
    5526 #line 438 "parser.yy"
    5527     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }
    5528     break;
    5529 
    5530   case 62:
    5531 
    5532 /* Line 1806 of yacc.c  */
    5533 #line 442 "parser.yy"
    5534     { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
    5535     break;
    5536 
    5537   case 63:
    5538 
    5539 /* Line 1806 of yacc.c  */
    5540 #line 443 "parser.yy"
    5541     { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    5542     break;
    5543 
    5544   case 64:
    5545 
    5546 /* Line 1806 of yacc.c  */
    5547 #line 444 "parser.yy"
    5548     { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    5549     break;
    5550 
    5551   case 65:
    5552 
    5553 /* Line 1806 of yacc.c  */
    5554 #line 445 "parser.yy"
    5555     { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
    5556     break;
    5557 
    5558   case 67:
    5559 
    5560 /* Line 1806 of yacc.c  */
    5561 #line 451 "parser.yy"
    5562     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    5563     break;
    5564 
    5565   case 68:
    5566 
    5567 /* Line 1806 of yacc.c  */
    5568 #line 453 "parser.yy"
    5569     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    5570     break;
    5571 
    5572   case 70:
    5573 
    5574 /* Line 1806 of yacc.c  */
    5575 #line 459 "parser.yy"
    5576     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5577     break;
    5578 
    5579   case 71:
    5580 
    5581 /* Line 1806 of yacc.c  */
    5582 #line 461 "parser.yy"
    5583     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5584     break;
    5585 
    5586   case 72:
    5587 
    5588 /* Line 1806 of yacc.c  */
    5589 #line 463 "parser.yy"
    5590     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5591     break;
    5592 
    5593   case 74:
    5594 
    5595 /* Line 1806 of yacc.c  */
    5596 #line 469 "parser.yy"
    5597     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5598     break;
    5599 
    5600   case 75:
    5601 
    5602 /* Line 1806 of yacc.c  */
    5603 #line 471 "parser.yy"
    5604     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5605     break;
    5606 
    5607   case 77:
    5608 
    5609 /* Line 1806 of yacc.c  */
    5610 #line 477 "parser.yy"
    5611     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5612     break;
    5613 
    5614   case 78:
    5615 
    5616 /* Line 1806 of yacc.c  */
    5617 #line 479 "parser.yy"
    5618     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5619     break;
    5620 
    5621   case 80:
    5622 
    5623 /* Line 1806 of yacc.c  */
    5624 #line 485 "parser.yy"
    5625     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5626     break;
    5627 
    5628   case 81:
    5629 
    5630 /* Line 1806 of yacc.c  */
    5631 #line 487 "parser.yy"
    5632     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5633     break;
    5634 
    5635   case 82:
    5636 
    5637 /* Line 1806 of yacc.c  */
    5638 #line 489 "parser.yy"
    5639     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5640     break;
    5641 
    5642   case 83:
    5643 
    5644 /* Line 1806 of yacc.c  */
    5645 #line 491 "parser.yy"
    5646     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5647     break;
    5648 
    5649   case 85:
    5650 
    5651 /* Line 1806 of yacc.c  */
    5652 #line 497 "parser.yy"
    5653     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5654     break;
    5655 
    5656   case 86:
    5657 
    5658 /* Line 1806 of yacc.c  */
    5659 #line 499 "parser.yy"
    5660     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5661     break;
    5662 
    5663   case 88:
    5664 
    5665 /* Line 1806 of yacc.c  */
    5666 #line 505 "parser.yy"
    5667     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5668     break;
    5669 
    5670   case 90:
    5671 
    5672 /* Line 1806 of yacc.c  */
    5673 #line 511 "parser.yy"
    5674     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5675     break;
    5676 
    5677   case 92:
    5678 
    5679 /* Line 1806 of yacc.c  */
    5680 #line 517 "parser.yy"
    5681     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5682     break;
    5683 
    5684   case 94:
    5685 
    5686 /* Line 1806 of yacc.c  */
    5687 #line 523 "parser.yy"
    5688     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5689     break;
    5690 
    5691   case 96:
    5692 
    5693 /* Line 1806 of yacc.c  */
    5694 #line 529 "parser.yy"
    5695     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5696     break;
    5697 
    5698   case 98:
    5699 
    5700 /* Line 1806 of yacc.c  */
    5701 #line 535 "parser.yy"
    5702     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    5703     break;
    5704 
    5705   case 99:
    5706 
    5707 /* Line 1806 of yacc.c  */
    5708 #line 537 "parser.yy"
    5709     { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    5710     break;
    5711 
    5712   case 100:
    5713 
    5714 /* Line 1806 of yacc.c  */
    5715 #line 539 "parser.yy"
    5716     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    5717     break;
    5718 
    5719   case 103:
    5720 
    5721 /* Line 1806 of yacc.c  */
    5722 #line 550 "parser.yy"
    5723     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5724     break;
    5725 
    5726   case 104:
    5727 
    5728 /* Line 1806 of yacc.c  */
    5729 #line 552 "parser.yy"
    5730     { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5731     break;
    5732 
    5733   case 105:
    5734 
    5735 /* Line 1806 of yacc.c  */
    5736 #line 554 "parser.yy"
    5737     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    5738     break;
    5739 
    5740   case 106:
    5741 
    5742 /* Line 1806 of yacc.c  */
    5743 #line 559 "parser.yy"
    5744     { (yyval.en) = new NullExprNode; }
    5745     break;
    5746 
    5747   case 108:
    5748 
    5749 /* Line 1806 of yacc.c  */
    5750 #line 567 "parser.yy"
    5751     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    5752     break;
    5753 
    5754   case 109:
    5755 
    5756 /* Line 1806 of yacc.c  */
    5757 #line 569 "parser.yy"
    5758     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
    5759     break;
    5760 
    5761   case 110:
    5762 
    5763 /* Line 1806 of yacc.c  */
    5764 #line 571 "parser.yy"
    5765     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    5766     break;
    5767 
    5768   case 111:
    5769 
    5770 /* Line 1806 of yacc.c  */
    5771 #line 573 "parser.yy"
    5772     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    5773     break;
    5774 
    5775   case 113:
    5776 
    5777 /* Line 1806 of yacc.c  */
    5778 #line 579 "parser.yy"
    5779     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5780     break;
    5781 
    5782   case 114:
    5783 
    5784 /* Line 1806 of yacc.c  */
    5785 #line 583 "parser.yy"
    5786     { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    5787     break;
    5788 
    5789   case 115:
    5790 
    5791 /* Line 1806 of yacc.c  */
    5792 #line 584 "parser.yy"
    5793     { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
    5794     break;
    5795 
    5796   case 116:
    5797 
    5798 /* Line 1806 of yacc.c  */
    5799 #line 585 "parser.yy"
    5800     { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
    5801     break;
    5802 
    5803   case 117:
    5804 
    5805 /* Line 1806 of yacc.c  */
    5806 #line 586 "parser.yy"
    5807     { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
    5808     break;
    5809 
    5810   case 118:
    5811 
    5812 /* Line 1806 of yacc.c  */
    5813 #line 587 "parser.yy"
    5814     { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
    5815     break;
    5816 
    5817   case 119:
    5818 
    5819 /* Line 1806 of yacc.c  */
    5820 #line 588 "parser.yy"
    5821     { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
    5822     break;
    5823 
    5824   case 120:
    5825 
    5826 /* Line 1806 of yacc.c  */
    5827 #line 589 "parser.yy"
    5828     { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
    5829     break;
    5830 
    5831   case 121:
    5832 
    5833 /* Line 1806 of yacc.c  */
    5834 #line 590 "parser.yy"
    5835     { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
    5836     break;
    5837 
    5838   case 122:
    5839 
    5840 /* Line 1806 of yacc.c  */
    5841 #line 591 "parser.yy"
    5842     { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
    5843     break;
    5844 
    5845   case 123:
    5846 
    5847 /* Line 1806 of yacc.c  */
    5848 #line 592 "parser.yy"
    5849     { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
    5850     break;
    5851 
    5852   case 125:
    5853 
    5854 /* Line 1806 of yacc.c  */
    5855 #line 598 "parser.yy"
    5856     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5857     break;
    5858 
    5859   case 126:
    5860 
    5861 /* Line 1806 of yacc.c  */
    5862 #line 603 "parser.yy"
    5863     { (yyval.en) = 0; }
    5864     break;
    5865 
    58665841  case 130:
    58675842
    58685843/* Line 1806 of yacc.c  */
    5869 #line 612 "parser.yy"
     5844#line 616 "parser.yy"
    58705845    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    58715846    break;
     
    58745849
    58755850/* Line 1806 of yacc.c  */
    5876 #line 622 "parser.yy"
    5877     { (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );}
     5851#line 626 "parser.yy"
     5852    { (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label((yyvsp[(1) - (4)].tok));}
    58785853    break;
    58795854
     
    58815856
    58825857/* Line 1806 of yacc.c  */
    5883 #line 627 "parser.yy"
     5858#line 631 "parser.yy"
    58845859    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    58855860    break;
     
    58885863
    58895864/* Line 1806 of yacc.c  */
    5890 #line 634 "parser.yy"
     5865#line 638 "parser.yy"
    58915866    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    58925867    break;
     
    58955870
    58965871/* Line 1806 of yacc.c  */
    5897 #line 640 "parser.yy"
    5898     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     5872#line 644 "parser.yy"
     5873    { if ((yyvsp[(1) - (3)].sn) != 0) { (yyvsp[(1) - (3)].sn)->set_link((yyvsp[(3) - (3)].sn)); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    58995874    break;
    59005875
    59015876  case 141:
    5902 
    5903 /* Line 1806 of yacc.c  */
    5904 #line 645 "parser.yy"
    5905     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    5906     break;
    5907 
    5908   case 142:
    5909 
    5910 /* Line 1806 of yacc.c  */
    5911 #line 647 "parser.yy"
    5912     { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
    5913     break;
    5914 
    5915   case 143:
    59165877
    59175878/* Line 1806 of yacc.c  */
     
    59205881    break;
    59215882
     5883  case 142:
     5884
     5885/* Line 1806 of yacc.c  */
     5886#line 651 "parser.yy"
     5887    { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
     5888    break;
     5889
     5890  case 143:
     5891
     5892/* Line 1806 of yacc.c  */
     5893#line 653 "parser.yy"
     5894    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5895    break;
     5896
    59225897  case 146:
    59235898
    59245899/* Line 1806 of yacc.c  */
    5925 #line 656 "parser.yy"
    5926     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5900#line 660 "parser.yy"
     5901    { if ((yyvsp[(1) - (2)].sn) != 0) { (yyvsp[(1) - (2)].sn)->set_link((yyvsp[(2) - (2)].sn)); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    59275902    break;
    59285903
     
    59305905
    59315906/* Line 1806 of yacc.c  */
    5932 #line 661 "parser.yy"
    5933     { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
     5907#line 665 "parser.yy"
     5908    { (yyval.sn) = new StatementNode(StatementNode::Exp, (yyvsp[(1) - (2)].en), 0); }
    59345909    break;
    59355910
     
    59375912
    59385913/* Line 1806 of yacc.c  */
    5939 #line 667 "parser.yy"
    5940     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5914#line 671 "parser.yy"
     5915    { (yyval.sn) = new StatementNode(StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn)); }
    59415916    break;
    59425917
     
    59445919
    59455920/* Line 1806 of yacc.c  */
    5946 #line 669 "parser.yy"
    5947     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
     5921#line 673 "parser.yy"
     5922    { (yyval.sn) = new StatementNode(StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn))) ); }
    59485923    break;
    59495924
     
    59515926
    59525927/* Line 1806 of yacc.c  */
    5953 #line 671 "parser.yy"
    5954     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5928#line 675 "parser.yy"
     5929    { (yyval.sn) = new StatementNode(StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn)); }
    59555930    break;
    59565931
     
    59585933
    59595934/* Line 1806 of yacc.c  */
    5960 #line 673 "parser.yy"
    5961     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
     5935#line 677 "parser.yy"
     5936    { (yyval.sn) = new StatementNode(StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn)); /* xxx */ }
    59625937    break;
    59635938
     
    59655940
    59665941/* Line 1806 of yacc.c  */
    5967 #line 678 "parser.yy"
    5968     { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5942#line 683 "parser.yy"
     5943    { (yyval.sn) = new StatementNode(StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn)); }
    59695944    break;
    59705945
     
    59725947
    59735948/* Line 1806 of yacc.c  */
    5974 #line 680 "parser.yy"
    5975     { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
     5949#line 685 "parser.yy"
     5950    { (yyval.sn) = new StatementNode(StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn)); }
    59765951    break;
    59775952
     
    59795954
    59805955/* Line 1806 of yacc.c  */
    5981 #line 687 "parser.yy"
     5956#line 692 "parser.yy"
    59825957    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    59835958    break;
     
    59865961
    59875962/* Line 1806 of yacc.c  */
    5988 #line 689 "parser.yy"
    5989     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5963#line 694 "parser.yy"
     5964    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Range),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
    59905965    break;
    59915966
     
    59935968
    59945969/* Line 1806 of yacc.c  */
    5995 #line 696 "parser.yy"
    5996     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
     5970#line 701 "parser.yy"
     5971    { (yyval.en) = new CompositeExprNode(new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents((yyvsp[(1) - (3)].en)))->set_link((yyvsp[(3) - (3)].en)) ); }
    59975972    break;
    59985973
     
    60005975
    60015976/* Line 1806 of yacc.c  */
    6002 #line 700 "parser.yy"
    6003     { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
     5977#line 705 "parser.yy"
     5978    { (yyval.sn) = new StatementNode(StatementNode::Case, (yyvsp[(2) - (3)].en), 0); }
    60045979    break;
    60055980
     
    60075982
    60085983/* Line 1806 of yacc.c  */
    6009 #line 701 "parser.yy"
    6010     { (yyval.sn) = new StatementNode( StatementNode::Default ); }
     5984#line 706 "parser.yy"
     5985    { (yyval.sn) = new StatementNode(StatementNode::Default); }
    60115986    break;
    60125987
     
    60145989
    60155990/* Line 1806 of yacc.c  */
    6016 #line 707 "parser.yy"
    6017     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
     5991#line 712 "parser.yy"
     5992    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (2)].sn)->set_link((yyvsp[(2) - (2)].sn))); }
    60185993    break;
    60195994
     
    60215996
    60225997/* Line 1806 of yacc.c  */
    6023 #line 711 "parser.yy"
    6024     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     5998#line 716 "parser.yy"
     5999    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case((yyvsp[(2) - (2)].sn)); }
    60256000    break;
    60266001
     
    60286003
    60296004/* Line 1806 of yacc.c  */
    6030 #line 716 "parser.yy"
     6005#line 721 "parser.yy"
    60316006    { (yyval.sn) = 0; }
    60326007    break;
     
    60356010
    60366011/* Line 1806 of yacc.c  */
    6037 #line 722 "parser.yy"
    6038     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     6012#line 727 "parser.yy"
     6013    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case((yyvsp[(2) - (2)].sn)); }
    60396014    break;
    60406015
     
    60426017
    60436018/* Line 1806 of yacc.c  */
    6044 #line 724 "parser.yy"
    6045     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     6019#line 729 "parser.yy"
     6020    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link((yyvsp[(2) - (3)].sn)->append_last_case((yyvsp[(3) - (3)].sn)))); }
    60466021    break;
    60476022
     
    60496024
    60506025/* Line 1806 of yacc.c  */
    6051 #line 729 "parser.yy"
     6026#line 734 "parser.yy"
    60526027    { (yyval.sn) = 0; }
    60536028    break;
     
    60566031
    60576032/* Line 1806 of yacc.c  */
    6058 #line 735 "parser.yy"
    6059     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     6033#line 740 "parser.yy"
     6034    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case((yyvsp[(2) - (2)].sn)); }
    60606035    break;
    60616036
     
    60636038
    60646039/* Line 1806 of yacc.c  */
    6065 #line 737 "parser.yy"
    6066     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
     6040#line 742 "parser.yy"
     6041    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn)))); }
    60676042    break;
    60686043
     
    60706045
    60716046/* Line 1806 of yacc.c  */
    6072 #line 739 "parser.yy"
    6073     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     6047#line 744 "parser.yy"
     6048    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link((yyvsp[(2) - (3)].sn)->append_last_case((yyvsp[(3) - (3)].sn)))); }
    60746049    break;
    60756050
     
    60776052
    60786053/* Line 1806 of yacc.c  */
    6079 #line 741 "parser.yy"
    6080     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }
     6054#line 746 "parser.yy"
     6055    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (4)].sn)->set_link((yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn)))))); }
    60816056    break;
    60826057
     
    60846059
    60856060/* Line 1806 of yacc.c  */
    6086 #line 746 "parser.yy"
     6061#line 751 "parser.yy"
    60876062    { (yyval.sn) = 0; }
    60886063    break;
     
    60916066
    60926067/* Line 1806 of yacc.c  */
    6093 #line 751 "parser.yy"
    6094     { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
     6068#line 756 "parser.yy"
     6069    { (yyval.sn) = new StatementNode(StatementNode::Fallthru, 0, 0); }
    60956070    break;
    60966071
     
    60986073
    60996074/* Line 1806 of yacc.c  */
    6100 #line 752 "parser.yy"
    6101     { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
     6075#line 757 "parser.yy"
     6076    { (yyval.sn) = new StatementNode(StatementNode::Fallthru, 0, 0); }
    61026077    break;
    61036078
     
    61056080
    61066081/* Line 1806 of yacc.c  */
    6107 #line 757 "parser.yy"
    6108     { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     6082#line 762 "parser.yy"
     6083    { (yyval.sn) = new StatementNode(StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn)); }
    61096084    break;
    61106085
     
    61126087
    61136088/* Line 1806 of yacc.c  */
    6114 #line 759 "parser.yy"
    6115     { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
     6089#line 764 "parser.yy"
     6090    { (yyval.sn) = new StatementNode(StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn)); }
    61166091    break;
    61176092
     
    61196094
    61206095/* Line 1806 of yacc.c  */
    6121 #line 761 "parser.yy"
    6122     { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
     6096#line 766 "parser.yy"
     6097    { (yyval.sn) = new StatementNode(StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn)); }
    61236098    break;
    61246099
     
    61266101
    61276102/* Line 1806 of yacc.c  */
    6128 #line 766 "parser.yy"
    6129     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     6103#line 771 "parser.yy"
     6104    { (yyval.en) = new ForCtlExprNode((yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en)); }
    61306105    break;
    61316106
     
    61336108
    61346109/* Line 1806 of yacc.c  */
    6135 #line 768 "parser.yy"
    6136     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     6110#line 773 "parser.yy"
     6111    { (yyval.en) = new ForCtlExprNode((yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en)); }
    61376112    break;
    61386113
     
    61406115
    61416116/* Line 1806 of yacc.c  */
    6142 #line 773 "parser.yy"
    6143     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
     6117#line 778 "parser.yy"
     6118    { (yyval.sn) = new StatementNode(StatementNode::Goto, (yyvsp[(2) - (3)].tok)); }
    61446119    break;
    61456120
     
    61476122
    61486123/* Line 1806 of yacc.c  */
    6149 #line 777 "parser.yy"
    6150     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
     6124#line 782 "parser.yy"
     6125    { (yyval.sn) = new StatementNode(StatementNode::Goto, (yyvsp[(3) - (4)].en)); }
    61516126    break;
    61526127
     
    61546129
    61556130/* Line 1806 of yacc.c  */
    6156 #line 780 "parser.yy"
    6157     { (yyval.sn) = new StatementNode( StatementNode::Continue, 0, 0 ); }
     6131#line 786 "parser.yy"
     6132    { (yyval.sn) = new StatementNode(StatementNode::Continue, 0, 0); }
    61586133    break;
    61596134
     
    61616136
    61626137/* Line 1806 of yacc.c  */
    6163 #line 784 "parser.yy"
    6164     { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
     6138#line 790 "parser.yy"
     6139    { (yyval.sn) = new StatementNode(StatementNode::Continue, (yyvsp[(2) - (3)].tok)); }
    61656140    break;
    61666141
     
    61686143
    61696144/* Line 1806 of yacc.c  */
    6170 #line 787 "parser.yy"
    6171     { (yyval.sn) = new StatementNode( StatementNode::Break, 0, 0 ); }
     6145#line 794 "parser.yy"
     6146    { (yyval.sn) = new StatementNode(StatementNode::Break, 0, 0); }
    61726147    break;
    61736148
     
    61756150
    61766151/* Line 1806 of yacc.c  */
    6177 #line 791 "parser.yy"
    6178     { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
     6152#line 798 "parser.yy"
     6153    { (yyval.sn) = new StatementNode(StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    61796154    break;
    61806155
     
    61826157
    61836158/* Line 1806 of yacc.c  */
    6184 #line 793 "parser.yy"
    6185     { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
     6159#line 800 "parser.yy"
     6160    { (yyval.sn) = new StatementNode(StatementNode::Return, (yyvsp[(2) - (3)].en), 0); }
    61866161    break;
    61876162
     
    61896164
    61906165/* Line 1806 of yacc.c  */
    6191 #line 795 "parser.yy"
    6192     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     6166#line 802 "parser.yy"
     6167    { (yyval.sn) = new StatementNode(StatementNode::Throw, (yyvsp[(2) - (3)].en), 0); }
    61936168    break;
    61946169
     
    61966171
    61976172/* Line 1806 of yacc.c  */
    6198 #line 797 "parser.yy"
    6199     { (yyval.sn) = new StatementNode( StatementNode::Throw, 0, 0 ); }
     6173#line 804 "parser.yy"
     6174    { (yyval.sn) = new StatementNode(StatementNode::Throw, 0, 0); }
    62006175    break;
    62016176
     
    62036178
    62046179/* Line 1806 of yacc.c  */
    6205 #line 802 "parser.yy"
    6206     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     6180#line 809 "parser.yy"
     6181    { (yyval.sn) = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn))))); }
    62076182    break;
    62086183
     
    62106185
    62116186/* Line 1806 of yacc.c  */
    6212 #line 804 "parser.yy"
    6213     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     6187#line 811 "parser.yy"
     6188    { (yyval.sn) = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn))))); }
    62146189    break;
    62156190
     
    62176192
    62186193/* Line 1806 of yacc.c  */
    6219 #line 806 "parser.yy"
     6194#line 813 "parser.yy"
    62206195    {
    6221                         (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
    6222                         (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (4)].sn),*(yyvsp[(3) - (4)].pn) ))));
     6196                        (yyvsp[(3) - (4)].pn)->set_link((yyvsp[(4) - (4)].pn));
     6197                        (yyval.sn) = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (4)].sn),*(yyvsp[(3) - (4)].pn)))));
    62236198                }
    62246199    break;
     
    62276202
    62286203/* Line 1806 of yacc.c  */
    6229 #line 817 "parser.yy"
     6204#line 825 "parser.yy"
    62306205    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    62316206    break;
     
    62346209
    62356210/* Line 1806 of yacc.c  */
    6236 #line 819 "parser.yy"
     6211#line 827 "parser.yy"
    62376212    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    62386213    break;
     
    62416216
    62426217/* Line 1806 of yacc.c  */
    6243 #line 824 "parser.yy"
    6244     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
     6218#line 832 "parser.yy"
     6219    { (yyval.pn) = StatementNode::newCatchStmt((yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn)); }
    62456220    break;
    62466221
     
    62486223
    62496224/* Line 1806 of yacc.c  */
    6250 #line 826 "parser.yy"
    6251     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
     6225#line 834 "parser.yy"
     6226    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt((yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn)) ); }
    62526227    break;
    62536228
     
    62556230
    62566231/* Line 1806 of yacc.c  */
    6257 #line 831 "parser.yy"
     6232#line 839 "parser.yy"
    62586233    {
    6259                         (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     6234                        (yyval.pn) = new StatementNode(StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn));
    62606235                        std::cout << "Just created a finally node" << std::endl;
    62616236                }
     
    62656240
    62666241/* Line 1806 of yacc.c  */
    6267 #line 845 "parser.yy"
     6242#line 853 "parser.yy"
    62686243    {
    62696244                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62756250
    62766251/* Line 1806 of yacc.c  */
    6277 #line 850 "parser.yy"
     6252#line 858 "parser.yy"
    62786253    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    62796254    break;
     
    62826257
    62836258/* Line 1806 of yacc.c  */
    6284 #line 852 "parser.yy"
     6259#line 860 "parser.yy"
    62856260    {
    62866261                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62926267
    62936268/* Line 1806 of yacc.c  */
    6294 #line 861 "parser.yy"
    6295     { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
     6269#line 869 "parser.yy"
     6270    { (yyval.sn) = new StatementNode(StatementNode::Asm, 0, 0); }
    62966271    break;
    62976272
     
    62996274
    63006275/* Line 1806 of yacc.c  */
    6301 #line 863 "parser.yy"
    6302     { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
     6276#line 871 "parser.yy"
     6277    { (yyval.sn) = new StatementNode(StatementNode::Asm, 0, 0); }
    63036278    break;
    63046279
     
    63066281
    63076282/* Line 1806 of yacc.c  */
    6308 #line 865 "parser.yy"
    6309     { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
     6283#line 873 "parser.yy"
     6284    { (yyval.sn) = new StatementNode(StatementNode::Asm, 0, 0); }
    63106285    break;
    63116286
     
    63136288
    63146289/* Line 1806 of yacc.c  */
    6315 #line 867 "parser.yy"
    6316     { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
     6290#line 875 "parser.yy"
     6291    { (yyval.sn) = new StatementNode(StatementNode::Asm, 0, 0); }
    63176292    break;
    63186293
     
    63206295
    63216296/* Line 1806 of yacc.c  */
    6322 #line 881 "parser.yy"
     6297#line 889 "parser.yy"
    63236298    {}
    63246299    break;
     
    63276302
    63286303/* Line 1806 of yacc.c  */
    6329 #line 885 "parser.yy"
     6304#line 893 "parser.yy"
    63306305    {}
    63316306    break;
     
    63346309
    63356310/* Line 1806 of yacc.c  */
    6336 #line 893 "parser.yy"
     6311#line 901 "parser.yy"
    63376312    { (yyval.decl) = 0; }
    63386313    break;
     
    63416316
    63426317/* Line 1806 of yacc.c  */
    6343 #line 900 "parser.yy"
     6318#line 908 "parser.yy"
    63446319    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    63456320    break;
     
    63486323
    63496324/* Line 1806 of yacc.c  */
    6350 #line 905 "parser.yy"
     6325#line 913 "parser.yy"
    63516326    { (yyval.decl) = 0; }
    63526327    break;
     
    63556330
    63566331/* Line 1806 of yacc.c  */
    6357 #line 912 "parser.yy"
     6332#line 920 "parser.yy"
    63586333    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    63596334    break;
     
    63626337
    63636338/* Line 1806 of yacc.c  */
    6364 #line 926 "parser.yy"
     6339#line 934 "parser.yy"
    63656340    {}
    63666341    break;
     
    63696344
    63706345/* Line 1806 of yacc.c  */
    6371 #line 927 "parser.yy"
     6346#line 935 "parser.yy"
    63726347    {}
    63736348    break;
     
    63766351
    63776352/* Line 1806 of yacc.c  */
    6378 #line 956 "parser.yy"
     6353#line 965 "parser.yy"
    63796354    {
    63806355                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63866361
    63876362/* Line 1806 of yacc.c  */
    6388 #line 963 "parser.yy"
     6363#line 972 "parser.yy"
    63896364    {
    63906365                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63966371
    63976372/* Line 1806 of yacc.c  */
    6398 #line 968 "parser.yy"
     6373#line 977 "parser.yy"
    63996374    {
    64006375                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    64066381
    64076382/* Line 1806 of yacc.c  */
    6408 #line 978 "parser.yy"
     6383#line 987 "parser.yy"
    64096384    {
    64106385                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    64166391
    64176392/* Line 1806 of yacc.c  */
    6418 #line 983 "parser.yy"
     6393#line 992 "parser.yy"
    64196394    {
    64206395                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    64266401
    64276402/* Line 1806 of yacc.c  */
    6428 #line 988 "parser.yy"
     6403#line 997 "parser.yy"
    64296404    {
    64306405                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    64366411
    64376412/* Line 1806 of yacc.c  */
    6438 #line 996 "parser.yy"
     6413#line 1005 "parser.yy"
    64396414    {
    64406415                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64466421
    64476422/* Line 1806 of yacc.c  */
    6448 #line 1001 "parser.yy"
     6423#line 1010 "parser.yy"
    64496424    {
    64506425                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64566431
    64576432/* Line 1806 of yacc.c  */
    6458 #line 1006 "parser.yy"
     6433#line 1015 "parser.yy"
    64596434    {
    64606435                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64666441
    64676442/* Line 1806 of yacc.c  */
    6468 #line 1011 "parser.yy"
     6443#line 1020 "parser.yy"
    64696444    {
    64706445                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64766451
    64776452/* Line 1806 of yacc.c  */
    6478 #line 1016 "parser.yy"
     6453#line 1025 "parser.yy"
    64796454    {
    64806455                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64866461
    64876462/* Line 1806 of yacc.c  */
    6488 #line 1024 "parser.yy"
     6463#line 1033 "parser.yy"
    64896464    {
    6490                         typedefTable.setNextIdentifier( *( (yyvsp[(5) - (10)].tok) ) );
     6465                        typedefTable.setNextIdentifier( *((yyvsp[(5) - (10)].tok)) );
    64916466                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(5) - (10)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(8) - (10)].decl), 0, true );
    64926467                }
     
    64966471
    64976472/* Line 1806 of yacc.c  */
    6498 #line 1029 "parser.yy"
     6473#line 1038 "parser.yy"
    64996474    {
    6500                         typedefTable.setNextIdentifier( *( (yyvsp[(5) - (10)].tok) ) );
     6475                        typedefTable.setNextIdentifier( *((yyvsp[(5) - (10)].tok)) );
    65016476                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(5) - (10)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(8) - (10)].decl), 0, true );
    65026477                }
     
    65066481
    65076482/* Line 1806 of yacc.c  */
    6508 #line 1042 "parser.yy"
     6483#line 1053 "parser.yy"
    65096484    {
    65106485                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    65156490
    65166491/* Line 1806 of yacc.c  */
    6517 #line 1046 "parser.yy"
     6492#line 1057 "parser.yy"
    65186493    {
    65196494                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    65246499
    65256500/* Line 1806 of yacc.c  */
    6526 #line 1053 "parser.yy"
     6501#line 1064 "parser.yy"
    65276502    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    65286503    break;
     
    65316506
    65326507/* Line 1806 of yacc.c  */
    6533 #line 1057 "parser.yy"
     6508#line 1068 "parser.yy"
    65346509    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    65356510    break;
     
    65386513
    65396514/* Line 1806 of yacc.c  */
    6540 #line 1062 "parser.yy"
     6515#line 1073 "parser.yy"
    65416516    {
    6542                         typedefTable.addToEnclosingScope( TypedefTable::TD );
     6517                        typedefTable.addToEnclosingScope( TypedefTable::TD);
    65436518                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
    65446519                }
     
    65486523
    65496524/* Line 1806 of yacc.c  */
    6550 #line 1067 "parser.yy"
     6525#line 1078 "parser.yy"
    65516526    {
    6552                         typedefTable.addToEnclosingScope( TypedefTable::TD );
     6527                        typedefTable.addToEnclosingScope( TypedefTable::TD);
    65536528                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
    65546529                }
     
    65586533
    65596534/* Line 1806 of yacc.c  */
    6560 #line 1072 "parser.yy"
     6535#line 1083 "parser.yy"
    65616536    {
    6562                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     6537                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD);
    65636538                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
    65646539                }
     
    65686543
    65696544/* Line 1806 of yacc.c  */
    6570 #line 1083 "parser.yy"
     6545#line 1095 "parser.yy"
    65716546    {
    6572                         typedefTable.addToEnclosingScope( TypedefTable::TD );
     6547                        typedefTable.addToEnclosingScope( TypedefTable::TD);
    65736548                        (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(2) - (3)].decl) )->addTypedef();
    65746549                }
     
    65786553
    65796554/* Line 1806 of yacc.c  */
    6580 #line 1088 "parser.yy"
     6555#line 1100 "parser.yy"
    65816556    {
    6582                         typedefTable.addToEnclosingScope( TypedefTable::TD );
     6557                        typedefTable.addToEnclosingScope( TypedefTable::TD);
    65836558                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) )->addTypedef() );
    65846559                }
     
    65886563
    65896564/* Line 1806 of yacc.c  */
    6590 #line 1093 "parser.yy"
     6565#line 1105 "parser.yy"
    65916566    {
    6592                         typedefTable.addToEnclosingScope( TypedefTable::TD );
     6567                        typedefTable.addToEnclosingScope( TypedefTable::TD);
    65936568                        (yyval.decl) = (yyvsp[(4) - (4)].decl)->addType( (yyvsp[(3) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef();
    65946569                }
     
    65986573
    65996574/* Line 1806 of yacc.c  */
    6600 #line 1098 "parser.yy"
     6575#line 1110 "parser.yy"
    66016576    {
    6602                         typedefTable.addToEnclosingScope( TypedefTable::TD );
     6577                        typedefTable.addToEnclosingScope( TypedefTable::TD);
    66036578                        (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addTypedef();
    66046579                }
     
    66086583
    66096584/* Line 1806 of yacc.c  */
    6610 #line 1103 "parser.yy"
     6585#line 1115 "parser.yy"
    66116586    {
    6612                         typedefTable.addToEnclosingScope( TypedefTable::TD );
    6613                         (yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef()->addType( (yyvsp[(1) - (4)].decl) );
     6587                        typedefTable.addToEnclosingScope( TypedefTable::TD);
     6588                        (yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers((yyvsp[(1) - (4)].decl))->addTypedef()->addType((yyvsp[(1) - (4)].decl));
    66146589                }
    66156590    break;
     
    66186593
    66196594/* Line 1806 of yacc.c  */
    6620 #line 1111 "parser.yy"
     6595#line 1123 "parser.yy"
    66216596    {
    6622                         typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     6597                        typedefTable.addToEnclosingScope(*((yyvsp[(2) - (4)].tok)), TypedefTable::TD);
    66236598                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    66246599                }
     
    66286603
    66296604/* Line 1806 of yacc.c  */
    6630 #line 1116 "parser.yy"
     6605#line 1128 "parser.yy"
    66316606    {
    6632                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     6607                        typedefTable.addToEnclosingScope(*((yyvsp[(5) - (7)].tok)), TypedefTable::TD);
    66336608                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    66346609                }
     
    66386613
    66396614/* Line 1806 of yacc.c  */
    6640 #line 1133 "parser.yy"
     6615#line 1145 "parser.yy"
    66416616    {
    66426617                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6643                         (yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer( (yyvsp[(4) - (4)].in) );
     6618                        (yyval.decl) = ((yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer((yyvsp[(4) - (4)].in));
    66446619                }
    66456620    break;
     
    66486623
    66496624/* Line 1806 of yacc.c  */
    6650 #line 1138 "parser.yy"
     6625#line 1150 "parser.yy"
    66516626    {
    66526627                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6653                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
     6628                        (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer((yyvsp[(6) - (6)].in)) ) );
    66546629                }
    66556630    break;
     
    66586633
    66596634/* Line 1806 of yacc.c  */
    6660 #line 1160 "parser.yy"
     6635#line 1172 "parser.yy"
    66616636    { (yyval.decl) = 0; }
    66626637    break;
     
    66656640
    66666641/* Line 1806 of yacc.c  */
    6667 #line 1172 "parser.yy"
     6642#line 1185 "parser.yy"
    66686643    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66696644    break;
     
    66726647
    66736648/* Line 1806 of yacc.c  */
    6674 #line 1178 "parser.yy"
     6649#line 1191 "parser.yy"
    66756650    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
    66766651    break;
     
    66796654
    66806655/* Line 1806 of yacc.c  */
    6681 #line 1183 "parser.yy"
     6656#line 1196 "parser.yy"
    66826657    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    66836658    break;
     
    66866661
    66876662/* Line 1806 of yacc.c  */
    6688 #line 1185 "parser.yy"
     6663#line 1198 "parser.yy"
    66896664    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    66906665    break;
     
    66936668
    66946669/* Line 1806 of yacc.c  */
    6695 #line 1187 "parser.yy"
     6670#line 1200 "parser.yy"
    66966671    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66976672    break;
     
    67006675
    67016676/* Line 1806 of yacc.c  */
    6702 #line 1189 "parser.yy"
     6677#line 1202 "parser.yy"
    67036678    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    67046679    break;
     
    67076682
    67086683/* Line 1806 of yacc.c  */
    6709 #line 1191 "parser.yy"
     6684#line 1204 "parser.yy"
    67106685    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    67116686    break;
     
    67146689
    67156690/* Line 1806 of yacc.c  */
    6716 #line 1193 "parser.yy"
     6691#line 1206 "parser.yy"
    67176692    {
    67186693                        typedefTable.enterScope();
     
    67236698
    67246699/* Line 1806 of yacc.c  */
    6725 #line 1197 "parser.yy"
     6700#line 1210 "parser.yy"
    67266701    {
    67276702                        typedefTable.leaveScope();
     
    67336708
    67346709/* Line 1806 of yacc.c  */
    6735 #line 1206 "parser.yy"
    6736     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6737     break;
    6738 
    6739   case 294:
    6740 
    6741 /* Line 1806 of yacc.c  */
    6742 #line 1208 "parser.yy"
    6743     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6744     break;
    6745 
    6746   case 296:
    6747 
    6748 /* Line 1806 of yacc.c  */
    67496710#line 1219 "parser.yy"
    67506711    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67516712    break;
    67526713
     6714  case 294:
     6715
     6716/* Line 1806 of yacc.c  */
     6717#line 1221 "parser.yy"
     6718    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6719    break;
     6720
     6721  case 296:
     6722
     6723/* Line 1806 of yacc.c  */
     6724#line 1232 "parser.yy"
     6725    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6726    break;
     6727
    67536728  case 298:
    67546729
    67556730/* Line 1806 of yacc.c  */
    6756 #line 1228 "parser.yy"
     6731#line 1241 "parser.yy"
    67576732    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    67586733    break;
     
    67616736
    67626737/* Line 1806 of yacc.c  */
    6763 #line 1230 "parser.yy"
     6738#line 1243 "parser.yy"
    67646739    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    67656740    break;
     
    67686743
    67696744/* Line 1806 of yacc.c  */
    6770 #line 1232 "parser.yy"
     6745#line 1245 "parser.yy"
    67716746    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    67726747    break;
     
    67756750
    67766751/* Line 1806 of yacc.c  */
    6777 #line 1234 "parser.yy"
     6752#line 1247 "parser.yy"
    67786753    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    67796754    break;
     
    67826757
    67836758/* Line 1806 of yacc.c  */
    6784 #line 1236 "parser.yy"
     6759#line 1249 "parser.yy"
    67856760    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    67866761    break;
     
    67896764
    67906765/* Line 1806 of yacc.c  */
    6791 #line 1238 "parser.yy"
     6766#line 1251 "parser.yy"
    67926767    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    67936768    break;
     
    67966771
    67976772/* Line 1806 of yacc.c  */
    6798 #line 1240 "parser.yy"
     6773#line 1253 "parser.yy"
    67996774    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    68006775    break;
     
    68036778
    68046779/* Line 1806 of yacc.c  */
    6805 #line 1242 "parser.yy"
     6780#line 1255 "parser.yy"
    68066781    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    68076782    break;
     
    68106785
    68116786/* Line 1806 of yacc.c  */
    6812 #line 1247 "parser.yy"
     6787#line 1260 "parser.yy"
    68136788    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    68146789    break;
     
    68176792
    68186793/* Line 1806 of yacc.c  */
    6819 #line 1249 "parser.yy"
     6794#line 1262 "parser.yy"
    68206795    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    68216796    break;
     
    68246799
    68256800/* Line 1806 of yacc.c  */
    6826 #line 1251 "parser.yy"
     6801#line 1264 "parser.yy"
    68276802    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    68286803    break;
     
    68316806
    68326807/* Line 1806 of yacc.c  */
    6833 #line 1253 "parser.yy"
     6808#line 1266 "parser.yy"
    68346809    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    68356810    break;
     
    68386813
    68396814/* Line 1806 of yacc.c  */
    6840 #line 1255 "parser.yy"
     6815#line 1268 "parser.yy"
    68416816    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    68426817    break;
     
    68456820
    68466821/* Line 1806 of yacc.c  */
    6847 #line 1257 "parser.yy"
     6822#line 1270 "parser.yy"
    68486823    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    68496824    break;
     
    68526827
    68536828/* Line 1806 of yacc.c  */
    6854 #line 1259 "parser.yy"
     6829#line 1272 "parser.yy"
    68556830    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    68566831    break;
     
    68596834
    68606835/* Line 1806 of yacc.c  */
    6861 #line 1261 "parser.yy"
     6836#line 1274 "parser.yy"
    68626837    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    68636838    break;
     
    68666841
    68676842/* Line 1806 of yacc.c  */
    6868 #line 1263 "parser.yy"
     6843#line 1276 "parser.yy"
    68696844    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    68706845    break;
     
    68736848
    68746849/* Line 1806 of yacc.c  */
    6875 #line 1265 "parser.yy"
     6850#line 1278 "parser.yy"
    68766851    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    68776852    break;
     
    68806855
    68816856/* Line 1806 of yacc.c  */
    6882 #line 1267 "parser.yy"
     6857#line 1280 "parser.yy"
    68836858    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    68846859    break;
     
    68876862
    68886863/* Line 1806 of yacc.c  */
    6889 #line 1269 "parser.yy"
     6864#line 1282 "parser.yy"
    68906865    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    68916866    break;
     
    68946869
    68956870/* Line 1806 of yacc.c  */
    6896 #line 1276 "parser.yy"
     6871#line 1289 "parser.yy"
    68976872    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68986873    break;
     
    69016876
    69026877/* Line 1806 of yacc.c  */
    6903 #line 1278 "parser.yy"
     6878#line 1291 "parser.yy"
    69046879    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69056880    break;
     
    69086883
    69096884/* Line 1806 of yacc.c  */
    6910 #line 1280 "parser.yy"
     6885#line 1293 "parser.yy"
    69116886    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69126887    break;
     
    69156890
    69166891/* Line 1806 of yacc.c  */
    6917 #line 1282 "parser.yy"
     6892#line 1295 "parser.yy"
    69186893    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    69196894    break;
     
    69226897
    69236898/* Line 1806 of yacc.c  */
    6924 #line 1288 "parser.yy"
     6899#line 1301 "parser.yy"
    69256900    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69266901    break;
     
    69296904
    69306905/* Line 1806 of yacc.c  */
    6931 #line 1295 "parser.yy"
     6906#line 1308 "parser.yy"
    69326907    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69336908    break;
     
    69366911
    69376912/* Line 1806 of yacc.c  */
    6938 #line 1297 "parser.yy"
     6913#line 1310 "parser.yy"
    69396914    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69406915    break;
     
    69436918
    69446919/* Line 1806 of yacc.c  */
    6945 #line 1299 "parser.yy"
     6920#line 1312 "parser.yy"
    69466921    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    69476922    break;
     
    69506925
    69516926/* Line 1806 of yacc.c  */
    6952 #line 1304 "parser.yy"
     6927#line 1317 "parser.yy"
    69536928    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    69546929    break;
     
    69576932
    69586933/* Line 1806 of yacc.c  */
    6959 #line 1306 "parser.yy"
     6934#line 1319 "parser.yy"
    69606935    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    69616936    break;
     
    69646939
    69656940/* Line 1806 of yacc.c  */
    6966 #line 1308 "parser.yy"
     6941#line 1321 "parser.yy"
    69676942    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    69686943    break;
     
    69716946
    69726947/* Line 1806 of yacc.c  */
    6973 #line 1310 "parser.yy"
     6948#line 1323 "parser.yy"
    69746949    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    69756950    break;
     
    69786953
    69796954/* Line 1806 of yacc.c  */
    6980 #line 1316 "parser.yy"
     6955#line 1329 "parser.yy"
    69816956    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69826957    break;
     
    69856960
    69866961/* Line 1806 of yacc.c  */
    6987 #line 1318 "parser.yy"
     6962#line 1331 "parser.yy"
    69886963    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69896964    break;
     
    69926967
    69936968/* Line 1806 of yacc.c  */
    6994 #line 1320 "parser.yy"
     6969#line 1333 "parser.yy"
    69956970    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69966971    break;
     
    69996974
    70006975/* Line 1806 of yacc.c  */
    7001 #line 1326 "parser.yy"
     6976#line 1339 "parser.yy"
    70026977    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70036978    break;
     
    70066981
    70076982/* Line 1806 of yacc.c  */
    7008 #line 1328 "parser.yy"
     6983#line 1341 "parser.yy"
    70096984    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    70106985    break;
     
    70136988
    70146989/* Line 1806 of yacc.c  */
    7015 #line 1334 "parser.yy"
     6990#line 1347 "parser.yy"
    70166991    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70176992    break;
     
    70206995
    70216996/* Line 1806 of yacc.c  */
    7022 #line 1336 "parser.yy"
     6997#line 1349 "parser.yy"
    70236998    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    70246999    break;
     
    70277002
    70287003/* Line 1806 of yacc.c  */
    7029 #line 1338 "parser.yy"
     7004#line 1351 "parser.yy"
    70307005    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    70317006    break;
     
    70347009
    70357010/* Line 1806 of yacc.c  */
    7036 #line 1343 "parser.yy"
     7011#line 1356 "parser.yy"
    70377012    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    70387013    break;
     
    70417016
    70427017/* Line 1806 of yacc.c  */
    7043 #line 1345 "parser.yy"
     7018#line 1358 "parser.yy"
    70447019    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70457020    break;
     
    70487023
    70497024/* Line 1806 of yacc.c  */
    7050 #line 1347 "parser.yy"
     7025#line 1360 "parser.yy"
    70517026    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    70527027    break;
     
    70557030
    70567031/* Line 1806 of yacc.c  */
    7057 #line 1357 "parser.yy"
     7032#line 1370 "parser.yy"
    70587033    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, 0, (yyvsp[(3) - (4)].decl) ); }
    70597034    break;
     
    70627037
    70637038/* Line 1806 of yacc.c  */
    7064 #line 1359 "parser.yy"
     7039#line 1372 "parser.yy"
    70657040    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, 0 ); }
    70667041    break;
     
    70697044
    70707045/* Line 1806 of yacc.c  */
    7071 #line 1361 "parser.yy"
     7046#line 1374 "parser.yy"
    70727047    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, 0, (yyvsp[(4) - (5)].decl) ); }
    70737048    break;
     
    70767051
    70777052/* Line 1806 of yacc.c  */
    7078 #line 1363 "parser.yy"
     7053#line 1376 "parser.yy"
    70797054    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (9)].aggKey), 0, (yyvsp[(4) - (9)].decl), 0, (yyvsp[(8) - (9)].decl) ); }
    70807055    break;
     
    70837058
    70847059/* Line 1806 of yacc.c  */
    7085 #line 1365 "parser.yy"
     7060#line 1378 "parser.yy"
    70867061    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), (yyvsp[(4) - (7)].decl), 0, 0 ); }
    70877062    break;
     
    70907065
    70917066/* Line 1806 of yacc.c  */
    7092 #line 1367 "parser.yy"
     7067#line 1380 "parser.yy"
    70937068    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (10)].aggKey), (yyvsp[(7) - (10)].tok), (yyvsp[(4) - (10)].decl), 0, (yyvsp[(9) - (10)].decl) ); }
    70947069    break;
     
    70977072
    70987073/* Line 1806 of yacc.c  */
    7099 #line 1369 "parser.yy"
     7074#line 1382 "parser.yy"
    71007075    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (12)].aggKey), 0, (yyvsp[(4) - (12)].decl), (yyvsp[(8) - (12)].en), (yyvsp[(11) - (12)].decl) ); }
    71017076    break;
     
    71047079
    71057080/* Line 1806 of yacc.c  */
    7106 #line 1371 "parser.yy"
    7107     {}
     7081#line 1385 "parser.yy"
     7082    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), 0, (yyvsp[(4) - (7)].en), 0 ); }
    71087083    break;
    71097084
     
    71117086
    71127087/* Line 1806 of yacc.c  */
    7113 #line 1374 "parser.yy"
    7114     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), 0, (yyvsp[(4) - (7)].en), 0 ); }
     7088#line 1387 "parser.yy"
     7089    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (13)].aggKey), (yyvsp[(10) - (13)].tok), (yyvsp[(4) - (13)].decl), (yyvsp[(8) - (13)].en), (yyvsp[(12) - (13)].decl) ); }
    71157090    break;
    71167091
     
    71187093
    71197094/* Line 1806 of yacc.c  */
    7120 #line 1376 "parser.yy"
    7121     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (13)].aggKey), (yyvsp[(10) - (13)].tok), (yyvsp[(4) - (13)].decl), (yyvsp[(8) - (13)].en), (yyvsp[(12) - (13)].decl) ); }
     7095#line 1392 "parser.yy"
     7096    { (yyval.aggKey) = DeclarationNode::Struct; }
    71227097    break;
    71237098
     
    71257100
    71267101/* Line 1806 of yacc.c  */
    7127 #line 1381 "parser.yy"
    7128     { (yyval.aggKey) = DeclarationNode::Struct; }
     7102#line 1394 "parser.yy"
     7103    { (yyval.aggKey) = DeclarationNode::Union; }
    71297104    break;
    71307105
     
    71327107
    71337108/* Line 1806 of yacc.c  */
    7134 #line 1383 "parser.yy"
    7135     { (yyval.aggKey) = DeclarationNode::Union; }
     7109#line 1399 "parser.yy"
     7110    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    71367111    break;
    71377112
     
    71397114
    71407115/* Line 1806 of yacc.c  */
    7141 #line 1388 "parser.yy"
    7142     { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    7143     break;
    7144 
    7145   case 362:
    7146 
    7147 /* Line 1806 of yacc.c  */
    7148 #line 1390 "parser.yy"
     7116#line 1401 "parser.yy"
    71497117    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    71507118    break;
    71517119
    7152   case 364:
    7153 
    7154 /* Line 1806 of yacc.c  */
    7155 #line 1396 "parser.yy"
     7120  case 363:
     7121
     7122/* Line 1806 of yacc.c  */
     7123#line 1407 "parser.yy"
    71567124    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    71577125    break;
    71587126
    7159   case 366:
    7160 
    7161 /* Line 1806 of yacc.c  */
    7162 #line 1399 "parser.yy"
     7127  case 365:
     7128
     7129/* Line 1806 of yacc.c  */
     7130#line 1410 "parser.yy"
    71637131    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    71647132    break;
    71657133
     7134  case 367:
     7135
     7136/* Line 1806 of yacc.c  */
     7137#line 1416 "parser.yy"
     7138    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     7139    break;
     7140
    71667141  case 368:
    71677142
    71687143/* Line 1806 of yacc.c  */
    7169 #line 1405 "parser.yy"
    7170     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     7144#line 1418 "parser.yy"
     7145    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    71717146    break;
    71727147
     
    71747149
    71757150/* Line 1806 of yacc.c  */
    7176 #line 1407 "parser.yy"
    7177     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     7151#line 1420 "parser.yy"
     7152    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    71787153    break;
    71797154
     
    71817156
    71827157/* Line 1806 of yacc.c  */
    7183 #line 1409 "parser.yy"
    7184     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     7158#line 1425 "parser.yy"
     7159    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    71857160    break;
    71867161
     
    71887163
    71897164/* Line 1806 of yacc.c  */
    7190 #line 1414 "parser.yy"
    7191     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7165#line 1427 "parser.yy"
     7166    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    71927167    break;
    71937168
     
    71957170
    71967171/* Line 1806 of yacc.c  */
    7197 #line 1416 "parser.yy"
    7198     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     7172#line 1432 "parser.yy"
     7173    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    71997174    break;
    72007175
     
    72027177
    72037178/* Line 1806 of yacc.c  */
    7204 #line 1421 "parser.yy"
    7205     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     7179#line 1434 "parser.yy"
     7180    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    72067181    break;
    72077182
     
    72097184
    72107185/* Line 1806 of yacc.c  */
    7211 #line 1423 "parser.yy"
    7212     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     7186#line 1437 "parser.yy"
     7187    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    72137188    break;
    72147189
     
    72167191
    72177192/* Line 1806 of yacc.c  */
    7218 #line 1426 "parser.yy"
     7193#line 1440 "parser.yy"
    72197194    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    72207195    break;
    72217196
    7222   case 376:
    7223 
    7224 /* Line 1806 of yacc.c  */
    7225 #line 1429 "parser.yy"
    7226     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7197  case 377:
     7198
     7199/* Line 1806 of yacc.c  */
     7200#line 1446 "parser.yy"
     7201    { (yyval.en) = 0; }
    72277202    break;
    72287203
     
    72307205
    72317206/* Line 1806 of yacc.c  */
    7232 #line 1435 "parser.yy"
     7207#line 1448 "parser.yy"
     7208    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     7209    break;
     7210
     7211  case 379:
     7212
     7213/* Line 1806 of yacc.c  */
     7214#line 1453 "parser.yy"
     7215    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     7216    break;
     7217
     7218  case 381:
     7219
     7220/* Line 1806 of yacc.c  */
     7221#line 1462 "parser.yy"
     7222    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     7223    break;
     7224
     7225  case 382:
     7226
     7227/* Line 1806 of yacc.c  */
     7228#line 1464 "parser.yy"
     7229    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
     7230    break;
     7231
     7232  case 383:
     7233
     7234/* Line 1806 of yacc.c  */
     7235#line 1466 "parser.yy"
     7236    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
     7237    break;
     7238
     7239  case 384:
     7240
     7241/* Line 1806 of yacc.c  */
     7242#line 1471 "parser.yy"
     7243    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7244    break;
     7245
     7246  case 385:
     7247
     7248/* Line 1806 of yacc.c  */
     7249#line 1473 "parser.yy"
     7250    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     7251    break;
     7252
     7253  case 386:
     7254
     7255/* Line 1806 of yacc.c  */
     7256#line 1478 "parser.yy"
    72337257    { (yyval.en) = 0; }
    72347258    break;
    72357259
    7236   case 379:
    7237 
    7238 /* Line 1806 of yacc.c  */
    7239 #line 1437 "parser.yy"
    7240     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    7241     break;
    7242 
    7243   case 380:
    7244 
    7245 /* Line 1806 of yacc.c  */
    7246 #line 1442 "parser.yy"
     7260  case 387:
     7261
     7262/* Line 1806 of yacc.c  */
     7263#line 1480 "parser.yy"
    72477264    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    72487265    break;
    72497266
    7250   case 382:
    7251 
    7252 /* Line 1806 of yacc.c  */
    7253 #line 1451 "parser.yy"
    7254     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    7255     break;
    7256 
    7257   case 383:
    7258 
    7259 /* Line 1806 of yacc.c  */
    7260 #line 1453 "parser.yy"
    7261     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
    7262     break;
    7263 
    7264   case 384:
    7265 
    7266 /* Line 1806 of yacc.c  */
    7267 #line 1455 "parser.yy"
    7268     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
    7269     break;
    7270 
    7271   case 385:
    7272 
    7273 /* Line 1806 of yacc.c  */
    7274 #line 1460 "parser.yy"
    7275     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    7276     break;
    7277 
    7278   case 386:
    7279 
    7280 /* Line 1806 of yacc.c  */
    7281 #line 1462 "parser.yy"
    7282     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    7283     break;
    7284 
    7285   case 387:
    7286 
    7287 /* Line 1806 of yacc.c  */
    7288 #line 1467 "parser.yy"
    7289     { (yyval.en) = 0; }
    7290     break;
    7291 
    72927267  case 388:
    72937268
    72947269/* Line 1806 of yacc.c  */
    7295 #line 1469 "parser.yy"
    7296     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7297     break;
    7298 
    7299   case 389:
    7300 
    7301 /* Line 1806 of yacc.c  */
    7302 #line 1476 "parser.yy"
     7270#line 1487 "parser.yy"
    73037271    { (yyval.decl) = 0; }
    73047272    break;
    73057273
     7274  case 392:
     7275
     7276/* Line 1806 of yacc.c  */
     7277#line 1495 "parser.yy"
     7278    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7279    break;
     7280
    73067281  case 393:
    73077282
    73087283/* Line 1806 of yacc.c  */
    7309 #line 1484 "parser.yy"
     7284#line 1497 "parser.yy"
     7285    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7286    break;
     7287
     7288  case 394:
     7289
     7290/* Line 1806 of yacc.c  */
     7291#line 1499 "parser.yy"
     7292    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7293    break;
     7294
     7295  case 396:
     7296
     7297/* Line 1806 of yacc.c  */
     7298#line 1508 "parser.yy"
    73107299    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    73117300    break;
    73127301
    7313   case 394:
    7314 
    7315 /* Line 1806 of yacc.c  */
    7316 #line 1486 "parser.yy"
     7302  case 397:
     7303
     7304/* Line 1806 of yacc.c  */
     7305#line 1510 "parser.yy"
     7306    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7307    break;
     7308
     7309  case 398:
     7310
     7311/* Line 1806 of yacc.c  */
     7312#line 1512 "parser.yy"
     7313    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     7314    break;
     7315
     7316  case 400:
     7317
     7318/* Line 1806 of yacc.c  */
     7319#line 1518 "parser.yy"
     7320    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7321    break;
     7322
     7323  case 401:
     7324
     7325/* Line 1806 of yacc.c  */
     7326#line 1523 "parser.yy"
     7327    { (yyval.decl) = 0; }
     7328    break;
     7329
     7330  case 404:
     7331
     7332/* Line 1806 of yacc.c  */
     7333#line 1530 "parser.yy"
    73177334    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    73187335    break;
    73197336
    7320   case 395:
    7321 
    7322 /* Line 1806 of yacc.c  */
    7323 #line 1488 "parser.yy"
    7324     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7325     break;
    7326 
    7327   case 397:
    7328 
    7329 /* Line 1806 of yacc.c  */
    7330 #line 1496 "parser.yy"
     7337  case 407:
     7338
     7339/* Line 1806 of yacc.c  */
     7340#line 1537 "parser.yy"
    73317341    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    73327342    break;
    73337343
    7334   case 398:
    7335 
    7336 /* Line 1806 of yacc.c  */
    7337 #line 1498 "parser.yy"
     7344  case 408:
     7345
     7346/* Line 1806 of yacc.c  */
     7347#line 1539 "parser.yy"
    73387348    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    73397349    break;
    73407350
    7341   case 399:
    7342 
    7343 /* Line 1806 of yacc.c  */
    7344 #line 1500 "parser.yy"
    7345     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7346     break;
    7347 
    7348   case 401:
    7349 
    7350 /* Line 1806 of yacc.c  */
    7351 #line 1506 "parser.yy"
    7352     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7353     break;
    7354 
    7355   case 402:
    7356 
    7357 /* Line 1806 of yacc.c  */
    7358 #line 1511 "parser.yy"
    7359     { (yyval.decl) = 0; }
    7360     break;
    7361 
    7362   case 405:
    7363 
    7364 /* Line 1806 of yacc.c  */
    7365 #line 1518 "parser.yy"
    7366     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7367     break;
    7368 
    7369   case 408:
    7370 
    7371 /* Line 1806 of yacc.c  */
    7372 #line 1525 "parser.yy"
    7373     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7374     break;
    7375 
    7376   case 409:
    7377 
    7378 /* Line 1806 of yacc.c  */
    7379 #line 1527 "parser.yy"
    7380     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7351  case 410:
     7352
     7353/* Line 1806 of yacc.c  */
     7354#line 1549 "parser.yy"
     7355    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73817356    break;
    73827357
     
    73847359
    73857360/* Line 1806 of yacc.c  */
    7386 #line 1536 "parser.yy"
     7361#line 1552 "parser.yy"
    73877362    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73887363    break;
     
    73917366
    73927367/* Line 1806 of yacc.c  */
    7393 #line 1539 "parser.yy"
    7394     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7395     break;
    7396 
    7397   case 413:
    7398 
    7399 /* Line 1806 of yacc.c  */
    7400 #line 1541 "parser.yy"
     7368#line 1554 "parser.yy"
    74017369    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    74027370    break;
    74037371
    7404   case 418:
    7405 
    7406 /* Line 1806 of yacc.c  */
    7407 #line 1551 "parser.yy"
     7372  case 417:
     7373
     7374/* Line 1806 of yacc.c  */
     7375#line 1564 "parser.yy"
    74087376    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74097377    break;
    74107378
    7411   case 420:
    7412 
    7413 /* Line 1806 of yacc.c  */
    7414 #line 1557 "parser.yy"
     7379  case 419:
     7380
     7381/* Line 1806 of yacc.c  */
     7382#line 1570 "parser.yy"
    74157383    {
    74167384                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    7417                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     7385                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode((yyvsp[(3) - (3)].en)) );
    74187386                }
    74197387    break;
    74207388
    7421   case 421:
    7422 
    7423 /* Line 1806 of yacc.c  */
    7424 #line 1562 "parser.yy"
     7389  case 420:
     7390
     7391/* Line 1806 of yacc.c  */
     7392#line 1575 "parser.yy"
    74257393    {
    74267394                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    7427                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     7395                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode((yyvsp[(3) - (3)].en)) );
    74287396                }
    74297397    break;
    74307398
     7399  case 422:
     7400
     7401/* Line 1806 of yacc.c  */
     7402#line 1584 "parser.yy"
     7403    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7404    break;
     7405
    74317406  case 423:
    74327407
    74337408/* Line 1806 of yacc.c  */
    7434 #line 1571 "parser.yy"
     7409#line 1593 "parser.yy"
     7410    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     7411    break;
     7412
     7413  case 424:
     7414
     7415/* Line 1806 of yacc.c  */
     7416#line 1595 "parser.yy"
     7417    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     7418    break;
     7419
     7420  case 436:
     7421
     7422/* Line 1806 of yacc.c  */
     7423#line 1620 "parser.yy"
    74357424    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    74367425    break;
    74377426
    7438   case 424:
    7439 
    7440 /* Line 1806 of yacc.c  */
    7441 #line 1580 "parser.yy"
    7442     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    7443     break;
    7444 
    7445   case 425:
    7446 
    7447 /* Line 1806 of yacc.c  */
    7448 #line 1582 "parser.yy"
    7449     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    7450     break;
    7451 
    7452   case 436:
    7453 
    7454 /* Line 1806 of yacc.c  */
    7455 #line 1607 "parser.yy"
     7427  case 440:
     7428
     7429/* Line 1806 of yacc.c  */
     7430#line 1628 "parser.yy"
    74567431    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    74577432    break;
    74587433
    7459   case 440:
    7460 
    7461 /* Line 1806 of yacc.c  */
    7462 #line 1615 "parser.yy"
    7463     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7464     break;
    7465 
    74667434  case 441:
    74677435
    74687436/* Line 1806 of yacc.c  */
    7469 #line 1620 "parser.yy"
     7437#line 1633 "parser.yy"
    74707438    { (yyval.in) = 0; }
    74717439    break;
     
    74747442
    74757443/* Line 1806 of yacc.c  */
    7476 #line 1621 "parser.yy"
     7444#line 1634 "parser.yy"
    74777445    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    74787446    break;
     
    74817449
    74827450/* Line 1806 of yacc.c  */
    7483 #line 1625 "parser.yy"
    7484     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7451#line 1638 "parser.yy"
     7452    { (yyval.in) = new InitializerNode((yyvsp[(1) - (1)].en)); }
    74857453    break;
    74867454
     
    74887456
    74897457/* Line 1806 of yacc.c  */
    7490 #line 1626 "parser.yy"
    7491     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7458#line 1639 "parser.yy"
     7459    { (yyval.in) = new InitializerNode((yyvsp[(2) - (4)].in), true); }
    74927460    break;
    74937461
     
    74957463
    74967464/* Line 1806 of yacc.c  */
    7497 #line 1631 "parser.yy"
     7465#line 1644 "parser.yy"
    74987466    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    74997467    break;
     
    75027470
    75037471/* Line 1806 of yacc.c  */
    7504 #line 1632 "parser.yy"
    7505     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
     7472#line 1645 "parser.yy"
     7473    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link((yyvsp[(3) - (3)].in)) ); }
    75067474    break;
    75077475
     
    75097477
    75107478/* Line 1806 of yacc.c  */
    7511 #line 1634 "parser.yy"
    7512     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     7479#line 1647 "parser.yy"
     7480    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators((yyvsp[(3) - (4)].en)) ) ); }
    75137481    break;
    75147482
     
    75167484
    75177485/* Line 1806 of yacc.c  */
    7518 #line 1650 "parser.yy"
     7486#line 1663 "parser.yy"
    75197487    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    75207488    break;
     
    75237491
    75247492/* Line 1806 of yacc.c  */
    7525 #line 1655 "parser.yy"
    7526     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     7493#line 1668 "parser.yy"
     7494    { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    75277495    break;
    75287496
     
    75307498
    75317499/* Line 1806 of yacc.c  */
    7532 #line 1661 "parser.yy"
     7500#line 1673 "parser.yy"
    75337501    { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); }
    75347502    break;
     
    75377505
    75387506/* Line 1806 of yacc.c  */
    7539 #line 1664 "parser.yy"
     7507#line 1677 "parser.yy"
    75407508    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    75417509    break;
     
    75447512
    75457513/* Line 1806 of yacc.c  */
    7546 #line 1666 "parser.yy"
     7514#line 1679 "parser.yy"
    75477515    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    75487516    break;
     
    75517519
    75527520/* Line 1806 of yacc.c  */
    7553 #line 1668 "parser.yy"
    7554     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ); }
     7521#line 1681 "parser.yy"
     7522    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Range), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en)); }
    75557523    break;
    75567524
     
    75587526
    75597527/* Line 1806 of yacc.c  */
    7560 #line 1670 "parser.yy"
     7528#line 1683 "parser.yy"
    75617529    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    75627530    break;
     
    75657533
    75667534/* Line 1806 of yacc.c  */
    7567 #line 1694 "parser.yy"
     7535#line 1708 "parser.yy"
    75687536    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75697537    break;
     
    75727540
    75737541/* Line 1806 of yacc.c  */
    7574 #line 1696 "parser.yy"
     7542#line 1710 "parser.yy"
    75757543    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75767544    break;
     
    75797547
    75807548/* Line 1806 of yacc.c  */
    7581 #line 1698 "parser.yy"
     7549#line 1712 "parser.yy"
    75827550    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    75837551    break;
     
    75867554
    75877555/* Line 1806 of yacc.c  */
    7588 #line 1703 "parser.yy"
     7556#line 1717 "parser.yy"
    75897557    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75907558    break;
     
    75937561
    75947562/* Line 1806 of yacc.c  */
    7595 #line 1705 "parser.yy"
     7563#line 1719 "parser.yy"
    75967564    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) )->addQualifiers( (yyvsp[(1) - (5)].decl) ); }
    75977565    break;
     
    76007568
    76017569/* Line 1806 of yacc.c  */
    7602 #line 1707 "parser.yy"
     7570#line 1721 "parser.yy"
    76037571    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    76047572    break;
     
    76077575
    76087576/* Line 1806 of yacc.c  */
    7609 #line 1713 "parser.yy"
     7577#line 1727 "parser.yy"
    76107578    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    76117579    break;
     
    76147582
    76157583/* Line 1806 of yacc.c  */
    7616 #line 1718 "parser.yy"
    7617     { typedefTable.addToEnclosingScope(*( (yyvsp[(2) - (2)].tok) ), TypedefTable::TD ); }
     7584#line 1732 "parser.yy"
     7585    { typedefTable.addToEnclosingScope(*((yyvsp[(2) - (2)].tok)), TypedefTable::TD); }
    76187586    break;
    76197587
     
    76217589
    76227590/* Line 1806 of yacc.c  */
    7623 #line 1720 "parser.yy"
     7591#line 1734 "parser.yy"
    76247592    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    76257593    break;
     
    76287596
    76297597/* Line 1806 of yacc.c  */
    7630 #line 1726 "parser.yy"
     7598#line 1740 "parser.yy"
    76317599    { (yyval.tclass) = DeclarationNode::Type; }
    76327600    break;
     
    76357603
    76367604/* Line 1806 of yacc.c  */
    7637 #line 1728 "parser.yy"
     7605#line 1742 "parser.yy"
    76387606    { (yyval.tclass) = DeclarationNode::Ftype; }
    76397607    break;
     
    76427610
    76437611/* Line 1806 of yacc.c  */
    7644 #line 1730 "parser.yy"
     7612#line 1744 "parser.yy"
    76457613    { (yyval.tclass) = DeclarationNode::Dtype; }
    76467614    break;
     
    76497617
    76507618/* Line 1806 of yacc.c  */
    7651 #line 1735 "parser.yy"
     7619#line 1749 "parser.yy"
    76527620    { (yyval.decl) = 0; }
    76537621    break;
     
    76567624
    76577625/* Line 1806 of yacc.c  */
    7658 #line 1737 "parser.yy"
     7626#line 1751 "parser.yy"
    76597627    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    76607628    break;
     
    76637631
    76647632/* Line 1806 of yacc.c  */
    7665 #line 1742 "parser.yy"
     7633#line 1756 "parser.yy"
    76667634    {
    7667                         typedefTable.openContext( *( (yyvsp[(2) - (5)].tok) ) );
     7635                        typedefTable.openContext( *((yyvsp[(2) - (5)].tok)) );
    76687636                        (yyval.decl) = DeclarationNode::newContextUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
    76697637                }
     
    76737641
    76747642/* Line 1806 of yacc.c  */
    7675 #line 1747 "parser.yy"
     7643#line 1761 "parser.yy"
    76767644    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    76777645    break;
     
    76807648
    76817649/* Line 1806 of yacc.c  */
    7682 #line 1749 "parser.yy"
     7650#line 1763 "parser.yy"
    76837651    { (yyval.decl) = 0; }
    76847652    break;
     
    76877655
    76887656/* Line 1806 of yacc.c  */
    7689 #line 1754 "parser.yy"
     7657#line 1768 "parser.yy"
    76907658    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    76917659    break;
     
    76947662
    76957663/* Line 1806 of yacc.c  */
    7696 #line 1757 "parser.yy"
    7697     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
     7664#line 1771 "parser.yy"
     7665    { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (3)].en)->set_link(new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    76987666    break;
    76997667
     
    77017669
    77027670/* Line 1806 of yacc.c  */
    7703 #line 1759 "parser.yy"
    7704     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     7671#line 1773 "parser.yy"
     7672    { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (3)].en)->set_link((yyvsp[(3) - (3)].en))); }
    77057673    break;
    77067674
     
    77087676
    77097677/* Line 1806 of yacc.c  */
    7710 #line 1764 "parser.yy"
     7678#line 1778 "parser.yy"
    77117679    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    77127680    break;
     
    77157683
    77167684/* Line 1806 of yacc.c  */
    7717 #line 1766 "parser.yy"
     7685#line 1780 "parser.yy"
    77187686    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    77197687    break;
     
    77227690
    77237691/* Line 1806 of yacc.c  */
    7724 #line 1768 "parser.yy"
     7692#line 1782 "parser.yy"
    77257693    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    77267694    break;
     
    77297697
    77307698/* Line 1806 of yacc.c  */
    7731 #line 1773 "parser.yy"
     7699#line 1787 "parser.yy"
    77327700    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    77337701    break;
     
    77367704
    77377705/* Line 1806 of yacc.c  */
    7738 #line 1775 "parser.yy"
     7706#line 1789 "parser.yy"
    77397707    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    77407708    break;
     
    77437711
    77447712/* Line 1806 of yacc.c  */
    7745 #line 1780 "parser.yy"
     7713#line 1794 "parser.yy"
    77467714    {
    7747                         typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     7715                        typedefTable.addToEnclosingScope(*((yyvsp[(1) - (1)].tok)), TypedefTable::TD);
    77487716                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (1)].tok), 0 );
    77497717                }
     
    77537721
    77547722/* Line 1806 of yacc.c  */
    7755 #line 1785 "parser.yy"
     7723#line 1799 "parser.yy"
    77567724    {
    7757                         typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     7725                        typedefTable.addToEnclosingScope(*((yyvsp[(1) - (6)].tok)), TypedefTable::TG);
    77587726                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (6)].tok), (yyvsp[(4) - (6)].decl) );
    77597727                }
     
    77637731
    77647732/* Line 1806 of yacc.c  */
    7765 #line 1793 "parser.yy"
     7733#line 1807 "parser.yy"
    77667734    {
    7767                         typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     7735                        typedefTable.addToEnclosingScope(*((yyvsp[(2) - (9)].tok)), TypedefTable::ID );
    77687736                        (yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
    77697737                }
     
    77737741
    77747742/* Line 1806 of yacc.c  */
    7775 #line 1798 "parser.yy"
     7743#line 1812 "parser.yy"
    77767744    {
    7777                         typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
     7745                        typedefTable.enterContext( *((yyvsp[(2) - (8)].tok)) );
    77787746                        typedefTable.enterScope();
    77797747                }
     
    77837751
    77847752/* Line 1806 of yacc.c  */
    7785 #line 1803 "parser.yy"
     7753#line 1817 "parser.yy"
    77867754    {
    77877755                        typedefTable.leaveContext();
    7788                         typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
     7756                        typedefTable.addToEnclosingScope(*((yyvsp[(2) - (11)].tok)), TypedefTable::ID );
    77897757                        (yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
    77907758                }
     
    77947762
    77957763/* Line 1806 of yacc.c  */
    7796 #line 1813 "parser.yy"
     7764#line 1827 "parser.yy"
    77977765    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77987766    break;
     
    78017769
    78027770/* Line 1806 of yacc.c  */
    7803 #line 1823 "parser.yy"
     7771#line 1837 "parser.yy"
    78047772    {
    78057773                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78117779
    78127780/* Line 1806 of yacc.c  */
    7813 #line 1828 "parser.yy"
     7781#line 1842 "parser.yy"
    78147782    {
    78157783                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78217789
    78227790/* Line 1806 of yacc.c  */
    7823 #line 1833 "parser.yy"
     7791#line 1847 "parser.yy"
    78247792    {
    7825                         typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     7793                        typedefTable.addToEnclosingScope2( *((yyvsp[(5) - (5)].tok)), TypedefTable::ID );
    78267794                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
    78277795                }
     
    78317799
    78327800/* Line 1806 of yacc.c  */
    7833 #line 1841 "parser.yy"
     7801#line 1855 "parser.yy"
    78347802    {
    78357803                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78417809
    78427810/* Line 1806 of yacc.c  */
    7843 #line 1846 "parser.yy"
     7811#line 1860 "parser.yy"
    78447812    {
    78457813                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78517819
    78527820/* Line 1806 of yacc.c  */
    7853 #line 1856 "parser.yy"
     7821#line 1870 "parser.yy"
    78547822    {}
    78557823    break;
     
    78587826
    78597827/* Line 1806 of yacc.c  */
    7860 #line 1858 "parser.yy"
     7828#line 1872 "parser.yy"
    78617829    {
    78627830                        if ( theTree ) {
     
    78717839
    78727840/* Line 1806 of yacc.c  */
    7873 #line 1870 "parser.yy"
    7874     { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     7841#line 1884 "parser.yy"
     7842    { (yyval.decl) = ((yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    78757843    break;
    78767844
     
    78787846
    78797847/* Line 1806 of yacc.c  */
    7880 #line 1875 "parser.yy"
     7848#line 1889 "parser.yy"
    78817849    { (yyval.decl) = 0; }
    78827850    break;
     
    78857853
    78867854/* Line 1806 of yacc.c  */
    7887 #line 1883 "parser.yy"
     7855#line 1897 "parser.yy"
    78887856    {}
    78897857    break;
     
    78927860
    78937861/* Line 1806 of yacc.c  */
    7894 #line 1885 "parser.yy"
     7862#line 1899 "parser.yy"
    78957863    {
    78967864                        linkageStack.push( linkage );
     
    79027870
    79037871/* Line 1806 of yacc.c  */
    7904 #line 1890 "parser.yy"
     7872#line 1904 "parser.yy"
    79057873    {
    79067874                        linkage = linkageStack.top();
     
    79137881
    79147882/* Line 1806 of yacc.c  */
    7915 #line 1896 "parser.yy"
     7883#line 1910 "parser.yy"
    79167884    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    79177885    break;
    79187886
    79197887  case 514:
    7920 
    7921 /* Line 1806 of yacc.c  */
    7922 #line 1907 "parser.yy"
    7923     {
    7924                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    7925                         typedefTable.leaveScope();
    7926                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
    7927                 }
    7928     break;
    7929 
    7930   case 515:
    7931 
    7932 /* Line 1806 of yacc.c  */
    7933 #line 1913 "parser.yy"
    7934     {
    7935                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    7936                         typedefTable.leaveScope();
    7937                         (yyval.decl) = (yyvsp[(1) - (4)].decl)->addOldDeclList( (yyvsp[(3) - (4)].decl) )->addFunctionBody( (yyvsp[(4) - (4)].sn) );
    7938                 }
    7939     break;
    7940 
    7941   case 516:
    79427888
    79437889/* Line 1806 of yacc.c  */
     
    79507896    break;
    79517897
     7898  case 515:
     7899
     7900/* Line 1806 of yacc.c  */
     7901#line 1928 "parser.yy"
     7902    {
     7903                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     7904                        typedefTable.leaveScope();
     7905                        (yyval.decl) = (yyvsp[(1) - (4)].decl)->addOldDeclList( (yyvsp[(3) - (4)].decl) )->addFunctionBody( (yyvsp[(4) - (4)].sn) );
     7906                }
     7907    break;
     7908
     7909  case 516:
     7910
     7911/* Line 1806 of yacc.c  */
     7912#line 1937 "parser.yy"
     7913    {
     7914                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     7915                        typedefTable.leaveScope();
     7916                        (yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
     7917                }
     7918    break;
     7919
    79527920  case 517:
    79537921
    79547922/* Line 1806 of yacc.c  */
    7955 #line 1928 "parser.yy"
     7923#line 1943 "parser.yy"
    79567924    {
    79577925                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79647932
    79657933/* Line 1806 of yacc.c  */
    7966 #line 1934 "parser.yy"
     7934#line 1949 "parser.yy"
    79677935    {
    79687936                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79757943
    79767944/* Line 1806 of yacc.c  */
    7977 #line 1940 "parser.yy"
     7945#line 1955 "parser.yy"
    79787946    {
    79797947                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79867954
    79877955/* Line 1806 of yacc.c  */
    7988 #line 1946 "parser.yy"
     7956#line 1961 "parser.yy"
    79897957    {
    79907958                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79977965
    79987966/* Line 1806 of yacc.c  */
    7999 #line 1954 "parser.yy"
     7967#line 1969 "parser.yy"
    80007968    {
    80017969                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80087976
    80097977/* Line 1806 of yacc.c  */
    8010 #line 1960 "parser.yy"
     7978#line 1975 "parser.yy"
    80117979    {
    80127980                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80197987
    80207988/* Line 1806 of yacc.c  */
    8021 #line 1968 "parser.yy"
     7989#line 1983 "parser.yy"
    80227990    {
    80237991                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80307998
    80317999/* Line 1806 of yacc.c  */
    8032 #line 1974 "parser.yy"
     8000#line 1989 "parser.yy"
    80338001    {
    80348002                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80418009
    80428010/* Line 1806 of yacc.c  */
    8043 #line 1989 "parser.yy"
    8044     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     8011#line 2004 "parser.yy"
     8012    { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Range), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
    80458013    break;
    80468014
     
    80488016
    80498017/* Line 1806 of yacc.c  */
    8050 #line 2023 "parser.yy"
     8018#line 2038 "parser.yy"
    80518019    {}
    80528020    break;
     
    80558023
    80568024/* Line 1806 of yacc.c  */
    8057 #line 2024 "parser.yy"
     8025#line 2039 "parser.yy"
    80588026    {}
    80598027    break;
     
    80628030
    80638031/* Line 1806 of yacc.c  */
    8064 #line 2025 "parser.yy"
     8032#line 2040 "parser.yy"
    80658033    {}
    80668034    break;
     
    80698037
    80708038/* Line 1806 of yacc.c  */
    8071 #line 2026 "parser.yy"
     8039#line 2041 "parser.yy"
    80728040    {}
    80738041    break;
     
    80768044
    80778045/* Line 1806 of yacc.c  */
    8078 #line 2068 "parser.yy"
     8046#line 2084 "parser.yy"
    80798047    {
    8080                         typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     8048                        typedefTable.setNextIdentifier( *((yyvsp[(1) - (1)].tok)) );
    80818049                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    80828050                }
     
    80868054
    80878055/* Line 1806 of yacc.c  */
    8088 #line 2073 "parser.yy"
     8056#line 2089 "parser.yy"
    80898057    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80908058    break;
     
    80938061
    80948062/* Line 1806 of yacc.c  */
    8095 #line 2078 "parser.yy"
     8063#line 2094 "parser.yy"
    80968064    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80978065    break;
     
    81008068
    81018069/* Line 1806 of yacc.c  */
    8102 #line 2080 "parser.yy"
     8070#line 2096 "parser.yy"
    81038071    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81048072    break;
     
    81078075
    81088076/* Line 1806 of yacc.c  */
    8109 #line 2082 "parser.yy"
     8077#line 2098 "parser.yy"
    81108078    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81118079    break;
     
    81148082
    81158083/* Line 1806 of yacc.c  */
    8116 #line 2087 "parser.yy"
     8084#line 2103 "parser.yy"
    81178085    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    81188086    break;
     
    81218089
    81228090/* Line 1806 of yacc.c  */
    8123 #line 2089 "parser.yy"
     8091#line 2105 "parser.yy"
    81248092    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81258093    break;
     
    81288096
    81298097/* Line 1806 of yacc.c  */
    8130 #line 2091 "parser.yy"
     8098#line 2107 "parser.yy"
    81318099    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81328100    break;
     
    81358103
    81368104/* Line 1806 of yacc.c  */
    8137 #line 2093 "parser.yy"
     8105#line 2109 "parser.yy"
    81388106    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81398107    break;
     
    81428110
    81438111/* Line 1806 of yacc.c  */
    8144 #line 2098 "parser.yy"
     8112#line 2114 "parser.yy"
    81458113    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81468114    break;
     
    81498117
    81508118/* Line 1806 of yacc.c  */
    8151 #line 2100 "parser.yy"
     8119#line 2116 "parser.yy"
    81528120    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81538121    break;
     
    81568124
    81578125/* Line 1806 of yacc.c  */
    8158 #line 2116 "parser.yy"
     8126#line 2132 "parser.yy"
    81598127    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81608128    break;
     
    81638131
    81648132/* Line 1806 of yacc.c  */
    8165 #line 2118 "parser.yy"
     8133#line 2134 "parser.yy"
    81668134    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81678135    break;
     
    81708138
    81718139/* Line 1806 of yacc.c  */
    8172 #line 2120 "parser.yy"
     8140#line 2136 "parser.yy"
    81738141    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81748142    break;
     
    81778145
    81788146/* Line 1806 of yacc.c  */
    8179 #line 2125 "parser.yy"
     8147#line 2141 "parser.yy"
    81808148    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81818149    break;
     
    81848152
    81858153/* Line 1806 of yacc.c  */
    8186 #line 2127 "parser.yy"
     8154#line 2143 "parser.yy"
    81878155    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81888156    break;
     
    81918159
    81928160/* Line 1806 of yacc.c  */
    8193 #line 2129 "parser.yy"
     8161#line 2145 "parser.yy"
    81948162    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81958163    break;
     
    81988166
    81998167/* Line 1806 of yacc.c  */
    8200 #line 2134 "parser.yy"
     8168#line 2150 "parser.yy"
    82018169    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82028170    break;
     
    82058173
    82068174/* Line 1806 of yacc.c  */
    8207 #line 2136 "parser.yy"
     8175#line 2152 "parser.yy"
    82088176    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82098177    break;
     
    82128180
    82138181/* Line 1806 of yacc.c  */
    8214 #line 2138 "parser.yy"
     8182#line 2154 "parser.yy"
    82158183    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82168184    break;
     
    82198187
    82208188/* Line 1806 of yacc.c  */
    8221 #line 2153 "parser.yy"
     8189#line 2169 "parser.yy"
    82228190    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    82238191    break;
     
    82268194
    82278195/* Line 1806 of yacc.c  */
    8228 #line 2155 "parser.yy"
     8196#line 2171 "parser.yy"
    82298197    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    82308198    break;
     
    82338201
    82348202/* Line 1806 of yacc.c  */
    8235 #line 2157 "parser.yy"
     8203#line 2173 "parser.yy"
    82368204    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82378205    break;
     
    82408208
    82418209/* Line 1806 of yacc.c  */
    8242 #line 2162 "parser.yy"
     8210#line 2178 "parser.yy"
    82438211    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82448212    break;
     
    82478215
    82488216/* Line 1806 of yacc.c  */
    8249 #line 2164 "parser.yy"
     8217#line 2180 "parser.yy"
    82508218    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82518219    break;
     
    82548222
    82558223/* Line 1806 of yacc.c  */
    8256 #line 2166 "parser.yy"
     8224#line 2182 "parser.yy"
    82578225    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82588226    break;
     
    82618229
    82628230/* Line 1806 of yacc.c  */
    8263 #line 2171 "parser.yy"
     8231#line 2187 "parser.yy"
    82648232    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82658233    break;
     
    82688236
    82698237/* Line 1806 of yacc.c  */
    8270 #line 2173 "parser.yy"
     8238#line 2189 "parser.yy"
    82718239    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82728240    break;
     
    82758243
    82768244/* Line 1806 of yacc.c  */
    8277 #line 2175 "parser.yy"
     8245#line 2191 "parser.yy"
    82788246    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82798247    break;
     
    82828250
    82838251/* Line 1806 of yacc.c  */
    8284 #line 2197 "parser.yy"
     8252#line 2213 "parser.yy"
    82858253    {
    8286                         typedefTable.setNextIdentifier( *( (yyvsp[(1) - (1)].tok) ) );
     8254                        typedefTable.setNextIdentifier( *((yyvsp[(1) - (1)].tok)) );
    82878255                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    82888256                }
     
    82928260
    82938261/* Line 1806 of yacc.c  */
    8294 #line 2202 "parser.yy"
     8262#line 2218 "parser.yy"
    82958263    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82968264    break;
     
    82998267
    83008268/* Line 1806 of yacc.c  */
    8301 #line 2207 "parser.yy"
     8269#line 2223 "parser.yy"
    83028270    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83038271    break;
     
    83068274
    83078275/* Line 1806 of yacc.c  */
    8308 #line 2209 "parser.yy"
     8276#line 2225 "parser.yy"
    83098277    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83108278    break;
     
    83138281
    83148282/* Line 1806 of yacc.c  */
    8315 #line 2211 "parser.yy"
     8283#line 2227 "parser.yy"
    83168284    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83178285    break;
     
    83208288
    83218289/* Line 1806 of yacc.c  */
    8322 #line 2216 "parser.yy"
     8290#line 2232 "parser.yy"
    83238291    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83248292    break;
     
    83278295
    83288296/* Line 1806 of yacc.c  */
    8329 #line 2218 "parser.yy"
     8297#line 2234 "parser.yy"
    83308298    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83318299    break;
     
    83348302
    83358303/* Line 1806 of yacc.c  */
    8336 #line 2220 "parser.yy"
     8304#line 2236 "parser.yy"
    83378305    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83388306    break;
     
    83418309
    83428310/* Line 1806 of yacc.c  */
    8343 #line 2222 "parser.yy"
     8311#line 2238 "parser.yy"
    83448312    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83458313    break;
     
    83488316
    83498317/* Line 1806 of yacc.c  */
    8350 #line 2227 "parser.yy"
     8318#line 2243 "parser.yy"
    83518319    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83528320    break;
     
    83558323
    83568324/* Line 1806 of yacc.c  */
    8357 #line 2229 "parser.yy"
     8325#line 2245 "parser.yy"
    83588326    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83598327    break;
     
    83628330
    83638331/* Line 1806 of yacc.c  */
    8364 #line 2231 "parser.yy"
     8332#line 2247 "parser.yy"
    83658333    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83668334    break;
     
    83698337
    83708338/* Line 1806 of yacc.c  */
    8371 #line 2248 "parser.yy"
     8339#line 2264 "parser.yy"
    83728340    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83738341    break;
     
    83768344
    83778345/* Line 1806 of yacc.c  */
    8378 #line 2250 "parser.yy"
     8346#line 2266 "parser.yy"
    83798347    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83808348    break;
     
    83838351
    83848352/* Line 1806 of yacc.c  */
    8385 #line 2252 "parser.yy"
     8353#line 2268 "parser.yy"
    83868354    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83878355    break;
     
    83908358
    83918359/* Line 1806 of yacc.c  */
    8392 #line 2257 "parser.yy"
     8360#line 2273 "parser.yy"
    83938361    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83948362    break;
     
    83978365
    83988366/* Line 1806 of yacc.c  */
    8399 #line 2259 "parser.yy"
     8367#line 2275 "parser.yy"
    84008368    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84018369    break;
     
    84048372
    84058373/* Line 1806 of yacc.c  */
    8406 #line 2261 "parser.yy"
     8374#line 2277 "parser.yy"
    84078375    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84088376    break;
     
    84118379
    84128380/* Line 1806 of yacc.c  */
    8413 #line 2263 "parser.yy"
     8381#line 2279 "parser.yy"
    84148382    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84158383    break;
     
    84188386
    84198387/* Line 1806 of yacc.c  */
    8420 #line 2268 "parser.yy"
     8388#line 2284 "parser.yy"
    84218389    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84228390    break;
     
    84258393
    84268394/* Line 1806 of yacc.c  */
    8427 #line 2270 "parser.yy"
     8395#line 2286 "parser.yy"
    84288396    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84298397    break;
     
    84328400
    84338401/* Line 1806 of yacc.c  */
    8434 #line 2272 "parser.yy"
     8402#line 2288 "parser.yy"
    84358403    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84368404    break;
     
    84398407
    84408408/* Line 1806 of yacc.c  */
    8441 #line 2310 "parser.yy"
     8409#line 2326 "parser.yy"
    84428410    {
    8443                         typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     8411                        typedefTable.setNextIdentifier( *((yyvsp[(1) - (1)].tok)) );
    84448412                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    84458413                }
     
    84498417
    84508418/* Line 1806 of yacc.c  */
    8451 #line 2318 "parser.yy"
     8419#line 2334 "parser.yy"
    84528420    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84538421    break;
     
    84568424
    84578425/* Line 1806 of yacc.c  */
    8458 #line 2320 "parser.yy"
     8426#line 2336 "parser.yy"
    84598427    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84608428    break;
     
    84638431
    84648432/* Line 1806 of yacc.c  */
    8465 #line 2322 "parser.yy"
     8433#line 2338 "parser.yy"
    84668434    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84678435    break;
     
    84708438
    84718439/* Line 1806 of yacc.c  */
    8472 #line 2327 "parser.yy"
     8440#line 2343 "parser.yy"
    84738441    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84748442    break;
     
    84778445
    84788446/* Line 1806 of yacc.c  */
    8479 #line 2329 "parser.yy"
     8447#line 2345 "parser.yy"
    84808448    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84818449    break;
     
    84848452
    84858453/* Line 1806 of yacc.c  */
    8486 #line 2334 "parser.yy"
     8454#line 2350 "parser.yy"
    84878455    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84888456    break;
     
    84918459
    84928460/* Line 1806 of yacc.c  */
    8493 #line 2336 "parser.yy"
     8461#line 2352 "parser.yy"
    84948462    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84958463    break;
     
    84988466
    84998467/* Line 1806 of yacc.c  */
    8500 #line 2356 "parser.yy"
     8468#line 2372 "parser.yy"
    85018469    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85028470    break;
     
    85058473
    85068474/* Line 1806 of yacc.c  */
    8507 #line 2358 "parser.yy"
     8475#line 2374 "parser.yy"
    85088476    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85098477    break;
     
    85128480
    85138481/* Line 1806 of yacc.c  */
    8514 #line 2360 "parser.yy"
     8482#line 2376 "parser.yy"
    85158483    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85168484    break;
     
    85198487
    85208488/* Line 1806 of yacc.c  */
    8521 #line 2362 "parser.yy"
     8489#line 2378 "parser.yy"
    85228490    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85238491    break;
     
    85268494
    85278495/* Line 1806 of yacc.c  */
    8528 #line 2364 "parser.yy"
     8496#line 2380 "parser.yy"
    85298497    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85308498    break;
     
    85338501
    85348502/* Line 1806 of yacc.c  */
    8535 #line 2370 "parser.yy"
     8503#line 2386 "parser.yy"
    85368504    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85378505    break;
     
    85408508
    85418509/* Line 1806 of yacc.c  */
    8542 #line 2372 "parser.yy"
     8510#line 2388 "parser.yy"
    85438511    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85448512    break;
     
    85478515
    85488516/* Line 1806 of yacc.c  */
    8549 #line 2374 "parser.yy"
     8517#line 2390 "parser.yy"
    85508518    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85518519    break;
     
    85548522
    85558523/* Line 1806 of yacc.c  */
    8556 #line 2379 "parser.yy"
     8524#line 2395 "parser.yy"
    85578525    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    85588526    break;
     
    85618529
    85628530/* Line 1806 of yacc.c  */
    8563 #line 2381 "parser.yy"
     8531#line 2397 "parser.yy"
    85648532    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85658533    break;
     
    85688536
    85698537/* Line 1806 of yacc.c  */
    8570 #line 2383 "parser.yy"
     8538#line 2399 "parser.yy"
    85718539    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85728540    break;
     
    85758543
    85768544/* Line 1806 of yacc.c  */
    8577 #line 2389 "parser.yy"
     8545#line 2405 "parser.yy"
    85788546    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    85798547    break;
     
    85828550
    85838551/* Line 1806 of yacc.c  */
    8584 #line 2391 "parser.yy"
     8552#line 2407 "parser.yy"
    85858553    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(5) - (5)].decl) ); }
    85868554    break;
     
    85898557
    85908558/* Line 1806 of yacc.c  */
    8591 #line 2397 "parser.yy"
     8559#line 2413 "parser.yy"
    85928560    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    85938561    break;
     
    85968564
    85978565/* Line 1806 of yacc.c  */
    8598 #line 2399 "parser.yy"
     8566#line 2415 "parser.yy"
    85998567    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    86008568    break;
     
    86038571
    86048572/* Line 1806 of yacc.c  */
    8605 #line 2401 "parser.yy"
     8573#line 2417 "parser.yy"
    86068574    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    86078575    break;
     
    86108578
    86118579/* Line 1806 of yacc.c  */
    8612 #line 2403 "parser.yy"
     8580#line 2419 "parser.yy"
    86138581    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    86148582    break;
     
    86178585
    86188586/* Line 1806 of yacc.c  */
    8619 #line 2423 "parser.yy"
     8587#line 2439 "parser.yy"
    86208588    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    86218589    break;
     
    86248592
    86258593/* Line 1806 of yacc.c  */
    8626 #line 2425 "parser.yy"
     8594#line 2441 "parser.yy"
    86278595    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    86288596    break;
     
    86318599
    86328600/* Line 1806 of yacc.c  */
    8633 #line 2427 "parser.yy"
     8601#line 2443 "parser.yy"
    86348602    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86358603    break;
     
    86388606
    86398607/* Line 1806 of yacc.c  */
    8640 #line 2429 "parser.yy"
     8608#line 2445 "parser.yy"
    86418609    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86428610    break;
     
    86458613
    86468614/* Line 1806 of yacc.c  */
    8647 #line 2431 "parser.yy"
     8615#line 2447 "parser.yy"
    86488616    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86498617    break;
     
    86528620
    86538621/* Line 1806 of yacc.c  */
    8654 #line 2437 "parser.yy"
     8622#line 2453 "parser.yy"
    86558623    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86568624    break;
     
    86598627
    86608628/* Line 1806 of yacc.c  */
    8661 #line 2439 "parser.yy"
     8629#line 2455 "parser.yy"
    86628630    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86638631    break;
     
    86668634
    86678635/* Line 1806 of yacc.c  */
    8668 #line 2441 "parser.yy"
     8636#line 2457 "parser.yy"
    86698637    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86708638    break;
     
    86738641
    86748642/* Line 1806 of yacc.c  */
    8675 #line 2446 "parser.yy"
     8643#line 2462 "parser.yy"
    86768644    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    86778645    break;
     
    86808648
    86818649/* Line 1806 of yacc.c  */
    8682 #line 2448 "parser.yy"
     8650#line 2464 "parser.yy"
    86838651    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86848652    break;
     
    86878655
    86888656/* Line 1806 of yacc.c  */
    8689 #line 2450 "parser.yy"
     8657#line 2466 "parser.yy"
    86908658    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86918659    break;
     
    86948662
    86958663/* Line 1806 of yacc.c  */
    8696 #line 2457 "parser.yy"
     8664#line 2473 "parser.yy"
    86978665    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    86988666    break;
     
    87018669
    87028670/* Line 1806 of yacc.c  */
    8703 #line 2468 "parser.yy"
     8671#line 2485 "parser.yy"
    87048672    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    87058673    break;
     
    87088676
    87098677/* Line 1806 of yacc.c  */
    8710 #line 2471 "parser.yy"
     8678#line 2488 "parser.yy"
    87118679    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    87128680    break;
     
    87158683
    87168684/* Line 1806 of yacc.c  */
    8717 #line 2473 "parser.yy"
     8685#line 2490 "parser.yy"
    87188686    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    87198687    break;
     
    87228690
    87238691/* Line 1806 of yacc.c  */
    8724 #line 2476 "parser.yy"
     8692#line 2493 "parser.yy"
    87258693    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    87268694    break;
     
    87298697
    87308698/* Line 1806 of yacc.c  */
    8731 #line 2478 "parser.yy"
     8699#line 2495 "parser.yy"
    87328700    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    87338701    break;
     
    87368704
    87378705/* Line 1806 of yacc.c  */
    8738 #line 2480 "parser.yy"
     8706#line 2497 "parser.yy"
    87398707    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    87408708    break;
     
    87438711
    87448712/* Line 1806 of yacc.c  */
    8745 #line 2499 "parser.yy"
     8713#line 2516 "parser.yy"
    87468714    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    87478715    break;
     
    87508718
    87518719/* Line 1806 of yacc.c  */
    8752 #line 2501 "parser.yy"
     8720#line 2518 "parser.yy"
    87538721    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87548722    break;
     
    87578725
    87588726/* Line 1806 of yacc.c  */
    8759 #line 2503 "parser.yy"
     8727#line 2520 "parser.yy"
    87608728    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87618729    break;
     
    87648732
    87658733/* Line 1806 of yacc.c  */
    8766 #line 2505 "parser.yy"
     8734#line 2522 "parser.yy"
    87678735    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87688736    break;
    87698737
    87708738  case 679:
    8771 
    8772 /* Line 1806 of yacc.c  */
    8773 #line 2507 "parser.yy"
    8774     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8775     break;
    8776 
    8777   case 681:
    8778 
    8779 /* Line 1806 of yacc.c  */
    8780 #line 2513 "parser.yy"
    8781     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8782     break;
    8783 
    8784   case 682:
    8785 
    8786 /* Line 1806 of yacc.c  */
    8787 #line 2515 "parser.yy"
    8788     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8789     break;
    8790 
    8791   case 683:
    8792 
    8793 /* Line 1806 of yacc.c  */
    8794 #line 2517 "parser.yy"
    8795     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8796     break;
    8797 
    8798   case 684:
    8799 
    8800 /* Line 1806 of yacc.c  */
    8801 #line 2522 "parser.yy"
    8802     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8803     break;
    8804 
    8805   case 685:
    88068739
    88078740/* Line 1806 of yacc.c  */
     
    88108743    break;
    88118744
     8745  case 681:
     8746
     8747/* Line 1806 of yacc.c  */
     8748#line 2530 "parser.yy"
     8749    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8750    break;
     8751
     8752  case 682:
     8753
     8754/* Line 1806 of yacc.c  */
     8755#line 2532 "parser.yy"
     8756    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8757    break;
     8758
     8759  case 683:
     8760
     8761/* Line 1806 of yacc.c  */
     8762#line 2534 "parser.yy"
     8763    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8764    break;
     8765
     8766  case 684:
     8767
     8768/* Line 1806 of yacc.c  */
     8769#line 2539 "parser.yy"
     8770    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8771    break;
     8772
     8773  case 685:
     8774
     8775/* Line 1806 of yacc.c  */
     8776#line 2541 "parser.yy"
     8777    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8778    break;
     8779
    88128780  case 688:
    88138781
    88148782/* Line 1806 of yacc.c  */
    8815 #line 2534 "parser.yy"
     8783#line 2551 "parser.yy"
    88168784    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    88178785    break;
     
    88208788
    88218789/* Line 1806 of yacc.c  */
    8822 #line 2544 "parser.yy"
     8790#line 2561 "parser.yy"
    88238791    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88248792    break;
     
    88278795
    88288796/* Line 1806 of yacc.c  */
    8829 #line 2546 "parser.yy"
     8797#line 2563 "parser.yy"
    88308798    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88318799    break;
     
    88348802
    88358803/* Line 1806 of yacc.c  */
    8836 #line 2548 "parser.yy"
     8804#line 2565 "parser.yy"
    88378805    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88388806    break;
     
    88418809
    88428810/* Line 1806 of yacc.c  */
    8843 #line 2550 "parser.yy"
     8811#line 2567 "parser.yy"
    88448812    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88458813    break;
     
    88488816
    88498817/* Line 1806 of yacc.c  */
    8850 #line 2552 "parser.yy"
     8818#line 2569 "parser.yy"
    88518819    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88528820    break;
     
    88558823
    88568824/* Line 1806 of yacc.c  */
    8857 #line 2554 "parser.yy"
     8825#line 2571 "parser.yy"
    88588826    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88598827    break;
     
    88628830
    88638831/* Line 1806 of yacc.c  */
    8864 #line 2561 "parser.yy"
     8832#line 2578 "parser.yy"
    88658833    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88668834    break;
     
    88698837
    88708838/* Line 1806 of yacc.c  */
    8871 #line 2563 "parser.yy"
     8839#line 2580 "parser.yy"
    88728840    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88738841    break;
     
    88768844
    88778845/* Line 1806 of yacc.c  */
    8878 #line 2565 "parser.yy"
     8846#line 2582 "parser.yy"
    88798847    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88808848    break;
     
    88838851
    88848852/* Line 1806 of yacc.c  */
    8885 #line 2567 "parser.yy"
     8853#line 2584 "parser.yy"
    88868854    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    88878855    break;
     
    88908858
    88918859/* Line 1806 of yacc.c  */
    8892 #line 2569 "parser.yy"
     8860#line 2586 "parser.yy"
    88938861    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88948862    break;
     
    88978865
    88988866/* Line 1806 of yacc.c  */
    8899 #line 2571 "parser.yy"
     8867#line 2588 "parser.yy"
    89008868    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89018869    break;
     
    89048872
    89058873/* Line 1806 of yacc.c  */
    8906 #line 2573 "parser.yy"
     8874#line 2590 "parser.yy"
    89078875    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89088876    break;
     
    89118879
    89128880/* Line 1806 of yacc.c  */
    8913 #line 2575 "parser.yy"
     8881#line 2592 "parser.yy"
    89148882    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89158883    break;
     
    89188886
    89198887/* Line 1806 of yacc.c  */
    8920 #line 2577 "parser.yy"
     8888#line 2594 "parser.yy"
    89218889    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89228890    break;
     
    89258893
    89268894/* Line 1806 of yacc.c  */
    8927 #line 2579 "parser.yy"
     8895#line 2596 "parser.yy"
    89288896    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89298897    break;
     
    89328900
    89338901/* Line 1806 of yacc.c  */
    8934 #line 2584 "parser.yy"
     8902#line 2601 "parser.yy"
    89358903    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    89368904    break;
     
    89398907
    89408908/* Line 1806 of yacc.c  */
    8941 #line 2586 "parser.yy"
     8909#line 2603 "parser.yy"
    89428910    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    89438911    break;
     
    89468914
    89478915/* Line 1806 of yacc.c  */
    8948 #line 2591 "parser.yy"
     8916#line 2608 "parser.yy"
    89498917    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    89508918    break;
     
    89538921
    89548922/* Line 1806 of yacc.c  */
    8955 #line 2593 "parser.yy"
     8923#line 2610 "parser.yy"
    89568924    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    89578925    break;
     
    89608928
    89618929/* Line 1806 of yacc.c  */
    8962 #line 2620 "parser.yy"
     8930#line 2637 "parser.yy"
    89638931    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89648932    break;
     
    89678935
    89688936/* Line 1806 of yacc.c  */
    8969 #line 2631 "parser.yy"
     8937#line 2648 "parser.yy"
    89708938    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89718939    break;
     
    89748942
    89758943/* Line 1806 of yacc.c  */
    8976 #line 2633 "parser.yy"
     8944#line 2650 "parser.yy"
    89778945    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89788946    break;
     
    89818949
    89828950/* Line 1806 of yacc.c  */
    8983 #line 2635 "parser.yy"
     8951#line 2652 "parser.yy"
    89848952    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89858953    break;
     
    89888956
    89898957/* Line 1806 of yacc.c  */
    8990 #line 2637 "parser.yy"
     8958#line 2654 "parser.yy"
    89918959    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89928960    break;
     
    89958963
    89968964/* Line 1806 of yacc.c  */
    8997 #line 2639 "parser.yy"
     8965#line 2656 "parser.yy"
    89988966    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89998967    break;
     
    90028970
    90038971/* Line 1806 of yacc.c  */
    9004 #line 2641 "parser.yy"
     8972#line 2658 "parser.yy"
    90058973    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90068974    break;
     
    90098977
    90108978/* Line 1806 of yacc.c  */
    9011 #line 2648 "parser.yy"
     8979#line 2665 "parser.yy"
    90128980    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90138981    break;
     
    90168984
    90178985/* Line 1806 of yacc.c  */
    9018 #line 2650 "parser.yy"
     8986#line 2667 "parser.yy"
    90198987    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90208988    break;
     
    90238991
    90248992/* Line 1806 of yacc.c  */
    9025 #line 2652 "parser.yy"
     8993#line 2669 "parser.yy"
    90268994    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90278995    break;
     
    90308998
    90318999/* Line 1806 of yacc.c  */
    9032 #line 2654 "parser.yy"
     9000#line 2671 "parser.yy"
    90339001    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90349002    break;
     
    90379005
    90389006/* Line 1806 of yacc.c  */
    9039 #line 2656 "parser.yy"
     9007#line 2673 "parser.yy"
    90409008    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90419009    break;
     
    90449012
    90459013/* Line 1806 of yacc.c  */
    9046 #line 2658 "parser.yy"
     9014#line 2675 "parser.yy"
    90479015    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90489016    break;
     
    90519019
    90529020/* Line 1806 of yacc.c  */
    9053 #line 2663 "parser.yy"
     9021#line 2680 "parser.yy"
    90549022    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    90559023    break;
     
    90589026
    90599027/* Line 1806 of yacc.c  */
    9060 #line 2668 "parser.yy"
     9028#line 2685 "parser.yy"
    90619029    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (7)].decl), 0 ); }
    90629030    break;
     
    90659033
    90669034/* Line 1806 of yacc.c  */
    9067 #line 2670 "parser.yy"
     9035#line 2687 "parser.yy"
    90689036    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90699037    break;
     
    90729040
    90739041/* Line 1806 of yacc.c  */
    9074 #line 2672 "parser.yy"
     9042#line 2689 "parser.yy"
    90759043    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90769044    break;
     
    90799047
    90809048/* Line 1806 of yacc.c  */
    9081 #line 2696 "parser.yy"
     9049#line 2715 "parser.yy"
    90829050    { (yyval.en) = 0; }
    90839051    break;
     
    90869054
    90879055/* Line 1806 of yacc.c  */
    9088 #line 2698 "parser.yy"
     9056#line 2717 "parser.yy"
    90899057    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    90909058    break;
     
    90939061
    90949062/* Line 1806 of yacc.c  */
    9095 #line 9096 "Parser/parser.cc"
     9063#line 9064 "Parser/parser.cc"
    90969064      default: break;
    90979065    }
     
    93249292
    93259293/* Line 2067 of yacc.c  */
    9326 #line 2701 "parser.yy"
     9294#line 2720 "parser.yy"
    93279295
    93289296// ----end of grammar----
     
    93379305
    93389306// Local Variables: //
     9307// tab-width: 4 //
    93399308// mode: c++ //
    9340 // tab-width: 4 //
    93419309// compile-command: "make install" //
    93429310// End: //
  • src/Parser/parser.h

    r94e0864d r94b4364  
    246246
    247247/* Line 2068 of yacc.c  */
    248 #line 107 "parser.yy"
     248#line 108 "parser.yy"
    249249
    250250        Token tok;
  • src/Parser/parser.yy

    r94e0864d r94b4364  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun 22 15:19:44 2015
    13 // Update Count     : 1082
     12// Last Modified On : Sat Jun 13 07:21:45 2015
     13// Update Count     : 1048
    1414//
    1515
    16 // This grammar is based on the ANSI99/11 C grammar, specifically parts of EXPRESSION and STATEMENTS, and on the C
    17 // grammar by James A. Roskind, specifically parts of DECLARATIONS and EXTERNAL DEFINITIONS.  While parts have been
    18 // copied, important changes have been made in all sections; these changes are sufficient to constitute a new grammar.
    19 // In particular, this grammar attempts to be more syntactically precise, i.e., it parses less incorrect language syntax
    20 // that must be subsequently rejected by semantic checks.  Nevertheless, there are still several semantic checks
    21 // required and many are noted in the grammar. Finally, the grammar is extended with GCC and CFA language extensions.
    22 
    23 // Acknowledgments to Richard Bilson, Glen Ditchfield, and Rodolfo Gabriel Esteves who all helped when I got stuck with
    24 // the grammar.
     16// This grammar is based on the ANSI99/11 C grammar, specifically parts of EXPRESSION and STATEMENTS, and on
     17// the C grammar by James A. Roskind, specifically parts of DECLARATIONS and EXTERNAL DEFINITIONS.  While
     18// parts have been copied, important changes have been made in all sections; these changes are sufficient to
     19// constitute a new grammar.  In particular, this grammar attempts to be more syntactically precise, i.e., it
     20// parses less incorrect language syntax that must be subsequently rejected by semantic checks.  Nevertheless,
     21// there are still several semantic checks required and many are noted in the grammar. Finally, the grammar is
     22// extended with GCC and CFA language extensions.
     23
     24// Acknowledgments to Richard Bilson, Glen Ditchfield, and Rodolfo Gabriel Esteves who all helped when I got
     25// stuck with the grammar.
    2526
    2627// The root language for this grammar is ANSI99/11 C. All of ANSI99/11 is parsed, except for:
     
    2829// 1. designation with '=' (use ':' instead)
    2930//
    30 // Most of the syntactic extensions from ANSI90 to ANSI11 C are marked with the comment "C99/C11". This grammar also has
    31 // two levels of extensions. The first extensions cover most of the GCC C extensions, except for:
     31// Most of the syntactic extensions from ANSI90 to ANSI11 C are marked with the comment "C99/C11". This
     32// grammar also has two levels of extensions. The first extensions cover most of the GCC C extensions, except for:
    3233//
    3334// 1. nested functions
     
    3637// 4. attributes not allowed in parenthesis of declarator
    3738//
    38 // All of the syntactic extensions for GCC C are marked with the comment "GCC". The second extensions are for Cforall
    39 // (CFA), which fixes several of C's outstanding problems and extends C with many modern language concepts. All of the
    40 // syntactic extensions for CFA C are marked with the comment "CFA". As noted above, there is one unreconcileable
    41 // parsing problem between C99 and CFA with respect to designators; this is discussed in detail before the "designation"
    42 // grammar rule.
     39// All of the syntactic extensions for GCC C are marked with the comment "GCC". The second extensions are for
     40// Cforall (CFA), which fixes several of C's outstanding problems and extends C with many modern language
     41// concepts. All of the syntactic extensions for CFA C are marked with the comment "CFA". As noted above,
     42// there is one unreconcileable parsing problem between C99 and CFA with respect to designators; this is
     43// discussed in detail before the "designation" grammar rule.
    4344
    4445%{
     
    249250//************************* Namespace Management ********************************
    250251
    251 // The grammar in the ANSI C standard is not strictly context-free, since it relies upon the distinct terminal symbols
    252 // "identifier" and "TYPEDEFname" that are lexically identical.  While it is possible to write a purely context-free
    253 // grammar, such a grammar would obscure the relationship between syntactic and semantic constructs.  Hence, this
    254 // grammar uses the ANSI style.
    255 //
    256 // Cforall compounds this problem by introducing type names local to the scope of a declaration (for instance, those
    257 // introduced through "forall" qualifiers), and by introducing "type generators" -- parametrized types.  This latter
    258 // type name creates a third class of identifiers that must be distinguished by the scanner.
    259 //
    260 // Since the scanner cannot distinguish among the different classes of identifiers without some context information, it
    261 // accesses a data structure (the TypedefTable) to allow classification of an identifier that it has just read.
    262 // Semantic actions during the parser update this data structure when the class of identifiers change.
    263 //
    264 // Because the Cforall language is block-scoped, there is the possibility that an identifier can change its class in a
    265 // local scope; it must revert to its original class at the end of the block.  Since type names can be local to a
    266 // particular declaration, each declaration is itself a scope.  This requires distinguishing between type names that are
    267 // local to the current declaration scope and those that persist past the end of the declaration (i.e., names defined in
    268 // "typedef" or "type" declarations).
    269 //
    270 // The non-terminals "push" and "pop" derive the empty string; their only use is to denote the opening and closing of
    271 // scopes.  Every push must have a matching pop, although it is regrettable the matching pairs do not always occur
    272 // within the same rule.  These non-terminals may appear in more contexts than strictly necessary from a semantic point
    273 // of view.  Unfortunately, these extra rules are necessary to prevent parsing conflicts -- the parser may not have
    274 // enough context and look-ahead information to decide whether a new scope is necessary, so the effect of these extra
    275 // rules is to open a new scope unconditionally.  As the grammar evolves, it may be neccesary to add or move around
    276 // "push" and "pop" nonterminals to resolve conflicts of this sort.
     252// The grammar in the ANSI C standard is not strictly context-free, since it relies upon the distinct terminal
     253// symbols "identifier" and "TYPEDEFname" that are lexically identical.  While it is possible to write a
     254// purely context-free grammar, such a grammar would obscure the relationship between syntactic and semantic
     255// constructs.  Hence, this grammar uses the ANSI style.
     256//
     257// Cforall compounds this problem by introducing type names local to the scope of a declaration (for instance,
     258// those introduced through "forall" qualifiers), and by introducing "type generators" -- parametrized types.
     259// This latter type name creates a third class of identifiers that must be distinguished by the scanner.
     260//
     261// Since the scanner cannot distinguish among the different classes of identifiers without some context
     262// information, it accesses a data structure (the TypedefTable) to allow classification of an identifier that
     263// it has just read.  Semantic actions during the parser update this data structure when the class of
     264// identifiers change.
     265//
     266// Because the Cforall language is block-scoped, there is the possibility that an identifier can change its
     267// class in a local scope; it must revert to its original class at the end of the block.  Since type names can
     268// be local to a particular declaration, each declaration is itself a scope.  This requires distinguishing
     269// between type names that are local to the current declaration scope and those that persist past the end of
     270// the declaration (i.e., names defined in "typedef" or "type" declarations).
     271//
     272// The non-terminals "push" and "pop" derive the empty string; their only use is to denote the opening and
     273// closing of scopes.  Every push must have a matching pop, although it is regrettable the matching pairs do
     274// not always occur within the same rule.  These non-terminals may appear in more contexts than strictly
     275// necessary from a semantic point of view.  Unfortunately, these extra rules are necessary to prevent parsing
     276// conflicts -- the parser may not have enough context and look-ahead information to decide whether a new
     277// scope is necessary, so the effect of these extra rules is to open a new scope unconditionally.  As the
     278// grammar evolves, it may be neccesary to add or move around "push" and "pop" nonterminals to resolve
     279// conflicts of this sort.
    277280
    278281push:
     
    291294
    292295constant:
    293                 // ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant".
     296                // ENUMERATIONconstant is not included here; it is treated as a variable with type
     297                // "enumeration constant".
    294298        INTEGERconstant                                                         { $$ = new ConstantNode( ConstantNode::Integer, $1 ); }
    295299        | FLOATINGconstant                                                      { $$ = new ConstantNode( ConstantNode::Float, $1 ); }
     
    326330primary_expression:
    327331        IDENTIFIER                                                                                      // typedef name cannot be used as a variable name
    328                 { $$ = new VarRefNode( $1 ); }
     332                { $$ = new VarRefNode($1); }
    329333        | zero_one
    330                 { $$ = new VarRefNode( $1 ); }
     334                { $$ = new VarRefNode($1); }
    331335        | constant
    332336                { $$ = $1; }
     
    336340                { $$ = $2; }
    337341        | '(' compound_statement ')'                                            // GCC, lambda expression
    338                 { $$ = new ValofExprNode( $2 ); }
     342                { $$ = new ValofExprNode($2); }
    339343        ;
    340344
     
    342346        primary_expression
    343347        | postfix_expression '[' push assignment_expression pop ']'
    344                 // CFA, comma_expression disallowed in the context because it results in a commom user error: subscripting a
    345                 // matrix with x[i,j] instead of x[i][j]. While this change is not backwards compatible, there seems to be
    346                 // little advantage to this feature and many disadvantages. It is possible to write x[(i,j)] in CFA, which is
    347                 // equivalent to the old x[i,j].
    348                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), $1, $4 ); }
     348                // CFA, comma_expression disallowed in the context because it results in a commom user error:
     349                // subscripting a matrix with x[i,j] instead of x[i][j]. While this change is not backwards
     350                // compatible, there seems to be little advantage to this feature and many disadvantages. It is
     351                // possible to write x[(i,j)] in CFA, which is equivalent to the old x[i,j].
     352                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Index), $1, $4); }
    349353        | postfix_expression '(' argument_expression_list ')'
    350                 { $$ = new CompositeExprNode( $1, $3 ); }
     354                { $$ = new CompositeExprNode($1, $3); }
    351355        | postfix_expression '.' no_attr_identifier
    352                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), $1, new VarRefNode( $3 )); }
     356                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::FieldSel), $1, new VarRefNode($3)); }
    353357        | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
    354358        | postfix_expression ARROW no_attr_identifier
    355                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), $1, new VarRefNode( $3 )); }
     359                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::PFieldSel), $1, new VarRefNode($3)); }
    356360        | postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector
    357361        | postfix_expression ICR
    358                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), $1 ); }
     362                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::IncrPost), $1); }
    359363        | postfix_expression DECR
    360                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), $1 ); }
     364                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::DecrPost), $1); }
    361365                // GCC has priority: cast_expression
    362366        | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99
     
    367371        argument_expression
    368372        | argument_expression_list ',' argument_expression
    369                 { $$ = (ExpressionNode *)( $1->set_link( $3 )); }
     373                { $$ = (ExpressionNode *)($1->set_link($3)); }
    370374        ;
    371375
     
    375379        | assignment_expression
    376380        | no_attr_identifier ':' assignment_expression
    377                 { $$ = $3->set_asArgName( $1 ); }
    378                 // Only a list of no_attr_identifier_or_typedef_name is allowed in this context. However, there is insufficient
    379                 // look ahead to distinguish between this list of parameter names and a tuple, so the tuple form must be used
    380                 // with an appropriate semantic check.
     381                { $$ = $3->set_asArgName($1); }
     382                // Only a list of no_attr_identifier_or_typedef_name is allowed in this context. However, there is
     383                // insufficient look ahead to distinguish between this list of parameter names and a tuple, so the
     384                // tuple form must be used with an appropriate semantic check.
    381385        | '[' push assignment_expression pop ']' ':' assignment_expression
    382                 { $$ = $7->set_asArgName( $3 ); }
     386                { $$ = $7->set_asArgName($3); }
    383387        | '[' push assignment_expression ',' tuple_expression_list pop ']' ':' assignment_expression
    384388                { $$ = $9->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)$3->set_link( flattenCommas( $5 )))); }
     
    394398                { $$ = new VarRefNode( $1 ); }
    395399        | no_attr_identifier '.' field
    396                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $3 ); }
     400                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::FieldSel), new VarRefNode( $1 ), $3); }
    397401        | no_attr_identifier '.' '[' push field_list pop ']'
    398                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $5 ); }
     402                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::FieldSel), new VarRefNode( $1 ), $5); }
    399403        | no_attr_identifier ARROW field
    400                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( $1 ), $3 ); }
     404                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::PFieldSel), new VarRefNode( $1 ), $3); }
    401405        | no_attr_identifier ARROW '[' push field_list pop ']'
    402                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( $1 ), $5 ); }
     406                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::PFieldSel), new VarRefNode( $1 ), $5); }
    403407        ;
    404408
     
    406410        postfix_expression
    407411        | ICR unary_expression
    408                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), $2 ); }
     412                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Incr), $2); }
    409413        | DECR unary_expression
    410                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), $2 ); }
     414                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Decr), $2); }
    411415        | EXTENSION cast_expression                                                     // GCC
    412416                { $$ = $2; }
    413417        | unary_operator cast_expression
    414                 { $$ = new CompositeExprNode( $1, $2 ); }
     418                { $$ = new CompositeExprNode($1, $2); }
    415419        | '!' cast_expression
    416                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), $2 ); }
     420                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Neg), $2); }
    417421        | '*' cast_expression                                                           // CFA
    418                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), $2 ); }
     422                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::PointTo), $2); }
    419423                // '*' is is separated from unary_operator because of shift/reduce conflict in:
    420424                //              { * X; } // dereference X
     
    422426                // '&' must be moved here if C++ reference variables are supported.
    423427        | SIZEOF unary_expression
    424                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), $2 ); }
     428                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::SizeOf), $2); }
    425429        | SIZEOF '(' type_name_no_function ')'
    426                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( $3 )); }
     430                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::SizeOf), new TypeValueNode($3)); }
    427431        | ATTR_IDENTIFIER
    428                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 )); }
     432                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Attr), new VarRefNode($1)); }
    429433        | ATTR_IDENTIFIER '(' type_name ')'
    430                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), new TypeValueNode( $3 )); }
     434                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Attr), new VarRefNode($1), new TypeValueNode($3)); }
    431435        | ATTR_IDENTIFIER '(' argument_expression ')'
    432                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), $3 ); }
     436                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Attr), new VarRefNode($1), $3); }
    433437        | ALIGNOF unary_expression                                                      // GCC, variable alignment
    434                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), $2 ); }
     438                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::AlignOf), $2); }
    435439        | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
    436                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 )); }
     440                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::AlignOf), new TypeValueNode($3)); }
    437441        | ANDAND no_attr_identifier                                                     // GCC, address of label
    438                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true )); }
     442                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::LabelAddress), new VarRefNode($2, true)); }
    439443        ;
    440444
    441445unary_operator:
    442         '&'                                                                                     { $$ = new OperatorNode( OperatorNode::AddressOf ); }
    443         | '+'                                                                           { $$ = new OperatorNode( OperatorNode::UnPlus ); }
    444         | '-'                                                                           { $$ = new OperatorNode( OperatorNode::UnMinus ); }
    445         | '~'                                                                           { $$ = new OperatorNode( OperatorNode::BitNeg ); }
     446        '&'                                                                                     { $$ = new OperatorNode(OperatorNode::AddressOf); }
     447        | '+'                                                                           { $$ = new OperatorNode(OperatorNode::UnPlus); }
     448        | '-'                                                                           { $$ = new OperatorNode(OperatorNode::UnMinus); }
     449        | '~'                                                                           { $$ = new OperatorNode(OperatorNode::BitNeg); }
    446450        ;
    447451
     
    449453        unary_expression
    450454        | '(' type_name_no_function ')' cast_expression
    451                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( $2 ), $4 ); }
     455                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Cast), new TypeValueNode($2), $4); }
    452456        | '(' type_name_no_function ')' tuple
    453                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( $2 ), $4 ); }
     457                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Cast), new TypeValueNode($2), $4); }
    454458        ;
    455459
     
    457461        cast_expression
    458462        | multiplicative_expression '*' cast_expression
    459                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), $1, $3 ); }
     463                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Mul),$1,$3); }
    460464        | multiplicative_expression '/' cast_expression
    461                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), $1, $3 ); }
     465                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Div),$1,$3); }
    462466        | multiplicative_expression '%' cast_expression
    463                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), $1, $3 ); }
     467                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Mod),$1,$3); }
    464468        ;
    465469
     
    467471        multiplicative_expression
    468472        | additive_expression '+' multiplicative_expression
    469                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), $1, $3 ); }
     473                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Plus),$1,$3); }
    470474        | additive_expression '-' multiplicative_expression
    471                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), $1, $3 ); }
     475                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Minus),$1,$3); }
    472476        ;
    473477
     
    475479        additive_expression
    476480        | shift_expression LS additive_expression
    477                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), $1, $3 ); }
     481                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::LShift),$1,$3); }
    478482        | shift_expression RS additive_expression
    479                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), $1, $3 ); }
     483                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::RShift),$1,$3); }
    480484        ;
    481485
     
    483487        shift_expression
    484488        | relational_expression '<' shift_expression
    485                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), $1, $3 ); }
     489                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::LThan),$1,$3); }
    486490        | relational_expression '>' shift_expression
    487                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), $1, $3 ); }
     491                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::GThan),$1,$3); }
    488492        | relational_expression LE shift_expression
    489                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), $1, $3 ); }
     493                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::LEThan),$1,$3); }
    490494        | relational_expression GE shift_expression
    491                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), $1, $3 ); }
     495                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::GEThan),$1,$3); }
    492496        ;
    493497
     
    495499        relational_expression
    496500        | equality_expression EQ relational_expression
    497                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), $1, $3 ); }
     501                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Eq), $1, $3); }
    498502        | equality_expression NE relational_expression
    499                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), $1, $3 ); }
     503                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Neq), $1, $3); }
    500504        ;
    501505
     
    503507        equality_expression
    504508        | AND_expression '&' equality_expression
    505                 { $$ =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), $1, $3 ); }
     509                { $$ =new CompositeExprNode(new OperatorNode(OperatorNode::BitAnd), $1, $3); }
    506510        ;
    507511
     
    509513        AND_expression
    510514        | exclusive_OR_expression '^' AND_expression
    511                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), $1, $3 ); }
     515                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Xor), $1, $3); }
    512516        ;
    513517
     
    515519        exclusive_OR_expression
    516520        | inclusive_OR_expression '|' exclusive_OR_expression
    517                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), $1, $3 ); }
     521                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::BitOr), $1, $3); }
    518522        ;
    519523
     
    521525        inclusive_OR_expression
    522526        | logical_AND_expression ANDAND inclusive_OR_expression
    523                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::And ), $1, $3 ); }
     527                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::And), $1, $3); }
    524528        ;
    525529
     
    527531        logical_AND_expression
    528532        | logical_OR_expression OROR logical_AND_expression
    529                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), $1, $3 ); }
     533                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Or), $1, $3); }
    530534        ;
    531535
     
    533537        logical_OR_expression
    534538        | logical_OR_expression '?' comma_expression ':' conditional_expression
    535                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*$1, *$3, *$5 ) ) ); }
     539                { $$ = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*$1, *$3, *$5) ) ); }
    536540        | logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
    537                 { $$=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), $1, $4 ); }
     541                { $$=new CompositeExprNode(new OperatorNode(OperatorNode::NCond),$1,$4); }
    538542        | logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
    539                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*$1, *$3, *$5 ) ) ); }
     543                { $$ = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*$1, *$3, *$5) ) ); }
    540544        ;
    541545
     
    548552        conditional_expression
    549553        | unary_expression '=' assignment_expression
    550                 { $$ =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $3 ); }
     554                { $$ =new CompositeExprNode(new OperatorNode(OperatorNode::Assign), $1, $3); }
    551555        | unary_expression assignment_operator assignment_expression
    552                 { $$ =new CompositeExprNode( $2, $1, $3 ); }
     556                { $$ =new CompositeExprNode($2, $1, $3); }
    553557        | tuple assignment_opt                                                          // CFA, tuple expression
    554                 { $$ = ( $2 == 0 ) ? $1 : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $2 ); }
     558                { $$ = ($2 == 0) ? $1 : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $2 ); }
    555559        ;
    556560
     
    562566
    563567tuple:                                                                                                  // CFA, tuple
    564                 // CFA, one assignment_expression is factored out of comma_expression to eliminate a shift/reduce conflict with
    565                 // comma_expression in new_identifier_parameter_array and new_abstract_array
     568                // CFA, one assignment_expression is factored out of comma_expression to eliminate a shift/reduce
     569                // conflict with comma_expression in new_identifier_parameter_array and new_abstract_array
    566570        '[' push pop ']'
    567571                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
     
    581585
    582586assignment_operator:
    583         MULTassign                                                                      { $$ = new OperatorNode( OperatorNode::MulAssn ); }
    584         | DIVassign                                                                     { $$ = new OperatorNode( OperatorNode::DivAssn ); }
    585         | MODassign                                                                     { $$ = new OperatorNode( OperatorNode::ModAssn ); }
    586         | PLUSassign                                                            { $$ = new OperatorNode( OperatorNode::PlusAssn ); }
    587         | MINUSassign                                                           { $$ = new OperatorNode( OperatorNode::MinusAssn ); }
    588         | LSassign                                                                      { $$ = new OperatorNode( OperatorNode::LSAssn ); }
    589         | RSassign                                                                      { $$ = new OperatorNode( OperatorNode::RSAssn ); }
    590         | ANDassign                                                                     { $$ = new OperatorNode( OperatorNode::AndAssn ); }
    591         | ERassign                                                                      { $$ = new OperatorNode( OperatorNode::ERAssn ); }
    592         | ORassign                                                                      { $$ = new OperatorNode( OperatorNode::OrAssn ); }
     587        MULTassign                                                                      { $$ = new OperatorNode(OperatorNode::MulAssn); }
     588        | DIVassign                                                                     { $$ = new OperatorNode(OperatorNode::DivAssn); }
     589        | MODassign                                                                     { $$ = new OperatorNode(OperatorNode::ModAssn); }
     590        | PLUSassign                                                            { $$ = new OperatorNode(OperatorNode::PlusAssn); }
     591        | MINUSassign                                                           { $$ = new OperatorNode(OperatorNode::MinusAssn); }
     592        | LSassign                                                                      { $$ = new OperatorNode(OperatorNode::LSAssn); }
     593        | RSassign                                                                      { $$ = new OperatorNode(OperatorNode::RSAssn); }
     594        | ANDassign                                                                     { $$ = new OperatorNode(OperatorNode::AndAssn); }
     595        | ERassign                                                                      { $$ = new OperatorNode(OperatorNode::ERAssn); }
     596        | ORassign                                                                      { $$ = new OperatorNode(OperatorNode::OrAssn); }
    593597        ;
    594598
    595599comma_expression:
    596600        assignment_expression
    597         | comma_expression ',' assignment_expression    // { $$ = (ExpressionNode *)$1->add_to_list( $3 ); }
    598                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), $1, $3 ); }
     601        | comma_expression ',' assignment_expression    // { $$ = (ExpressionNode *)$1->add_to_list($3); }
     602                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Comma),$1,$3); }
    599603        ;
    600604
     
    620624labeled_statement:
    621625        no_attr_identifier ':' attribute_list_opt statement
    622                 { $$ = $4->add_label( $1 );}
     626                { $$ = $4->add_label($1);}
    623627        ;
    624628
     
    627631                { $$ = new CompoundStmtNode( (StatementNode *)0 ); }
    628632        | '{'
    629                 // Two scopes are necessary because the block itself has a scope, but every declaration within the block also
    630                 // requires its own scope
     633                // Two scopes are necessary because the block itself has a scope, but every declaration within the
     634                // block also requires its own scope
    631635          push push
    632636          label_declaration_opt                                                         // GCC, local labels
     
    638642        block_item
    639643        | block_item_list push block_item
    640                 { if ( $1 != 0 ) { $1->set_link( $3 ); $$ = $1; } }
     644                { if ($1 != 0) { $1->set_link($3); $$ = $1; } }
    641645        ;
    642646
     
    654658        statement
    655659        | statement_list statement
    656                 { if ( $1 != 0 ) { $1->set_link( $2 ); $$ = $1; } }
     660                { if ($1 != 0) { $1->set_link($2); $$ = $1; } }
    657661        ;
    658662
    659663expression_statement:
    660664        comma_expression_opt ';'
    661                 { $$ = new StatementNode( StatementNode::Exp, $1, 0 ); }
     665                { $$ = new StatementNode(StatementNode::Exp, $1, 0); }
    662666        ;
    663667
     
    665669        IF '(' comma_expression ')' statement                           %prec THEN
    666670                // explicitly deal with the shift/reduce conflict on if/else
    667                 { $$ = new StatementNode( StatementNode::If, $3, $5 ); }
     671                { $$ = new StatementNode(StatementNode::If, $3, $5); }
    668672        | IF '(' comma_expression ')' statement ELSE statement
    669                 { $$ = new StatementNode( StatementNode::If, $3, (StatementNode *)mkList((*$5, *$7 )) ); }
     673                { $$ = new StatementNode(StatementNode::If, $3, (StatementNode *)mkList((*$5, *$7)) ); }
    670674        | SWITCH '(' comma_expression ')' case_clause           // CFA
    671                 { $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
     675                { $$ = new StatementNode(StatementNode::Switch, $3, $5); }
    672676        | SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA
    673                 { $$ = new StatementNode( StatementNode::Switch, $3, $8 ); /* xxx */ }
    674                 // The semantics of the declaration list is changed to include any associated initialization, which is performed
    675                 // *before* the transfer to the appropriate case clause.  Statements after the initial declaration list can
    676                 // never be executed, and therefore, are removed from the grammar even though C allows it.
     677                { $$ = new StatementNode(StatementNode::Switch, $3, $8); /* xxx */ }
     678                // The semantics of the declaration list is changed to include any associated initialization, which is
     679                // performed *before* the transfer to the appropriate case clause.  Statements after the initial
     680                // declaration list can never be executed, and therefore, are removed from the grammar even though C
     681                // allows it.
    677682        | CHOOSE '(' comma_expression ')' case_clause           // CFA
    678                 { $$ = new StatementNode( StatementNode::Choose, $3, $5 ); }
     683                { $$ = new StatementNode(StatementNode::Choose, $3, $5); }
    679684        | CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA
    680                 { $$ = new StatementNode( StatementNode::Choose, $3, $8 ); }
    681         ;
    682 
    683 // CASE and DEFAULT clauses are only allowed in the SWITCH statement, precluding Duff's device. In addition, a case
    684 // clause allows a list of values and subranges.
     685                { $$ = new StatementNode(StatementNode::Choose, $3, $8); }
     686        ;
     687
     688// CASE and DEFAULT clauses are only allowed in the SWITCH statement, precluding Duff's device. In addition, a
     689// case clause allows a list of values and subranges.
    685690
    686691case_value:                                                                                             // CFA
    687692        constant_expression                                                     { $$ = $1; }
    688693        | constant_expression ELLIPSIS constant_expression      // GCC, subrange
    689                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $1, $3 ); }
     694                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Range),$1,$3); }
    690695        | subrange                                                                                      // CFA, subrange
    691696        ;
     
    694699        case_value
    695700        | case_value_list ',' case_value
    696                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( $1 ))->set_link( $3 ) ); }
     701                { $$ = new CompositeExprNode(new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents($1))->set_link($3) ); }
    697702        ;
    698703
    699704case_label:                                                                                             // CFA
    700         CASE case_value_list ':'                                        { $$ = new StatementNode( StatementNode::Case, $2, 0 ); }
    701         | DEFAULT ':'                                                           { $$ = new StatementNode( StatementNode::Default ); }
     705        CASE case_value_list ':'                                        { $$ = new StatementNode(StatementNode::Case, $2, 0); }
     706        | DEFAULT ':'                                                           { $$ = new StatementNode(StatementNode::Default); }
    702707                // A semantic check is required to ensure only one default clause per switch/choose statement.
    703708        ;
     
    705710case_label_list:                                                                                // CFA
    706711        case_label
    707         | case_label_list case_label                            { $$ = (StatementNode *)( $1->set_link( $2 )); }
     712        | case_label_list case_label                            { $$ = (StatementNode *)($1->set_link($2)); }
    708713        ;
    709714
    710715case_clause:                                                                                    // CFA
    711         case_label_list statement                                       { $$ = $1->append_last_case( $2 ); }
     716        case_label_list statement                                       { $$ = $1->append_last_case($2); }
    712717        ;
    713718
     
    720725switch_clause_list:                                                                             // CFA
    721726        case_label_list statement_list
    722                 { $$ = $1->append_last_case( $2 ); }
     727                { $$ = $1->append_last_case($2); }
    723728        | switch_clause_list case_label_list statement_list
    724                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
     729                { $$ = (StatementNode *)($1->set_link($2->append_last_case($3))); }
    725730        ;
    726731
     
    733738choose_clause_list:                                                                             // CFA
    734739        case_label_list fall_through
    735                 { $$ = $1->append_last_case( $2 ); }
     740                { $$ = $1->append_last_case($2); }
    736741        | case_label_list statement_list fall_through_opt
    737                 { $$ = $1->append_last_case((StatementNode *)mkList((*$2,*$3 ))); }
     742                { $$ = $1->append_last_case((StatementNode *)mkList((*$2,*$3))); }
    738743        | choose_clause_list case_label_list fall_through
    739                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
     744                { $$ = (StatementNode *)($1->set_link($2->append_last_case($3))); }
    740745        | choose_clause_list case_label_list statement_list fall_through_opt
    741                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case((StatementNode *)mkList((*$3,*$4 ))))); }
     746                { $$ = (StatementNode *)($1->set_link($2->append_last_case((StatementNode *)mkList((*$3,*$4))))); }
    742747        ;
    743748
     
    749754
    750755fall_through:                                                                                   // CFA
    751         FALLTHRU                                                                        { $$ = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
    752         | FALLTHRU ';'                                                          { $$ = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
     756        FALLTHRU                                                                        { $$ = new StatementNode(StatementNode::Fallthru, 0, 0); }
     757        | FALLTHRU ';'                                                          { $$ = new StatementNode(StatementNode::Fallthru, 0, 0); }
    753758        ;
    754759
    755760iteration_statement:
    756761        WHILE '(' comma_expression ')' statement
    757                 { $$ = new StatementNode( StatementNode::While, $3, $5 ); }
     762                { $$ = new StatementNode(StatementNode::While, $3, $5); }
    758763        | DO statement WHILE '(' comma_expression ')' ';'
    759                 { $$ = new StatementNode( StatementNode::Do, $5, $2 ); }
     764                { $$ = new StatementNode(StatementNode::Do, $5, $2); }
    760765        | FOR '(' push for_control_expression ')' statement
    761                 { $$ = new StatementNode( StatementNode::For, $4, $6 ); }
     766                { $$ = new StatementNode(StatementNode::For, $4, $6); }
    762767        ;
    763768
    764769for_control_expression:
    765770        comma_expression_opt pop ';' comma_expression_opt ';' comma_expression_opt
    766                 { $$ = new ForCtlExprNode( $1, $4, $6 ); }
     771                { $$ = new ForCtlExprNode($1, $4, $6); }
    767772        | declaration comma_expression_opt ';' comma_expression_opt // C99
    768                 { $$ = new ForCtlExprNode( $1, $2, $4 ); }
     773                { $$ = new ForCtlExprNode($1, $2, $4); }
    769774        ;
    770775
    771776jump_statement:
    772777        GOTO no_attr_identifier ';'
    773                 { $$ = new StatementNode( StatementNode::Goto, $2 ); }
     778                { $$ = new StatementNode(StatementNode::Goto, $2); }
    774779        | GOTO '*' comma_expression ';'                                         // GCC, computed goto
    775                 // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3 );
    776                 // whereas normal operator precedence yields goto (*i)+3;
    777                 { $$ = new StatementNode( StatementNode::Goto, $3 ); }
     780                // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; =>
     781                // goto *(i+3); whereas normal operator precedence yields goto (*i)+3;
     782                { $$ = new StatementNode(StatementNode::Goto, $3); }
    778783        | CONTINUE ';'
    779                 // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    780                 { $$ = new StatementNode( StatementNode::Continue, 0, 0 ); }
     784                // A semantic check is required to ensure this statement appears only in the body of an iteration
     785                // statement.
     786                { $$ = new StatementNode(StatementNode::Continue, 0, 0); }
    781787        | CONTINUE no_attr_identifier ';'                                       // CFA, multi-level continue
    782                 // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    783                 // the target of the transfer appears only at the start of an iteration statement.
    784                 { $$ = new StatementNode( StatementNode::Continue, $2 ); }
     788                // A semantic check is required to ensure this statement appears only in the body of an iteration
     789                // statement, and the target of the transfer appears only at the start of an iteration statement.
     790                { $$ = new StatementNode(StatementNode::Continue, $2); }
    785791        | BREAK ';'
    786                 // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    787                 { $$ = new StatementNode( StatementNode::Break, 0, 0 ); }
     792                // A semantic check is required to ensure this statement appears only in the body of an iteration
     793                // statement.
     794                { $$ = new StatementNode(StatementNode::Break, 0, 0); }
    788795        | BREAK no_attr_identifier ';'                                          // CFA, multi-level exit
    789                 // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    790                 // the target of the transfer appears only at the start of an iteration statement.
    791                 { $$ = new StatementNode( StatementNode::Break, $2 ); }
     796                // A semantic check is required to ensure this statement appears only in the body of an iteration
     797                // statement, and the target of the transfer appears only at the start of an iteration statement.
     798                { $$ = new StatementNode(StatementNode::Break, $2 ); }
    792799        | RETURN comma_expression_opt ';'
    793                 { $$ = new StatementNode( StatementNode::Return, $2, 0 ); }
     800                { $$ = new StatementNode(StatementNode::Return, $2, 0); }
    794801        | THROW assignment_expression ';'
    795                 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
     802                { $$ = new StatementNode(StatementNode::Throw, $2, 0); }
    796803        | THROW ';'
    797                 { $$ = new StatementNode( StatementNode::Throw, 0, 0 ); }
     804                { $$ = new StatementNode(StatementNode::Throw, 0, 0); }
    798805        ;
    799806
    800807exception_statement:
    801808        TRY compound_statement handler_list
    802                 { $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }
     809                { $$ = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3)))); }
    803810        | TRY compound_statement finally_clause
    804                 { $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }
     811                { $$ = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3)))); }
    805812        | TRY compound_statement handler_list finally_clause
    806813                {
    807                         $3->set_link( $4 );
    808                         $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 ))));
     814                        $3->set_link($4);
     815                        $$ = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3))));
    809816                }
    810817        ;
     
    813820                // There must be at least one catch clause
    814821        handler_clause
    815                 // ISO/IEC 9899:1999 Section 15.3(6 ) If present, a "..." handler shall be the last handler for its try block.
     822                // ISO/IEC 9899:1999 Section 15.3(6) If present, a "..." handler shall be the last handler for its try
     823                // block.
    816824        | CATCH '(' ELLIPSIS ')' compound_statement
    817825                { $$ = StatementNode::newCatchStmt( 0, $5, true ); }
     
    822830handler_clause:
    823831        CATCH '(' push push exception_declaration pop ')' compound_statement pop
    824                 { $$ = StatementNode::newCatchStmt( $5, $8 ); }
     832                { $$ = StatementNode::newCatchStmt($5, $8); }
    825833        | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
    826                 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
     834                { $$ = $1->set_link( StatementNode::newCatchStmt($6, $9) ); }
    827835        ;
    828836
     
    830838        FINALLY compound_statement
    831839                {
    832                         $$ = new StatementNode( StatementNode::Finally, 0, $2 );
     840                        $$ = new StatementNode(StatementNode::Finally, 0, $2);
    833841                        std::cout << "Just created a finally node" << std::endl;
    834842                }
     
    859867asm_statement:
    860868        ASM type_qualifier_list_opt '(' constant_expression ')' ';'
    861                 { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
     869                { $$ = new StatementNode(StatementNode::Asm, 0, 0); }
    862870        | ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ')' ';' // remaining GCC
    863                 { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
     871                { $$ = new StatementNode(StatementNode::Asm, 0, 0); }
    864872        | ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ':' asm_operands_opt ')' ';'
    865                 { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
     873                { $$ = new StatementNode(StatementNode::Asm, 0, 0); }
    866874        | ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list ')' ';'
    867                 { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
     875                { $$ = new StatementNode(StatementNode::Asm, 0, 0); }
    868876        ;
    869877
     
    933941        ;
    934942
    935 // C declaration syntax is notoriously confusing and error prone. Cforall provides its own type, variable and function
    936 // declarations. CFA declarations use the same declaration tokens as in C; however, CFA places declaration modifiers to
    937 // the left of the base type, while C declarations place modifiers to the right of the base type. CFA declaration
    938 // modifiers are interpreted from left to right and the entire type specification is distributed across all variables in
    939 // the declaration list (as in Pascal).  ANSI C and the new CFA declarations may appear together in the same program
    940 // block, but cannot be mixed within a specific declaration.
     943// C declaration syntax is notoriously confusing and error prone. Cforall provides its own type, variable and
     944// function declarations. CFA declarations use the same declaration tokens as in C; however, CFA places
     945// declaration modifiers to the left of the base type, while C declarations place modifiers to the right of
     946// the base type. CFA declaration modifiers are interpreted from left to right and the entire type
     947// specification is distributed across all variables in the declaration list (as in Pascal).  ANSI C and the
     948// new CFA declarations may appear together in the same program block, but cannot be mixed within a specific
     949// declaration.
    941950//
    942951//                      CFA                                     C
     
    959968                }
    960969        | declaration_qualifier_list new_variable_specifier initializer_opt
    961                 // declaration_qualifier_list also includes type_qualifier_list, so a semantic check is necessary to preclude
    962                 // them as a type_qualifier cannot appear in that context.
     970                // declaration_qualifier_list also includes type_qualifier_list, so a semantic check is necessary to
     971                // preclude them as a type_qualifier cannot appear in that context.
    963972                {
    964973                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    973982
    974983new_variable_specifier:                                                                 // CFA
    975                 // A semantic check is required to ensure asm_name only appears on declarations with implicit or explicit static
    976                 // storage-class
     984                // A semantic check is required to ensure asm_name only appears on declarations with implicit or
     985                // explicit static storage-class
    977986        new_abstract_declarator_no_tuple identifier_or_typedef_name asm_name_opt
    978987                {
     
    10231032        '[' push pop ']' identifier '(' push new_parameter_type_list_opt pop ')'
    10241033                {
    1025                         typedefTable.setNextIdentifier( *( $5 ) );
     1034                        typedefTable.setNextIdentifier( *($5) );
    10261035                        $$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
    10271036                }
    10281037        | '[' push pop ']' TYPEDEFname '(' push new_parameter_type_list_opt pop ')'
    10291038                {
    1030                         typedefTable.setNextIdentifier( *( $5 ) );
     1039                        typedefTable.setNextIdentifier( *($5) );
    10311040                        $$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
    10321041                }
     
    10361045                //   '[' ']' type_specifier
    10371046                //
    1038                 // type_specifier can resolve to just TYPEDEFname (e.g. typedef int T; int f( T );). Therefore this must be
    1039                 // flattened to allow lookahead to the '(' without having to reduce identifier_or_typedef_name.
     1047                // type_specifier can resolve to just TYPEDEFname (e.g. typedef int T; int f( T );). Therefore this
     1048                // must be flattened to allow lookahead to the '(' without having to reduce
     1049                // identifier_or_typedef_name.
    10401050        | new_abstract_tuple identifier_or_typedef_name '(' push new_parameter_type_list_opt pop ')'
    1041                 // To obtain LR(1 ), this rule must be factored out from function return type (see new_abstract_declarator).
     1051                // To obtain LR(1), this rule must be factored out from function return type (see
     1052                //   new_abstract_declarator).
    10421053                {
    10431054                        $$ = DeclarationNode::newFunction( $2, $1, $5, 0, true );
     
    10531064                { $$ = DeclarationNode::newTuple( $3 ); }
    10541065        | '[' push new_parameter_list pop ',' push new_abstract_parameter_list pop ']'
    1055                 // To obtain LR(1 ), the last new_abstract_parameter_list is added into this flattened rule to lookahead to the
    1056                 // ']'.
     1066                // To obtain LR(1), the last new_abstract_parameter_list is added into this flattened rule to
     1067                // lookahead to the ']'.
    10571068                { $$ = DeclarationNode::newTuple( $3->appendList( $7 ) ); }
    10581069        ;
     
    10611072        TYPEDEF new_variable_specifier
    10621073                {
    1063                         typedefTable.addToEnclosingScope( TypedefTable::TD );
     1074                        typedefTable.addToEnclosingScope( TypedefTable::TD);
    10641075                        $$ = $2->addTypedef();
    10651076                }
    10661077        | TYPEDEF new_function_specifier
    10671078                {
    1068                         typedefTable.addToEnclosingScope( TypedefTable::TD );
     1079                        typedefTable.addToEnclosingScope( TypedefTable::TD);
    10691080                        $$ = $2->addTypedef();
    10701081                }
    10711082        | new_typedef_declaration pop ',' push no_attr_identifier
    10721083                {
    1073                         typedefTable.addToEnclosingScope( *$5, TypedefTable::TD );
     1084                        typedefTable.addToEnclosingScope( *$5, TypedefTable::TD);
    10741085                        $$ = $1->appendList( $1->cloneType( $5 ) );
    10751086                }
    10761087        ;
    10771088
    1078 // Traditionally typedef is part of storage-class specifier for syntactic convenience only. Here, it is factored out as
    1079 // a separate form of declaration, which syntactically precludes storage-class specifiers and initialization.
     1089// Traditionally typedef is part of storage-class specifier for syntactic convenience only. Here, it is
     1090// factored out as a separate form of declaration, which syntactically precludes storage-class specifiers and
     1091// initialization.
    10801092
    10811093typedef_declaration:
    10821094        TYPEDEF type_specifier declarator
    10831095                {
    1084                         typedefTable.addToEnclosingScope( TypedefTable::TD );
     1096                        typedefTable.addToEnclosingScope( TypedefTable::TD);
    10851097                        $$ = $3->addType( $2 )->addTypedef();
    10861098                }
    10871099        | typedef_declaration pop ',' push declarator
    10881100                {
    1089                         typedefTable.addToEnclosingScope( TypedefTable::TD );
     1101                        typedefTable.addToEnclosingScope( TypedefTable::TD);
    10901102                        $$ = $1->appendList( $1->cloneBaseType( $5 )->addTypedef() );
    10911103                }
    1092         | type_qualifier_list TYPEDEF type_specifier declarator // remaining OBSOLESCENT (see 2 )
    1093                 {
    1094                         typedefTable.addToEnclosingScope( TypedefTable::TD );
     1104        | type_qualifier_list TYPEDEF type_specifier declarator // remaining OBSOLESCENT (see 2)
     1105                {
     1106                        typedefTable.addToEnclosingScope( TypedefTable::TD);
    10951107                        $$ = $4->addType( $3 )->addQualifiers( $1 )->addTypedef();
    10961108                }
    10971109        | type_specifier TYPEDEF declarator
    10981110                {
    1099                         typedefTable.addToEnclosingScope( TypedefTable::TD );
     1111                        typedefTable.addToEnclosingScope( TypedefTable::TD);
    11001112                        $$ = $3->addType( $1 )->addTypedef();
    11011113                }
    11021114        | type_specifier TYPEDEF type_qualifier_list declarator
    11031115                {
    1104                         typedefTable.addToEnclosingScope( TypedefTable::TD );
    1105                         $$ = $4->addQualifiers( $1 )->addTypedef()->addType( $1 );
     1116                        typedefTable.addToEnclosingScope( TypedefTable::TD);
     1117                        $$ = $4->addQualifiers($1)->addTypedef()->addType($1);
    11061118                }
    11071119        ;
     
    11101122        TYPEDEF no_attr_identifier '=' assignment_expression
    11111123                {
    1112                         typedefTable.addToEnclosingScope( *$2, TypedefTable::TD );
     1124                        typedefTable.addToEnclosingScope(*($2), TypedefTable::TD);
    11131125                        $$ = DeclarationNode::newName( 0 ); // XXX
    11141126                }
    11151127        | typedef_expression pop ',' push no_attr_identifier '=' assignment_expression
    11161128                {
    1117                         typedefTable.addToEnclosingScope( *$5, TypedefTable::TD );
     1129                        typedefTable.addToEnclosingScope(*($5), TypedefTable::TD);
    11181130                        $$ = DeclarationNode::newName( 0 ); // XXX
    11191131                }
     
    11281140
    11291141declaring_list:
    1130                 // A semantic check is required to ensure asm_name only appears on declarations with implicit or explicit static
    1131                 // storage-class
     1142                // A semantic check is required to ensure asm_name only appears on declarations with implicit or
     1143                // explicit static storage-class
    11321144        declaration_specifier declarator asm_name_opt initializer_opt
    11331145                {
    11341146                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1135                         $$ = ( $2->addType( $1 ))->addInitializer( $4 );
     1147                        $$ = ($2->addType( $1 ))->addInitializer($4);
    11361148                }
    11371149        | declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
    11381150                {
    11391151                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1140                         $$ = $1->appendList( $1->cloneBaseType( $4->addInitializer( $6 ) ) );
     1152                        $$ = $1->appendList( $1->cloneBaseType( $4->addInitializer($6) ) );
    11411153                }
    11421154        ;
     
    11631175
    11641176type_qualifier_list:
    1165                 // A semantic check is necessary to ensure a type qualifier is appropriate for the kind of declaration.
     1177                // A semantic check is necessary to ensure a type qualifier is appropriate for the kind of
     1178                // declaration.
    11661179                //
    1167                 // ISO/IEC 9899:1999 Section 6.7.3(4 ) : If the same qualifier appears more than once in the same
    1168                 // specifier-qualifier-list, either directly or via one or more typedefs, the behavior is the same as if it
    1169                 // appeared only once.
     1180                // ISO/IEC 9899:1999 Section 6.7.3(4) : If the same qualifier appears more than once in the same
     1181                // specifier-qualifier-list, either directly or via one or more typedefs, the behavior is the same as
     1182                // if it appeared only once.
    11701183        type_qualifier
    11711184        | type_qualifier_list type_qualifier
     
    12031216declaration_qualifier_list:
    12041217        storage_class_list
    1205         | type_qualifier_list storage_class_list                        // remaining OBSOLESCENT (see 2 )
     1218        | type_qualifier_list storage_class_list                        // remaining OBSOLESCENT (see 2)
    12061219                { $$ = $1->addQualifiers( $2 ); }
    12071220        | declaration_qualifier_list type_qualifier_list storage_class_list
     
    12101223
    12111224storage_class_list:
    1212                 // A semantic check is necessary to ensure a storage class is appropriate for the kind of declaration and that
    1213                 // only one of each is specified, except for inline, which can appear with the others.
     1225                // A semantic check is necessary to ensure a storage class is appropriate for the kind of declaration
     1226                // and that only one of each is specified, except for inline, which can appear with the others.
    12141227                //
    1215                 // ISO/IEC 9899:1999 Section 6.7.1(2) : At most, one storage-class specifier may be given in the declaration
    1216                 // specifiers in a declaration.
     1228                // ISO/IEC 9899:1999 Section 6.7.1(2) : At most, one storage-class specifier may be given in the
     1229                // declaration specifiers in a declaration.
    12171230        storage_class
    12181231        | storage_class_list storage_class
     
    13681381        | aggregate_key '(' push type_parameter_list pop ')' '(' type_name_list ')' '{' field_declaration_list '}' // CFA
    13691382                { $$ = DeclarationNode::newAggregate( $1, 0, $4, $8, $11 ); }
    1370         | aggregate_key TYPEGENname '(' type_name_list ')' // CFA
    1371                 {}
    13721383        | aggregate_key '(' push type_name_list pop ')' no_attr_identifier_or_typedef_name // CFA
    13731384                // push and pop are only to prevent S/R conflicts
     
    14901501
    14911502new_parameter_list:                                                                             // CFA
    1492                 // To obtain LR(1) between new_parameter_list and new_abstract_tuple, the last new_abstract_parameter_list is
    1493                 // factored out from new_parameter_list, flattening the rules to get lookahead to the ']'.
     1503                // To obtain LR(1) between new_parameter_list and new_abstract_tuple, the last
     1504                // new_abstract_parameter_list is factored out from new_parameter_list, flattening the rules to get
     1505                // lookahead to the ']'.
    14941506        new_parameter_declaration
    14951507        | new_abstract_parameter_list pop ',' push new_parameter_declaration
     
    15281540        ;
    15291541
    1530 // Provides optional identifier names (abstract_declarator/variable_declarator), no initialization, different semantics
    1531 // for typedef name by using typedef_parameter_redeclarator instead of typedef_redeclarator, and function prototypes.
     1542// Provides optional identifier names (abstract_declarator/variable_declarator), no initialization, different
     1543// semantics for typedef name by using typedef_parameter_redeclarator instead of typedef_redeclarator, and
     1544// function prototypes.
    15321545
    15331546new_parameter_declaration:                                                              // CFA, new & old style parameter declaration
     
    15571570                {
    15581571                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1559                         $$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
     1572                        $$ = $2->addType( $1 )->addInitializer( new InitializerNode($3) );
    15601573                }
    15611574        | declaration_specifier typedef_parameter_redeclarator assignment_opt
    15621575                {
    15631576                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1564                         $$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
     1577                        $$ = $2->addType( $1 )->addInitializer( new InitializerNode($3) );
    15651578                }
    15661579        ;
     
    15731586
    15741587// ISO/IEC 9899:1999 Section 6.9.1(6) : "An identifier declared as a typedef name shall not be redeclared as a
    1575 // parameter." Because the scope of the K&R-style parameter-list sees the typedef first, the following is based only on
    1576 // identifiers.  The ANSI-style parameter-list can redefine a typedef name.
     1588// parameter." Because the scope of the K&R-style parameter-list sees the typedef first, the following is
     1589// based only on identifiers.  The ANSI-style parameter-list can redefine a typedef name.
    15771590
    15781591identifier_list:                                                                                // K&R-style parameter list => no types
     
    15981611        no_attr_identifier
    15991612        | TYPEDEFname
    1600         //      | TYPEGENname
     1613        | TYPEGENname
    16011614        ;
    16021615
     
    16231636
    16241637initializer:
    1625         assignment_expression                                           { $$ = new InitializerNode( $1 ); }
    1626         | '{' initializer_list comma_opt '}'            { $$ = new InitializerNode( $2, true ); }
     1638        assignment_expression                                           { $$ = new InitializerNode($1); }
     1639        | '{' initializer_list comma_opt '}'            { $$ = new InitializerNode($2, true); }
    16271640        ;
    16281641
     
    16301643        initializer
    16311644        | designation initializer                                       { $$ = $2->set_designators( $1 ); }
    1632         | initializer_list ',' initializer                      { $$ = (InitializerNode *)( $1->set_link( $3 ) ); }
     1645        | initializer_list ',' initializer                      { $$ = (InitializerNode *)( $1->set_link($3) ); }
    16331646        | initializer_list ',' designation initializer
    1634                 { $$ = (InitializerNode *)( $1->set_link( $4->set_designators( $3 ) ) ); }
    1635         ;
    1636 
    1637 // There is an unreconcileable parsing problem between C99 and CFA with respect to designators. The problem is use of
    1638 // '=' to separator the designator from the initializer value, as in:
     1647                { $$ = (InitializerNode *)( $1->set_link( $4->set_designators($3) ) ); }
     1648        ;
     1649
     1650// There is an unreconcileable parsing problem between C99 and CFA with respect to designators. The problem is
     1651// use of '=' to separator the designator from the initializer value, as in:
    16391652//
    16401653//              int x[10] = { [1] = 3 };
    16411654//
    1642 // The string "[1] = 3" can be parsed as a designator assignment or a tuple assignment.  To disambiguate this case, CFA
    1643 // changes the syntax from "=" to ":" as the separator between the designator and initializer. GCC does uses ":" for
    1644 // field selection. The optional use of the "=" in GCC, or in this case ":", cannot be supported either due to
    1645 // shift/reduce conflicts
     1655// The string "[1] = 3" can be parsed as a designator assignment or a tuple assignment.  To disambiguate this
     1656// case, CFA changes the syntax from "=" to ":" as the separator between the designator and initializer. GCC
     1657// does uses ":" for field selection. The optional use of the "=" in GCC, or in this case ":", cannot be
     1658// supported either due to shift/reduce conflicts
    16461659
    16471660designation:
     
    16531666designator_list:                                                                                // C99
    16541667        designator
    1655         | designator_list designator                                    { $$ = (ExpressionNode *)( $1->set_link( $2 )); }
    1656         //| designator_list designator                                          { $$ = new CompositeExprNode( $1, $2 ); }
     1668        | designator_list designator                                    { $$ = (ExpressionNode *)($1->set_link( $2 )); }
    16571669        ;
    16581670
     
    16611673                { $$ = new VarRefNode( $2 ); }
    16621674        | '[' push assignment_expression pop ']'                        // C99, single array element
    1663                 // assignment_expression used instead of constant_expression because of shift/reduce conflicts with tuple.
     1675                // assignment_expression used instead of constant_expression because of shift/reduce conflicts with
     1676                // tuple.
    16641677                { $$ = $3; }
    16651678        | '[' push subrange pop ']'                                                     // CFA, multiple array elements
    16661679                { $$ = $3; }
    16671680        | '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements
    1668                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $3, $5 ); }
     1681                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Range), $3, $5); }
    16691682        | '.' '[' push field_list pop ']'                                       // CFA, tuple field selector
    16701683                { $$ = $4; }
    16711684        ;
    16721685
    1673 // The CFA type system is based on parametric polymorphism, the ability to declare functions with type parameters,
    1674 // rather than an object-oriented type system. This required four groups of extensions:
     1686// The CFA type system is based on parametric polymorphism, the ability to declare functions with type
     1687// parameters, rather than an object-oriented type system. This required four groups of extensions:
    16751688//
    16761689// Overloading: function, data, and operator identifiers may be overloaded.
    16771690//
    1678 // Type declarations: "type" is used to generate new types for declaring objects. Similarly, "dtype" is used for object
    1679 //     and incomplete types, and "ftype" is used for function types. Type declarations with initializers provide
    1680 //     definitions of new types. Type declarations with storage class "extern" provide opaque types.
    1681 //
    1682 // Polymorphic functions: A forall clause declares a type parameter. The corresponding argument is inferred at the call
    1683 //     site. A polymorphic function is not a template; it is a function, with an address and a type.
     1691// Type declarations: "type" is used to generate new types for declaring objects. Similarly, "dtype" is used
     1692//     for object and incomplete types, and "ftype" is used for function types. Type declarations with
     1693//     initializers provide definitions of new types. Type declarations with storage class "extern" provide
     1694//     opaque types.
     1695//
     1696// Polymorphic functions: A forall clause declares a type parameter. The corresponding argument is inferred at
     1697//     the call site. A polymorphic function is not a template; it is a function, with an address and a type.
    16841698//
    16851699// Specifications and Assertions: Specifications are collections of declarations parameterized by one or more
    1686 //     types. They serve many of the purposes of abstract classes, and specification hierarchies resemble subclass
    1687 //     hierarchies. Unlike classes, they can define relationships between types.  Assertions declare that a type or
    1688 //     types provide the operations declared by a specification.  Assertions are normally used to declare requirements
    1689 //     on type arguments of polymorphic functions.
     1700//     types. They serve many of the purposes of abstract classes, and specification hierarchies resemble
     1701//     subclass hierarchies. Unlike classes, they can define relationships between types.  Assertions declare
     1702//     that a type or types provide the operations declared by a specification.  Assertions are normally used
     1703//     to declare requirements on type arguments of polymorphic functions.
    16901704
    16911705typegen_declaration_specifier:                                                  // CFA
     
    17161730type_parameter:                                                                                 // CFA
    17171731        type_class no_attr_identifier_or_typedef_name
    1718                 { typedefTable.addToEnclosingScope(*( $2 ), TypedefTable::TD ); }
     1732                { typedefTable.addToEnclosingScope(*($2), TypedefTable::TD); }
    17191733          assertion_list_opt
    17201734                { $$ = DeclarationNode::newTypeParam( $1, $2 )->addAssertions( $4 ); }
     
    17411755        '|' no_attr_identifier_or_typedef_name '(' type_name_list ')'
    17421756                {
    1743                         typedefTable.openContext( *( $2 ) );
     1757                        typedefTable.openContext( *($2) );
    17441758                        $$ = DeclarationNode::newContextUse( $2, $4 );
    17451759                }
     
    17551769        | assignment_expression
    17561770        | type_name_list ',' type_name
    1757                 { $$ = (ExpressionNode *)( $1->set_link( new TypeValueNode( $3 ))); }
     1771                { $$ = (ExpressionNode *)($1->set_link(new TypeValueNode( $3 ))); }
    17581772        | type_name_list ',' assignment_expression
    1759                 { $$ = (ExpressionNode *)( $1->set_link( $3 )); }
     1773                { $$ = (ExpressionNode *)($1->set_link($3)); }
    17601774        ;
    17611775
     
    17791793        no_attr_identifier_or_typedef_name
    17801794                {
    1781                         typedefTable.addToEnclosingScope( *$1, TypedefTable::TD );
     1795                        typedefTable.addToEnclosingScope(*($1), TypedefTable::TD);
    17821796                        $$ = DeclarationNode::newTypeDecl( $1, 0 );
    17831797                }
    17841798        | no_01_identifier_or_typedef_name '(' push type_parameter_list pop ')'
    17851799                {
    1786                         typedefTable.addToEnclosingScope( *$1, TypedefTable::TG );
     1800                        typedefTable.addToEnclosingScope(*($1), TypedefTable::TG);
    17871801                        $$ = DeclarationNode::newTypeDecl( $1, $4 );
    17881802                }
     
    17921806        CONTEXT no_attr_identifier_or_typedef_name '(' push type_parameter_list pop ')' '{' '}'
    17931807                {
    1794                         typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
     1808                        typedefTable.addToEnclosingScope(*($2), TypedefTable::ID );
    17951809                        $$ = DeclarationNode::newContext( $2, $5, 0 );
    17961810                }
    17971811        | CONTEXT no_attr_identifier_or_typedef_name '(' push type_parameter_list pop ')' '{'
    17981812                {
    1799                         typedefTable.enterContext( *$2 );
     1813                        typedefTable.enterContext( *($2) );
    18001814                        typedefTable.enterScope();
    18011815                }
     
    18031817                {
    18041818                        typedefTable.leaveContext();
    1805                         typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
     1819                        typedefTable.addToEnclosingScope(*($2), TypedefTable::ID );
    18061820                        $$ = DeclarationNode::newContext( $2, $5, $10 );
    18071821                }
     
    18321846        | new_context_declaring_list pop ',' push identifier_or_typedef_name
    18331847                {
    1834                         typedefTable.addToEnclosingScope2( *$5, TypedefTable::ID );
     1848                        typedefTable.addToEnclosingScope2( *($5), TypedefTable::ID );
    18351849                        $$ = $1->appendList( $1->cloneType( $5 ) );
    18361850                }
     
    18681882        external_definition
    18691883        | external_definition_list push external_definition
    1870                 { $$ = ( $1 != NULL ) ? $1->appendList( $3 ) : $3; }
     1884                { $$ = ($1 != NULL ) ? $1->appendList( $3 ) : $3; }
    18711885        ;
    18721886
     
    19001914        function_definition
    19011915
    1902                 // These rules are a concession to the "implicit int" type_specifier because there is a significant amount of
    1903                 // code with functions missing a type-specifier on the return type.  Parsing is possible because
    1904                 // function_definition does not appear in the context of an expression (nested functions would preclude this
    1905                 // concession). A function prototype declaration must still have a type_specifier.  OBSOLESCENT (see 1)
     1916                // These rules are a concession to the "implicit int" type_specifier because there is a significant
     1917                // amount of code with functions missing a type-specifier on the return type.  Parsing is possible
     1918                // because function_definition does not appear in the context of an expression (nested functions would
     1919                // preclude this concession). A function prototype declaration must still have a type_specifier.
     1920                // OBSOLESCENT (see 1)
    19061921        | function_declarator compound_statement
    19071922                {
     
    19872002subrange:
    19882003        constant_expression '~' constant_expression                     // CFA, integer subrange
    1989                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $1, $3 ); }
     2004                { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Range), $1, $3); }
    19902005        ;
    19912006
     
    20282043
    20292044// ============================================================================
    2030 // The following sections are a series of grammar patterns used to parse declarators. Multiple patterns are necessary
    2031 // because the type of an identifier in wrapped around the identifier in the same form as its usage in an expression, as
    2032 // in:
     2045// The following sections are a series of grammar patterns used to parse declarators. Multiple patterns are
     2046// necessary because the type of an identifier in wrapped around the identifier in the same form as its usage
     2047// in an expression, as in:
    20332048//
    20342049//              int (*f())[10] { ... };
    20352050//              ... (*f())[3] += 1;             // definition mimics usage
    20362051//
    2037 // Because these patterns are highly recursive, changes at a lower level in the recursion require copying some or all of
    2038 // the pattern. Each of these patterns has some subtle variation to ensure correct syntax in a particular context.
     2052// Because these patterns are highly recursive, changes at a lower level in the recursion require copying some
     2053// or all of the pattern. Each of these patterns has some subtle variation to ensure correct syntax in a
     2054// particular context.
    20392055// ============================================================================
    20402056
    20412057// ----------------------------------------------------------------------------
    2042 // The set of valid declarators before a compound statement for defining a function is less than the set of declarators
    2043 // to define a variable or function prototype, e.g.:
     2058// The set of valid declarators before a compound statement for defining a function is less than the set of
     2059// declarators to define a variable or function prototype, e.g.:
    20442060//
    20452061//              valid declaration               invalid definition
     
    20502066//              int (*f)(int);                  int (*f)(int) {}
    20512067//
    2052 // To preclude this syntactic anomaly requires separating the grammar rules for variable and function declarators, hence
    2053 // variable_declarator and function_declarator.
     2068// To preclude this syntactic anomaly requires separating the grammar rules for variable and function
     2069// declarators, hence variable_declarator and function_declarator.
    20542070// ----------------------------------------------------------------------------
    20552071
    2056 // This pattern parses a declaration of a variable that is not redefining a typedef name. The pattern precludes
    2057 // declaring an array of functions versus a pointer to an array of functions.
     2072// This pattern parses a declaration of a variable that is not redefining a typedef name. The pattern
     2073// precludes declaring an array of functions versus a pointer to an array of functions.
    20582074
    20592075variable_declarator:
     
    20672083        identifier
    20682084                {
    2069                         typedefTable.setNextIdentifier( *$1 );
     2085                        typedefTable.setNextIdentifier( *($1) );
    20702086                        $$ = DeclarationNode::newName( $1 );
    20712087                }
     
    21012117        ;
    21022118
    2103 // This pattern parses a function declarator that is not redefining a typedef name. Because functions cannot be nested,
    2104 // there is no context where a function definition can redefine a typedef name. To allow nested functions requires
    2105 // further separation of variable and function declarators in typedef_redeclarator.  The pattern precludes returning
    2106 // arrays and functions versus pointers to arrays and functions.
     2119// This pattern parses a function declarator that is not redefining a typedef name. Because functions cannot
     2120// be nested, there is no context where a function definition can redefine a typedef name. To allow nested
     2121// functions requires further separation of variable and function declarators in typedef_redeclarator.  The
     2122// pattern precludes returning arrays and functions versus pointers to arrays and functions.
    21072123
    21082124function_declarator:
     
    21392155        ;
    21402156
    2141 // This pattern parses an old-style K&R function declarator (OBSOLESCENT, see 4) that is not redefining a typedef name
    2142 // (see function_declarator for additional comments). The pattern precludes returning arrays and functions versus
    2143 // pointers to arrays and functions.
     2157// This pattern parses an old-style K&R function declarator (OBSOLESCENT, see 4) that is not redefining a
     2158// typedef name (see function_declarator for additional comments). The pattern precludes returning arrays and
     2159// functions versus pointers to arrays and functions.
    21442160
    21452161old_function_declarator:
     
    21832199//              }
    21842200//
    2185 // The pattern precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
    2186 // and functions versus pointers to arrays and functions.
     2201// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and
     2202// returning arrays and functions versus pointers to arrays and functions.
    21872203
    21882204typedef_redeclarator:
     
    21962212        TYPEDEFname
    21972213                {
    2198                         typedefTable.setNextIdentifier( *( $1 ) );
     2214                        typedefTable.setNextIdentifier( *($1) );
    21992215                        $$ = DeclarationNode::newName( $1 );
    22002216                }
     
    22322248        ;
    22332249
    2234 // This pattern parses a declaration for a parameter variable or function prototype that is not redefining a typedef
    2235 // name and allows the C99 array options, which can only appear in a parameter list.  The pattern precludes declaring an
    2236 // array of functions versus a pointer to an array of functions, and returning arrays and functions versus pointers to
    2237 // arrays and functions.
     2250// This pattern parses a declaration for a parameter variable or function prototype that is not redefining a
     2251// typedef name and allows the C99 array options, which can only appear in a parameter list.  The pattern
     2252// precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
     2253// and functions versus pointers to arrays and functions.
    22382254
    22392255identifier_parameter_declarator:
     
    22732289        ;
    22742290
    2275 // This pattern parses a declaration for a parameter variable or function prototype that is redefining a typedef name,
    2276 // e.g.:
     2291// This pattern parses a declaration for a parameter variable or function prototype that is redefining a
     2292// typedef name, e.g.:
    22772293//
    22782294//              typedef int foo;
    22792295//              int f( int foo ); // redefine typedef name in new scope
    22802296//
    2281 // and allows the C99 array options, which can only appear in a parameter list.  In addition, the pattern handles the
    2282 // special meaning of parenthesis around a typedef name:
     2297// and allows the C99 array options, which can only appear in a parameter list.  In addition, the pattern
     2298// handles the special meaning of parenthesis around a typedef name:
    22832299//
    22842300//              ISO/IEC 9899:1999 Section 6.7.5.3(11) : "In a parameter declaration, a single typedef name in
     
    22942310//              int g( int g1( T g2( int p ) ) );               // see identifier_parameter_declarator
    22952311//
    2296 // In essence, a '(' immediately to the left of typedef name, T, is interpreted as starting a parameter type list, and
    2297 // not as redundant parentheses around a redeclaration of T. Finally, the pattern also precludes declaring an array of
    2298 // functions versus a pointer to an array of functions, and returning arrays and functions versus pointers to arrays and
    2299 // functions.
     2312// In essence, a '(' immediately to the left of typedef name, T, is interpreted as starting a parameter type
     2313// list, and not as redundant parentheses around a redeclaration of T. Finally, the pattern also precludes
     2314// declaring an array of functions versus a pointer to an array of functions, and returning arrays and
     2315// functions versus pointers to arrays and functions.
    23002316
    23012317typedef_parameter_redeclarator:
     
    23092325        TYPEDEFname
    23102326                {
    2311                         typedefTable.setNextIdentifier( *$1 );
     2327                        typedefTable.setNextIdentifier( *($1) );
    23122328                        $$ = DeclarationNode::newName( $1 );
    23132329                }
     
    23372353        ;
    23382354
    2339 // This pattern parses a declaration of an abstract variable or function prototype, i.e., there is no identifier to
    2340 // which the type applies, e.g.:
     2355// This pattern parses a declaration of an abstract variable or function prototype, i.e., there is no
     2356// identifier to which the type applies, e.g.:
    23412357//
    23422358//              sizeof( int );
    23432359//              sizeof( int [10] );
    23442360//
    2345 // The pattern precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
    2346 // and functions versus pointers to arrays and functions.
     2361// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and
     2362// returning arrays and functions versus pointers to arrays and functions.
    23472363
    23482364abstract_declarator:
     
    24102426//              int f( int (int) );             // abstract function-prototype parameter; no parameter name specified
    24112427//
    2412 // The pattern precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
    2413 // and functions versus pointers to arrays and functions.
     2428// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and
     2429// returning arrays and functions versus pointers to arrays and functions.
    24142430
    24152431abstract_parameter_declarator:
     
    24612477// The declaration of an array parameter has additional syntax over arrays in normal variable declarations:
    24622478//
    2463 //              ISO/IEC 9899:1999 Section 6.7.5.2(1) : "The optional type qualifiers and the keyword static shall appear only in
    2464 //              a declaration of a function parameter with an array type, and then only in the outermost array type derivation."
     2479//              ISO/IEC 9899:1999 Section 6.7.5.2(1) : "The optional type qualifiers and the keyword static shall
     2480//              appear only in a declaration of a function parameter with an array type, and then only in the
     2481//              outermost array type derivation."
    24652482
    24662483array_parameter_1st_dimension:
     
    24812498        ;
    24822499
    2483 // This pattern parses a declaration of an abstract variable, i.e., there is no identifier to which the type applies,
    2484 // e.g.:
     2500// This pattern parses a declaration of an abstract variable, i.e., there is no identifier to which the type
     2501// applies, e.g.:
    24852502//
    24862503//              sizeof( int ); // abstract variable; no identifier name specified
    24872504//
    2488 // The pattern precludes declaring an array of functions versus a pointer to an array of functions, and returning arrays
    2489 // and functions versus pointers to arrays and functions.
     2505// The pattern precludes declaring an array of functions versus a pointer to an array of functions, and
     2506// returning arrays and functions versus pointers to arrays and functions.
    24902507
    24912508variable_abstract_declarator:
     
    25252542        ;
    25262543
    2527 // This pattern parses a new-style declaration for a parameter variable or function prototype that is either an
    2528 // identifier or typedef name and allows the C99 array options, which can only appear in a parameter list.
     2544// This pattern parses a new-style declaration for a parameter variable or function prototype that is either
     2545// an identifier or typedef name and allows the C99 array options, which can only appear in a parameter list.
    25292546
    25302547new_identifier_parameter_declarator_tuple:                              // CFA
     
    25562573
    25572574new_identifier_parameter_array:                                                 // CFA
    2558                 // Only the first dimension can be empty or have qualifiers. Empty dimension must be factored out due to
    2559                 // shift/reduce conflict with new-style empty (void) function return type.
     2575                // Only the first dimension can be empty or have qualifiers. Empty dimension must be factored out due
     2576                // to shift/reduce conflict with new-style empty (void) function return type.
    25602577        '[' push pop ']' type_specifier
    25612578                { $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     
    25942611        ;
    25952612
    2596 // This pattern parses a new-style declaration of an abstract variable or function prototype, i.e., there is no
    2597 // identifier to which the type applies, e.g.:
     2613// This pattern parses a new-style declaration of an abstract variable or function prototype, i.e., there is
     2614// no identifier to which the type applies, e.g.:
    25982615//
    25992616//              [int] f( int );                         // abstract variable parameter; no parameter name specified
     
    26112628//
    26122629// Therefore, it is necessary to look at the token after identifier_or_typedef_name to know when to reduce
    2613 // new_abstract_tuple. To make this LR(1), several rules have to be flattened (lengthened) to allow the necessary
    2614 // lookahead. To accomplish this, new_abstract_declarator has an entry point without tuple, and tuple declarations are
    2615 // duplicated when appearing with new_function_specifier.
     2630// new_abstract_tuple. To make this LR(1), several rules have to be flattened (lengthened) to allow the
     2631// necessary lookahead. To accomplish this, new_abstract_declarator has an entry point without tuple, and
     2632// tuple declarations are duplicated when appearing with new_function_specifier.
    26162633
    26172634new_abstract_declarator_tuple:                                                  // CFA
     
    26432660
    26442661new_abstract_array:                                                                             // CFA
    2645                 // Only the first dimension can be empty. Empty dimension must be factored out due to shift/reduce conflict with
    2646                 // empty (void) function return type.
     2662                // Only the first dimension can be empty. Empty dimension must be factored out due to shift/reduce
     2663                // conflict with empty (void) function return type.
    26472664        '[' push pop ']' type_specifier
    26482665                { $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     
    26732690        ;
    26742691
    2675 // 1) ISO/IEC 9899:1999 Section 6.7.2(2) : "At least one type specifier shall be given in the declaration specifiers in
    2676 //    each declaration, and in the specifier-qualifier list in each structure declaration and type name."
    2677 //
    2678 // 2) ISO/IEC 9899:1999 Section 6.11.5(1) : "The placement of a storage-class specifier other than at the beginning of
    2679 //    the declaration specifiers in a declaration is an obsolescent feature."
     2692// 1) ISO/IEC 9899:1999 Section 6.7.2(2) : "At least one type specifier shall be given in the declaration
     2693//    specifiers in each declaration, and in the specifier-qualifier list in each structure declaration and
     2694//    type name."
     2695//
     2696// 2) ISO/IEC 9899:1999 Section 6.11.5(1) : "The placement of a storage-class specifier other than at the
     2697//    beginning of the declaration specifiers in a declaration is an obsolescent feature."
    26802698//
    26812699// 3) ISO/IEC 9899:1999 Section 6.11.6(1) : "The use of function declarators with empty parentheses (not
    26822700//    prototype-format parameter type declarators) is an obsolescent feature."
    26832701//
    2684 // 4) ISO/IEC 9899:1999 Section 6.11.7(1) : "The use of function definitions with separate parameter identifier and
    2685 //    declaration lists (not prototype-format parameter type and identifier declarators) is an obsolescent feature.
     2702// 4) ISO/IEC 9899:1999 Section 6.11.7(1) : "The use of function definitions with separate parameter
     2703//    identifier and declaration lists (not prototype-format parameter type and identifier declarators) is an
     2704//    obsolescent feature.
    26862705
    26872706//************************* MISCELLANEOUS ********************************
     
    27112730
    27122731// Local Variables: //
     2732// tab-width: 4 //
    27132733// mode: c++ //
    2714 // tab-width: 4 //
    27152734// compile-command: "make install" //
    27162735// End: //
  • src/ResolvExpr/AlternativeFinder.cc

    r94e0864d r94b4364  
    1010// Created On       : Sat May 16 23:52:08 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun 22 17:19:54 2015
    13 // Update Count     : 17
     12// Last Modified On : Mon Jun  8 14:53:58 2015
     13// Update Count     : 14
    1414//
    1515
     
    545545                        NameExpr *fname;
    546546                        if ( ( fname = dynamic_cast<NameExpr *>( untypedExpr->get_function()))
    547                                  && ( fname->get_name() == std::string("&&")) ) {
    548                                 alternatives.push_back( Alternative( untypedExpr->clone(), env, Cost()) );
     547                                 && ( fname->get_name() == std::string("LabAddress")) ) {
     548                                alternatives.push_back( Alternative( untypedExpr, env, Cost()) );
    549549                                return;
    550550                        }
  • src/ResolvExpr/Resolver.cc

    r94e0864d r94b4364  
    1010// Created On       : Sun May 17 12:17:01 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 24 16:08:49 2015
    13 // Update Count     : 155
     12// Last Modified On : Tue Jun 16 14:50:11 2015
     13// Update Count     : 154
    1414//
    1515
     
    4747                virtual void visit( ChooseStmt *switchStmt );
    4848                virtual void visit( CaseStmt *caseStmt );
    49                 virtual void visit( BranchStmt *branchStmt );
    5049                virtual void visit( ReturnStmt *returnStmt );
    5150
     
    269268        void Resolver::visit( CaseStmt *caseStmt ) {
    270269                Visitor::visit( caseStmt );
    271         }
    272 
    273         void Resolver::visit( BranchStmt *branchStmt ) {
    274                 // must resolve the argument for a computed goto
    275                 if ( branchStmt->get_type() == BranchStmt::Goto ) { // check for computed goto statement
    276                         if ( NameExpr * arg = dynamic_cast< NameExpr * >( branchStmt->get_computedTarget() ) ) {
    277                                 VoidType v = Type::Qualifiers();                // cast to void * for the alternative finder
    278                                 PointerType pt( Type::Qualifiers(), v.clone() );
    279                                 CastExpr * castExpr = new CastExpr( arg, pt.clone() );
    280                                 Expression * newExpr = findSingleExpression( castExpr, *this ); // find best expression
    281                                 branchStmt->set_target( newExpr );
    282                         } // if
    283                 } // if
    284270        }
    285271
  • src/SymTab/Validate.cc

    r94e0864d r94b4364  
    1010// Created On       : Sun May 17 21:50:04 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 17:10:29 2015
    13 // Update Count     : 29
     12// Last Modified On : Sat Jun 13 08:06:13 2015
     13// Update Count     : 26
    1414//
    1515
     
    555555                // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
    556556                // because each unit generates copies of the default routines for each aggregate.
    557                 FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true, false );
     557                FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true );
    558558                assignDecl->fixUniqueId();
    559559 
     
    598598                // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
    599599                // because each unit generates copies of the default routines for each aggregate.
    600                 FunctionDecl *assignDecl = new FunctionDecl( "?=?",  functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true, false );
     600                FunctionDecl *assignDecl = new FunctionDecl( "?=?",  functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true );
    601601                assignDecl->fixUniqueId();
    602602 
     
    646646                type->get_parameters().push_back( dst );
    647647                type->get_parameters().push_back( src );
    648                 FunctionDecl *func = new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::AutoGen, type, stmts, false, false );
     648                FunctionDecl *func = new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::AutoGen, type, stmts, false );
    649649                declsToAdd.push_back( func );
    650650        }
  • src/SynTree/CompoundStmt.cc

    r94e0864d r94b4364  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 11:37:49 2015
    13 // Update Count     : 3
     12// Last Modified On : Fri Jun  5 07:46:03 2015
     13// Update Count     : 2
    1414//
    1515
     
    3333}
    3434
    35 void CompoundStmt::print( std::ostream &os, int indent ) const {
     35void CompoundStmt::print( std::ostream &os, int indent ) {
    3636        os << string( indent, ' ' ) << "CompoundStmt" << endl ;
    3737        printAll( kids, os, indent + 2 );
  • src/SynTree/DeclStmt.cc

    r94e0864d r94b4364  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 11:38:15 2015
    13 // Update Count     : 4
     12// Last Modified On : Mon Jun  8 17:24:38 2015
     13// Update Count     : 3
    1414//
    1515
     
    2828}
    2929
    30 void DeclStmt::print( std::ostream &os, int indent ) const {
     30void DeclStmt::print( std::ostream &os, int indent ) {
    3131        assert( decl != 0 );
    3232        os << "Declaration of ";
  • src/SynTree/Declaration.h

    r94e0864d r94b4364  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 09:10:31 2015
    13 // Update Count     : 25
     12// Last Modified On : Fri Jun 12 23:55:26 2015
     13// Update Count     : 24
    1414//
    1515
     
    101101        typedef DeclarationWithType Parent;
    102102  public:
    103         FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn );
     103        FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline );
    104104        FunctionDecl( const FunctionDecl &other );
    105105        virtual ~FunctionDecl();
     
    113113        void set_statements( CompoundStmt *newValue ) { statements = newValue; }
    114114        bool get_isInline() const { return isInline; }
    115         bool get_isNoreturn() const { return isNoreturn; }
     115//      void set_isInline( bool newValue ) { isInline = newValue; }
    116116        std::list< std::string >& get_oldIdents() { return oldIdents; }
    117117        std::list< Declaration* >& get_oldDecls() { return oldDecls; }
     
    125125        FunctionType *type;
    126126        CompoundStmt *statements;
    127         bool isInline, isNoreturn;
     127        bool isInline;
    128128        std::list< std::string > oldIdents;
    129129        std::list< Declaration* > oldDecls;
  • src/SynTree/FunctionDecl.cc

    r94e0864d r94b4364  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 09:10:32 2015
    13 // Update Count     : 16
     12// Last Modified On : Sat Jun 13 08:12:20 2015
     13// Update Count     : 14
    1414//
    1515
     
    2121#include "utility.h"
    2222
    23 FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn )
    24                 : Parent( name, sc, linkage ), type( type ), statements( statements ), isInline( isInline ), isNoreturn( isNoreturn ) {
     23FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline )
     24                : Parent( name, sc, linkage ), type( type ), statements( statements ), isInline( isInline ) {
    2525        // this is a brazen hack to force the function "main" to have C linkage
    2626        if ( name == "main" ) {
     
    3030
    3131FunctionDecl::FunctionDecl( const FunctionDecl &other )
    32         : Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ), isInline( other.isInline ), isNoreturn( other.isNoreturn ) {
     32                : Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ), isInline( other.isInline ) {
    3333}
    3434
     
    6060                os << "inline ";
    6161        } // if
    62         if ( isNoreturn ) {
    63                 os << "_Noreturn ";
    64         } // if
    6562        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    6663                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
     
    7370
    7471        if ( ! oldIdents.empty() ) {
    75                 os << string( indent + 2, ' ' ) << "with parameter names" << endl;
     72                os << string( indent+2, ' ' ) << "with parameter names" << endl;
    7673                for ( std::list< std::string >::const_iterator i = oldIdents.begin(); i != oldIdents.end(); ++i ) {
    77                         os << string( indent + 4, ' ' ) << *i << endl;
     74                        os << string( indent+4, ' ' ) << *i << endl;
    7875                } // for
    7976        } // if
    8077
    8178        if ( ! oldDecls.empty() ) {
    82                 os << string( indent + 2, ' ' ) << "with parameter declarations" << endl;
    83                 printAll( oldDecls, os, indent + 4 );
     79                os << string( indent+2, ' ' ) << "with parameter declarations" << endl;
     80                printAll( oldDecls, os, indent+4 );
    8481        } // if
    8582        if ( statements ) {
    86                 os << string( indent + 2, ' ' ) << "with body " << endl;
    87                 statements->print( os, indent + 4 );
     83                os << string( indent+2, ' ' ) << "with body " << endl;
     84                statements->print( os, indent+4 );
    8885        } // if
    8986}
     
    9895        if ( isInline ) {
    9996                os << "inline ";
    100         } // if
    101         if ( isNoreturn ) {
    102                 os << "_Noreturn ";
    10397        } // if
    10498        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
  • src/SynTree/Statement.cc

    r94e0864d r94b4364  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 11:42:09 2015
    13 // Update Count     : 21
     12// Last Modified On : Fri Jun  5 07:51:04 2015
     13// Update Count     : 15
    1414//
    1515
     
    3030Statement::Statement( std::list<Label> _labels ) : labels(_labels ) {}
    3131
    32 void Statement::print( std::ostream &, int indent ) const {}
     32void Statement::print( std::ostream &, int indent ) {}
    3333
    3434Statement::~Statement() {}
     
    3838ExprStmt::~ExprStmt() {}
    3939
    40 void ExprStmt::print( std::ostream &os, int indent ) const {
     40void ExprStmt::print( std::ostream &os, int indent ) {
    4141        os << string( indent, ' ' ) << "Expression Statement:" << endl;
    4242        expr->print( os, indent + 2 );
     
    5858}
    5959
    60 void BranchStmt::print( std::ostream &os, int indent ) const {
     60void BranchStmt::print( std::ostream &os, int indent ) {
    6161        os << string( indent, ' ' ) << "Branch (" << brType[type] << ")" << endl ;
    6262}
     
    6868}
    6969
    70 void ReturnStmt::print( std::ostream &os, int indent ) const {
     70void ReturnStmt::print( std::ostream &os, int indent ) {
    7171        os << std::string( indent, ' ' ) << string ( isThrow? "Throw":"Return" ) << " Statement, returning: ";
    7272        if ( expr != 0 ) expr->print( os );
     
    7979IfStmt::~IfStmt() {}
    8080
    81 void IfStmt::print( std::ostream &os, int indent ) const {
     81void IfStmt::print( std::ostream &os, int indent ) {
    8282        os << string( indent, ' ' ) << "If on condition: " << endl ;
    8383        condition->print( os, indent + 4 );
     
    103103void SwitchStmt::add_case( CaseStmt *c ) {}
    104104
    105 void SwitchStmt::print( std::ostream &os, int indent ) const {
     105void SwitchStmt::print( std::ostream &os, int indent ) {
    106106        os << string( indent, ' ' ) << "Switch on condition: ";
    107107        condition->print( os );
     
    109109
    110110        // branches
    111         std::list<Statement *>::const_iterator i;
     111        std::list<Statement *>::iterator i;
    112112        for ( i = branches.begin(); i != branches.end(); i++)
    113                 (*i)->print( os, indent + 4 );
     113                (*i )->print( os, indent + 4 );
    114114
    115115        //for_each( branches.begin(), branches.end(), mem_fun( bind1st(&Statement::print ), os ));
     
    130130}
    131131
    132 void CaseStmt::print( std::ostream &os, int indent ) const {
     132void CaseStmt::print( std::ostream &os, int indent ) {
    133133        os << string( indent, ' ' );
    134134
    135         if ( isDefault() )
     135        if ( isDefault())
    136136                os << "Default ";
    137137        else {
     
    142142        os << endl;
    143143
    144         std::list<Statement *>::const_iterator i;
     144        std::list<Statement *>::iterator i;
    145145        for ( i = stmts.begin(); i != stmts.end(); i++)
    146146                (*i )->print( os, indent + 4 );
     
    158158void ChooseStmt::add_case( CaseStmt *c ) {}
    159159
    160 void ChooseStmt::print( std::ostream &os, int indent ) const {
     160void ChooseStmt::print( std::ostream &os, int indent ) {
    161161        os << string( indent, ' ' ) << "Choose on condition: ";
    162162        condition->print( os );
     
    164164
    165165        // branches
    166         std::list<Statement *>::const_iterator i;
     166        std::list<Statement *>::iterator i;
    167167        for ( i = branches.begin(); i != branches.end(); i++)
    168168                (*i )->print( os, indent + 4 );
     
    171171}
    172172
    173 void FallthruStmt::print( std::ostream &os, int indent ) const {
     173void FallthruStmt::print( std::ostream &os, int indent ) {
    174174        os << string( indent, ' ' ) << "Fall-through statement" << endl;
    175175}
     
    183183}
    184184
    185 void WhileStmt::print( std::ostream &os, int indent ) const {
     185void WhileStmt::print( std::ostream &os, int indent ) {
    186186        os << string( indent, ' ' ) << "While on condition: " << endl ;
    187187        condition->print( os, indent + 4 );
     
    203203}
    204204
    205 void ForStmt::print( std::ostream &os, int indent ) const {
     205void ForStmt::print( std::ostream &os, int indent ) {
    206206        os << string( indent, ' ' ) << "Labels: {";
    207         for ( std::list<Label>::const_iterator it = get_labels().begin(); it != get_labels().end(); ++it) {
     207        for (std::list<Label>::iterator it = get_labels().begin(); it != get_labels().end(); ++it) {
    208208                os << *it << ",";
    209209        }
     
    245245}
    246246
    247 void TryStmt::print( std::ostream &os, int indent ) const {
     247void TryStmt::print( std::ostream &os, int indent ) {
    248248        os << string( indent, ' ' ) << "Try Statement" << endl;
    249249        os << string( indent + 2, ' ' ) << "with block: " << endl;
     
    252252        // handlers
    253253        os << string( indent + 2, ' ' ) << "and handlers: " << endl;
    254         for ( std::list<Statement *>::const_iterator i = handlers.begin(); i != handlers.end(); i++)
     254        std::list<Statement *>::iterator i;
     255        for ( i = handlers.begin(); i != handlers.end(); i++)
    255256                (*i )->print( os, indent + 4 );
    256257
     
    271272}
    272273
    273 void CatchStmt::print( std::ostream &os, int indent ) const {
     274void CatchStmt::print( std::ostream &os, int indent ) {
    274275        os << string( indent, ' ' ) << "Catch Statement" << endl;
    275276
     
    293294}
    294295
    295 void FinallyStmt::print( std::ostream &os, int indent ) const {
     296void FinallyStmt::print( std::ostream &os, int indent ) {
    296297        os << string( indent, ' ' ) << "Finally Statement" << endl;
    297298        os << string( indent + 2, ' ' ) << "with block: " << endl;
     
    303304NullStmt::~NullStmt() {}
    304305
    305 void NullStmt::print( std::ostream &os, int indent ) const {
     306void NullStmt::print( std::ostream &os, int indent ) {
    306307        os << string( indent, ' ' ) << "Null Statement" << endl ;
    307308}
  • src/SynTree/Statement.h

    r94e0864d r94b4364  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 11:44:27 2015
    13 // Update Count     : 20
     12// Last Modified On : Thu Jun  4 14:03:31 2015
     13// Update Count     : 14
    1414//
    1515
     
    2828
    2929        std::list<Label> & get_labels() { return labels; }
    30         const std::list<Label> & get_labels() const { return labels; }
    3130
    3231        virtual Statement *clone() const = 0;
    3332        virtual void accept( Visitor &v ) = 0;
    3433        virtual Statement *acceptMutator( Mutator &m ) = 0;
    35         virtual void print( std::ostream &os, int indent = 0 ) const;
     34        virtual void print( std::ostream &os, int indent = 0 );
    3635  protected:
    3736        std::list<Label> labels;
     
    4948        virtual void accept( Visitor &v ) { v.visit( this ); }
    5049        virtual CompoundStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    51         virtual void print( std::ostream &os, int indent = 0 ) const;
     50        virtual void print( std::ostream &os, int indent = 0 );
    5251  private:
    5352        std::list<Statement*> kids;
     
    6564        virtual void accept( Visitor &v ) { v.visit( this ); }
    6665        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    67         virtual void print( std::ostream &os, int indent = 0 ) const;
     66        virtual void print( std::ostream &os, int indent = 0 );
    6867  private:
    6968        Expression *expr;
     
    8584        virtual void accept( Visitor &v ) { v.visit( this ); }
    8685        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    87         virtual void print( std::ostream &os, int indent = 0 ) const;
     86        virtual void print( std::ostream &os, int indent = 0 );
    8887  private:
    8988        Expression *condition;
     
    107106
    108107        virtual SwitchStmt *clone() const { return new SwitchStmt( *this ); }
    109         virtual void print( std::ostream &os, int indent = 0 ) const;
     108        virtual void print( std::ostream &os, int indent = 0 );
    110109  private:
    111110        Expression * condition;
     
    128127
    129128        virtual ChooseStmt *clone() const { return new ChooseStmt( *this ); }
    130         virtual void print( std::ostream &os, int indent = 0 ) const;
     129        virtual void print( std::ostream &os, int indent = 0 );
    131130  private:
    132131        Expression *condition;
     
    142141
    143142        virtual FallthruStmt *clone() const { return new FallthruStmt( *this ); }
    144         virtual void print( std::ostream &os, int indent = 0 ) const;
     143        virtual void print( std::ostream &os, int indent = 0 );
    145144};
    146145
     
    154153                std::list<Statement *> stmts = std::list<Statement *>() );
    155154
    156         bool isDefault() const { return _isDefault; }
     155        bool isDefault() { return _isDefault; }
    157156        void set_default(bool b) { _isDefault = b; }
    158157
     
    167166
    168167        virtual CaseStmt *clone() const { return new CaseStmt( *this ); }
    169         virtual void print( std::ostream &os, int indent = 0 ) const;
     168        virtual void print( std::ostream &os, int indent = 0 );
    170169  private:
    171170        Expression * condition;
     
    190189        virtual void accept( Visitor &v ) { v.visit( this ); }
    191190        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    192         virtual void print( std::ostream &os, int indent = 0 ) const;
     191        virtual void print( std::ostream &os, int indent = 0 );
    193192  private:
    194193        Expression *condition;
     
    215214        virtual void accept( Visitor &v ) { v.visit( this ); }
    216215        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    217         virtual void print( std::ostream &os, int indent = 0 ) const;
     216        virtual void print( std::ostream &os, int indent = 0 );
    218217  private:
    219218        Statement *initialization;
     
    225224class BranchStmt : public Statement {
    226225  public:
    227         enum Type { Goto = 0, Break, Continue };
     226        enum Type { Goto = 0 , Break, Continue };
    228227
    229228        BranchStmt( std::list<Label> labels, Label target, Type ) throw (SemanticError);
     
    244243        virtual void accept( Visitor &v ) { v.visit( this ); }
    245244        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    246         virtual void print( std::ostream &os, int indent = 0 ) const;
     245        virtual void print( std::ostream &os, int indent = 0 );
    247246  private:
    248247        static const char *brType[];
     
    264263        virtual void accept( Visitor &v ) { v.visit( this ); }
    265264        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    266         virtual void print( std::ostream &os, int indent = 0 ) const;
     265        virtual void print( std::ostream &os, int indent = 0 );
    267266  private:
    268267        Expression *expr;
     
    280279        virtual void accept( Visitor &v ) { v.visit( this ); }
    281280        virtual NullStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    282         virtual void print( std::ostream &os, int indent = 0 ) const;
     281        virtual void print( std::ostream &os, int indent = 0 );
    283282       
    284283  private:
     
    301300        virtual void accept( Visitor &v ) { v.visit( this ); }
    302301        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    303         virtual void print( std::ostream &os, int indent = 0 ) const;
     302        virtual void print( std::ostream &os, int indent = 0 );
    304303       
    305304  private:
     
    323322        virtual void accept( Visitor &v ) { v.visit( this ); }
    324323        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    325         virtual void print( std::ostream &os, int indent = 0 ) const;
     324        virtual void print( std::ostream &os, int indent = 0 );
    326325       
    327326  private:
     
    342341        virtual void accept( Visitor &v ) { v.visit( this ); }
    343342        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    344         virtual void print( std::ostream &os, int indent = 0 ) const;
     343        virtual void print( std::ostream &os, int indent = 0 );
    345344  private:
    346345        CompoundStmt *block;
     
    361360        virtual void accept( Visitor &v ) { v.visit( this ); }
    362361        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    363         virtual void print( std::ostream &os, int indent = 0 ) const;
     362        virtual void print( std::ostream &os, int indent = 0 );
    364363  private:
    365364        Declaration *decl;
  • src/driver/cfa.cc

    r94e0864d r94b4364  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 17:47:03 2015
    13 // Update Count     : 119
     12// Last Modified On : Sat May 30 10:15:00 2015
     13// Update Count     : 116
    1414//
    1515
     
    8585        bool CFA_flag = false;                                                          // -CFA flag
    8686        bool cpp_flag = false;                                                          // -E or -M flag, preprocessor only
    87         bool std_flag = false;                                                          // -std= flag
    8887        bool debugging = false;                                                         // -g flag
    8988
     
    153152                                } // if
    154153
    155                                 // C specific arguments
     154                                // C++ specific arguments
    156155
    157156                        } else if ( arg == "-v" ) {
     
    161160                        } else if ( arg == "-g" ) {
    162161                                debugging = true;                                               // symbolic debugging required
    163                                 args[nargs] = argv[i];                                  // pass the argument along
    164                                 nargs += 1;
    165                         } else if ( prefix( arg, "-std=" ) ) {
    166                                 std_flag = true;                                                // std=XX provided
    167162                                args[nargs] = argv[i];                                  // pass the argument along
    168163                                nargs += 1;
     
    301296                args[nargs] = "-Wno-deprecated";
    302297                nargs += 1;
    303                 if ( ! std_flag ) {                                                             // default c99, if none specified
    304                         args[nargs] = "-std=c99";
    305                         nargs += 1;
    306                 } // if
     298                args[nargs] = "-std=c99";
     299                nargs += 1;
    307300                args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
    308301                nargs += 1;
  • src/main.cc

    r94e0864d r94b4364  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun 22 17:02:11 2015
    13 // Update Count     : 73
     12// Last Modified On : Fri Jun 12 06:56:40 2015
     13// Update Count     : 70
    1414//
    1515
     
    5858bool
    5959        astp = false,
    60         bresolvep = false,
    6160        exprp = false,
    6261        expraltp = false,
    6362        grammarp = false,
    6463        libcfap = false,
    65         nopreludep = false,
    66         protop = false,
    67         parsep = false,
    6864        resolvep = false,                                                                       // used in AlternativeFinder
    6965        symtabp = false,
     66        parsep = false,
    7067        validp = false,
    71         errorp = false,
    72         codegenp = false;
    73 
    74 enum { Ast, Bresolver, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Validate, };
     68        preludep = true,
     69        protop = false,
     70        codegenp = false,
     71        errorp = false;
     72
     73enum { Ast, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Validate, };
    7574
    7675static struct option long_opts[] = {
    7776        { "ast", no_argument, 0, Ast },
    78         { "before-resolver", no_argument, 0, Bresolver },
    7977        { "expr", no_argument, 0, Expr },
    8078        { "expralt", no_argument, 0, ExprAlt },
     
    9997       
    10098        int c;
    101         while ( (c = getopt_long( argc, argv, "abefglnpqrsvyzD:", long_opts, &long_index )) != -1 ) {
     99        while ( (c = getopt_long( argc, argv, "aefglnpqrsvyzD:", long_opts, &long_index )) != -1 ) {
    102100                switch ( c ) {
    103101                  case Ast:
     
    105103                        astp = true;
    106104                        break;
    107                   case Bresolver:
    108                   case 'b':                                                                             // print before resolver steps
    109                         bresolvep = true;
    110                         break;
    111105                  case Expr:
    112106                  case 'e':                                                                             // dump AST after expression analysis
     
    127121                  case Nopreamble:
    128122                  case 'n':                                                                             // do not read preamble
    129                         nopreludep = true;
     123                        preludep = false;
    130124                        break;
    131125                  case Prototypes:
     
    184178
    185179                // read in the builtins and the prelude
    186                 if ( ! nopreludep ) {                                                   // include gcc builtins
     180                if ( preludep ) {                                                               // include gcc builtins
    187181                        FILE * builtins = fopen( CFA_LIBDIR "/builtins.cf", "r" );
    188182                        if ( builtins == NULL ) {
     
    257251                } // if
    258252
    259                 if ( bresolvep ) {
    260                         printAll( translationUnit, std::cout );
    261                         return 0;
    262                 } // if
    263 
    264253                OPTPRINT( "resolve" )
    265254                ResolvExpr::resolve( translationUnit );
Note: See TracChangeset for help on using the changeset viewer.