Changeset de62360d


Ignore:
Timestamp:
Jun 24, 2015, 4:04:19 PM (10 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
94e0864d
Parents:
a1d5d2a
Message:

fix computed goto, fixed -std=, implicit typedefs for enum and aggregates, add _Noreturn _Thread_local

Location:
src
Files:
30 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    ra1d5d2a rde62360d  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 07:12:27 2015
    13 // Update Count     : 129
     12// Last Modified On : Tue Jun 23 16:16:57 2015
     13// Update Count     : 133
    1414//
    1515
     
    6969                if ( functionDecl->get_isInline() ) {
    7070                        output << "inline ";
     71                } // if
     72                if ( functionDecl->get_isNoreturn() ) {
     73                        output << "_Noreturn ";
    7174                } // if
    7275                output << genType( functionDecl->get_functionType(), mangleName( functionDecl ) );
     
    295298                                  case OT_PREFIX:
    296299                                  case OT_PREFIXASSIGN:
     300                                  case OT_LABELADDRESS:
    297301                                        assert( untypedExpr->get_args().size() == 1 );
    298302                                        output << "(";
     
    318322                                        output << ")";
    319323                                        break;
    320              
     324                                       
    321325                                  case OT_CONSTANT:
    322326                                        // there are no intrinsic definitions of 0 or 1 as functions
     
    634638                        break;
    635639                  case DeclarationNode::Inline:
    636                         // handled as special via isInline flag (FIX)
     640                        output << "inline ";
    637641                        break;
    638642                  case DeclarationNode::Fortran:
    639                         // not handled
    640643                        output << "fortran ";
    641644                        break;
    642645                  case DeclarationNode::Noreturn:
    643                         // not handled
    644646                        output << "_Noreturn ";
    645647                        break;
    646648                  case DeclarationNode::Threadlocal:
    647                         // not handled
    648649                        output << "_Thread_local ";
    649650                        break;
  • src/CodeGen/OperatorTable.cc

    ra1d5d2a rde62360d  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 23:42:07 2015
    13 // Update Count     : 2
     12// Last Modified On : Tue Jun 23 17:41:14 2015
     13// Update Count     : 5
    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                         {       "0",            "0",    "_constant_zero",                       OT_CONSTANT             },
    61                         {       "1",            "1",    "_constant_one",                        OT_CONSTANT             }
     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                     }
    6263                };
    6364
  • src/CodeGen/OperatorTable.h

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

    ra1d5d2a rde62360d  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jun 02 15:30:32 2015
    13 // Update Count     : 93
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jun 23 12:42:23 2015
     13// Update Count     : 96
    1414//
    1515
     
    137137                                Label undef = from.back()->get_target();
    138138                                throw SemanticError ( "'" + undef + "' label not defined");
    139                         }
     139                        } // if
    140140
    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();
     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() );
    144143                        entry->set_label( finalLabel );
    145144
  • src/ControlStruct/LabelGenerator.cc

    ra1d5d2a rde62360d  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  8 14:45:07 2015
    13 // Update Count     : 12
     12// Last Modified On : Tue Jun 23 12:18:34 2015
     13// Update Count     : 13
    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

    ra1d5d2a rde62360d  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 07:13:46 2015
    13 // Update Count     : 3
     12// Last Modified On : Sat Jun 13 09:12:19 2015
     13// Update Count     : 4
    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 );
     526                        return new FunctionDecl( adapterName, DeclarationNode::NoStorageClass, LinkageSpec::C, adapterType, adapterBody, false, false );
    527527                }
    528528
  • src/GenPoly/Specialize.cc

    ra1d5d2a rde62360d  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 07:14:42 2015
    13 // Update Count     : 5
     12// Last Modified On : Sat Jun 13 15:54:07 2015
     13// Update Count     : 6
    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 );
     99                                FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( std::list< std::string >() ), false, false );
    100100                                thunkFunc->fixUniqueId();
    101101
  • src/Parser/DeclarationNode.cc

    ra1d5d2a rde62360d  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 08:02:03 2015
    13 // Update Count     : 58
     12// Last Modified On : Wed Jun 24 15:29:19 2015
     13// Update Count     : 86
    1414//
    1515
     
    2424#include "SynTree/Declaration.h"
    2525#include "SynTree/Expression.h"
     26
     27#include "Parser.h"
     28#include "TypedefTable.h"
     29extern TypedefTable typedefTable;
    2630
    2731using namespace std;
     
    177181                newnode->type->aggregate->name = DeclarationNode::anonymous.newName();
    178182        } // 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
    179191        newnode->type->aggregate->params = formals;
    180192        newnode->type->aggregate->actuals = actuals;
     
    191203                newnode->type->enumeration->name = DeclarationNode::anonymous.newName();
    192204        } // 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
    193213        newnode->type->enumeration->constants = constants;
    194214        return newnode;
     
    832852Declaration *DeclarationNode::build() const {
    833853        if ( type ) {
    834                 Declaration *newDecl = type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildInline(), linkage, maybeBuild< Initializer >(initializer) );
     854                Declaration *newDecl = type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildFuncSpecifier( Inline ), buildFuncSpecifier( Noreturn ), linkage, maybeBuild< Initializer >(initializer) );
    835855                return newDecl;
    836856        } // if
    837         if ( ! buildInline() ) {
     857        if ( ! buildFuncSpecifier( Inline ) && ! buildFuncSpecifier( Noreturn ) ) {
    838858                return new ObjectDecl( name, buildStorageClass(), linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) );
    839859        } // if
    840         throw SemanticError( "invalid inline specification in declaration of ", this );
     860        throw SemanticError( "invalid function specifier in declaration of ", this );
    841861}
    842862
     
    879899        for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
    880900          if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
    881 
    882901          if ( ret != DeclarationNode::NoStorageClass ) {       // already have a valid storage class ?
    883902                        throw SemanticError( "invalid combination of storage classes in declaration of ", this );
     
    888907}
    889908
    890 bool 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 );
     909bool 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 );
    896915}
    897916
  • src/Parser/ExpressionNode.cc

    ra1d5d2a rde62360d  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  8 17:33:40 2015
    13 // Update Count     : 147
     12// Last Modified On : Tue Jun 23 17:46:23 2015
     13// Update Count     : 152
    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         "+?", "-?", "", "*?", "!?", "~?", "++?", "?++", "--?", "?--", "LabAddress"
     366        "",             "",             "",
     367        "",             "",
     368        //diadic
     369        "",             "",             "",             "",             "?+?",          "?-?",  "?*?",  "?/?",  "?%?",  "",              "",
     370        "?|?",          "?&?",          "?^?",  "",             "?<<?", "?>>?", "?<?",  "?>?",  "?<=?",
     371        "?>=?",         "?==?",         "?!=?", "?=?",  "?*=?", "?/=?", "?%=?", "?+=?", "?-=?",
     372        "?<<=?",        "?>>=?",        "?&=?", "?^=?", "?|=?", "?[?]", "",             "",             "Range",
     373        //monadic
     374        "+?",           "-?",           "",             "*?",   "!?",   "~?",   "++?",  "?++",  "--?",  "?--",  "&&"
    375375};
    376376
  • src/Parser/ParseNode.h

    ra1d5d2a rde62360d  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 07:24:22 2015
    13 // Update Count     : 79
     12// Last Modified On : Wed Jun 24 14:09:51 2015
     13// Update Count     : 81
    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 buildInline() const;
     349        bool buildFuncSpecifier( StorageClass key ) const;
    350350
    351351        TypeData *type;
  • src/Parser/TypeData.cc

    ra1d5d2a rde62360d  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 08:03:20 2015
    13 // Update Count     : 15
     12// Last Modified On : Thu Jun 18 22:06:23 2015
     13// Update Count     : 21
    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 ) );
     439                        (*i)->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignType, 0, false, false ) );
    440440                } // if
    441441        } // for
    442442}
    443443
    444 Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, LinkageSpec::Type linkage, Initializer *init ) const {
     444Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, 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 );
     452                                decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline, isNoreturn );
    453453                        } else {
    454454                                // std::list<Label> ls;
    455                                 decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline );
     455                                decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline, isNoreturn );
    456456                        } // if
    457457                } else {
    458                         decl = new FunctionDecl( name, sc, linkage, buildFunction(), 0, isInline );
     458                        decl = new FunctionDecl( name, sc, linkage, buildFunction(), 0, isInline, isNoreturn );
    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 ) {
    477                         throw SemanticError( "invalid inline specification in declaration of ", this );
     476                if ( isInline || isNoreturn ) {
     477                        throw SemanticError( "invalid inline or _Noreturn specification in declaration of ", this );
    478478                } else {
    479479                        return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init );
     
    598598                                } // if
    599599                                break;
    600        
    601600                          case DeclarationNode::Complex:
    602601                                switch ( ret ) {
     
    791790                        break;
    792791                  default:
    793                         ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( base->buildDecl( "", DeclarationNode::NoStorageClass, 0, false, LinkageSpec::Cforall ) ) );
     792                        ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( base->buildDecl( "", DeclarationNode::NoStorageClass, 0, false, false, LinkageSpec::Cforall ) ) );
    794793                } // switch
    795794        } else {
     
    806805                at = new StructDecl( aggregate->name );
    807806                break;
    808        
    809807          case DeclarationNode::Union:
    810808                at = new UnionDecl( aggregate->name );
    811809                break;
    812        
    813810          case DeclarationNode::Context:
    814811                at = new ContextDecl( aggregate->name );
    815812                break;
    816        
    817813          default:
    818814                assert( false );
     
    838834ReferenceToType *TypeData::buildAggInst() const {
    839835        assert( kind == AggregateInst );
    840         std::string name;
    841836
    842837        ReferenceToType *ret;
     
    883878        TypeDecl *ret = new TypeDecl( variable->name, DeclarationNode::NoStorageClass, 0, kindMap[ variable->tyClass ] );
    884879        buildList( variable->assertions, ret->get_assertions() );
    885        
    886880        return ret;
    887881}
     
    891885        EnumDecl *ret = new EnumDecl( enumeration->name );
    892886        buildList( enumeration->constants, ret->get_members() );
    893 
    894887        return ret;
    895888}
     
    900893        buildList( symbolic->actuals, ret->get_parameters() );
    901894        buildForall( forall, ret->get_forall() );
    902 
    903895        return ret;
    904896}
     
    909901        buildTypeList( tuple->members, ret->get_types() );
    910902        buildForall( forall, ret->get_forall() );
    911 
    912903        return ret;
    913904}
     
    918909        assert( typeexpr->expr );
    919910        TypeofType *ret = new TypeofType( buildQualifiers(), typeexpr->expr->build() );
    920 
    921911        return ret;
    922912}
     
    932922                ret = new AttrType( buildQualifiers(), attr->name, attr->type->buildType() );
    933923        } // if
    934 
    935924        return ret;
    936925}
  • src/Parser/TypeData.h

    ra1d5d2a rde62360d  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 07:26:16 2015
    13 // Update Count     : 5
     12// Last Modified On : Thu Jun 18 21:03:18 2015
     13// Update Count     : 7
    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, LinkageSpec::Type linkage, Initializer *init = 0 ) const;
     122        Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, 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

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

    ra1d5d2a rde62360d  
    1010// Created On       : Sat May 16 15:24:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 15:25:59 2015
    13 // Update Count     : 3
     12// Last Modified On : Thu Jun 18 21:03:17 2015
     13// Update Count     : 7
    1414//
    1515
     
    4949        std::stack< std::string > nextIdentifiers;
    5050
    51         bool isKind( std::string identifier, kind_t kind ) const;
     51        bool isKind( const 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( std::string identifier ) const;
    57         bool isTypedef( std::string identifier ) const;
    58         bool isTypegen( std::string identifier ) const;
     56        bool isIdentifier( const std::string &identifier ) const;
     57        bool isTypedef( const std::string &identifier ) const;
     58        bool isTypegen( const 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( std::string contextName );
     79        void openContext( const std::string &contextName );
    8080       
    8181        void enterScope();
    8282        void leaveScope();
    83         void enterContext( std::string contextName );
     83        void enterContext( const std::string &contextName );
    8484        void leaveContext();
    8585
  • src/Parser/lex.cc

    ra1d5d2a rde62360d  
    13901390 * Created On       : Sat Sep 22 08:58:10 2001
    13911391 * Last Modified By : Peter A. Buhr
    1392  * Last Modified On : Thu Jun 11 21:52:35 2015
    1393  * Update Count     : 382
     1392 * Last Modified On : Fri Jun 19 11:10:14 2015
     1393 * Update Count     : 392
    13941394 */
    13951395#line 20 "lex.ll"
    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.
     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.
    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 //
     3654// mode: c++ //
    36553655// tab-width: 4 //
    3656 // mode: c++ //
    36573656// compile-command: "make install" //
    36583657// End: //
  • src/Parser/lex.ll

    ra1d5d2a rde62360d  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Thu Jun 11 21:52:35 2015
    13  * Update Count     : 382
     12 * Last Modified On : Fri Jun 19 11:10:14 2015
     13 * Update Count     : 392
    1414 */
    1515
     
    1818
    1919%{
    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.
     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.
    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 //
     400// mode: c++ //
    401401// tab-width: 4 //
    402 // mode: c++ //
    403402// compile-command: "make install" //
    404403// End: //
  • src/Parser/parser.cc

    ra1d5d2a rde62360d  
    6767
    6868/* Line 268 of yacc.c  */
    69 #line 45 "parser.yy"
     69#line 44 "parser.yy"
    7070
    7171#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
     
    324324
    325325/* Line 293 of yacc.c  */
    326 #line 108 "parser.yy"
     326#line 107 "parser.yy"
    327327
    328328        Token tok;
     
    570570#define YYFINAL  240
    571571/* YYLAST -- Last index in YYTABLE.  */
    572 #define YYLAST   12141
     572#define YYLAST   12266
    573573
    574574/* YYNTOKENS -- Number of terminals.  */
     
    579579#define YYNRULES  735
    580580/* YYNRULES -- Number of states.  */
    581 #define YYNSTATES  1552
     581#define YYNSTATES  1555
    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,  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
     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
    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,   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
     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
    988989};
    989990
     
    991992static const yytype_uint16 yyrline[] =
    992993{
    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
     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
    10671068};
    10681069#endif
     
    12391240     228,   228,   228,   229,   229,   229,   229,   230,   230,   230,
    12401241     231,   231,   231,   231,   232,   232,   232,   233,   233,   234,
    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,
     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,
    12501251     263,   264,   264,   265,   265,   266,   266,   266,   266,   267,
    12511252     267,   268,   268,   269,   269,   269,   269,   269,   270,   270,
     
    13181319       4,     4,     4,     1,     2,     2,     3,     1,     2,     2,
    13191320       1,     2,     2,     3,     1,     2,     2,     1,     1,     4,
    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,
     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,
    13281329       1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
    13291330       2,     0,     2,     1,     4,     1,     2,     3,     4,     2,
     
    13761377     573,   574,   279,     0,   714,   715,     0,    12,   279,     0,
    13771378     255,   256,     0,   280,   275,   276,   277,   278,   510,   290,
    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,
     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,
    13901391       1,   279,     2,   514,   560,   562,   279,     2,   724,   280,
    13911392     727,   529,   529,   280,     0,     0,     0,   258,   531,   526,
     
    13961397      76,    79,    84,    87,    89,    91,    93,    95,    97,   102,
    13971398     479,   734,   439,   478,     0,   437,   438,     0,   550,   565,
    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,
     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,
    14021403     233,     2,     0,     0,   443,   442,   137,     2,     2,   235,
    14031404       2,     2,   234,     2,   266,     2,   267,     0,   265,     0,
     
    14071408       0,   280,   279,   279,   717,   721,   719,   518,   279,   529,
    14081409     239,   247,   294,     0,     2,   519,   279,   483,   321,   322,
    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,
     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,
    14201421       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    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
     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
    15221523};
    15231524
     
    15251526static const yytype_int16 yydefgoto[] =
    15261527{
    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,
     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,
    15361537      62,   253,    64,    65,   264,   333,   334,    68,    69,    70,
    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
     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
    15511552};
    15521553
    15531554/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15541555   STATE-NUM.  */
    1555 #define YYPACT_NINF -1306
     1556#define YYPACT_NINF -1297
    15561557static const yytype_int16 yypact[] =
    15571558{
    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
     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
    17141715};
    17151716
     
    17171718static const yytype_int16 yypgoto[] =
    17181719{
    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
     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
    17431744};
    17441745
     
    17491750static const yytype_int16 yytable[] =
    17501751{
    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,
     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,
    19631952       0,     0,     0,     0,     0,     0,     0,     0,     0,     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,
     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,
    19702064       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,
     2065       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,
     2084       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,
     2092       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,
     2123      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,
     2142       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2143      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,
     2168       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,
     2207       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,
     2229       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,
    20252274      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,
     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,
    20702323       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,
     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,
    20782403      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,
    2158        0,     0,     0,   330,     0,     0,     0,     0,     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,
     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,
    22362420     276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    22372421       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,
    2243        0,     0,     0,     0,     0,     0,     0,     0,     0,     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,
    2273        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    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,
    2330       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    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,
    2363        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2364       16,    17,    18,    19,    20,    21,    22,    23,    24,     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,
    2376        0,     0,     0,     0,     0,     0,     0,     0,     0,     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,
    2387        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    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,
    2392        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2393        0,     0,  1444,     0,     0,     0,     0,     0,     1,     2,
    2394      198,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     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,
    23952427      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    23962428      23,    24,     0,     0,    25,    26,    27,    28,     0,     0,
    2397       29,   271,    30,   272,     8,     9,    10,    11,    12,    13,
     2429      29,   271,    30,   272,     0,     0,     0,     0,     0,   493,
     2430       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,
    23982442      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,
     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,
    24102455      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,
     2456      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2457       0,     0,   271,    30,   272,     0,     0,     0,   493,     0,
    24212458       0,     0,     0,     0,     0,     0,     0,     0,     0,     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,
     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,
    24262469       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2427      283,     0,   325,    -3,     0,     0,     0,   754,     0,   285,
    2428      326,   287,   288,   289,   290,     2,   198,     4,     5,     6,
     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,
    24292477       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    24302478      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     
    24322480       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24332481       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2434      273,    33,     0,    34,     0,    35,   274,     0,    37,    38,
     2482     273,    33,     0,    34,     0,    35,   274,   493,    37,    38,
    24352483     275,     0,     0,   276,   277,   278,   279,    40,    41,     0,
    24362484     280,   281,     0,     0,     0,     0,     0,     0,   282,     0,
    24372485       0,     0,     0,     0,     0,     0,     0,     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,
     2486       0,     0,   283,     0,   913,    -3,     0,     0,     0,   756,
     2487       0,   285,   575,   287,   288,   289,   290,     0,     0,     0,
    24442488       0,     0,     0,     0,     0,     0,     0,     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,
     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,
     2493       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,
     2504       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,
     2509       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,
     2512       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,
     2516       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,
     2520       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,
    24522524      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,
     2525      23,    24,     0,     0,    25,    26,    27,    28,     0,     0,
     2526      29,     0,    30,    31,     0,     0,     0,     0,     0,     0,
    24552527       0,     0,     0,     0,     0,     0,     0,     0,     0,     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,
     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,
    24662531       0,     0,     0,     0,     0,     0,     0,     0,     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,
    2477        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    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,
    2518        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2519       16,    17,    18,    19,    20,    21,    22,    23,    24,  -279,
    2520        0,    25,    26,    27,    28,     0,     0,    29,     0,    30,
    2521        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2522        0,     0,     0,     0,     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,
    2529        0,     0,     0,     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,
    2539        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2540        0,     0,     0,     0,     0,     0,     0,    42,     0,   201,
    2541        0,     0,     0,     0,     0,     0,     0,   202,     2,   198,
     2532       0,     0,     0,     0,     0,     0,    42,     0,    43,     0,
     2533       0,     0,     0,     0,     0,     0,    44,   196,     2,   197,
    25422534       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    25432535      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    25452537       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    25462538       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2547        0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
    2548        0,    37,    38,     2,   198,     4,     5,     6,     7,     8,
     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,
    25492559       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    25502560      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2551       27,     0,     0,     0,     0,     0,    30,   661,    -3,     0,
    2552        0,     0,     0,     0,     0,   610,     0,     0,     0,     0,
     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,
    25532576       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    25542577       0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
    2555        2,   198,     4,     5,     6,     7,     8,     9,    10,    11,
     2578       2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
    25562579      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    25572580      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2558        0,  -388,   661,    30,     0,     0,     0,     0,     0,     0,
    2559      610,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2581       0,  -389,   662,    30,     0,     0,     0,     0,     0,     0,
     2582     611,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25602583       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    25612584      35,     0,     0,    37,    38,     0,     0,     0,     0,     0,
    25622585       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    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,
     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,
    25662589       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    25672590      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    25722595       0,    37,    38,     0,     0,     0,     0,     0,     0,     0,
    25732596       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    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,
     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,
    25772600       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    25782601      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     
    25802603       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25812604       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2582        0,     0,    33,     0,    34,     0,    35,     0,     0,   199,
    2583      200,     2,   198,     4,     5,     6,     7,     8,     9,    10,
     2605       0,     0,    33,     0,    34,     0,    35,     0,     0,   198,
     2606     199,     2,   197,     4,     5,     6,     7,     8,     9,    10,
    25842607      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    25852608      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    25862609       0,     0,     0,     0,    30,   260,     0,     0,     0,     0,
    2587        0,     0,     0,   605,     0,     0,     0,     0,     0,     0,
     2610       0,     0,     0,   606,     0,     0,     0,     0,     0,     0,
    25882611       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2589        0,    35,     0,     0,    37,    38,     2,   198,     4,     5,
     2612       0,    35,     0,     0,    37,    38,     2,   197,     4,     5,
    25902613       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    25912614      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    25922615       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2593      573,     0,     0,     0,     0,     0,     0,     0,   610,     0,
     2616     574,     0,     0,     0,     0,     0,     0,     0,   611,     0,
    25942617       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25952618       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
    2596       38,     2,   198,     4,     5,     6,     7,     8,     9,    10,
     2619      38,     2,   197,     4,     5,     6,     7,     8,     9,    10,
    25972620      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    25982621      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2599        0,     0,     0,     0,    30,   661,     0,     0,     0,     0,
    2600        0,     0,     0,   610,     0,     0,     0,     0,     0,     0,
     2622       0,     0,     0,     0,    30,   662,     0,     0,     0,     0,
     2623       0,     0,     0,   611,     0,     0,     0,     0,     0,     0,
    26012624       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2602        0,    35,     0,     0,   199,   200,     8,     9,    10,    11,
     2625       0,    35,     0,     0,   198,   199,     8,     9,    10,    11,
    26032626      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    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,
     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,
    26072630       0,     0,     0,     0,     0,   273,    33,     0,     0,     0,
    26082631       0,   274,     0,    37,    38,   275,     0,     0,   276,   277,
     
    26202643       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    26212644       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2622        0,     0,     0,   283,     0,   505,     0,     0,   165,     0,
     2645       0,     0,     0,   283,     0,   506,     0,     0,   164,     0,
    26232646       0,     0,   285,   286,   287,   288,   289,   290,     8,     9,
    26242647      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     
    26312654       0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    26322655       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2633        0,   573,    -3,     0,     0,     0,     0,     0,   285,   574,
     2656       0,   574,    -3,     0,     0,     0,     0,     0,   285,   575,
    26342657     287,   288,   289,   290,     8,     9,    10,    11,    12,    13,
    26352658      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    26372660     271,    30,   272,     0,     0,     0,     0,     0,     0,     0,
    26382661       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2639        0,     0,     0,   273,    33,     0,     0,     0,     0,   624,
     2662       0,     0,     0,   273,    33,     0,     0,     0,     0,   625,
    26402663       0,    37,    38,   275,     0,     0,   276,   277,   278,   279,
    26412664      40,    41,     0,   280,   281,     0,     0,     0,     0,     0,
    26422665       0,   282,     0,     0,     0,     0,     0,     0,     0,     0,
    2643        0,     0,     0,     0,     0,   283,   -35,   740,     0,     0,
     2666       0,     0,     0,     0,     0,   283,   -35,   742,     0,     0,
    26442667       0,     0,     0,     0,   285,   286,   287,   288,   289,   290,
    26452668       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     
    26622685     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
    26632686       0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
    2664        0,     0,     0,     0,     0,     0,     0,   283,     0,   152,
     2687       0,     0,     0,     0,     0,     0,     0,   283,     0,   151,
    26652688       0,     0,     0,     0,     0,     0,   285,   286,   287,   288,
    26662689     289,   290,     8,     9,    10,    11,    12,    13,    14,    15,
     
    26732696       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    26742697       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2675        0,     0,     0,   283,     0,   573,     0,     0,     0,     0,
    2676        0,     0,   285,   574,   287,   288,   289,   290,     8,     9,
     2698       0,     0,     0,   283,     0,   574,     0,     0,     0,     0,
     2699       0,     0,   285,   575,   287,   288,   289,   290,     8,     9,
    26772700      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    26782701      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     
    26852708       0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    26862709       0,   361,     0,     0,     0,     0,     0,     0,   285,   363,
    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,
     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,
    26942714       0,     0,     0,     0,     0,     0,     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,
     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,
    27052721       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2706        0,    33,     0,     0,     0,     0,    36,     0,    37,    38,
    2707       39,   567,     0,     0,     0,     0,     0,    40,    41,   108,
     2722       0,     0,    33,     0,     0,     0,     0,    36,     0,    37,
     2723      38,    39,     0,     0,     0,     0,     0,     0,    40,    41,
    27082724       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    27092725      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2710       26,    27,    42,     0,    43,     0,     0,    30,     0,     0,
    2711        0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
     2726      26,    27,     0,    42,     0,    43,     0,    30,     0,     0,
     2727       0,     0,     0,    44,     0,     0,     0,     0,     0,     0,
    27122728       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2713       33,     0,     0,     0,     0,    36,     0,   199,   200,    39,
     2729      33,     0,     0,     0,     0,    36,     0,   198,   199,    39,
    27142730       0,     0,     0,     0,     0,     0,    40,    41,     8,     9,
    27152731      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    27162732      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    27172733       0,    42,     0,   260,     0,    30,     0,     0,     0,     0,
    2718        0,   202,     0,     0,     0,     0,     0,     0,     0,     0,
     2734       0,   201,     0,     0,     0,     0,     0,     0,     0,     0,
    27192735       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2720        0,     0,     0,    36,     0,   807,    38,    39,     0,     0,
     2736       0,     0,     0,    36,     0,   809,    38,    39,     0,     0,
    27212737       0,     0,     0,     0,    40,    41,     8,     9,    10,    11,
    27222738      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2723       22,    23,    24,     0,     0,    25,    26,    27,     0,  1025,
    2724        0,   567,     0,    30,     0,     0,     0,     0,     0,   610,
     2739      22,    23,    24,     0,     0,    25,    26,    27,     0,  1028,
     2740       0,   568,     0,    30,     0,     0,     0,     0,     0,   611,
    27252741       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27262742       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2727        0,    36,     0,   807,    38,    39,     0,     0,     0,     0,
     2743       0,    36,     0,   809,    38,    39,     0,     0,     0,     0,
    27282744       0,     0,    40,    41,     8,     9,    10,    11,    12,    13,
    27292745      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2730       24,     0,     0,    25,    26,    27,     0,     0,     0,   567,
    2731        0,    30,   434,     0,     0,     0,     0,   108,     0,     0,
     2746      24,     0,     0,    25,    26,    27,     0,     0,     0,   568,
     2747       0,    30,   435,     0,     0,     0,     0,   108,     0,     0,
    27322748       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27332749       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    27342750       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    27352751      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,
    27542752       0,     0,    25,    26,    27,     0,     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,
     2753      30,   435,     0,     0,     0,     0,     0,   436,     0,     0,
     2754       0,   929,     0,     0,     0,   108,     0,     0,     0,     0,
    27572755       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    27582756      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
    27592757      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    27602758       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2761      434,     0,     0,     0,     0,     0,   435,     0,     0,     0,
    2762     1497,     0,     0,     0,   108,     0,     0,     0,     0,     0,
     2759     435,     0,     0,     0,     0,     0,   436,     0,     0,     0,
     2760    1394,     0,     0,     0,   108,     0,     0,     0,     0,     0,
    27632761       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    27642762      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    27652763      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2766       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2767        0,     0,     0,     0,     0,   435,     0,     0,     0,  1521,
     2764      25,    26,    27,     0,     0,     0,     0,     0,    30,   435,
     2765       0,     0,     0,     0,     0,   436,     0,     0,     0,  1438,
    27682766       0,     0,     0,   108,     0,     0,     0,     0,     0,     0,
    2769        0,    33,     0,     0,     0,     0,   107,     0,    37,    38,
     2767       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    27702768       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    27712769      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2772       26,    27,     0,     0,     0,     0,     0,    30,   434,     0,
    2773        0,     0,     0,     0,    43,     0,     0,     0,     0,     0,
     2770      26,    27,     0,     0,     0,     0,     0,    30,   435,     0,
     2771       0,     0,     0,     0,   436,     0,     0,     0,  1500,     0,
    27742772       0,     0,   108,     0,     0,     0,     0,     0,     0,     0,
    27752773      33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
     
    27772775      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    27782776      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2779        0,     0,     0,   435,     0,     0,     0,     0,     0,     0,
     2777       0,     0,     0,   436,     0,     0,     0,  1524,     0,     0,
    27802778       0,   108,     0,     0,     0,     0,     0,     0,     0,    33,
    2781        0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
     2779       0,     0,     0,     0,   107,     0,    37,    38,     8,     9,
    27822780      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    27832781      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    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,
     2782       0,     0,     0,     0,     0,    30,   435,     0,     0,     0,
    28442783       0,     0,    43,     0,     0,     0,     0,     0,     0,     0,
    28452784     108,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     
    28482787      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    28492788       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2850        0,   567,     0,     0,     0,     0,     0,     0,     0,   108,
     2789       0,   436,     0,     0,     0,     0,     0,     0,     0,   108,
    28512790       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2852        0,     0,     0,     0,   199,   200,     2,   198,     4,     5,
    2853        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     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,
    28542816      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    28552817       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    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,
     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,
    28772839      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    28782840      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2879        0,     0,     0,     0,     0,    30,     8,     9,    10,    11,
     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,
    28802851      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    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,
     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,
    29022921       0,   275,     0,     0,   276,   277,   278,   279,    40,    41,
    29032922       0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    29042923       0,     0,     0,     0,     0,   271,     0,   272,     0,     0,
    2905        0,     0,     0,   283,     0,   361,     0,     0,   165,     0,
     2924       0,     0,     0,   283,     0,     0,     0,     0,     0,     0,
    29062925       0,     0,   285,   363,   287,   288,   289,   290,   273,     0,
    29072926       0,     0,     0,     0,   274,     0,     0,     0,   275,     0,
     
    29092928       0,     0,     0,     0,     0,     0,   282,     0,     0,     0,
    29102929       0,     0,   271,     0,   272,     0,     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,
     2930     496,     0,     0,     0,     0,     0,     0,     0,     0,   285,
     2931     363,   287,   288,   289,   290,   273,     0,     0,     0,     0,
    29132932       0,   274,     0,     0,     0,   275,     0,     0,   276,   277,
    29142933     278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
    29152934       0,     0,     0,   282,     0,     0,     0,     0,     0,   271,
    2916        0,   272,     0,     0,     0,     0,     0,   283,     0,     0,
     2935       0,   272,     0,     0,     0,     0,     0,   499,     0,     0,
    29172936       0,     0,     0,     0,     0,     0,   285,   363,   287,   288,
    29182937     289,   290,   273,     0,     0,     0,     0,     0,   274,     0,
    29192938       0,     0,   275,     0,     0,   276,   277,   278,   279,    40,
    29202939      41,     0,   280,   281,     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,
     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,
    29392947       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    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,
     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,
    29502951       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    29512952      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     
    29532954       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    29542955       0,     0,     0,     0,     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,
     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,
    29632961       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2964        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2965      199,   200
     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
    29662979};
    29672980
    29682981#define yypact_value_is_default(yystate) \
    2969   ((yystate) == (-1306))
     2982  ((yystate) == (-1297))
    29702983
    29712984#define yytable_value_is_error(yytable_value) \
     
    29742987static const yytype_int16 yycheck[] =
    29752988{
    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,
     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,
    31883189      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -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,
     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,
    31953301      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -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,
     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,
    32953321      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -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,
     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,
    33693329      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    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,
     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,
    34423372       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    34433373      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    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,
     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,
     3379       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3380      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,
     3405      -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,
     3444      -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,
     3466      -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,
    34613657      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    34623658      -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,
    3588        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3589       18,    19,    20,    21,    22,    23,    24,    25,    26,    -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,
    3601       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -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,
    3612       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    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,
    3617       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3618       -1,    -1,  1402,    -1,    -1,    -1,    -1,    -1,     3,     4,
     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,
    36193663       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    36203664      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    36213665      25,    26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,
    3622       35,    36,    37,    38,    10,    11,    12,    13,    14,    15,
     3666      35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,   892,
     3667      -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,
    36233679      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,
     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,
    36353692      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,
     3693      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
     3694      -1,    -1,    36,    37,    38,    -1,    -1,    -1,  1171,    -1,
    36463695      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -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,
     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,
    36513706      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3652      101,    -1,   103,   104,    -1,    -1,    -1,   108,    -1,   110,
    3653      111,   112,   113,   114,   115,     4,     5,     6,     7,     8,
     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,
    36543714       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    36553715      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     
    36573717      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36583718      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3659       59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
     3719      59,    60,    -1,    62,    -1,    64,    65,  1420,    67,    68,
    36603720      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    36613721      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    36623722      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36633723      -1,    -1,   101,    -1,   103,   104,    -1,    -1,    -1,   108,
    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,
     3724      -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
    36693725      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    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,
     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,
    36763760       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    36773761      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3678       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3679       -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3762      25,    26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,
     3763      35,    -1,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    36803764      -1,    -1,    -1,    -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,
     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,
    36913768      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    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,
     3769      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3770      -1,    -1,    -1,    -1,    -1,    -1,   111,     3,     4,     5,
    37673771       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    37683772      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     
    37703774      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37713775      -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,
    37723807      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
    37733808      -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
     
    39103945      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    39113946      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    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,
     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,
    39193951      -1,    -1,    -1,    -1,    -1,    -1,    -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,
     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,
    39303958      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3931       -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
    3932       69,   103,    -1,    -1,    -1,    -1,    -1,    76,    77,   111,
     3959      -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
     3960      68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
    39333961      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    39343962      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3935       30,    31,   101,    -1,   103,    -1,    -1,    37,    -1,    -1,
    3936       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3963      30,    31,    -1,   101,    -1,   103,    -1,    37,    -1,    -1,
     3964      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    39373965      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39383966      60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
     
    39593987      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    39603988      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,
    39793989      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    39803990      37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     
    39893999      68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    39904000      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3991       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
     4001      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,
    39924002      -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,   107,
    39934003      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3994       -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     4004      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
    39954005      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    39964006      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    39974007      30,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
    3998       -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     4008      -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,   107,    -1,
    39994009      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    40004010      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,
     
    40024012      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    40034013      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    4004       -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
     4014      -1,    -1,    -1,   103,    -1,    -1,    -1,   107,    -1,    -1,
    40054015      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    4006       -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,
     4016      -1,    -1,    -1,    -1,    65,    -1,    67,    68,    10,    11,
    40074017      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    40084018      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    4009       -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    4010      101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4019      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,
     4020      -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    40114021     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    40124022      -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,
    40134023      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    40144024      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    4015       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,   101,
     4025      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    40164026      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    40174027      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
     
    40194029      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    40204030      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    4021       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
     4031      -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,   101,    -1,
    40224032     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    40234033      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
     
    40254035      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    40264036      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    4027       -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,
     4037      -1,    -1,    37,    -1,    -1,    -1,    -1,   101,    -1,   103,
    40284038      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    40294039      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     
    40754085      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    40764086      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    4077       -1,    -1,    -1,    -1,    67,    68,     4,     5,     6,     7,
    4078        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     4087      -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,    13,
     4088      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,
    40794125      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,
    4105       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    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,
     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,
    41274158      -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    41284159      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    41294160      -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,
    4130       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
     4161      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
    41314162      -1,    -1,   110,   111,   112,   113,   114,   115,    59,    -1,
    41324163      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
     
    41344165      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    41354166      -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,
    4136      101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     4167     101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
    41374168     111,   112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,
    41384169      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
     
    41444175      -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
    41454176      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    4146       87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
     4177      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    41474178      -1,    -1,    -1,    -1,   101,    -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,
     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,
    41644184      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    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,
     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,
    41754188      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    41764189      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
     
    41784191      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    41794192      -1,    -1,    -1,    -1,    -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,
     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,
    41884198      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4189       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    4190       67,    68
     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
    41914216};
    41924217
     
    42084233     204,   206,   214,   216,   226,   230,   232,   271,    75,   101,
    42094234     298,   299,   300,   298,   298,    65,    67,    68,    69,   130,
    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,
     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,
    42204245     101,   106,   261,   106,   261,   222,   217,   108,   127,   127,
    42214246       0,   126,   101,   164,   298,   298,   126,   103,   214,   216,
     
    42384263     214,   216,   101,   126,   214,   352,   357,   164,   126,   259,
    42394264     264,   206,   221,   309,   313,   164,   126,   280,   216,   226,
    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
     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
    43534378};
    43544379
     
    51875212
    51885213/* Line 1806 of yacc.c  */
    5189 #line 282 "parser.yy"
     5214#line 279 "parser.yy"
    51905215    {
    51915216                        typedefTable.enterScope();
     
    51965221
    51975222/* Line 1806 of yacc.c  */
    5198 #line 288 "parser.yy"
     5223#line 285 "parser.yy"
    51995224    {
    52005225                        typedefTable.leaveScope();
     
    52055230
    52065231/* Line 1806 of yacc.c  */
    5207 #line 298 "parser.yy"
     5232#line 294 "parser.yy"
    52085233    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    52095234    break;
     
    52125237
    52135238/* Line 1806 of yacc.c  */
    5214 #line 299 "parser.yy"
     5239#line 295 "parser.yy"
    52155240    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    52165241    break;
     
    52195244
    52205245/* Line 1806 of yacc.c  */
    5221 #line 300 "parser.yy"
     5246#line 296 "parser.yy"
    52225247    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    52235248    break;
     
    52265251
    52275252/* Line 1806 of yacc.c  */
    5228 #line 324 "parser.yy"
     5253#line 320 "parser.yy"
    52295254    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
    52305255    break;
     
    52335258
    52345259/* Line 1806 of yacc.c  */
    5235 #line 325 "parser.yy"
     5260#line 321 "parser.yy"
    52365261    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    52375262    break;
     
    52405265
    52415266/* Line 1806 of yacc.c  */
     5267#line 328 "parser.yy"
     5268    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5269    break;
     5270
     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  */
    52425281#line 332 "parser.yy"
    5243     { (yyval.en) = new VarRefNode((yyvsp[(1) - (1)].tok)); }
    5244     break;
    5245 
    5246   case 18:
     5282    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     5283    break;
     5284
     5285  case 20:
    52475286
    52485287/* Line 1806 of yacc.c  */
    52495288#line 334 "parser.yy"
    5250     { (yyval.en) = new VarRefNode((yyvsp[(1) - (1)].tok)); }
    5251     break;
    5252 
    5253   case 19:
     5289    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     5290    break;
     5291
     5292  case 21:
    52545293
    52555294/* Line 1806 of yacc.c  */
    52565295#line 336 "parser.yy"
    5257     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5258     break;
    5259 
    5260   case 20:
     5296    { (yyval.en) = (yyvsp[(2) - (3)].en); }
     5297    break;
     5298
     5299  case 22:
    52615300
    52625301/* Line 1806 of yacc.c  */
    52635302#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)); }
     5303    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    52795304    break;
    52805305
     
    52825307
    52835308/* 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  */
    52845323#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))); }
     5324    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    53005325    break;
    53015326
     
    53035328
    53045329/* 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))); }
     5330#line 355 "parser.yy"
     5331    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    53075332    break;
    53085333
     
    53105335
    53115336/* Line 1806 of yacc.c  */
    5312 #line 362 "parser.yy"
    5313     { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::IncrPost), (yyvsp[(1) - (2)].en)); }
     5337#line 358 "parser.yy"
     5338    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
    53145339    break;
    53155340
     
    53175342
    53185343/* Line 1806 of yacc.c  */
    5319 #line 364 "parser.yy"
    5320     { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::DecrPost), (yyvsp[(1) - (2)].en)); }
     5344#line 360 "parser.yy"
     5345    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
    53215346    break;
    53225347
     
    53245349
    53255350/* Line 1806 of yacc.c  */
    5326 #line 367 "parser.yy"
     5351#line 363 "parser.yy"
    53275352    { (yyval.en) = 0; }
    53285353    break;
     
    53315356
    53325357/* Line 1806 of yacc.c  */
    5333 #line 373 "parser.yy"
    5334     { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (3)].en)->set_link((yyvsp[(3) - (3)].en))); }
     5358#line 369 "parser.yy"
     5359    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    53355360    break;
    53365361
     
    53385363
    53395364/* Line 1806 of yacc.c  */
    5340 #line 378 "parser.yy"
     5365#line 374 "parser.yy"
    53415366    { (yyval.en) = 0; }
    53425367    break;
     
    53455370
    53465371/* Line 1806 of yacc.c  */
    5347 #line 381 "parser.yy"
    5348     { (yyval.en) = (yyvsp[(3) - (3)].en)->set_asArgName((yyvsp[(1) - (3)].tok)); }
     5372#line 377 "parser.yy"
     5373    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_asArgName( (yyvsp[(1) - (3)].tok) ); }
    53495374    break;
    53505375
     
    53525377
    53535378/* Line 1806 of yacc.c  */
    5354 #line 386 "parser.yy"
    5355     { (yyval.en) = (yyvsp[(7) - (7)].en)->set_asArgName((yyvsp[(3) - (7)].en)); }
     5379#line 382 "parser.yy"
     5380    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_asArgName( (yyvsp[(3) - (7)].en) ); }
    53565381    break;
    53575382
     
    53595384
    53605385/* Line 1806 of yacc.c  */
    5361 #line 388 "parser.yy"
     5386#line 384 "parser.yy"
    53625387    { (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) )))); }
    53635388    break;
     
    53665391
    53675392/* Line 1806 of yacc.c  */
    5368 #line 393 "parser.yy"
     5393#line 389 "parser.yy"
    53695394    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    53705395    break;
     
    53735398
    53745399/* 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  */
    53755414#line 398 "parser.yy"
    5376     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    5377     break;
    5378 
    5379   case 43:
     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:
    53805419
    53815420/* Line 1806 of yacc.c  */
    53825421#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:
     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:
    53875426
    53885427/* Line 1806 of yacc.c  */
    53895428#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)); }
     5429    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    54055430    break;
    54065431
     
    54085433
    54095434/* 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  */
    54105449#line 412 "parser.yy"
    5411     { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Incr), (yyvsp[(2) - (2)].en)); }
    5412     break;
    5413 
    5414   case 49:
     5450    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     5451    break;
     5452
     5453  case 51:
    54155454
    54165455/* Line 1806 of yacc.c  */
    54175456#line 414 "parser.yy"
    5418     { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Decr), (yyvsp[(2) - (2)].en)); }
    5419     break;
    5420 
    5421   case 50:
     5457    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
     5458    break;
     5459
     5460  case 52:
    54225461
    54235462/* Line 1806 of yacc.c  */
    54245463#line 416 "parser.yy"
    5425     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    5426     break;
    5427 
    5428   case 51:
     5464    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
     5465    break;
     5466
     5467  case 53:
    54295468
    54305469/* Line 1806 of yacc.c  */
    54315470#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)); }
     5471    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
    54475472    break;
    54485473
     
    54505475
    54515476/* 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  */
    54525491#line 428 "parser.yy"
    5453     { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::SizeOf), (yyvsp[(2) - (2)].en)); }
    5454     break;
    5455 
    5456   case 55:
     5492    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
     5493    break;
     5494
     5495  case 57:
    54575496
    54585497/* Line 1806 of yacc.c  */
    54595498#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:
     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:
    54645503
    54655504/* Line 1806 of yacc.c  */
    54665505#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:
     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:
    54715510
    54725511/* Line 1806 of yacc.c  */
    54735512#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:
     5513    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
     5514    break;
     5515
     5516  case 60:
    54785517
    54795518/* Line 1806 of yacc.c  */
    54805519#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:
     5520    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     5521    break;
     5522
     5523  case 61:
    54855524
    54865525/* Line 1806 of yacc.c  */
    54875526#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:
     5527    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }
     5528    break;
     5529
     5530  case 62:
    54995531
    55005532/* Line 1806 of yacc.c  */
    55015533#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); }
     5534    { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
    55105535    break;
    55115536
     
    55135538
    55145539/* Line 1806 of yacc.c  */
    5515 #line 447 "parser.yy"
    5516     { (yyval.en) = new OperatorNode(OperatorNode::UnPlus); }
     5540#line 443 "parser.yy"
     5541    { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    55175542    break;
    55185543
     
    55205545
    55215546/* Line 1806 of yacc.c  */
    5522 #line 448 "parser.yy"
    5523     { (yyval.en) = new OperatorNode(OperatorNode::UnMinus); }
     5547#line 444 "parser.yy"
     5548    { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    55245549    break;
    55255550
     
    55275552
    55285553/* Line 1806 of yacc.c  */
    5529 #line 449 "parser.yy"
    5530     { (yyval.en) = new OperatorNode(OperatorNode::BitNeg); }
     5554#line 445 "parser.yy"
     5555    { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
    55315556    break;
    55325557
     
    55345559
    55355560/* 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)); }
     5561#line 451 "parser.yy"
     5562    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    55385563    break;
    55395564
     
    55415566
    55425567/* 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)); }
     5568#line 453 "parser.yy"
     5569    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    55455570    break;
    55465571
     
    55485573
    55495574/* 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  */
    55505589#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)); }
     5590    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55665591    break;
    55675592
     
    55695594
    55705595/* 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)); }
     5596#line 469 "parser.yy"
     5597    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55735598    break;
    55745599
     
    55765601
    55775602/* 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)); }
     5603#line 471 "parser.yy"
     5604    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55805605    break;
    55815606
     
    55835608
    55845609/* 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)); }
     5610#line 477 "parser.yy"
     5611    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55875612    break;
    55885613
     
    55905615
    55915616/* 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)); }
     5617#line 479 "parser.yy"
     5618    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55945619    break;
    55955620
     
    55975622
    55985623/* 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  */
    55995638#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:
     5639    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5640    break;
     5641
     5642  case 83:
    56045643
    56055644/* Line 1806 of yacc.c  */
    56065645#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)); }
     5646    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56225647    break;
    56235648
     
    56255650
    56265651/* 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)); }
     5652#line 497 "parser.yy"
     5653    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56295654    break;
    56305655
     
    56325657
    56335658/* 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)); }
     5659#line 499 "parser.yy"
     5660    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56365661    break;
    56375662
     
    56395664
    56405665/* 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)); }
     5666#line 505 "parser.yy"
     5667    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56435668    break;
    56445669
     
    56465671
    56475672/* 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)); }
     5673#line 511 "parser.yy"
     5674    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56505675    break;
    56515676
     
    56535678
    56545679/* 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)); }
     5680#line 517 "parser.yy"
     5681    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56575682    break;
    56585683
     
    56605685
    56615686/* 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)); }
     5687#line 523 "parser.yy"
     5688    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56645689    break;
    56655690
     
    56675692
    56685693/* 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)); }
     5694#line 529 "parser.yy"
     5695    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56715696    break;
    56725697
     
    56745699
    56755700/* 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  */
    56765715#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)) ) ); }
     5716    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    56925717    break;
    56935718
     
    56955720
    56965721/* 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  */
    56975736#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) ); }
     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) ); }
    57135738    break;
    57145739
     
    57165741
    57175742/* Line 1806 of yacc.c  */
    5718 #line 563 "parser.yy"
     5743#line 559 "parser.yy"
    57195744    { (yyval.en) = new NullExprNode; }
    57205745    break;
     
    57235748
    57245749/* 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  */
    57255764#line 571 "parser.yy"
    5726     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    5727     break;
    5728 
    5729   case 109:
     5765    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
     5766    break;
     5767
     5768  case 111:
    57305769
    57315770/* Line 1806 of yacc.c  */
    57325771#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"
    57475772    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    57485773    break;
     
    57515776
    57525777/* 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  */
    57535785#line 583 "parser.yy"
    5754     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5755     break;
    5756 
    5757   case 114:
     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:
    57585811
    57595812/* Line 1806 of yacc.c  */
    57605813#line 587 "parser.yy"
    5761     { (yyval.en) = new OperatorNode(OperatorNode::MulAssn); }
    5762     break;
    5763 
    5764   case 115:
     5814    { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
     5815    break;
     5816
     5817  case 119:
    57655818
    57665819/* Line 1806 of yacc.c  */
    57675820#line 588 "parser.yy"
    5768     { (yyval.en) = new OperatorNode(OperatorNode::DivAssn); }
    5769     break;
    5770 
    5771   case 116:
     5821    { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
     5822    break;
     5823
     5824  case 120:
    57725825
    57735826/* Line 1806 of yacc.c  */
    57745827#line 589 "parser.yy"
    5775     { (yyval.en) = new OperatorNode(OperatorNode::ModAssn); }
    5776     break;
    5777 
    5778   case 117:
     5828    { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
     5829    break;
     5830
     5831  case 121:
    57795832
    57805833/* Line 1806 of yacc.c  */
    57815834#line 590 "parser.yy"
    5782     { (yyval.en) = new OperatorNode(OperatorNode::PlusAssn); }
    5783     break;
    5784 
    5785   case 118:
     5835    { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
     5836    break;
     5837
     5838  case 122:
    57865839
    57875840/* Line 1806 of yacc.c  */
    57885841#line 591 "parser.yy"
    5789     { (yyval.en) = new OperatorNode(OperatorNode::MinusAssn); }
    5790     break;
    5791 
    5792   case 119:
     5842    { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
     5843    break;
     5844
     5845  case 123:
    57935846
    57945847/* Line 1806 of yacc.c  */
    57955848#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); }
     5849    { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
    58255850    break;
    58265851
     
    58285853
    58295854/* 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)); }
     5855#line 598 "parser.yy"
     5856    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    58325857    break;
    58335858
     
    58355860
    58365861/* Line 1806 of yacc.c  */
    5837 #line 607 "parser.yy"
     5862#line 603 "parser.yy"
    58385863    { (yyval.en) = 0; }
    58395864    break;
     
    58425867
    58435868/* Line 1806 of yacc.c  */
    5844 #line 616 "parser.yy"
     5869#line 612 "parser.yy"
    58455870    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    58465871    break;
     
    58495874
    58505875/* Line 1806 of yacc.c  */
    5851 #line 626 "parser.yy"
    5852     { (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label((yyvsp[(1) - (4)].tok));}
     5876#line 622 "parser.yy"
     5877    { (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );}
    58535878    break;
    58545879
     
    58565881
    58575882/* Line 1806 of yacc.c  */
    5858 #line 631 "parser.yy"
     5883#line 627 "parser.yy"
    58595884    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    58605885    break;
     
    58635888
    58645889/* Line 1806 of yacc.c  */
    5865 #line 638 "parser.yy"
     5890#line 634 "parser.yy"
    58665891    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    58675892    break;
     
    58705895
    58715896/* Line 1806 of yacc.c  */
    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); } }
     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); } }
    58745899    break;
    58755900
    58765901  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:
    58775916
    58785917/* Line 1806 of yacc.c  */
     
    58815920    break;
    58825921
    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 
    58975922  case 146:
    58985923
    58995924/* Line 1806 of yacc.c  */
    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); } }
     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); } }
    59025927    break;
    59035928
     
    59055930
    59065931/* Line 1806 of yacc.c  */
    5907 #line 665 "parser.yy"
    5908     { (yyval.sn) = new StatementNode(StatementNode::Exp, (yyvsp[(1) - (2)].en), 0); }
     5932#line 661 "parser.yy"
     5933    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    59095934    break;
    59105935
     
    59125937
    59135938/* 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) ); }
     5941    break;
     5942
     5943  case 149:
     5944
     5945/* 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) )) ); }
     5948    break;
     5949
     5950  case 150:
     5951
     5952/* Line 1806 of yacc.c  */
    59145953#line 671 "parser.yy"
    5915     { (yyval.sn) = new StatementNode(StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn)); }
    5916     break;
    5917 
    5918   case 149:
     5954    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5955    break;
     5956
     5957  case 151:
    59195958
    59205959/* Line 1806 of yacc.c  */
    59215960#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))) ); }
    5923     break;
    5924 
    5925   case 150:
    5926 
    5927 /* Line 1806 of yacc.c  */
    5928 #line 675 "parser.yy"
    5929     { (yyval.sn) = new StatementNode(StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn)); }
    5930     break;
    5931 
    5932   case 151:
    5933 
    5934 /* Line 1806 of yacc.c  */
    5935 #line 677 "parser.yy"
    5936     { (yyval.sn) = new StatementNode(StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn)); /* xxx */ }
     5961    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
    59375962    break;
    59385963
     
    59405965
    59415966/* Line 1806 of yacc.c  */
    5942 #line 683 "parser.yy"
    5943     { (yyval.sn) = new StatementNode(StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn)); }
     5967#line 678 "parser.yy"
     5968    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    59445969    break;
    59455970
     
    59475972
    59485973/* Line 1806 of yacc.c  */
    5949 #line 685 "parser.yy"
    5950     { (yyval.sn) = new StatementNode(StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn)); }
     5974#line 680 "parser.yy"
     5975    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
    59515976    break;
    59525977
     
    59545979
    59555980/* Line 1806 of yacc.c  */
    5956 #line 692 "parser.yy"
     5981#line 687 "parser.yy"
    59575982    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    59585983    break;
     
    59615986
    59625987/* Line 1806 of yacc.c  */
    5963 #line 694 "parser.yy"
    5964     { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Range),(yyvsp[(1) - (3)].en),(yyvsp[(3) - (3)].en)); }
     5988#line 689 "parser.yy"
     5989    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    59655990    break;
    59665991
     
    59685993
    59695994/* 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) ) ); }
     5997    break;
     5998
     5999  case 159:
     6000
     6001/* Line 1806 of yacc.c  */
     6002#line 700 "parser.yy"
     6003    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
     6004    break;
     6005
     6006  case 160:
     6007
     6008/* Line 1806 of yacc.c  */
    59706009#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)) ); }
    5972     break;
    5973 
    5974   case 159:
    5975 
    5976 /* Line 1806 of yacc.c  */
    5977 #line 705 "parser.yy"
    5978     { (yyval.sn) = new StatementNode(StatementNode::Case, (yyvsp[(2) - (3)].en), 0); }
    5979     break;
    5980 
    5981   case 160:
    5982 
    5983 /* Line 1806 of yacc.c  */
    5984 #line 706 "parser.yy"
    5985     { (yyval.sn) = new StatementNode(StatementNode::Default); }
     6010    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    59866011    break;
    59876012
     
    59896014
    59906015/* Line 1806 of yacc.c  */
    5991 #line 712 "parser.yy"
    5992     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (2)].sn)->set_link((yyvsp[(2) - (2)].sn))); }
     6016#line 707 "parser.yy"
     6017    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    59936018    break;
    59946019
     
    59966021
    59976022/* Line 1806 of yacc.c  */
     6023#line 711 "parser.yy"
     6024    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     6025    break;
     6026
     6027  case 164:
     6028
     6029/* Line 1806 of yacc.c  */
    59986030#line 716 "parser.yy"
    5999     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case((yyvsp[(2) - (2)].sn)); }
    6000     break;
    6001 
    6002   case 164:
    6003 
    6004 /* Line 1806 of yacc.c  */
    6005 #line 721 "parser.yy"
    60066031    { (yyval.sn) = 0; }
    60076032    break;
     
    60106035
    60116036/* Line 1806 of yacc.c  */
    6012 #line 727 "parser.yy"
    6013     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case((yyvsp[(2) - (2)].sn)); }
     6037#line 722 "parser.yy"
     6038    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    60146039    break;
    60156040
     
    60176042
    60186043/* 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) ))); }
     6046    break;
     6047
     6048  case 168:
     6049
     6050/* Line 1806 of yacc.c  */
    60196051#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)))); }
    6021     break;
    6022 
    6023   case 168:
    6024 
    6025 /* Line 1806 of yacc.c  */
    6026 #line 734 "parser.yy"
    60276052    { (yyval.sn) = 0; }
    60286053    break;
     
    60316056
    60326057/* Line 1806 of yacc.c  */
    6033 #line 740 "parser.yy"
    6034     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case((yyvsp[(2) - (2)].sn)); }
     6058#line 735 "parser.yy"
     6059    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    60356060    break;
    60366061
     
    60386063
    60396064/* Line 1806 of yacc.c  */
    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)))); }
     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) ))); }
    60426067    break;
    60436068
     
    60456070
    60466071/* Line 1806 of yacc.c  */
    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)))); }
     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) ))); }
    60496074    break;
    60506075
     
    60526077
    60536078/* 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) ))))); }
     6081    break;
     6082
     6083  case 174:
     6084
     6085/* Line 1806 of yacc.c  */
    60546086#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)))))); }
    6056     break;
    6057 
    6058   case 174:
     6087    { (yyval.sn) = 0; }
     6088    break;
     6089
     6090  case 176:
    60596091
    60606092/* Line 1806 of yacc.c  */
    60616093#line 751 "parser.yy"
    6062     { (yyval.sn) = 0; }
    6063     break;
    6064 
    6065   case 176:
    6066 
    6067 /* Line 1806 of yacc.c  */
    6068 #line 756 "parser.yy"
    6069     { (yyval.sn) = new StatementNode(StatementNode::Fallthru, 0, 0); }
     6094    { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
    60706095    break;
    60716096
     
    60736098
    60746099/* Line 1806 of yacc.c  */
     6100#line 752 "parser.yy"
     6101    { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
     6102    break;
     6103
     6104  case 178:
     6105
     6106/* Line 1806 of yacc.c  */
    60756107#line 757 "parser.yy"
    6076     { (yyval.sn) = new StatementNode(StatementNode::Fallthru, 0, 0); }
    6077     break;
    6078 
    6079   case 178:
    6080 
    6081 /* Line 1806 of yacc.c  */
    6082 #line 762 "parser.yy"
    6083     { (yyval.sn) = new StatementNode(StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn)); }
     6108    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    60846109    break;
    60856110
     
    60876112
    60886113/* Line 1806 of yacc.c  */
    6089 #line 764 "parser.yy"
    6090     { (yyval.sn) = new StatementNode(StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn)); }
     6114#line 759 "parser.yy"
     6115    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    60916116    break;
    60926117
     
    60946119
    60956120/* 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) ); }
     6123    break;
     6124
     6125  case 181:
     6126
     6127/* Line 1806 of yacc.c  */
    60966128#line 766 "parser.yy"
    6097     { (yyval.sn) = new StatementNode(StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn)); }
    6098     break;
    6099 
    6100   case 181:
    6101 
    6102 /* Line 1806 of yacc.c  */
    6103 #line 771 "parser.yy"
    6104     { (yyval.en) = new ForCtlExprNode((yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en)); }
     6129    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    61056130    break;
    61066131
     
    61086133
    61096134/* 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) ); }
     6137    break;
     6138
     6139  case 183:
     6140
     6141/* Line 1806 of yacc.c  */
    61106142#line 773 "parser.yy"
    6111     { (yyval.en) = new ForCtlExprNode((yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en)); }
    6112     break;
    6113 
    6114   case 183:
    6115 
    6116 /* Line 1806 of yacc.c  */
    6117 #line 778 "parser.yy"
    6118     { (yyval.sn) = new StatementNode(StatementNode::Goto, (yyvsp[(2) - (3)].tok)); }
     6143    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    61196144    break;
    61206145
     
    61226147
    61236148/* Line 1806 of yacc.c  */
    6124 #line 782 "parser.yy"
    6125     { (yyval.sn) = new StatementNode(StatementNode::Goto, (yyvsp[(3) - (4)].en)); }
     6149#line 777 "parser.yy"
     6150    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    61266151    break;
    61276152
     
    61296154
    61306155/* Line 1806 of yacc.c  */
    6131 #line 786 "parser.yy"
    6132     { (yyval.sn) = new StatementNode(StatementNode::Continue, 0, 0); }
     6156#line 780 "parser.yy"
     6157    { (yyval.sn) = new StatementNode( StatementNode::Continue, 0, 0 ); }
    61336158    break;
    61346159
     
    61366161
    61376162/* Line 1806 of yacc.c  */
    6138 #line 790 "parser.yy"
    6139     { (yyval.sn) = new StatementNode(StatementNode::Continue, (yyvsp[(2) - (3)].tok)); }
     6163#line 784 "parser.yy"
     6164    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    61406165    break;
    61416166
     
    61436168
    61446169/* Line 1806 of yacc.c  */
    6145 #line 794 "parser.yy"
    6146     { (yyval.sn) = new StatementNode(StatementNode::Break, 0, 0); }
     6170#line 787 "parser.yy"
     6171    { (yyval.sn) = new StatementNode( StatementNode::Break, 0, 0 ); }
    61476172    break;
    61486173
     
    61506175
    61516176/* Line 1806 of yacc.c  */
    6152 #line 798 "parser.yy"
    6153     { (yyval.sn) = new StatementNode(StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
     6177#line 791 "parser.yy"
     6178    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    61546179    break;
    61556180
     
    61576182
    61586183/* Line 1806 of yacc.c  */
    6159 #line 800 "parser.yy"
    6160     { (yyval.sn) = new StatementNode(StatementNode::Return, (yyvsp[(2) - (3)].en), 0); }
     6184#line 793 "parser.yy"
     6185    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    61616186    break;
    61626187
     
    61646189
    61656190/* Line 1806 of yacc.c  */
     6191#line 795 "parser.yy"
     6192    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     6193    break;
     6194
     6195  case 191:
     6196
     6197/* Line 1806 of yacc.c  */
     6198#line 797 "parser.yy"
     6199    { (yyval.sn) = new StatementNode( StatementNode::Throw, 0, 0 ); }
     6200    break;
     6201
     6202  case 192:
     6203
     6204/* Line 1806 of yacc.c  */
    61666205#line 802 "parser.yy"
    6167     { (yyval.sn) = new StatementNode(StatementNode::Throw, (yyvsp[(2) - (3)].en), 0); }
    6168     break;
    6169 
    6170   case 191:
     6206    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     6207    break;
     6208
     6209  case 193:
    61716210
    61726211/* Line 1806 of yacc.c  */
    61736212#line 804 "parser.yy"
    6174     { (yyval.sn) = new StatementNode(StatementNode::Throw, 0, 0); }
    6175     break;
    6176 
    6177   case 192:
    6178 
    6179 /* Line 1806 of yacc.c  */
    6180 #line 809 "parser.yy"
    6181     { (yyval.sn) = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn))))); }
    6182     break;
    6183 
    6184   case 193:
    6185 
    6186 /* Line 1806 of yacc.c  */
    6187 #line 811 "parser.yy"
    6188     { (yyval.sn) = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn))))); }
     6213    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    61896214    break;
    61906215
     
    61926217
    61936218/* Line 1806 of yacc.c  */
    6194 #line 813 "parser.yy"
     6219#line 806 "parser.yy"
    61956220    {
    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)))));
     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) ))));
    61986223                }
    61996224    break;
     
    62026227
    62036228/* Line 1806 of yacc.c  */
    6204 #line 825 "parser.yy"
     6229#line 817 "parser.yy"
    62056230    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    62066231    break;
     
    62096234
    62106235/* Line 1806 of yacc.c  */
    6211 #line 827 "parser.yy"
     6236#line 819 "parser.yy"
    62126237    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    62136238    break;
     
    62166241
    62176242/* Line 1806 of yacc.c  */
    6218 #line 832 "parser.yy"
    6219     { (yyval.pn) = StatementNode::newCatchStmt((yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn)); }
     6243#line 824 "parser.yy"
     6244    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    62206245    break;
    62216246
     
    62236248
    62246249/* Line 1806 of yacc.c  */
    6225 #line 834 "parser.yy"
    6226     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt((yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn)) ); }
     6250#line 826 "parser.yy"
     6251    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    62276252    break;
    62286253
     
    62306255
    62316256/* Line 1806 of yacc.c  */
    6232 #line 839 "parser.yy"
     6257#line 831 "parser.yy"
    62336258    {
    6234                         (yyval.pn) = new StatementNode(StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn));
     6259                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
    62356260                        std::cout << "Just created a finally node" << std::endl;
    62366261                }
     
    62406265
    62416266/* Line 1806 of yacc.c  */
    6242 #line 853 "parser.yy"
     6267#line 845 "parser.yy"
    62436268    {
    62446269                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62506275
    62516276/* Line 1806 of yacc.c  */
    6252 #line 858 "parser.yy"
     6277#line 850 "parser.yy"
    62536278    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    62546279    break;
     
    62576282
    62586283/* Line 1806 of yacc.c  */
    6259 #line 860 "parser.yy"
     6284#line 852 "parser.yy"
    62606285    {
    62616286                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62676292
    62686293/* Line 1806 of yacc.c  */
    6269 #line 869 "parser.yy"
    6270     { (yyval.sn) = new StatementNode(StatementNode::Asm, 0, 0); }
     6294#line 861 "parser.yy"
     6295    { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
    62716296    break;
    62726297
     
    62746299
    62756300/* Line 1806 of yacc.c  */
    6276 #line 871 "parser.yy"
    6277     { (yyval.sn) = new StatementNode(StatementNode::Asm, 0, 0); }
     6301#line 863 "parser.yy"
     6302    { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
    62786303    break;
    62796304
     
    62816306
    62826307/* Line 1806 of yacc.c  */
    6283 #line 873 "parser.yy"
    6284     { (yyval.sn) = new StatementNode(StatementNode::Asm, 0, 0); }
     6308#line 865 "parser.yy"
     6309    { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
    62856310    break;
    62866311
     
    62886313
    62896314/* Line 1806 of yacc.c  */
    6290 #line 875 "parser.yy"
    6291     { (yyval.sn) = new StatementNode(StatementNode::Asm, 0, 0); }
     6315#line 867 "parser.yy"
     6316    { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
    62926317    break;
    62936318
     
    62956320
    62966321/* Line 1806 of yacc.c  */
    6297 #line 889 "parser.yy"
     6322#line 881 "parser.yy"
    62986323    {}
    62996324    break;
     
    63026327
    63036328/* Line 1806 of yacc.c  */
     6329#line 885 "parser.yy"
     6330    {}
     6331    break;
     6332
     6333  case 217:
     6334
     6335/* Line 1806 of yacc.c  */
    63046336#line 893 "parser.yy"
     6337    { (yyval.decl) = 0; }
     6338    break;
     6339
     6340  case 220:
     6341
     6342/* Line 1806 of yacc.c  */
     6343#line 900 "parser.yy"
     6344    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6345    break;
     6346
     6347  case 221:
     6348
     6349/* Line 1806 of yacc.c  */
     6350#line 905 "parser.yy"
     6351    { (yyval.decl) = 0; }
     6352    break;
     6353
     6354  case 224:
     6355
     6356/* Line 1806 of yacc.c  */
     6357#line 912 "parser.yy"
     6358    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6359    break;
     6360
     6361  case 229:
     6362
     6363/* Line 1806 of yacc.c  */
     6364#line 926 "parser.yy"
    63056365    {}
    63066366    break;
    63076367
    6308   case 217:
    6309 
    6310 /* Line 1806 of yacc.c  */
    6311 #line 901 "parser.yy"
    6312     { (yyval.decl) = 0; }
    6313     break;
    6314 
    6315   case 220:
    6316 
    6317 /* Line 1806 of yacc.c  */
    6318 #line 908 "parser.yy"
    6319     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6320     break;
    6321 
    6322   case 221:
    6323 
    6324 /* Line 1806 of yacc.c  */
    6325 #line 913 "parser.yy"
    6326     { (yyval.decl) = 0; }
    6327     break;
    6328 
    6329   case 224:
    6330 
    6331 /* Line 1806 of yacc.c  */
    6332 #line 920 "parser.yy"
    6333     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6334     break;
    6335 
    6336   case 229:
    6337 
    6338 /* Line 1806 of yacc.c  */
    6339 #line 934 "parser.yy"
     6368  case 230:
     6369
     6370/* Line 1806 of yacc.c  */
     6371#line 927 "parser.yy"
    63406372    {}
    63416373    break;
    63426374
    6343   case 230:
    6344 
    6345 /* Line 1806 of yacc.c  */
    6346 #line 935 "parser.yy"
    6347     {}
    6348     break;
    6349 
    63506375  case 238:
    63516376
    63526377/* Line 1806 of yacc.c  */
    6353 #line 965 "parser.yy"
     6378#line 956 "parser.yy"
    63546379    {
    63556380                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63616386
    63626387/* Line 1806 of yacc.c  */
    6363 #line 972 "parser.yy"
     6388#line 963 "parser.yy"
    63646389    {
    63656390                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63716396
    63726397/* Line 1806 of yacc.c  */
    6373 #line 977 "parser.yy"
     6398#line 968 "parser.yy"
    63746399    {
    63756400                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63816406
    63826407/* Line 1806 of yacc.c  */
    6383 #line 987 "parser.yy"
     6408#line 978 "parser.yy"
    63846409    {
    63856410                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63916416
    63926417/* Line 1806 of yacc.c  */
    6393 #line 992 "parser.yy"
     6418#line 983 "parser.yy"
    63946419    {
    63956420                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    64016426
    64026427/* Line 1806 of yacc.c  */
    6403 #line 997 "parser.yy"
     6428#line 988 "parser.yy"
    64046429    {
    64056430                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    64116436
    64126437/* Line 1806 of yacc.c  */
    6413 #line 1005 "parser.yy"
     6438#line 996 "parser.yy"
    64146439    {
    64156440                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64216446
    64226447/* Line 1806 of yacc.c  */
    6423 #line 1010 "parser.yy"
     6448#line 1001 "parser.yy"
    64246449    {
    64256450                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64316456
    64326457/* Line 1806 of yacc.c  */
    6433 #line 1015 "parser.yy"
     6458#line 1006 "parser.yy"
    64346459    {
    64356460                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64416466
    64426467/* Line 1806 of yacc.c  */
    6443 #line 1020 "parser.yy"
     6468#line 1011 "parser.yy"
    64446469    {
    64456470                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64516476
    64526477/* Line 1806 of yacc.c  */
    6453 #line 1025 "parser.yy"
     6478#line 1016 "parser.yy"
    64546479    {
    64556480                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64616486
    64626487/* Line 1806 of yacc.c  */
    6463 #line 1033 "parser.yy"
     6488#line 1024 "parser.yy"
    64646489    {
    6465                         typedefTable.setNextIdentifier( *((yyvsp[(5) - (10)].tok)) );
     6490                        typedefTable.setNextIdentifier( *( (yyvsp[(5) - (10)].tok) ) );
    64666491                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(5) - (10)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(8) - (10)].decl), 0, true );
    64676492                }
     
    64716496
    64726497/* Line 1806 of yacc.c  */
    6473 #line 1038 "parser.yy"
     6498#line 1029 "parser.yy"
    64746499    {
    6475                         typedefTable.setNextIdentifier( *((yyvsp[(5) - (10)].tok)) );
     6500                        typedefTable.setNextIdentifier( *( (yyvsp[(5) - (10)].tok) ) );
    64766501                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(5) - (10)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(8) - (10)].decl), 0, true );
    64776502                }
     
    64816506
    64826507/* Line 1806 of yacc.c  */
    6483 #line 1053 "parser.yy"
     6508#line 1042 "parser.yy"
    64846509    {
    64856510                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64906515
    64916516/* Line 1806 of yacc.c  */
    6492 #line 1057 "parser.yy"
     6517#line 1046 "parser.yy"
    64936518    {
    64946519                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64996524
    65006525/* Line 1806 of yacc.c  */
    6501 #line 1064 "parser.yy"
     6526#line 1053 "parser.yy"
    65026527    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    65036528    break;
     
    65066531
    65076532/* Line 1806 of yacc.c  */
    6508 #line 1068 "parser.yy"
     6533#line 1057 "parser.yy"
    65096534    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    65106535    break;
     
    65136538
    65146539/* Line 1806 of yacc.c  */
    6515 #line 1073 "parser.yy"
     6540#line 1062 "parser.yy"
    65166541    {
    6517                         typedefTable.addToEnclosingScope( TypedefTable::TD);
     6542                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    65186543                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
    65196544                }
     
    65236548
    65246549/* Line 1806 of yacc.c  */
    6525 #line 1078 "parser.yy"
     6550#line 1067 "parser.yy"
    65266551    {
    6527                         typedefTable.addToEnclosingScope( TypedefTable::TD);
     6552                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    65286553                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
    65296554                }
     
    65336558
    65346559/* Line 1806 of yacc.c  */
     6560#line 1072 "parser.yy"
     6561    {
     6562                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     6563                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
     6564                }
     6565    break;
     6566
     6567  case 258:
     6568
     6569/* Line 1806 of yacc.c  */
    65356570#line 1083 "parser.yy"
    65366571    {
    6537                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD);
    6538                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
    6539                 }
    6540     break;
    6541 
    6542   case 258:
    6543 
    6544 /* Line 1806 of yacc.c  */
    6545 #line 1095 "parser.yy"
    6546     {
    6547                         typedefTable.addToEnclosingScope( TypedefTable::TD);
     6572                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    65486573                        (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(2) - (3)].decl) )->addTypedef();
    65496574                }
     
    65536578
    65546579/* Line 1806 of yacc.c  */
    6555 #line 1100 "parser.yy"
     6580#line 1088 "parser.yy"
    65566581    {
    6557                         typedefTable.addToEnclosingScope( TypedefTable::TD);
     6582                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    65586583                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) )->addTypedef() );
    65596584                }
     
    65636588
    65646589/* Line 1806 of yacc.c  */
    6565 #line 1105 "parser.yy"
     6590#line 1093 "parser.yy"
    65666591    {
    6567                         typedefTable.addToEnclosingScope( TypedefTable::TD);
     6592                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    65686593                        (yyval.decl) = (yyvsp[(4) - (4)].decl)->addType( (yyvsp[(3) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef();
    65696594                }
     
    65736598
    65746599/* Line 1806 of yacc.c  */
    6575 #line 1110 "parser.yy"
     6600#line 1098 "parser.yy"
    65766601    {
    6577                         typedefTable.addToEnclosingScope( TypedefTable::TD);
     6602                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    65786603                        (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addTypedef();
    65796604                }
     
    65836608
    65846609/* Line 1806 of yacc.c  */
    6585 #line 1115 "parser.yy"
     6610#line 1103 "parser.yy"
    65866611    {
    6587                         typedefTable.addToEnclosingScope( TypedefTable::TD);
    6588                         (yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers((yyvsp[(1) - (4)].decl))->addTypedef()->addType((yyvsp[(1) - (4)].decl));
     6612                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     6613                        (yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef()->addType( (yyvsp[(1) - (4)].decl) );
    65896614                }
    65906615    break;
     
    65936618
    65946619/* Line 1806 of yacc.c  */
    6595 #line 1123 "parser.yy"
     6620#line 1111 "parser.yy"
    65966621    {
    6597                         typedefTable.addToEnclosingScope(*((yyvsp[(2) - (4)].tok)), TypedefTable::TD);
     6622                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
    65986623                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    65996624                }
     
    66036628
    66046629/* Line 1806 of yacc.c  */
    6605 #line 1128 "parser.yy"
     6630#line 1116 "parser.yy"
    66066631    {
    6607                         typedefTable.addToEnclosingScope(*((yyvsp[(5) - (7)].tok)), TypedefTable::TD);
     6632                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
    66086633                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    66096634                }
     
    66136638
    66146639/* Line 1806 of yacc.c  */
    6615 #line 1145 "parser.yy"
     6640#line 1133 "parser.yy"
    66166641    {
    66176642                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6618                         (yyval.decl) = ((yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer((yyvsp[(4) - (4)].in));
     6643                        (yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer( (yyvsp[(4) - (4)].in) );
    66196644                }
    66206645    break;
     
    66236648
    66246649/* Line 1806 of yacc.c  */
    6625 #line 1150 "parser.yy"
     6650#line 1138 "parser.yy"
    66266651    {
    66276652                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6628                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer((yyvsp[(6) - (6)].in)) ) );
     6653                        (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
    66296654                }
    66306655    break;
     
    66336658
    66346659/* Line 1806 of yacc.c  */
     6660#line 1160 "parser.yy"
     6661    { (yyval.decl) = 0; }
     6662    break;
     6663
     6664  case 282:
     6665
     6666/* Line 1806 of yacc.c  */
    66356667#line 1172 "parser.yy"
    6636     { (yyval.decl) = 0; }
    6637     break;
    6638 
    6639   case 282:
     6668    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6669    break;
     6670
     6671  case 284:
     6672
     6673/* Line 1806 of yacc.c  */
     6674#line 1178 "parser.yy"
     6675    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
     6676    break;
     6677
     6678  case 285:
     6679
     6680/* Line 1806 of yacc.c  */
     6681#line 1183 "parser.yy"
     6682    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6683    break;
     6684
     6685  case 286:
    66406686
    66416687/* Line 1806 of yacc.c  */
    66426688#line 1185 "parser.yy"
    6643     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6644     break;
    6645 
    6646   case 284:
     6689    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     6690    break;
     6691
     6692  case 287:
     6693
     6694/* Line 1806 of yacc.c  */
     6695#line 1187 "parser.yy"
     6696    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     6697    break;
     6698
     6699  case 288:
     6700
     6701/* Line 1806 of yacc.c  */
     6702#line 1189 "parser.yy"
     6703    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     6704    break;
     6705
     6706  case 289:
    66476707
    66486708/* Line 1806 of yacc.c  */
    66496709#line 1191 "parser.yy"
    6650     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
    6651     break;
    6652 
    6653   case 285:
    6654 
    6655 /* Line 1806 of yacc.c  */
    6656 #line 1196 "parser.yy"
    6657     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    6658     break;
    6659 
    6660   case 286:
    6661 
    6662 /* Line 1806 of yacc.c  */
    6663 #line 1198 "parser.yy"
    6664     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    6665     break;
    6666 
    6667   case 287:
    6668 
    6669 /* Line 1806 of yacc.c  */
    6670 #line 1200 "parser.yy"
    6671     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    6672     break;
    6673 
    6674   case 288:
    6675 
    6676 /* Line 1806 of yacc.c  */
    6677 #line 1202 "parser.yy"
    6678     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    6679     break;
    6680 
    6681   case 289:
    6682 
    6683 /* Line 1806 of yacc.c  */
    6684 #line 1204 "parser.yy"
    66856710    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    66866711    break;
     
    66896714
    66906715/* Line 1806 of yacc.c  */
    6691 #line 1206 "parser.yy"
     6716#line 1193 "parser.yy"
    66926717    {
    66936718                        typedefTable.enterScope();
     
    66986723
    66996724/* Line 1806 of yacc.c  */
    6700 #line 1210 "parser.yy"
     6725#line 1197 "parser.yy"
    67016726    {
    67026727                        typedefTable.leaveScope();
     
    67086733
    67096734/* 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  */
    67106749#line 1219 "parser.yy"
    67116750    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67126751    break;
    67136752
    6714   case 294:
    6715 
    6716 /* Line 1806 of yacc.c  */
    6717 #line 1221 "parser.yy"
     6753  case 298:
     6754
     6755/* Line 1806 of yacc.c  */
     6756#line 1228 "parser.yy"
     6757    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     6758    break;
     6759
     6760  case 299:
     6761
     6762/* Line 1806 of yacc.c  */
     6763#line 1230 "parser.yy"
     6764    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     6765    break;
     6766
     6767  case 300:
     6768
     6769/* Line 1806 of yacc.c  */
     6770#line 1232 "parser.yy"
     6771    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     6772    break;
     6773
     6774  case 301:
     6775
     6776/* Line 1806 of yacc.c  */
     6777#line 1234 "parser.yy"
     6778    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     6779    break;
     6780
     6781  case 302:
     6782
     6783/* Line 1806 of yacc.c  */
     6784#line 1236 "parser.yy"
     6785    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     6786    break;
     6787
     6788  case 303:
     6789
     6790/* Line 1806 of yacc.c  */
     6791#line 1238 "parser.yy"
     6792    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     6793    break;
     6794
     6795  case 304:
     6796
     6797/* Line 1806 of yacc.c  */
     6798#line 1240 "parser.yy"
     6799    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     6800    break;
     6801
     6802  case 305:
     6803
     6804/* Line 1806 of yacc.c  */
     6805#line 1242 "parser.yy"
     6806    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     6807    break;
     6808
     6809  case 306:
     6810
     6811/* Line 1806 of yacc.c  */
     6812#line 1247 "parser.yy"
     6813    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     6814    break;
     6815
     6816  case 307:
     6817
     6818/* Line 1806 of yacc.c  */
     6819#line 1249 "parser.yy"
     6820    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6821    break;
     6822
     6823  case 308:
     6824
     6825/* Line 1806 of yacc.c  */
     6826#line 1251 "parser.yy"
     6827    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6828    break;
     6829
     6830  case 309:
     6831
     6832/* Line 1806 of yacc.c  */
     6833#line 1253 "parser.yy"
     6834    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6835    break;
     6836
     6837  case 310:
     6838
     6839/* Line 1806 of yacc.c  */
     6840#line 1255 "parser.yy"
     6841    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     6842    break;
     6843
     6844  case 311:
     6845
     6846/* Line 1806 of yacc.c  */
     6847#line 1257 "parser.yy"
     6848    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     6849    break;
     6850
     6851  case 312:
     6852
     6853/* Line 1806 of yacc.c  */
     6854#line 1259 "parser.yy"
     6855    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     6856    break;
     6857
     6858  case 313:
     6859
     6860/* Line 1806 of yacc.c  */
     6861#line 1261 "parser.yy"
     6862    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     6863    break;
     6864
     6865  case 314:
     6866
     6867/* Line 1806 of yacc.c  */
     6868#line 1263 "parser.yy"
     6869    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6870    break;
     6871
     6872  case 315:
     6873
     6874/* Line 1806 of yacc.c  */
     6875#line 1265 "parser.yy"
     6876    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6877    break;
     6878
     6879  case 316:
     6880
     6881/* Line 1806 of yacc.c  */
     6882#line 1267 "parser.yy"
     6883    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     6884    break;
     6885
     6886  case 317:
     6887
     6888/* Line 1806 of yacc.c  */
     6889#line 1269 "parser.yy"
     6890    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     6891    break;
     6892
     6893  case 319:
     6894
     6895/* Line 1806 of yacc.c  */
     6896#line 1276 "parser.yy"
     6897    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6898    break;
     6899
     6900  case 320:
     6901
     6902/* Line 1806 of yacc.c  */
     6903#line 1278 "parser.yy"
     6904    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6905    break;
     6906
     6907  case 321:
     6908
     6909/* Line 1806 of yacc.c  */
     6910#line 1280 "parser.yy"
    67186911    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67196912    break;
    67206913
    6721   case 296:
    6722 
    6723 /* Line 1806 of yacc.c  */
    6724 #line 1232 "parser.yy"
     6914  case 322:
     6915
     6916/* Line 1806 of yacc.c  */
     6917#line 1282 "parser.yy"
     6918    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     6919    break;
     6920
     6921  case 324:
     6922
     6923/* Line 1806 of yacc.c  */
     6924#line 1288 "parser.yy"
     6925    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6926    break;
     6927
     6928  case 326:
     6929
     6930/* Line 1806 of yacc.c  */
     6931#line 1295 "parser.yy"
     6932    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6933    break;
     6934
     6935  case 327:
     6936
     6937/* Line 1806 of yacc.c  */
     6938#line 1297 "parser.yy"
    67256939    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67266940    break;
    67276941
    6728   case 298:
    6729 
    6730 /* Line 1806 of yacc.c  */
    6731 #line 1241 "parser.yy"
    6732     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    6733     break;
    6734 
    6735   case 299:
    6736 
    6737 /* Line 1806 of yacc.c  */
    6738 #line 1243 "parser.yy"
    6739     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    6740     break;
    6741 
    6742   case 300:
    6743 
    6744 /* Line 1806 of yacc.c  */
    6745 #line 1245 "parser.yy"
    6746     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    6747     break;
    6748 
    6749   case 301:
    6750 
    6751 /* Line 1806 of yacc.c  */
    6752 #line 1247 "parser.yy"
    6753     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    6754     break;
    6755 
    6756   case 302:
    6757 
    6758 /* Line 1806 of yacc.c  */
    6759 #line 1249 "parser.yy"
    6760     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    6761     break;
    6762 
    6763   case 303:
    6764 
    6765 /* Line 1806 of yacc.c  */
    6766 #line 1251 "parser.yy"
    6767     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    6768     break;
    6769 
    6770   case 304:
    6771 
    6772 /* Line 1806 of yacc.c  */
    6773 #line 1253 "parser.yy"
    6774     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    6775     break;
    6776 
    6777   case 305:
    6778 
    6779 /* Line 1806 of yacc.c  */
    6780 #line 1255 "parser.yy"
    6781     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    6782     break;
    6783 
    6784   case 306:
    6785 
    6786 /* Line 1806 of yacc.c  */
    6787 #line 1260 "parser.yy"
    6788     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    6789     break;
    6790 
    6791   case 307:
    6792 
    6793 /* Line 1806 of yacc.c  */
    6794 #line 1262 "parser.yy"
    6795     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    6796     break;
    6797 
    6798   case 308:
    6799 
    6800 /* Line 1806 of yacc.c  */
    6801 #line 1264 "parser.yy"
    6802     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6803     break;
    6804 
    6805   case 309:
    6806 
    6807 /* Line 1806 of yacc.c  */
    6808 #line 1266 "parser.yy"
    6809     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6810     break;
    6811 
    6812   case 310:
    6813 
    6814 /* Line 1806 of yacc.c  */
    6815 #line 1268 "parser.yy"
    6816     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    6817     break;
    6818 
    6819   case 311:
    6820 
    6821 /* Line 1806 of yacc.c  */
    6822 #line 1270 "parser.yy"
    6823     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    6824     break;
    6825 
    6826   case 312:
    6827 
    6828 /* Line 1806 of yacc.c  */
    6829 #line 1272 "parser.yy"
    6830     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    6831     break;
    6832 
    6833   case 313:
    6834 
    6835 /* Line 1806 of yacc.c  */
    6836 #line 1274 "parser.yy"
    6837     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    6838     break;
    6839 
    6840   case 314:
    6841 
    6842 /* Line 1806 of yacc.c  */
    6843 #line 1276 "parser.yy"
    6844     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    6845     break;
    6846 
    6847   case 315:
    6848 
    6849 /* Line 1806 of yacc.c  */
    6850 #line 1278 "parser.yy"
    6851     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    6852     break;
    6853 
    6854   case 316:
    6855 
    6856 /* Line 1806 of yacc.c  */
    6857 #line 1280 "parser.yy"
    6858     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    6859     break;
    6860 
    6861   case 317:
    6862 
    6863 /* Line 1806 of yacc.c  */
    6864 #line 1282 "parser.yy"
    6865     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    6866     break;
    6867 
    6868   case 319:
    6869 
    6870 /* Line 1806 of yacc.c  */
    6871 #line 1289 "parser.yy"
     6942  case 328:
     6943
     6944/* Line 1806 of yacc.c  */
     6945#line 1299 "parser.yy"
     6946    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     6947    break;
     6948
     6949  case 329:
     6950
     6951/* Line 1806 of yacc.c  */
     6952#line 1304 "parser.yy"
     6953    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     6954    break;
     6955
     6956  case 330:
     6957
     6958/* Line 1806 of yacc.c  */
     6959#line 1306 "parser.yy"
     6960    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     6961    break;
     6962
     6963  case 331:
     6964
     6965/* Line 1806 of yacc.c  */
     6966#line 1308 "parser.yy"
     6967    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     6968    break;
     6969
     6970  case 332:
     6971
     6972/* Line 1806 of yacc.c  */
     6973#line 1310 "parser.yy"
     6974    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6975    break;
     6976
     6977  case 334:
     6978
     6979/* Line 1806 of yacc.c  */
     6980#line 1316 "parser.yy"
    68726981    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68736982    break;
    68746983
    6875   case 320:
    6876 
    6877 /* Line 1806 of yacc.c  */
    6878 #line 1291 "parser.yy"
     6984  case 335:
     6985
     6986/* Line 1806 of yacc.c  */
     6987#line 1318 "parser.yy"
    68796988    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68806989    break;
    68816990
    6882   case 321:
    6883 
    6884 /* Line 1806 of yacc.c  */
    6885 #line 1293 "parser.yy"
     6991  case 336:
     6992
     6993/* Line 1806 of yacc.c  */
     6994#line 1320 "parser.yy"
    68866995    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68876996    break;
    68886997
    6889   case 322:
    6890 
    6891 /* Line 1806 of yacc.c  */
    6892 #line 1295 "parser.yy"
    6893     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    6894     break;
    6895 
    6896   case 324:
    6897 
    6898 /* Line 1806 of yacc.c  */
    6899 #line 1301 "parser.yy"
    6900     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6901     break;
    6902 
    6903   case 326:
    6904 
    6905 /* Line 1806 of yacc.c  */
    6906 #line 1308 "parser.yy"
     6998  case 338:
     6999
     7000/* Line 1806 of yacc.c  */
     7001#line 1326 "parser.yy"
    69077002    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69087003    break;
    69097004
    6910   case 327:
    6911 
    6912 /* Line 1806 of yacc.c  */
    6913 #line 1310 "parser.yy"
     7005  case 339:
     7006
     7007/* Line 1806 of yacc.c  */
     7008#line 1328 "parser.yy"
    69147009    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69157010    break;
    69167011
    6917   case 328:
    6918 
    6919 /* Line 1806 of yacc.c  */
    6920 #line 1312 "parser.yy"
    6921     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    6922     break;
    6923 
    6924   case 329:
    6925 
    6926 /* Line 1806 of yacc.c  */
    6927 #line 1317 "parser.yy"
    6928     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    6929     break;
    6930 
    6931   case 330:
    6932 
    6933 /* Line 1806 of yacc.c  */
    6934 #line 1319 "parser.yy"
    6935     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    6936     break;
    6937 
    6938   case 331:
    6939 
    6940 /* Line 1806 of yacc.c  */
    6941 #line 1321 "parser.yy"
    6942     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    6943     break;
    6944 
    6945   case 332:
    6946 
    6947 /* Line 1806 of yacc.c  */
    6948 #line 1323 "parser.yy"
    6949     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    6950     break;
    6951 
    6952   case 334:
    6953 
    6954 /* Line 1806 of yacc.c  */
    6955 #line 1329 "parser.yy"
     7012  case 341:
     7013
     7014/* Line 1806 of yacc.c  */
     7015#line 1334 "parser.yy"
    69567016    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69577017    break;
    69587018
    6959   case 335:
    6960 
    6961 /* Line 1806 of yacc.c  */
    6962 #line 1331 "parser.yy"
     7019  case 342:
     7020
     7021/* Line 1806 of yacc.c  */
     7022#line 1336 "parser.yy"
    69637023    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69647024    break;
    69657025
    6966   case 336:
    6967 
    6968 /* Line 1806 of yacc.c  */
    6969 #line 1333 "parser.yy"
     7026  case 343:
     7027
     7028/* Line 1806 of yacc.c  */
     7029#line 1338 "parser.yy"
    69707030    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69717031    break;
    69727032
    6973   case 338:
    6974 
    6975 /* Line 1806 of yacc.c  */
    6976 #line 1339 "parser.yy"
     7033  case 344:
     7034
     7035/* Line 1806 of yacc.c  */
     7036#line 1343 "parser.yy"
     7037    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     7038    break;
     7039
     7040  case 345:
     7041
     7042/* Line 1806 of yacc.c  */
     7043#line 1345 "parser.yy"
     7044    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7045    break;
     7046
     7047  case 346:
     7048
     7049/* Line 1806 of yacc.c  */
     7050#line 1347 "parser.yy"
     7051    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7052    break;
     7053
     7054  case 349:
     7055
     7056/* Line 1806 of yacc.c  */
     7057#line 1357 "parser.yy"
     7058    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, 0, (yyvsp[(3) - (4)].decl) ); }
     7059    break;
     7060
     7061  case 350:
     7062
     7063/* Line 1806 of yacc.c  */
     7064#line 1359 "parser.yy"
     7065    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, 0 ); }
     7066    break;
     7067
     7068  case 351:
     7069
     7070/* Line 1806 of yacc.c  */
     7071#line 1361 "parser.yy"
     7072    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, 0, (yyvsp[(4) - (5)].decl) ); }
     7073    break;
     7074
     7075  case 352:
     7076
     7077/* Line 1806 of yacc.c  */
     7078#line 1363 "parser.yy"
     7079    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (9)].aggKey), 0, (yyvsp[(4) - (9)].decl), 0, (yyvsp[(8) - (9)].decl) ); }
     7080    break;
     7081
     7082  case 353:
     7083
     7084/* Line 1806 of yacc.c  */
     7085#line 1365 "parser.yy"
     7086    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), (yyvsp[(4) - (7)].decl), 0, 0 ); }
     7087    break;
     7088
     7089  case 354:
     7090
     7091/* Line 1806 of yacc.c  */
     7092#line 1367 "parser.yy"
     7093    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (10)].aggKey), (yyvsp[(7) - (10)].tok), (yyvsp[(4) - (10)].decl), 0, (yyvsp[(9) - (10)].decl) ); }
     7094    break;
     7095
     7096  case 355:
     7097
     7098/* Line 1806 of yacc.c  */
     7099#line 1369 "parser.yy"
     7100    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (12)].aggKey), 0, (yyvsp[(4) - (12)].decl), (yyvsp[(8) - (12)].en), (yyvsp[(11) - (12)].decl) ); }
     7101    break;
     7102
     7103  case 356:
     7104
     7105/* Line 1806 of yacc.c  */
     7106#line 1371 "parser.yy"
     7107    {}
     7108    break;
     7109
     7110  case 357:
     7111
     7112/* 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 ); }
     7115    break;
     7116
     7117  case 358:
     7118
     7119/* 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) ); }
     7122    break;
     7123
     7124  case 359:
     7125
     7126/* Line 1806 of yacc.c  */
     7127#line 1381 "parser.yy"
     7128    { (yyval.aggKey) = DeclarationNode::Struct; }
     7129    break;
     7130
     7131  case 360:
     7132
     7133/* Line 1806 of yacc.c  */
     7134#line 1383 "parser.yy"
     7135    { (yyval.aggKey) = DeclarationNode::Union; }
     7136    break;
     7137
     7138  case 361:
     7139
     7140/* 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"
     7149    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
     7150    break;
     7151
     7152  case 364:
     7153
     7154/* Line 1806 of yacc.c  */
     7155#line 1396 "parser.yy"
     7156    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7157    break;
     7158
     7159  case 366:
     7160
     7161/* Line 1806 of yacc.c  */
     7162#line 1399 "parser.yy"
     7163    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7164    break;
     7165
     7166  case 368:
     7167
     7168/* Line 1806 of yacc.c  */
     7169#line 1405 "parser.yy"
     7170    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     7171    break;
     7172
     7173  case 369:
     7174
     7175/* 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) ) ); }
     7178    break;
     7179
     7180  case 370:
     7181
     7182/* Line 1806 of yacc.c  */
     7183#line 1409 "parser.yy"
     7184    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     7185    break;
     7186
     7187  case 371:
     7188
     7189/* Line 1806 of yacc.c  */
     7190#line 1414 "parser.yy"
     7191    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7192    break;
     7193
     7194  case 372:
     7195
     7196/* 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) ) ); }
     7199    break;
     7200
     7201  case 373:
     7202
     7203/* Line 1806 of yacc.c  */
     7204#line 1421 "parser.yy"
     7205    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     7206    break;
     7207
     7208  case 374:
     7209
     7210/* Line 1806 of yacc.c  */
     7211#line 1423 "parser.yy"
     7212    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     7213    break;
     7214
     7215  case 375:
     7216
     7217/* Line 1806 of yacc.c  */
     7218#line 1426 "parser.yy"
     7219    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7220    break;
     7221
     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) ); }
     7227    break;
     7228
     7229  case 378:
     7230
     7231/* Line 1806 of yacc.c  */
     7232#line 1435 "parser.yy"
     7233    { (yyval.en) = 0; }
     7234    break;
     7235
     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"
     7247    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     7248    break;
     7249
     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
     7292  case 388:
     7293
     7294/* 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"
     7303    { (yyval.decl) = 0; }
     7304    break;
     7305
     7306  case 393:
     7307
     7308/* Line 1806 of yacc.c  */
     7309#line 1484 "parser.yy"
     7310    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7311    break;
     7312
     7313  case 394:
     7314
     7315/* Line 1806 of yacc.c  */
     7316#line 1486 "parser.yy"
     7317    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7318    break;
     7319
     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"
     7331    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7332    break;
     7333
     7334  case 398:
     7335
     7336/* Line 1806 of yacc.c  */
     7337#line 1498 "parser.yy"
     7338    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7339    break;
     7340
     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) ); }
     7381    break;
     7382
     7383  case 411:
     7384
     7385/* Line 1806 of yacc.c  */
     7386#line 1536 "parser.yy"
     7387    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     7388    break;
     7389
     7390  case 412:
     7391
     7392/* 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"
     7401    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     7402    break;
     7403
     7404  case 418:
     7405
     7406/* Line 1806 of yacc.c  */
     7407#line 1551 "parser.yy"
    69777408    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69787409    break;
    69797410
    6980   case 339:
    6981 
    6982 /* Line 1806 of yacc.c  */
    6983 #line 1341 "parser.yy"
    6984     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6985     break;
    6986 
    6987   case 341:
    6988 
    6989 /* Line 1806 of yacc.c  */
    6990 #line 1347 "parser.yy"
    6991     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6992     break;
    6993 
    6994   case 342:
    6995 
    6996 /* Line 1806 of yacc.c  */
    6997 #line 1349 "parser.yy"
    6998     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6999     break;
    7000 
    7001   case 343:
    7002 
    7003 /* Line 1806 of yacc.c  */
    7004 #line 1351 "parser.yy"
    7005     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7006     break;
    7007 
    7008   case 344:
    7009 
    7010 /* Line 1806 of yacc.c  */
    7011 #line 1356 "parser.yy"
    7012     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    7013     break;
    7014 
    7015   case 345:
    7016 
    7017 /* Line 1806 of yacc.c  */
    7018 #line 1358 "parser.yy"
    7019     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7020     break;
    7021 
    7022   case 346:
    7023 
    7024 /* Line 1806 of yacc.c  */
    7025 #line 1360 "parser.yy"
    7026     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7027     break;
    7028 
    7029   case 349:
    7030 
    7031 /* Line 1806 of yacc.c  */
    7032 #line 1370 "parser.yy"
    7033     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, 0, (yyvsp[(3) - (4)].decl) ); }
    7034     break;
    7035 
    7036   case 350:
    7037 
    7038 /* Line 1806 of yacc.c  */
    7039 #line 1372 "parser.yy"
    7040     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, 0 ); }
    7041     break;
    7042 
    7043   case 351:
    7044 
    7045 /* Line 1806 of yacc.c  */
    7046 #line 1374 "parser.yy"
    7047     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, 0, (yyvsp[(4) - (5)].decl) ); }
    7048     break;
    7049 
    7050   case 352:
    7051 
    7052 /* Line 1806 of yacc.c  */
    7053 #line 1376 "parser.yy"
    7054     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (9)].aggKey), 0, (yyvsp[(4) - (9)].decl), 0, (yyvsp[(8) - (9)].decl) ); }
    7055     break;
    7056 
    7057   case 353:
    7058 
    7059 /* Line 1806 of yacc.c  */
    7060 #line 1378 "parser.yy"
    7061     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), (yyvsp[(4) - (7)].decl), 0, 0 ); }
    7062     break;
    7063 
    7064   case 354:
    7065 
    7066 /* Line 1806 of yacc.c  */
    7067 #line 1380 "parser.yy"
    7068     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (10)].aggKey), (yyvsp[(7) - (10)].tok), (yyvsp[(4) - (10)].decl), 0, (yyvsp[(9) - (10)].decl) ); }
    7069     break;
    7070 
    7071   case 355:
    7072 
    7073 /* Line 1806 of yacc.c  */
    7074 #line 1382 "parser.yy"
    7075     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (12)].aggKey), 0, (yyvsp[(4) - (12)].decl), (yyvsp[(8) - (12)].en), (yyvsp[(11) - (12)].decl) ); }
    7076     break;
    7077 
    7078   case 356:
    7079 
    7080 /* Line 1806 of yacc.c  */
    7081 #line 1385 "parser.yy"
    7082     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), 0, (yyvsp[(4) - (7)].en), 0 ); }
    7083     break;
    7084 
    7085   case 357:
    7086 
    7087 /* Line 1806 of yacc.c  */
    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) ); }
    7090     break;
    7091 
    7092   case 358:
    7093 
    7094 /* Line 1806 of yacc.c  */
    7095 #line 1392 "parser.yy"
    7096     { (yyval.aggKey) = DeclarationNode::Struct; }
    7097     break;
    7098 
    7099   case 359:
    7100 
    7101 /* Line 1806 of yacc.c  */
    7102 #line 1394 "parser.yy"
    7103     { (yyval.aggKey) = DeclarationNode::Union; }
    7104     break;
    7105 
    7106   case 360:
    7107 
    7108 /* Line 1806 of yacc.c  */
    7109 #line 1399 "parser.yy"
    7110     { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    7111     break;
    7112 
    7113   case 361:
    7114 
    7115 /* Line 1806 of yacc.c  */
    7116 #line 1401 "parser.yy"
    7117     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    7118     break;
    7119 
    7120   case 363:
    7121 
    7122 /* Line 1806 of yacc.c  */
    7123 #line 1407 "parser.yy"
    7124     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    7125     break;
    7126 
    7127   case 365:
    7128 
    7129 /* Line 1806 of yacc.c  */
    7130 #line 1410 "parser.yy"
    7131     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    7132     break;
    7133 
    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 
    7141   case 368:
    7142 
    7143 /* Line 1806 of yacc.c  */
    7144 #line 1418 "parser.yy"
    7145     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    7146     break;
    7147 
    7148   case 369:
    7149 
    7150 /* Line 1806 of yacc.c  */
    7151 #line 1420 "parser.yy"
    7152     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    7153     break;
    7154 
    7155   case 370:
    7156 
    7157 /* Line 1806 of yacc.c  */
    7158 #line 1425 "parser.yy"
    7159     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7160     break;
    7161 
    7162   case 371:
    7163 
    7164 /* Line 1806 of yacc.c  */
    7165 #line 1427 "parser.yy"
    7166     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    7167     break;
    7168 
    7169   case 372:
    7170 
    7171 /* Line 1806 of yacc.c  */
    7172 #line 1432 "parser.yy"
    7173     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    7174     break;
    7175 
    7176   case 373:
    7177 
    7178 /* Line 1806 of yacc.c  */
    7179 #line 1434 "parser.yy"
    7180     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    7181     break;
    7182 
    7183   case 374:
    7184 
    7185 /* Line 1806 of yacc.c  */
    7186 #line 1437 "parser.yy"
    7187     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7188     break;
    7189 
    7190   case 375:
    7191 
    7192 /* Line 1806 of yacc.c  */
    7193 #line 1440 "parser.yy"
    7194     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7195     break;
    7196 
    7197   case 377:
    7198 
    7199 /* Line 1806 of yacc.c  */
    7200 #line 1446 "parser.yy"
    7201     { (yyval.en) = 0; }
    7202     break;
    7203 
    7204   case 378:
    7205 
    7206 /* Line 1806 of yacc.c  */
    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"
    7257     { (yyval.en) = 0; }
    7258     break;
    7259 
    7260   case 387:
    7261 
    7262 /* Line 1806 of yacc.c  */
    7263 #line 1480 "parser.yy"
    7264     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7265     break;
    7266 
    7267   case 388:
    7268 
    7269 /* Line 1806 of yacc.c  */
    7270 #line 1487 "parser.yy"
    7271     { (yyval.decl) = 0; }
    7272     break;
    7273 
    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 
    7281   case 393:
    7282 
    7283 /* Line 1806 of yacc.c  */
    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"
    7299     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7300     break;
    7301 
    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"
    7334     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7335     break;
    7336 
    7337   case 407:
    7338 
    7339 /* Line 1806 of yacc.c  */
    7340 #line 1537 "parser.yy"
    7341     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7342     break;
    7343 
    7344   case 408:
    7345 
    7346 /* Line 1806 of yacc.c  */
    7347 #line 1539 "parser.yy"
    7348     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7349     break;
    7350 
    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) ); }
    7356     break;
    7357 
    7358   case 411:
    7359 
    7360 /* Line 1806 of yacc.c  */
    7361 #line 1552 "parser.yy"
    7362     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7363     break;
    7364 
    7365   case 412:
    7366 
    7367 /* Line 1806 of yacc.c  */
    7368 #line 1554 "parser.yy"
    7369     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    7370     break;
    7371 
    7372   case 417:
    7373 
    7374 /* Line 1806 of yacc.c  */
    7375 #line 1564 "parser.yy"
    7376     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7377     break;
    7378 
    7379   case 419:
    7380 
    7381 /* Line 1806 of yacc.c  */
    7382 #line 1570 "parser.yy"
     7411  case 420:
     7412
     7413/* Line 1806 of yacc.c  */
     7414#line 1557 "parser.yy"
    73837415    {
    73847416                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    7385                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode((yyvsp[(3) - (3)].en)) );
     7417                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
    73867418                }
    73877419    break;
    73887420
    7389   case 420:
    7390 
    7391 /* Line 1806 of yacc.c  */
    7392 #line 1575 "parser.yy"
     7421  case 421:
     7422
     7423/* Line 1806 of yacc.c  */
     7424#line 1562 "parser.yy"
    73937425    {
    73947426                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    7395                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode((yyvsp[(3) - (3)].en)) );
     7427                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
    73967428                }
    73977429    break;
    73987430
    7399   case 422:
    7400 
    7401 /* Line 1806 of yacc.c  */
    7402 #line 1584 "parser.yy"
     7431  case 423:
     7432
     7433/* Line 1806 of yacc.c  */
     7434#line 1571 "parser.yy"
    74037435    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    74047436    break;
    74057437
    7406   case 423:
    7407 
    7408 /* Line 1806 of yacc.c  */
    7409 #line 1593 "parser.yy"
     7438  case 424:
     7439
     7440/* Line 1806 of yacc.c  */
     7441#line 1580 "parser.yy"
    74107442    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    74117443    break;
    74127444
    7413   case 424:
    7414 
    7415 /* Line 1806 of yacc.c  */
    7416 #line 1595 "parser.yy"
     7445  case 425:
     7446
     7447/* Line 1806 of yacc.c  */
     7448#line 1582 "parser.yy"
    74177449    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    74187450    break;
     
    74217453
    74227454/* Line 1806 of yacc.c  */
     7455#line 1607 "parser.yy"
     7456    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7457    break;
     7458
     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
     7466  case 441:
     7467
     7468/* Line 1806 of yacc.c  */
    74237469#line 1620 "parser.yy"
    7424     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7425     break;
    7426 
    7427   case 440:
    7428 
    7429 /* Line 1806 of yacc.c  */
    7430 #line 1628 "parser.yy"
    7431     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7432     break;
    7433 
    7434   case 441:
    7435 
    7436 /* Line 1806 of yacc.c  */
    7437 #line 1633 "parser.yy"
    74387470    { (yyval.in) = 0; }
    74397471    break;
     
    74427474
    74437475/* Line 1806 of yacc.c  */
     7476#line 1621 "parser.yy"
     7477    { (yyval.in) = (yyvsp[(2) - (2)].in); }
     7478    break;
     7479
     7480  case 443:
     7481
     7482/* Line 1806 of yacc.c  */
     7483#line 1625 "parser.yy"
     7484    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7485    break;
     7486
     7487  case 444:
     7488
     7489/* Line 1806 of yacc.c  */
     7490#line 1626 "parser.yy"
     7491    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7492    break;
     7493
     7494  case 446:
     7495
     7496/* Line 1806 of yacc.c  */
     7497#line 1631 "parser.yy"
     7498    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7499    break;
     7500
     7501  case 447:
     7502
     7503/* Line 1806 of yacc.c  */
     7504#line 1632 "parser.yy"
     7505    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
     7506    break;
     7507
     7508  case 448:
     7509
     7510/* Line 1806 of yacc.c  */
    74447511#line 1634 "parser.yy"
    7445     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7446     break;
    7447 
    7448   case 443:
    7449 
    7450 /* Line 1806 of yacc.c  */
    7451 #line 1638 "parser.yy"
    7452     { (yyval.in) = new InitializerNode((yyvsp[(1) - (1)].en)); }
    7453     break;
    7454 
    7455   case 444:
    7456 
    7457 /* Line 1806 of yacc.c  */
    7458 #line 1639 "parser.yy"
    7459     { (yyval.in) = new InitializerNode((yyvsp[(2) - (4)].in), true); }
    7460     break;
    7461 
    7462   case 446:
    7463 
    7464 /* Line 1806 of yacc.c  */
    7465 #line 1644 "parser.yy"
    7466     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    7467     break;
    7468 
    7469   case 447:
    7470 
    7471 /* Line 1806 of yacc.c  */
    7472 #line 1645 "parser.yy"
    7473     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link((yyvsp[(3) - (3)].in)) ); }
    7474     break;
    7475 
    7476   case 448:
    7477 
    7478 /* Line 1806 of yacc.c  */
    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)) ) ); }
     7512    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74817513    break;
    74827514
     
    74847516
    74857517/* Line 1806 of yacc.c  */
    7486 #line 1663 "parser.yy"
     7518#line 1650 "parser.yy"
    74877519    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    74887520    break;
     
    74917523
    74927524/* Line 1806 of yacc.c  */
     7525#line 1655 "parser.yy"
     7526    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     7527    break;
     7528
     7529  case 453:
     7530
     7531/* Line 1806 of yacc.c  */
     7532#line 1661 "parser.yy"
     7533    { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); }
     7534    break;
     7535
     7536  case 454:
     7537
     7538/* Line 1806 of yacc.c  */
     7539#line 1664 "parser.yy"
     7540    { (yyval.en) = (yyvsp[(3) - (5)].en); }
     7541    break;
     7542
     7543  case 455:
     7544
     7545/* Line 1806 of yacc.c  */
     7546#line 1666 "parser.yy"
     7547    { (yyval.en) = (yyvsp[(3) - (5)].en); }
     7548    break;
     7549
     7550  case 456:
     7551
     7552/* Line 1806 of yacc.c  */
    74937553#line 1668 "parser.yy"
    7494     { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    7495     break;
    7496 
    7497   case 453:
    7498 
    7499 /* Line 1806 of yacc.c  */
    7500 #line 1673 "parser.yy"
    7501     { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); }
    7502     break;
    7503 
    7504   case 454:
    7505 
    7506 /* Line 1806 of yacc.c  */
    7507 #line 1677 "parser.yy"
    7508     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7509     break;
    7510 
    7511   case 455:
    7512 
    7513 /* Line 1806 of yacc.c  */
    7514 #line 1679 "parser.yy"
    7515     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7516     break;
    7517 
    7518   case 456:
    7519 
    7520 /* Line 1806 of yacc.c  */
    7521 #line 1681 "parser.yy"
    7522     { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Range), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en)); }
     7554    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ); }
    75237555    break;
    75247556
     
    75267558
    75277559/* Line 1806 of yacc.c  */
    7528 #line 1683 "parser.yy"
     7560#line 1670 "parser.yy"
    75297561    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    75307562    break;
     
    75337565
    75347566/* Line 1806 of yacc.c  */
    7535 #line 1708 "parser.yy"
     7567#line 1694 "parser.yy"
    75367568    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75377569    break;
     
    75407572
    75417573/* Line 1806 of yacc.c  */
    7542 #line 1710 "parser.yy"
     7574#line 1696 "parser.yy"
    75437575    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75447576    break;
     
    75477579
    75487580/* Line 1806 of yacc.c  */
    7549 #line 1712 "parser.yy"
     7581#line 1698 "parser.yy"
    75507582    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    75517583    break;
     
    75547586
    75557587/* Line 1806 of yacc.c  */
    7556 #line 1717 "parser.yy"
     7588#line 1703 "parser.yy"
    75577589    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75587590    break;
     
    75617593
    75627594/* Line 1806 of yacc.c  */
    7563 #line 1719 "parser.yy"
     7595#line 1705 "parser.yy"
    75647596    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) )->addQualifiers( (yyvsp[(1) - (5)].decl) ); }
    75657597    break;
     
    75687600
    75697601/* Line 1806 of yacc.c  */
    7570 #line 1721 "parser.yy"
     7602#line 1707 "parser.yy"
    75717603    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75727604    break;
     
    75757607
    75767608/* Line 1806 of yacc.c  */
    7577 #line 1727 "parser.yy"
     7609#line 1713 "parser.yy"
    75787610    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    75797611    break;
     
    75827614
    75837615/* Line 1806 of yacc.c  */
    7584 #line 1732 "parser.yy"
    7585     { typedefTable.addToEnclosingScope(*((yyvsp[(2) - (2)].tok)), TypedefTable::TD); }
     7616#line 1718 "parser.yy"
     7617    { typedefTable.addToEnclosingScope(*( (yyvsp[(2) - (2)].tok) ), TypedefTable::TD ); }
    75867618    break;
    75877619
     
    75897621
    75907622/* Line 1806 of yacc.c  */
    7591 #line 1734 "parser.yy"
     7623#line 1720 "parser.yy"
    75927624    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75937625    break;
     
    75967628
    75977629/* Line 1806 of yacc.c  */
    7598 #line 1740 "parser.yy"
     7630#line 1726 "parser.yy"
    75997631    { (yyval.tclass) = DeclarationNode::Type; }
    76007632    break;
     
    76037635
    76047636/* Line 1806 of yacc.c  */
     7637#line 1728 "parser.yy"
     7638    { (yyval.tclass) = DeclarationNode::Ftype; }
     7639    break;
     7640
     7641  case 472:
     7642
     7643/* Line 1806 of yacc.c  */
     7644#line 1730 "parser.yy"
     7645    { (yyval.tclass) = DeclarationNode::Dtype; }
     7646    break;
     7647
     7648  case 473:
     7649
     7650/* Line 1806 of yacc.c  */
     7651#line 1735 "parser.yy"
     7652    { (yyval.decl) = 0; }
     7653    break;
     7654
     7655  case 474:
     7656
     7657/* Line 1806 of yacc.c  */
     7658#line 1737 "parser.yy"
     7659    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
     7660    break;
     7661
     7662  case 475:
     7663
     7664/* Line 1806 of yacc.c  */
    76057665#line 1742 "parser.yy"
    7606     { (yyval.tclass) = DeclarationNode::Ftype; }
    7607     break;
    7608 
    7609   case 472:
    7610 
    7611 /* Line 1806 of yacc.c  */
    7612 #line 1744 "parser.yy"
    7613     { (yyval.tclass) = DeclarationNode::Dtype; }
    7614     break;
    7615 
    7616   case 473:
     7666    {
     7667                        typedefTable.openContext( *( (yyvsp[(2) - (5)].tok) ) );
     7668                        (yyval.decl) = DeclarationNode::newContextUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
     7669                }
     7670    break;
     7671
     7672  case 476:
     7673
     7674/* Line 1806 of yacc.c  */
     7675#line 1747 "parser.yy"
     7676    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7677    break;
     7678
     7679  case 477:
    76177680
    76187681/* Line 1806 of yacc.c  */
     
    76217684    break;
    76227685
    7623   case 474:
    7624 
    7625 /* Line 1806 of yacc.c  */
    7626 #line 1751 "parser.yy"
    7627     { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    7628     break;
    7629 
    7630   case 475:
    7631 
    7632 /* Line 1806 of yacc.c  */
    7633 #line 1756 "parser.yy"
     7686  case 478:
     7687
     7688/* Line 1806 of yacc.c  */
     7689#line 1754 "parser.yy"
     7690    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
     7691    break;
     7692
     7693  case 480:
     7694
     7695/* 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) ))); }
     7698    break;
     7699
     7700  case 481:
     7701
     7702/* Line 1806 of yacc.c  */
     7703#line 1759 "parser.yy"
     7704    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     7705    break;
     7706
     7707  case 482:
     7708
     7709/* Line 1806 of yacc.c  */
     7710#line 1764 "parser.yy"
     7711    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7712    break;
     7713
     7714  case 483:
     7715
     7716/* Line 1806 of yacc.c  */
     7717#line 1766 "parser.yy"
     7718    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     7719    break;
     7720
     7721  case 484:
     7722
     7723/* Line 1806 of yacc.c  */
     7724#line 1768 "parser.yy"
     7725    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     7726    break;
     7727
     7728  case 485:
     7729
     7730/* Line 1806 of yacc.c  */
     7731#line 1773 "parser.yy"
     7732    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     7733    break;
     7734
     7735  case 486:
     7736
     7737/* Line 1806 of yacc.c  */
     7738#line 1775 "parser.yy"
     7739    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     7740    break;
     7741
     7742  case 487:
     7743
     7744/* Line 1806 of yacc.c  */
     7745#line 1780 "parser.yy"
    76347746    {
    7635                         typedefTable.openContext( *((yyvsp[(2) - (5)].tok)) );
    7636                         (yyval.decl) = DeclarationNode::newContextUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
    7637                 }
    7638     break;
    7639 
    7640   case 476:
    7641 
    7642 /* Line 1806 of yacc.c  */
    7643 #line 1761 "parser.yy"
    7644     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    7645     break;
    7646 
    7647   case 477:
    7648 
    7649 /* Line 1806 of yacc.c  */
    7650 #line 1763 "parser.yy"
    7651     { (yyval.decl) = 0; }
    7652     break;
    7653 
    7654   case 478:
    7655 
    7656 /* Line 1806 of yacc.c  */
    7657 #line 1768 "parser.yy"
    7658     { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    7659     break;
    7660 
    7661   case 480:
    7662 
    7663 /* Line 1806 of yacc.c  */
    7664 #line 1771 "parser.yy"
    7665     { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (3)].en)->set_link(new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    7666     break;
    7667 
    7668   case 481:
    7669 
    7670 /* Line 1806 of yacc.c  */
    7671 #line 1773 "parser.yy"
    7672     { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (3)].en)->set_link((yyvsp[(3) - (3)].en))); }
    7673     break;
    7674 
    7675   case 482:
    7676 
    7677 /* Line 1806 of yacc.c  */
    7678 #line 1778 "parser.yy"
    7679     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    7680     break;
    7681 
    7682   case 483:
    7683 
    7684 /* Line 1806 of yacc.c  */
    7685 #line 1780 "parser.yy"
    7686     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    7687     break;
    7688 
    7689   case 484:
    7690 
    7691 /* Line 1806 of yacc.c  */
    7692 #line 1782 "parser.yy"
    7693     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    7694     break;
    7695 
    7696   case 485:
    7697 
    7698 /* Line 1806 of yacc.c  */
    7699 #line 1787 "parser.yy"
    7700     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    7701     break;
    7702 
    7703   case 486:
    7704 
    7705 /* Line 1806 of yacc.c  */
    7706 #line 1789 "parser.yy"
    7707     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7708     break;
    7709 
    7710   case 487:
    7711 
    7712 /* Line 1806 of yacc.c  */
    7713 #line 1794 "parser.yy"
    7714     {
    7715                         typedefTable.addToEnclosingScope(*((yyvsp[(1) - (1)].tok)), TypedefTable::TD);
     7747                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
    77167748                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (1)].tok), 0 );
    77177749                }
     
    77217753
    77227754/* Line 1806 of yacc.c  */
    7723 #line 1799 "parser.yy"
     7755#line 1785 "parser.yy"
    77247756    {
    7725                         typedefTable.addToEnclosingScope(*((yyvsp[(1) - (6)].tok)), TypedefTable::TG);
     7757                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
    77267758                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (6)].tok), (yyvsp[(4) - (6)].decl) );
    77277759                }
     
    77317763
    77327764/* Line 1806 of yacc.c  */
    7733 #line 1807 "parser.yy"
     7765#line 1793 "parser.yy"
    77347766    {
    7735                         typedefTable.addToEnclosingScope(*((yyvsp[(2) - (9)].tok)), TypedefTable::ID );
     7767                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
    77367768                        (yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
    77377769                }
     
    77417773
    77427774/* Line 1806 of yacc.c  */
    7743 #line 1812 "parser.yy"
     7775#line 1798 "parser.yy"
    77447776    {
    7745                         typedefTable.enterContext( *((yyvsp[(2) - (8)].tok)) );
     7777                        typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
    77467778                        typedefTable.enterScope();
    77477779                }
     
    77517783
    77527784/* Line 1806 of yacc.c  */
    7753 #line 1817 "parser.yy"
     7785#line 1803 "parser.yy"
    77547786    {
    77557787                        typedefTable.leaveContext();
    7756                         typedefTable.addToEnclosingScope(*((yyvsp[(2) - (11)].tok)), TypedefTable::ID );
     7788                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
    77577789                        (yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
    77587790                }
     
    77627794
    77637795/* Line 1806 of yacc.c  */
    7764 #line 1827 "parser.yy"
     7796#line 1813 "parser.yy"
    77657797    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77667798    break;
     
    77697801
    77707802/* Line 1806 of yacc.c  */
    7771 #line 1837 "parser.yy"
     7803#line 1823 "parser.yy"
    77727804    {
    77737805                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77797811
    77807812/* Line 1806 of yacc.c  */
    7781 #line 1842 "parser.yy"
     7813#line 1828 "parser.yy"
    77827814    {
    77837815                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77897821
    77907822/* Line 1806 of yacc.c  */
    7791 #line 1847 "parser.yy"
     7823#line 1833 "parser.yy"
    77927824    {
    7793                         typedefTable.addToEnclosingScope2( *((yyvsp[(5) - (5)].tok)), TypedefTable::ID );
     7825                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
    77947826                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
    77957827                }
     
    77997831
    78007832/* Line 1806 of yacc.c  */
    7801 #line 1855 "parser.yy"
     7833#line 1841 "parser.yy"
    78027834    {
    78037835                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78097841
    78107842/* Line 1806 of yacc.c  */
    7811 #line 1860 "parser.yy"
     7843#line 1846 "parser.yy"
    78127844    {
    78137845                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78197851
    78207852/* Line 1806 of yacc.c  */
    7821 #line 1870 "parser.yy"
     7853#line 1856 "parser.yy"
    78227854    {}
    78237855    break;
     
    78267858
    78277859/* Line 1806 of yacc.c  */
    7828 #line 1872 "parser.yy"
     7860#line 1858 "parser.yy"
    78297861    {
    78307862                        if ( theTree ) {
     
    78397871
    78407872/* Line 1806 of yacc.c  */
    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); }
     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); }
    78437875    break;
    78447876
     
    78467878
    78477879/* Line 1806 of yacc.c  */
    7848 #line 1889 "parser.yy"
     7880#line 1875 "parser.yy"
    78497881    { (yyval.decl) = 0; }
    78507882    break;
     
    78537885
    78547886/* Line 1806 of yacc.c  */
    7855 #line 1897 "parser.yy"
     7887#line 1883 "parser.yy"
    78567888    {}
    78577889    break;
     
    78607892
    78617893/* Line 1806 of yacc.c  */
    7862 #line 1899 "parser.yy"
     7894#line 1885 "parser.yy"
    78637895    {
    78647896                        linkageStack.push( linkage );
     
    78707902
    78717903/* Line 1806 of yacc.c  */
    7872 #line 1904 "parser.yy"
     7904#line 1890 "parser.yy"
    78737905    {
    78747906                        linkage = linkageStack.top();
     
    78817913
    78827914/* Line 1806 of yacc.c  */
    7883 #line 1910 "parser.yy"
     7915#line 1896 "parser.yy"
    78847916    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    78857917    break;
    78867918
    78877919  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:
    78887942
    78897943/* Line 1806 of yacc.c  */
     
    78967950    break;
    78977951
    7898   case 515:
     7952  case 517:
    78997953
    79007954/* Line 1806 of yacc.c  */
    79017955#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 
    7920   case 517:
    7921 
    7922 /* Line 1806 of yacc.c  */
    7923 #line 1943 "parser.yy"
    79247956    {
    79257957                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79327964
    79337965/* Line 1806 of yacc.c  */
    7934 #line 1949 "parser.yy"
     7966#line 1934 "parser.yy"
    79357967    {
    79367968                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79437975
    79447976/* Line 1806 of yacc.c  */
    7945 #line 1955 "parser.yy"
     7977#line 1940 "parser.yy"
    79467978    {
    79477979                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79547986
    79557987/* Line 1806 of yacc.c  */
    7956 #line 1961 "parser.yy"
     7988#line 1946 "parser.yy"
    79577989    {
    79587990                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79657997
    79667998/* Line 1806 of yacc.c  */
    7967 #line 1969 "parser.yy"
     7999#line 1954 "parser.yy"
    79688000    {
    79698001                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79768008
    79778009/* Line 1806 of yacc.c  */
    7978 #line 1975 "parser.yy"
     8010#line 1960 "parser.yy"
    79798011    {
    79808012                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79878019
    79888020/* Line 1806 of yacc.c  */
    7989 #line 1983 "parser.yy"
     8021#line 1968 "parser.yy"
    79908022    {
    79918023                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79988030
    79998031/* Line 1806 of yacc.c  */
    8000 #line 1989 "parser.yy"
     8032#line 1974 "parser.yy"
    80018033    {
    80028034                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    80098041
    80108042/* Line 1806 of yacc.c  */
    8011 #line 2004 "parser.yy"
    8012     { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Range), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
     8043#line 1989 "parser.yy"
     8044    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    80138045    break;
    80148046
     
    80168048
    80178049/* Line 1806 of yacc.c  */
    8018 #line 2038 "parser.yy"
     8050#line 2023 "parser.yy"
    80198051    {}
    80208052    break;
     
    80238055
    80248056/* Line 1806 of yacc.c  */
    8025 #line 2039 "parser.yy"
     8057#line 2024 "parser.yy"
    80268058    {}
    80278059    break;
     
    80308062
    80318063/* Line 1806 of yacc.c  */
    8032 #line 2040 "parser.yy"
     8064#line 2025 "parser.yy"
    80338065    {}
    80348066    break;
     
    80378069
    80388070/* Line 1806 of yacc.c  */
    8039 #line 2041 "parser.yy"
     8071#line 2026 "parser.yy"
    80408072    {}
    80418073    break;
     
    80448076
    80458077/* Line 1806 of yacc.c  */
    8046 #line 2084 "parser.yy"
     8078#line 2068 "parser.yy"
    80478079    {
    8048                         typedefTable.setNextIdentifier( *((yyvsp[(1) - (1)].tok)) );
     8080                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
    80498081                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    80508082                }
     
    80548086
    80558087/* Line 1806 of yacc.c  */
     8088#line 2073 "parser.yy"
     8089    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8090    break;
     8091
     8092  case 551:
     8093
     8094/* Line 1806 of yacc.c  */
     8095#line 2078 "parser.yy"
     8096    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8097    break;
     8098
     8099  case 552:
     8100
     8101/* Line 1806 of yacc.c  */
     8102#line 2080 "parser.yy"
     8103    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8104    break;
     8105
     8106  case 553:
     8107
     8108/* Line 1806 of yacc.c  */
     8109#line 2082 "parser.yy"
     8110    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8111    break;
     8112
     8113  case 554:
     8114
     8115/* Line 1806 of yacc.c  */
     8116#line 2087 "parser.yy"
     8117    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8118    break;
     8119
     8120  case 555:
     8121
     8122/* Line 1806 of yacc.c  */
    80568123#line 2089 "parser.yy"
     8124    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8125    break;
     8126
     8127  case 556:
     8128
     8129/* Line 1806 of yacc.c  */
     8130#line 2091 "parser.yy"
     8131    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8132    break;
     8133
     8134  case 557:
     8135
     8136/* Line 1806 of yacc.c  */
     8137#line 2093 "parser.yy"
    80578138    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80588139    break;
    80598140
    8060   case 551:
    8061 
    8062 /* Line 1806 of yacc.c  */
    8063 #line 2094 "parser.yy"
     8141  case 558:
     8142
     8143/* Line 1806 of yacc.c  */
     8144#line 2098 "parser.yy"
     8145    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8146    break;
     8147
     8148  case 559:
     8149
     8150/* Line 1806 of yacc.c  */
     8151#line 2100 "parser.yy"
     8152    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8153    break;
     8154
     8155  case 563:
     8156
     8157/* Line 1806 of yacc.c  */
     8158#line 2116 "parser.yy"
     8159    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8160    break;
     8161
     8162  case 564:
     8163
     8164/* Line 1806 of yacc.c  */
     8165#line 2118 "parser.yy"
     8166    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8167    break;
     8168
     8169  case 565:
     8170
     8171/* Line 1806 of yacc.c  */
     8172#line 2120 "parser.yy"
     8173    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8174    break;
     8175
     8176  case 566:
     8177
     8178/* Line 1806 of yacc.c  */
     8179#line 2125 "parser.yy"
    80648180    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80658181    break;
    80668182
    8067   case 552:
    8068 
    8069 /* Line 1806 of yacc.c  */
    8070 #line 2096 "parser.yy"
     8183  case 567:
     8184
     8185/* Line 1806 of yacc.c  */
     8186#line 2127 "parser.yy"
    80718187    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80728188    break;
    80738189
    8074   case 553:
    8075 
    8076 /* Line 1806 of yacc.c  */
    8077 #line 2098 "parser.yy"
     8190  case 568:
     8191
     8192/* Line 1806 of yacc.c  */
     8193#line 2129 "parser.yy"
    80788194    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80798195    break;
    80808196
    8081   case 554:
    8082 
    8083 /* Line 1806 of yacc.c  */
    8084 #line 2103 "parser.yy"
    8085     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8086     break;
    8087 
    8088   case 555:
    8089 
    8090 /* Line 1806 of yacc.c  */
    8091 #line 2105 "parser.yy"
     8197  case 569:
     8198
     8199/* Line 1806 of yacc.c  */
     8200#line 2134 "parser.yy"
    80928201    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80938202    break;
    80948203
    8095   case 556:
    8096 
    8097 /* Line 1806 of yacc.c  */
    8098 #line 2107 "parser.yy"
     8204  case 570:
     8205
     8206/* Line 1806 of yacc.c  */
     8207#line 2136 "parser.yy"
    80998208    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81008209    break;
    81018210
    8102   case 557:
    8103 
    8104 /* Line 1806 of yacc.c  */
    8105 #line 2109 "parser.yy"
     8211  case 571:
     8212
     8213/* Line 1806 of yacc.c  */
     8214#line 2138 "parser.yy"
    81068215    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81078216    break;
    81088217
    8109   case 558:
    8110 
    8111 /* Line 1806 of yacc.c  */
    8112 #line 2114 "parser.yy"
    8113     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8114     break;
    8115 
    8116   case 559:
    8117 
    8118 /* Line 1806 of yacc.c  */
    8119 #line 2116 "parser.yy"
     8218  case 575:
     8219
     8220/* Line 1806 of yacc.c  */
     8221#line 2153 "parser.yy"
     8222    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8223    break;
     8224
     8225  case 576:
     8226
     8227/* Line 1806 of yacc.c  */
     8228#line 2155 "parser.yy"
     8229    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     8230    break;
     8231
     8232  case 577:
     8233
     8234/* Line 1806 of yacc.c  */
     8235#line 2157 "parser.yy"
    81208236    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81218237    break;
    81228238
    8123   case 563:
    8124 
    8125 /* Line 1806 of yacc.c  */
    8126 #line 2132 "parser.yy"
    8127     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8128     break;
    8129 
    8130   case 564:
    8131 
    8132 /* Line 1806 of yacc.c  */
    8133 #line 2134 "parser.yy"
    8134     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8135     break;
    8136 
    8137   case 565:
    8138 
    8139 /* Line 1806 of yacc.c  */
    8140 #line 2136 "parser.yy"
     8239  case 578:
     8240
     8241/* Line 1806 of yacc.c  */
     8242#line 2162 "parser.yy"
     8243    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8244    break;
     8245
     8246  case 579:
     8247
     8248/* Line 1806 of yacc.c  */
     8249#line 2164 "parser.yy"
     8250    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8251    break;
     8252
     8253  case 580:
     8254
     8255/* Line 1806 of yacc.c  */
     8256#line 2166 "parser.yy"
    81418257    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81428258    break;
    81438259
    8144   case 566:
    8145 
    8146 /* Line 1806 of yacc.c  */
    8147 #line 2141 "parser.yy"
    8148     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8149     break;
    8150 
    8151   case 567:
    8152 
    8153 /* Line 1806 of yacc.c  */
    8154 #line 2143 "parser.yy"
    8155     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8156     break;
    8157 
    8158   case 568:
    8159 
    8160 /* Line 1806 of yacc.c  */
    8161 #line 2145 "parser.yy"
     8260  case 581:
     8261
     8262/* Line 1806 of yacc.c  */
     8263#line 2171 "parser.yy"
     8264    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8265    break;
     8266
     8267  case 582:
     8268
     8269/* Line 1806 of yacc.c  */
     8270#line 2173 "parser.yy"
     8271    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8272    break;
     8273
     8274  case 583:
     8275
     8276/* Line 1806 of yacc.c  */
     8277#line 2175 "parser.yy"
    81628278    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81638279    break;
    81648280
    8165   case 569:
    8166 
    8167 /* Line 1806 of yacc.c  */
    8168 #line 2150 "parser.yy"
    8169     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8170     break;
    8171 
    8172   case 570:
    8173 
    8174 /* Line 1806 of yacc.c  */
    8175 #line 2152 "parser.yy"
    8176     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8177     break;
    8178 
    8179   case 571:
    8180 
    8181 /* Line 1806 of yacc.c  */
    8182 #line 2154 "parser.yy"
    8183     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8184     break;
    8185 
    8186   case 575:
    8187 
    8188 /* Line 1806 of yacc.c  */
    8189 #line 2169 "parser.yy"
    8190     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8191     break;
    8192 
    8193   case 576:
    8194 
    8195 /* Line 1806 of yacc.c  */
    8196 #line 2171 "parser.yy"
    8197     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8198     break;
    8199 
    8200   case 577:
    8201 
    8202 /* Line 1806 of yacc.c  */
    8203 #line 2173 "parser.yy"
    8204     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8205     break;
    8206 
    8207   case 578:
    8208 
    8209 /* Line 1806 of yacc.c  */
    8210 #line 2178 "parser.yy"
    8211     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8212     break;
    8213 
    8214   case 579:
    8215 
    8216 /* Line 1806 of yacc.c  */
    8217 #line 2180 "parser.yy"
    8218     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8219     break;
    8220 
    8221   case 580:
    8222 
    8223 /* Line 1806 of yacc.c  */
    8224 #line 2182 "parser.yy"
    8225     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8226     break;
    8227 
    8228   case 581:
    8229 
    8230 /* Line 1806 of yacc.c  */
    8231 #line 2187 "parser.yy"
    8232     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8233     break;
    8234 
    8235   case 582:
    8236 
    8237 /* Line 1806 of yacc.c  */
    8238 #line 2189 "parser.yy"
    8239     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8240     break;
    8241 
    8242   case 583:
    8243 
    8244 /* Line 1806 of yacc.c  */
    8245 #line 2191 "parser.yy"
    8246     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8247     break;
    8248 
    82498281  case 588:
    82508282
    82518283/* Line 1806 of yacc.c  */
    8252 #line 2213 "parser.yy"
     8284#line 2197 "parser.yy"
    82538285    {
    8254                         typedefTable.setNextIdentifier( *((yyvsp[(1) - (1)].tok)) );
     8286                        typedefTable.setNextIdentifier( *( (yyvsp[(1) - (1)].tok) ) );
    82558287                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    82568288                }
     
    82608292
    82618293/* Line 1806 of yacc.c  */
     8294#line 2202 "parser.yy"
     8295    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8296    break;
     8297
     8298  case 590:
     8299
     8300/* Line 1806 of yacc.c  */
     8301#line 2207 "parser.yy"
     8302    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8303    break;
     8304
     8305  case 591:
     8306
     8307/* Line 1806 of yacc.c  */
     8308#line 2209 "parser.yy"
     8309    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8310    break;
     8311
     8312  case 592:
     8313
     8314/* Line 1806 of yacc.c  */
     8315#line 2211 "parser.yy"
     8316    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8317    break;
     8318
     8319  case 593:
     8320
     8321/* Line 1806 of yacc.c  */
     8322#line 2216 "parser.yy"
     8323    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8324    break;
     8325
     8326  case 594:
     8327
     8328/* Line 1806 of yacc.c  */
    82628329#line 2218 "parser.yy"
     8330    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8331    break;
     8332
     8333  case 595:
     8334
     8335/* Line 1806 of yacc.c  */
     8336#line 2220 "parser.yy"
     8337    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8338    break;
     8339
     8340  case 596:
     8341
     8342/* Line 1806 of yacc.c  */
     8343#line 2222 "parser.yy"
    82638344    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82648345    break;
    82658346
    8266   case 590:
    8267 
    8268 /* Line 1806 of yacc.c  */
    8269 #line 2223 "parser.yy"
     8347  case 597:
     8348
     8349/* Line 1806 of yacc.c  */
     8350#line 2227 "parser.yy"
     8351    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8352    break;
     8353
     8354  case 598:
     8355
     8356/* Line 1806 of yacc.c  */
     8357#line 2229 "parser.yy"
     8358    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8359    break;
     8360
     8361  case 599:
     8362
     8363/* Line 1806 of yacc.c  */
     8364#line 2231 "parser.yy"
     8365    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8366    break;
     8367
     8368  case 604:
     8369
     8370/* Line 1806 of yacc.c  */
     8371#line 2248 "parser.yy"
    82708372    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82718373    break;
    82728374
    8273   case 591:
    8274 
    8275 /* Line 1806 of yacc.c  */
    8276 #line 2225 "parser.yy"
     8375  case 605:
     8376
     8377/* Line 1806 of yacc.c  */
     8378#line 2250 "parser.yy"
    82778379    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82788380    break;
    82798381
    8280   case 592:
    8281 
    8282 /* Line 1806 of yacc.c  */
    8283 #line 2227 "parser.yy"
     8382  case 606:
     8383
     8384/* Line 1806 of yacc.c  */
     8385#line 2252 "parser.yy"
    82848386    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82858387    break;
    82868388
    8287   case 593:
    8288 
    8289 /* Line 1806 of yacc.c  */
    8290 #line 2232 "parser.yy"
     8389  case 607:
     8390
     8391/* Line 1806 of yacc.c  */
     8392#line 2257 "parser.yy"
    82918393    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    82928394    break;
    82938395
    8294   case 594:
    8295 
    8296 /* Line 1806 of yacc.c  */
    8297 #line 2234 "parser.yy"
     8396  case 608:
     8397
     8398/* Line 1806 of yacc.c  */
     8399#line 2259 "parser.yy"
    82988400    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82998401    break;
    83008402
    8301   case 595:
    8302 
    8303 /* Line 1806 of yacc.c  */
    8304 #line 2236 "parser.yy"
     8403  case 609:
     8404
     8405/* Line 1806 of yacc.c  */
     8406#line 2261 "parser.yy"
    83058407    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83068408    break;
    83078409
    8308   case 596:
    8309 
    8310 /* Line 1806 of yacc.c  */
    8311 #line 2238 "parser.yy"
     8410  case 610:
     8411
     8412/* Line 1806 of yacc.c  */
     8413#line 2263 "parser.yy"
    83128414    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83138415    break;
    83148416
    8315   case 597:
    8316 
    8317 /* Line 1806 of yacc.c  */
    8318 #line 2243 "parser.yy"
     8417  case 611:
     8418
     8419/* Line 1806 of yacc.c  */
     8420#line 2268 "parser.yy"
    83198421    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83208422    break;
    83218423
    8322   case 598:
    8323 
    8324 /* Line 1806 of yacc.c  */
    8325 #line 2245 "parser.yy"
     8424  case 612:
     8425
     8426/* Line 1806 of yacc.c  */
     8427#line 2270 "parser.yy"
    83268428    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83278429    break;
    83288430
    8329   case 599:
    8330 
    8331 /* Line 1806 of yacc.c  */
    8332 #line 2247 "parser.yy"
     8431  case 613:
     8432
     8433/* Line 1806 of yacc.c  */
     8434#line 2272 "parser.yy"
    83338435    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83348436    break;
    83358437
    8336   case 604:
    8337 
    8338 /* Line 1806 of yacc.c  */
    8339 #line 2264 "parser.yy"
    8340     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8341     break;
    8342 
    8343   case 605:
    8344 
    8345 /* Line 1806 of yacc.c  */
    8346 #line 2266 "parser.yy"
    8347     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8348     break;
    8349 
    8350   case 606:
    8351 
    8352 /* Line 1806 of yacc.c  */
    8353 #line 2268 "parser.yy"
    8354     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8355     break;
    8356 
    8357   case 607:
    8358 
    8359 /* Line 1806 of yacc.c  */
    8360 #line 2273 "parser.yy"
    8361     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8362     break;
    8363 
    8364   case 608:
    8365 
    8366 /* Line 1806 of yacc.c  */
    8367 #line 2275 "parser.yy"
    8368     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8369     break;
    8370 
    8371   case 609:
    8372 
    8373 /* Line 1806 of yacc.c  */
    8374 #line 2277 "parser.yy"
    8375     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8376     break;
    8377 
    8378   case 610:
    8379 
    8380 /* Line 1806 of yacc.c  */
    8381 #line 2279 "parser.yy"
    8382     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8383     break;
    8384 
    8385   case 611:
    8386 
    8387 /* Line 1806 of yacc.c  */
    8388 #line 2284 "parser.yy"
    8389     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8390     break;
    8391 
    8392   case 612:
    8393 
    8394 /* Line 1806 of yacc.c  */
    8395 #line 2286 "parser.yy"
    8396     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8397     break;
    8398 
    8399   case 613:
    8400 
    8401 /* Line 1806 of yacc.c  */
    8402 #line 2288 "parser.yy"
    8403     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8404     break;
    8405 
    84068438  case 618:
    84078439
    84088440/* Line 1806 of yacc.c  */
    8409 #line 2326 "parser.yy"
     8441#line 2310 "parser.yy"
    84108442    {
    8411                         typedefTable.setNextIdentifier( *((yyvsp[(1) - (1)].tok)) );
     8443                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
    84128444                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    84138445                }
     
    84178449
    84188450/* Line 1806 of yacc.c  */
     8451#line 2318 "parser.yy"
     8452    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8453    break;
     8454
     8455  case 620:
     8456
     8457/* Line 1806 of yacc.c  */
     8458#line 2320 "parser.yy"
     8459    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8460    break;
     8461
     8462  case 621:
     8463
     8464/* Line 1806 of yacc.c  */
     8465#line 2322 "parser.yy"
     8466    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8467    break;
     8468
     8469  case 622:
     8470
     8471/* Line 1806 of yacc.c  */
     8472#line 2327 "parser.yy"
     8473    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8474    break;
     8475
     8476  case 623:
     8477
     8478/* Line 1806 of yacc.c  */
     8479#line 2329 "parser.yy"
     8480    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8481    break;
     8482
     8483  case 624:
     8484
     8485/* Line 1806 of yacc.c  */
    84198486#line 2334 "parser.yy"
     8487    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8488    break;
     8489
     8490  case 625:
     8491
     8492/* Line 1806 of yacc.c  */
     8493#line 2336 "parser.yy"
     8494    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8495    break;
     8496
     8497  case 629:
     8498
     8499/* Line 1806 of yacc.c  */
     8500#line 2356 "parser.yy"
     8501    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8502    break;
     8503
     8504  case 630:
     8505
     8506/* Line 1806 of yacc.c  */
     8507#line 2358 "parser.yy"
     8508    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8509    break;
     8510
     8511  case 631:
     8512
     8513/* Line 1806 of yacc.c  */
     8514#line 2360 "parser.yy"
    84208515    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84218516    break;
    84228517
    8423   case 620:
    8424 
    8425 /* Line 1806 of yacc.c  */
    8426 #line 2336 "parser.yy"
     8518  case 632:
     8519
     8520/* Line 1806 of yacc.c  */
     8521#line 2362 "parser.yy"
    84278522    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84288523    break;
    84298524
    8430   case 621:
    8431 
    8432 /* Line 1806 of yacc.c  */
    8433 #line 2338 "parser.yy"
     8525  case 633:
     8526
     8527/* Line 1806 of yacc.c  */
     8528#line 2364 "parser.yy"
    84348529    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84358530    break;
    84368531
    8437   case 622:
    8438 
    8439 /* Line 1806 of yacc.c  */
    8440 #line 2343 "parser.yy"
     8532  case 635:
     8533
     8534/* Line 1806 of yacc.c  */
     8535#line 2370 "parser.yy"
     8536    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8537    break;
     8538
     8539  case 636:
     8540
     8541/* Line 1806 of yacc.c  */
     8542#line 2372 "parser.yy"
     8543    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8544    break;
     8545
     8546  case 637:
     8547
     8548/* Line 1806 of yacc.c  */
     8549#line 2374 "parser.yy"
     8550    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8551    break;
     8552
     8553  case 638:
     8554
     8555/* Line 1806 of yacc.c  */
     8556#line 2379 "parser.yy"
     8557    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8558    break;
     8559
     8560  case 639:
     8561
     8562/* Line 1806 of yacc.c  */
     8563#line 2381 "parser.yy"
     8564    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8565    break;
     8566
     8567  case 640:
     8568
     8569/* Line 1806 of yacc.c  */
     8570#line 2383 "parser.yy"
     8571    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8572    break;
     8573
     8574  case 641:
     8575
     8576/* Line 1806 of yacc.c  */
     8577#line 2389 "parser.yy"
     8578    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8579    break;
     8580
     8581  case 642:
     8582
     8583/* Line 1806 of yacc.c  */
     8584#line 2391 "parser.yy"
     8585    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(5) - (5)].decl) ); }
     8586    break;
     8587
     8588  case 644:
     8589
     8590/* Line 1806 of yacc.c  */
     8591#line 2397 "parser.yy"
     8592    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8593    break;
     8594
     8595  case 645:
     8596
     8597/* Line 1806 of yacc.c  */
     8598#line 2399 "parser.yy"
     8599    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8600    break;
     8601
     8602  case 646:
     8603
     8604/* Line 1806 of yacc.c  */
     8605#line 2401 "parser.yy"
     8606    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     8607    break;
     8608
     8609  case 647:
     8610
     8611/* Line 1806 of yacc.c  */
     8612#line 2403 "parser.yy"
     8613    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8614    break;
     8615
     8616  case 651:
     8617
     8618/* Line 1806 of yacc.c  */
     8619#line 2423 "parser.yy"
     8620    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8621    break;
     8622
     8623  case 652:
     8624
     8625/* Line 1806 of yacc.c  */
     8626#line 2425 "parser.yy"
     8627    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8628    break;
     8629
     8630  case 653:
     8631
     8632/* Line 1806 of yacc.c  */
     8633#line 2427 "parser.yy"
     8634    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8635    break;
     8636
     8637  case 654:
     8638
     8639/* Line 1806 of yacc.c  */
     8640#line 2429 "parser.yy"
     8641    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8642    break;
     8643
     8644  case 655:
     8645
     8646/* Line 1806 of yacc.c  */
     8647#line 2431 "parser.yy"
     8648    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8649    break;
     8650
     8651  case 657:
     8652
     8653/* Line 1806 of yacc.c  */
     8654#line 2437 "parser.yy"
     8655    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8656    break;
     8657
     8658  case 658:
     8659
     8660/* Line 1806 of yacc.c  */
     8661#line 2439 "parser.yy"
     8662    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8663    break;
     8664
     8665  case 659:
     8666
     8667/* Line 1806 of yacc.c  */
     8668#line 2441 "parser.yy"
     8669    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8670    break;
     8671
     8672  case 660:
     8673
     8674/* Line 1806 of yacc.c  */
     8675#line 2446 "parser.yy"
     8676    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8677    break;
     8678
     8679  case 661:
     8680
     8681/* Line 1806 of yacc.c  */
     8682#line 2448 "parser.yy"
     8683    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8684    break;
     8685
     8686  case 662:
     8687
     8688/* Line 1806 of yacc.c  */
     8689#line 2450 "parser.yy"
     8690    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8691    break;
     8692
     8693  case 664:
     8694
     8695/* Line 1806 of yacc.c  */
     8696#line 2457 "parser.yy"
    84418697    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84428698    break;
    84438699
    8444   case 623:
    8445 
    8446 /* Line 1806 of yacc.c  */
    8447 #line 2345 "parser.yy"
     8700  case 666:
     8701
     8702/* Line 1806 of yacc.c  */
     8703#line 2468 "parser.yy"
     8704    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8705    break;
     8706
     8707  case 667:
     8708
     8709/* Line 1806 of yacc.c  */
     8710#line 2471 "parser.yy"
     8711    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8712    break;
     8713
     8714  case 668:
     8715
     8716/* Line 1806 of yacc.c  */
     8717#line 2473 "parser.yy"
     8718    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8719    break;
     8720
     8721  case 669:
     8722
     8723/* Line 1806 of yacc.c  */
     8724#line 2476 "parser.yy"
     8725    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8726    break;
     8727
     8728  case 670:
     8729
     8730/* Line 1806 of yacc.c  */
     8731#line 2478 "parser.yy"
     8732    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     8733    break;
     8734
     8735  case 671:
     8736
     8737/* Line 1806 of yacc.c  */
     8738#line 2480 "parser.yy"
     8739    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8740    break;
     8741
     8742  case 675:
     8743
     8744/* Line 1806 of yacc.c  */
     8745#line 2499 "parser.yy"
     8746    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8747    break;
     8748
     8749  case 676:
     8750
     8751/* Line 1806 of yacc.c  */
     8752#line 2501 "parser.yy"
     8753    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8754    break;
     8755
     8756  case 677:
     8757
     8758/* Line 1806 of yacc.c  */
     8759#line 2503 "parser.yy"
     8760    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8761    break;
     8762
     8763  case 678:
     8764
     8765/* Line 1806 of yacc.c  */
     8766#line 2505 "parser.yy"
     8767    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8768    break;
     8769
     8770  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"
    84488781    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84498782    break;
    84508783
    8451   case 624:
    8452 
    8453 /* Line 1806 of yacc.c  */
    8454 #line 2350 "parser.yy"
    8455     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8456     break;
    8457 
    8458   case 625:
    8459 
    8460 /* Line 1806 of yacc.c  */
    8461 #line 2352 "parser.yy"
     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"
    84628802    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84638803    break;
    84648804
    8465   case 629:
    8466 
    8467 /* Line 1806 of yacc.c  */
    8468 #line 2372 "parser.yy"
    8469     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8470     break;
    8471 
    8472   case 630:
    8473 
    8474 /* Line 1806 of yacc.c  */
    8475 #line 2374 "parser.yy"
    8476     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8477     break;
    8478 
    8479   case 631:
    8480 
    8481 /* Line 1806 of yacc.c  */
    8482 #line 2376 "parser.yy"
    8483     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8484     break;
    8485 
    8486   case 632:
    8487 
    8488 /* Line 1806 of yacc.c  */
    8489 #line 2378 "parser.yy"
    8490     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8491     break;
    8492 
    8493   case 633:
    8494 
    8495 /* Line 1806 of yacc.c  */
    8496 #line 2380 "parser.yy"
    8497     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8498     break;
    8499 
    8500   case 635:
    8501 
    8502 /* Line 1806 of yacc.c  */
    8503 #line 2386 "parser.yy"
    8504     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8505     break;
    8506 
    8507   case 636:
    8508 
    8509 /* Line 1806 of yacc.c  */
    8510 #line 2388 "parser.yy"
    8511     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8512     break;
    8513 
    8514   case 637:
    8515 
    8516 /* Line 1806 of yacc.c  */
    8517 #line 2390 "parser.yy"
    8518     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8519     break;
    8520 
    8521   case 638:
    8522 
    8523 /* Line 1806 of yacc.c  */
    8524 #line 2395 "parser.yy"
    8525     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8526     break;
    8527 
    8528   case 639:
    8529 
    8530 /* Line 1806 of yacc.c  */
    8531 #line 2397 "parser.yy"
    8532     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8533     break;
    8534 
    8535   case 640:
    8536 
    8537 /* Line 1806 of yacc.c  */
    8538 #line 2399 "parser.yy"
    8539     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8540     break;
    8541 
    8542   case 641:
    8543 
    8544 /* Line 1806 of yacc.c  */
    8545 #line 2405 "parser.yy"
    8546     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8547     break;
    8548 
    8549   case 642:
    8550 
    8551 /* Line 1806 of yacc.c  */
    8552 #line 2407 "parser.yy"
    8553     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(5) - (5)].decl) ); }
    8554     break;
    8555 
    8556   case 644:
    8557 
    8558 /* Line 1806 of yacc.c  */
    8559 #line 2413 "parser.yy"
    8560     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8561     break;
    8562 
    8563   case 645:
    8564 
    8565 /* Line 1806 of yacc.c  */
    8566 #line 2415 "parser.yy"
    8567     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8568     break;
    8569 
    8570   case 646:
    8571 
    8572 /* Line 1806 of yacc.c  */
    8573 #line 2417 "parser.yy"
    8574     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8575     break;
    8576 
    8577   case 647:
    8578 
    8579 /* Line 1806 of yacc.c  */
    8580 #line 2419 "parser.yy"
    8581     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8582     break;
    8583 
    8584   case 651:
    8585 
    8586 /* Line 1806 of yacc.c  */
    8587 #line 2439 "parser.yy"
    8588     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8589     break;
    8590 
    8591   case 652:
    8592 
    8593 /* Line 1806 of yacc.c  */
    8594 #line 2441 "parser.yy"
    8595     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8596     break;
    8597 
    8598   case 653:
    8599 
    8600 /* Line 1806 of yacc.c  */
    8601 #line 2443 "parser.yy"
    8602     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8603     break;
    8604 
    8605   case 654:
    8606 
    8607 /* Line 1806 of yacc.c  */
    8608 #line 2445 "parser.yy"
    8609     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8610     break;
    8611 
    8612   case 655:
    8613 
    8614 /* Line 1806 of yacc.c  */
    8615 #line 2447 "parser.yy"
    8616     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8617     break;
    8618 
    8619   case 657:
    8620 
    8621 /* Line 1806 of yacc.c  */
    8622 #line 2453 "parser.yy"
    8623     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8624     break;
    8625 
    8626   case 658:
    8627 
    8628 /* Line 1806 of yacc.c  */
    8629 #line 2455 "parser.yy"
    8630     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8631     break;
    8632 
    8633   case 659:
    8634 
    8635 /* Line 1806 of yacc.c  */
    8636 #line 2457 "parser.yy"
    8637     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8638     break;
    8639 
    8640   case 660:
    8641 
    8642 /* Line 1806 of yacc.c  */
    8643 #line 2462 "parser.yy"
    8644     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8645     break;
    8646 
    8647   case 661:
    8648 
    8649 /* Line 1806 of yacc.c  */
    8650 #line 2464 "parser.yy"
    8651     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8652     break;
    8653 
    8654   case 662:
    8655 
    8656 /* Line 1806 of yacc.c  */
    8657 #line 2466 "parser.yy"
    8658     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8659     break;
    8660 
    8661   case 664:
    8662 
    8663 /* Line 1806 of yacc.c  */
    8664 #line 2473 "parser.yy"
    8665     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8666     break;
    8667 
    8668   case 666:
    8669 
    8670 /* Line 1806 of yacc.c  */
    8671 #line 2485 "parser.yy"
    8672     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8673     break;
    8674 
    8675   case 667:
    8676 
    8677 /* Line 1806 of yacc.c  */
    8678 #line 2488 "parser.yy"
    8679     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    8680     break;
    8681 
    8682   case 668:
    8683 
    8684 /* Line 1806 of yacc.c  */
    8685 #line 2490 "parser.yy"
    8686     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    8687     break;
    8688 
    8689   case 669:
    8690 
    8691 /* Line 1806 of yacc.c  */
    8692 #line 2493 "parser.yy"
    8693     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    8694     break;
    8695 
    8696   case 670:
    8697 
    8698 /* Line 1806 of yacc.c  */
    8699 #line 2495 "parser.yy"
    8700     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    8701     break;
    8702 
    8703   case 671:
    8704 
    8705 /* Line 1806 of yacc.c  */
    8706 #line 2497 "parser.yy"
    8707     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    8708     break;
    8709 
    8710   case 675:
    8711 
    8712 /* Line 1806 of yacc.c  */
    8713 #line 2516 "parser.yy"
    8714     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8715     break;
    8716 
    8717   case 676:
    8718 
    8719 /* Line 1806 of yacc.c  */
    8720 #line 2518 "parser.yy"
    8721     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8722     break;
    8723 
    8724   case 677:
    8725 
    8726 /* Line 1806 of yacc.c  */
    8727 #line 2520 "parser.yy"
    8728     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8729     break;
    8730 
    8731   case 678:
    8732 
    8733 /* Line 1806 of yacc.c  */
    8734 #line 2522 "parser.yy"
    8735     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8736     break;
    8737 
    8738   case 679:
     8805  case 685:
    87398806
    87408807/* Line 1806 of yacc.c  */
     
    87438810    break;
    87448811
    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:
     8812  case 688:
    87608813
    87618814/* Line 1806 of yacc.c  */
    87628815#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 
    8780   case 688:
    8781 
    8782 /* Line 1806 of yacc.c  */
    8783 #line 2551 "parser.yy"
    87848816    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    87858817    break;
     
    87888820
    87898821/* Line 1806 of yacc.c  */
     8822#line 2544 "parser.yy"
     8823    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8824    break;
     8825
     8826  case 692:
     8827
     8828/* Line 1806 of yacc.c  */
     8829#line 2546 "parser.yy"
     8830    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8831    break;
     8832
     8833  case 693:
     8834
     8835/* Line 1806 of yacc.c  */
     8836#line 2548 "parser.yy"
     8837    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8838    break;
     8839
     8840  case 694:
     8841
     8842/* Line 1806 of yacc.c  */
     8843#line 2550 "parser.yy"
     8844    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8845    break;
     8846
     8847  case 695:
     8848
     8849/* Line 1806 of yacc.c  */
     8850#line 2552 "parser.yy"
     8851    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8852    break;
     8853
     8854  case 696:
     8855
     8856/* Line 1806 of yacc.c  */
     8857#line 2554 "parser.yy"
     8858    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8859    break;
     8860
     8861  case 697:
     8862
     8863/* Line 1806 of yacc.c  */
    87908864#line 2561 "parser.yy"
     8865    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8866    break;
     8867
     8868  case 698:
     8869
     8870/* Line 1806 of yacc.c  */
     8871#line 2563 "parser.yy"
     8872    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8873    break;
     8874
     8875  case 699:
     8876
     8877/* Line 1806 of yacc.c  */
     8878#line 2565 "parser.yy"
     8879    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8880    break;
     8881
     8882  case 700:
     8883
     8884/* Line 1806 of yacc.c  */
     8885#line 2567 "parser.yy"
     8886    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8887    break;
     8888
     8889  case 701:
     8890
     8891/* Line 1806 of yacc.c  */
     8892#line 2569 "parser.yy"
     8893    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8894    break;
     8895
     8896  case 702:
     8897
     8898/* Line 1806 of yacc.c  */
     8899#line 2571 "parser.yy"
     8900    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8901    break;
     8902
     8903  case 703:
     8904
     8905/* Line 1806 of yacc.c  */
     8906#line 2573 "parser.yy"
     8907    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8908    break;
     8909
     8910  case 704:
     8911
     8912/* Line 1806 of yacc.c  */
     8913#line 2575 "parser.yy"
     8914    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8915    break;
     8916
     8917  case 705:
     8918
     8919/* Line 1806 of yacc.c  */
     8920#line 2577 "parser.yy"
     8921    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8922    break;
     8923
     8924  case 706:
     8925
     8926/* Line 1806 of yacc.c  */
     8927#line 2579 "parser.yy"
     8928    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8929    break;
     8930
     8931  case 707:
     8932
     8933/* Line 1806 of yacc.c  */
     8934#line 2584 "parser.yy"
     8935    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8936    break;
     8937
     8938  case 708:
     8939
     8940/* Line 1806 of yacc.c  */
     8941#line 2586 "parser.yy"
     8942    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8943    break;
     8944
     8945  case 709:
     8946
     8947/* Line 1806 of yacc.c  */
     8948#line 2591 "parser.yy"
     8949    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     8950    break;
     8951
     8952  case 710:
     8953
     8954/* Line 1806 of yacc.c  */
     8955#line 2593 "parser.yy"
     8956    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     8957    break;
     8958
     8959  case 712:
     8960
     8961/* Line 1806 of yacc.c  */
     8962#line 2620 "parser.yy"
     8963    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     8964    break;
     8965
     8966  case 716:
     8967
     8968/* Line 1806 of yacc.c  */
     8969#line 2631 "parser.yy"
    87918970    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87928971    break;
    87938972
    8794   case 692:
    8795 
    8796 /* Line 1806 of yacc.c  */
    8797 #line 2563 "parser.yy"
     8973  case 717:
     8974
     8975/* Line 1806 of yacc.c  */
     8976#line 2633 "parser.yy"
    87988977    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87998978    break;
    88008979
    8801   case 693:
    8802 
    8803 /* Line 1806 of yacc.c  */
    8804 #line 2565 "parser.yy"
     8980  case 718:
     8981
     8982/* Line 1806 of yacc.c  */
     8983#line 2635 "parser.yy"
    88058984    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88068985    break;
    88078986
    8808   case 694:
    8809 
    8810 /* Line 1806 of yacc.c  */
    8811 #line 2567 "parser.yy"
     8987  case 719:
     8988
     8989/* Line 1806 of yacc.c  */
     8990#line 2637 "parser.yy"
    88128991    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88138992    break;
    88148993
    8815   case 695:
    8816 
    8817 /* Line 1806 of yacc.c  */
    8818 #line 2569 "parser.yy"
     8994  case 720:
     8995
     8996/* Line 1806 of yacc.c  */
     8997#line 2639 "parser.yy"
    88198998    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88208999    break;
    88219000
    8822   case 696:
    8823 
    8824 /* Line 1806 of yacc.c  */
    8825 #line 2571 "parser.yy"
     9001  case 721:
     9002
     9003/* Line 1806 of yacc.c  */
     9004#line 2641 "parser.yy"
    88269005    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88279006    break;
    88289007
    8829   case 697:
    8830 
    8831 /* Line 1806 of yacc.c  */
    8832 #line 2578 "parser.yy"
     9008  case 722:
     9009
     9010/* Line 1806 of yacc.c  */
     9011#line 2648 "parser.yy"
    88339012    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88349013    break;
    88359014
    8836   case 698:
    8837 
    8838 /* Line 1806 of yacc.c  */
    8839 #line 2580 "parser.yy"
     9015  case 723:
     9016
     9017/* Line 1806 of yacc.c  */
     9018#line 2650 "parser.yy"
     9019    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9020    break;
     9021
     9022  case 724:
     9023
     9024/* Line 1806 of yacc.c  */
     9025#line 2652 "parser.yy"
    88409026    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88419027    break;
    88429028
    8843   case 699:
    8844 
    8845 /* Line 1806 of yacc.c  */
    8846 #line 2582 "parser.yy"
     9029  case 725:
     9030
     9031/* Line 1806 of yacc.c  */
     9032#line 2654 "parser.yy"
     9033    { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9034    break;
     9035
     9036  case 726:
     9037
     9038/* Line 1806 of yacc.c  */
     9039#line 2656 "parser.yy"
    88479040    { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88489041    break;
    88499042
    8850   case 700:
    8851 
    8852 /* Line 1806 of yacc.c  */
    8853 #line 2584 "parser.yy"
    8854     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8855     break;
    8856 
    8857   case 701:
    8858 
    8859 /* Line 1806 of yacc.c  */
    8860 #line 2586 "parser.yy"
     9043  case 727:
     9044
     9045/* Line 1806 of yacc.c  */
     9046#line 2658 "parser.yy"
    88619047    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88629048    break;
    88639049
    8864   case 702:
    8865 
    8866 /* Line 1806 of yacc.c  */
    8867 #line 2588 "parser.yy"
    8868     { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8869     break;
    8870 
    8871   case 703:
    8872 
    8873 /* Line 1806 of yacc.c  */
    8874 #line 2590 "parser.yy"
    8875     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8876     break;
    8877 
    8878   case 704:
    8879 
    8880 /* Line 1806 of yacc.c  */
    8881 #line 2592 "parser.yy"
    8882     { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8883     break;
    8884 
    8885   case 705:
    8886 
    8887 /* Line 1806 of yacc.c  */
    8888 #line 2594 "parser.yy"
    8889     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8890     break;
    8891 
    8892   case 706:
    8893 
    8894 /* Line 1806 of yacc.c  */
    8895 #line 2596 "parser.yy"
    8896     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8897     break;
    8898 
    8899   case 707:
    8900 
    8901 /* Line 1806 of yacc.c  */
    8902 #line 2601 "parser.yy"
    8903     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    8904     break;
    8905 
    8906   case 708:
    8907 
    8908 /* Line 1806 of yacc.c  */
    8909 #line 2603 "parser.yy"
    8910     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    8911     break;
    8912 
    8913   case 709:
    8914 
    8915 /* Line 1806 of yacc.c  */
    8916 #line 2608 "parser.yy"
    8917     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    8918     break;
    8919 
    8920   case 710:
    8921 
    8922 /* Line 1806 of yacc.c  */
    8923 #line 2610 "parser.yy"
    8924     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    8925     break;
    8926 
    8927   case 712:
    8928 
    8929 /* Line 1806 of yacc.c  */
    8930 #line 2637 "parser.yy"
    8931     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    8932     break;
    8933 
    8934   case 716:
    8935 
    8936 /* Line 1806 of yacc.c  */
    8937 #line 2648 "parser.yy"
    8938     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8939     break;
    8940 
    8941   case 717:
    8942 
    8943 /* Line 1806 of yacc.c  */
    8944 #line 2650 "parser.yy"
    8945     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    8946     break;
    8947 
    8948   case 718:
    8949 
    8950 /* Line 1806 of yacc.c  */
    8951 #line 2652 "parser.yy"
    8952     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8953     break;
    8954 
    8955   case 719:
    8956 
    8957 /* Line 1806 of yacc.c  */
    8958 #line 2654 "parser.yy"
    8959     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    8960     break;
    8961 
    8962   case 720:
    8963 
    8964 /* Line 1806 of yacc.c  */
    8965 #line 2656 "parser.yy"
    8966     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8967     break;
    8968 
    8969   case 721:
    8970 
    8971 /* Line 1806 of yacc.c  */
    8972 #line 2658 "parser.yy"
    8973     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    8974     break;
    8975 
    8976   case 722:
    8977 
    8978 /* Line 1806 of yacc.c  */
    8979 #line 2665 "parser.yy"
    8980     { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8981     break;
    8982 
    8983   case 723:
    8984 
    8985 /* Line 1806 of yacc.c  */
    8986 #line 2667 "parser.yy"
    8987     { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8988     break;
    8989 
    8990   case 724:
    8991 
    8992 /* Line 1806 of yacc.c  */
    8993 #line 2669 "parser.yy"
    8994     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8995     break;
    8996 
    8997   case 725:
    8998 
    8999 /* Line 1806 of yacc.c  */
    9000 #line 2671 "parser.yy"
    9001     { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9002     break;
    9003 
    9004   case 726:
    9005 
    9006 /* Line 1806 of yacc.c  */
    9007 #line 2673 "parser.yy"
    9008     { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9009     break;
    9010 
    9011   case 727:
    9012 
    9013 /* Line 1806 of yacc.c  */
    9014 #line 2675 "parser.yy"
    9015     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9016     break;
    9017 
    90189050  case 728:
    90199051
    90209052/* Line 1806 of yacc.c  */
    9021 #line 2680 "parser.yy"
     9053#line 2663 "parser.yy"
    90229054    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    90239055    break;
     
    90269058
    90279059/* Line 1806 of yacc.c  */
    9028 #line 2685 "parser.yy"
     9060#line 2668 "parser.yy"
    90299061    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (7)].decl), 0 ); }
    90309062    break;
     
    90339065
    90349066/* Line 1806 of yacc.c  */
    9035 #line 2687 "parser.yy"
     9067#line 2670 "parser.yy"
    90369068    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90379069    break;
     
    90409072
    90419073/* Line 1806 of yacc.c  */
    9042 #line 2689 "parser.yy"
     9074#line 2672 "parser.yy"
    90439075    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90449076    break;
     
    90479079
    90489080/* Line 1806 of yacc.c  */
    9049 #line 2715 "parser.yy"
     9081#line 2696 "parser.yy"
    90509082    { (yyval.en) = 0; }
    90519083    break;
     
    90549086
    90559087/* Line 1806 of yacc.c  */
    9056 #line 2717 "parser.yy"
     9088#line 2698 "parser.yy"
    90579089    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    90589090    break;
     
    90619093
    90629094/* Line 1806 of yacc.c  */
    9063 #line 9064 "Parser/parser.cc"
     9095#line 9096 "Parser/parser.cc"
    90649096      default: break;
    90659097    }
     
    92929324
    92939325/* Line 2067 of yacc.c  */
    9294 #line 2720 "parser.yy"
     9326#line 2701 "parser.yy"
    92959327
    92969328// ----end of grammar----
     
    93059337
    93069338// Local Variables: //
     9339// mode: c++ //
    93079340// tab-width: 4 //
    9308 // mode: c++ //
    93099341// compile-command: "make install" //
    93109342// End: //
  • src/Parser/parser.h

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

    ra1d5d2a rde62360d  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 07:21:45 2015
    13 // Update Count     : 1048
     12// Last Modified On : Mon Jun 22 15:19:44 2015
     13// Update Count     : 1082
    1414//
    1515
    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.
     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.
    2625
    2726// The root language for this grammar is ANSI99/11 C. All of ANSI99/11 is parsed, except for:
     
    2928// 1. designation with '=' (use ':' instead)
    3029//
    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:
     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:
    3332//
    3433// 1. nested functions
     
    3736// 4. attributes not allowed in parenthesis of declarator
    3837//
    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.
     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.
    4443
    4544%{
     
    250249//************************* Namespace Management ********************************
    251250
    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.
     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.
    280277
    281278push:
     
    294291
    295292constant:
    296                 // ENUMERATIONconstant is not included here; it is treated as a variable with type
    297                 // "enumeration constant".
     293                // ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant".
    298294        INTEGERconstant                                                         { $$ = new ConstantNode( ConstantNode::Integer, $1 ); }
    299295        | FLOATINGconstant                                                      { $$ = new ConstantNode( ConstantNode::Float, $1 ); }
     
    330326primary_expression:
    331327        IDENTIFIER                                                                                      // typedef name cannot be used as a variable name
    332                 { $$ = new VarRefNode($1); }
     328                { $$ = new VarRefNode( $1 ); }
    333329        | zero_one
    334                 { $$ = new VarRefNode($1); }
     330                { $$ = new VarRefNode( $1 ); }
    335331        | constant
    336332                { $$ = $1; }
     
    340336                { $$ = $2; }
    341337        | '(' compound_statement ')'                                            // GCC, lambda expression
    342                 { $$ = new ValofExprNode($2); }
     338                { $$ = new ValofExprNode( $2 ); }
    343339        ;
    344340
     
    346342        primary_expression
    347343        | postfix_expression '[' push assignment_expression pop ']'
    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); }
     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 ); }
    353349        | postfix_expression '(' argument_expression_list ')'
    354                 { $$ = new CompositeExprNode($1, $3); }
     350                { $$ = new CompositeExprNode( $1, $3 ); }
    355351        | postfix_expression '.' no_attr_identifier
    356                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::FieldSel), $1, new VarRefNode($3)); }
     352                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), $1, new VarRefNode( $3 )); }
    357353        | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
    358354        | postfix_expression ARROW no_attr_identifier
    359                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::PFieldSel), $1, new VarRefNode($3)); }
     355                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), $1, new VarRefNode( $3 )); }
    360356        | postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector
    361357        | postfix_expression ICR
    362                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::IncrPost), $1); }
     358                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), $1 ); }
    363359        | postfix_expression DECR
    364                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::DecrPost), $1); }
     360                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), $1 ); }
    365361                // GCC has priority: cast_expression
    366362        | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99
     
    371367        argument_expression
    372368        | argument_expression_list ',' argument_expression
    373                 { $$ = (ExpressionNode *)($1->set_link($3)); }
     369                { $$ = (ExpressionNode *)( $1->set_link( $3 )); }
    374370        ;
    375371
     
    379375        | assignment_expression
    380376        | no_attr_identifier ':' assignment_expression
    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.
     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.
    385381        | '[' push assignment_expression pop ']' ':' assignment_expression
    386                 { $$ = $7->set_asArgName($3); }
     382                { $$ = $7->set_asArgName( $3 ); }
    387383        | '[' push assignment_expression ',' tuple_expression_list pop ']' ':' assignment_expression
    388384                { $$ = $9->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)$3->set_link( flattenCommas( $5 )))); }
     
    398394                { $$ = new VarRefNode( $1 ); }
    399395        | no_attr_identifier '.' field
    400                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::FieldSel), new VarRefNode( $1 ), $3); }
     396                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $3 ); }
    401397        | no_attr_identifier '.' '[' push field_list pop ']'
    402                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::FieldSel), new VarRefNode( $1 ), $5); }
     398                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $5 ); }
    403399        | no_attr_identifier ARROW field
    404                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::PFieldSel), new VarRefNode( $1 ), $3); }
     400                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( $1 ), $3 ); }
    405401        | no_attr_identifier ARROW '[' push field_list pop ']'
    406                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::PFieldSel), new VarRefNode( $1 ), $5); }
     402                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( $1 ), $5 ); }
    407403        ;
    408404
     
    410406        postfix_expression
    411407        | ICR unary_expression
    412                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Incr), $2); }
     408                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), $2 ); }
    413409        | DECR unary_expression
    414                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Decr), $2); }
     410                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), $2 ); }
    415411        | EXTENSION cast_expression                                                     // GCC
    416412                { $$ = $2; }
    417413        | unary_operator cast_expression
    418                 { $$ = new CompositeExprNode($1, $2); }
     414                { $$ = new CompositeExprNode( $1, $2 ); }
    419415        | '!' cast_expression
    420                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Neg), $2); }
     416                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), $2 ); }
    421417        | '*' cast_expression                                                           // CFA
    422                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::PointTo), $2); }
     418                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), $2 ); }
    423419                // '*' is is separated from unary_operator because of shift/reduce conflict in:
    424420                //              { * X; } // dereference X
     
    426422                // '&' must be moved here if C++ reference variables are supported.
    427423        | SIZEOF unary_expression
    428                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::SizeOf), $2); }
     424                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), $2 ); }
    429425        | SIZEOF '(' type_name_no_function ')'
    430                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::SizeOf), new TypeValueNode($3)); }
     426                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( $3 )); }
    431427        | ATTR_IDENTIFIER
    432                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Attr), new VarRefNode($1)); }
     428                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 )); }
    433429        | ATTR_IDENTIFIER '(' type_name ')'
    434                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Attr), new VarRefNode($1), new TypeValueNode($3)); }
     430                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), new TypeValueNode( $3 )); }
    435431        | ATTR_IDENTIFIER '(' argument_expression ')'
    436                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Attr), new VarRefNode($1), $3); }
     432                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), $3 ); }
    437433        | ALIGNOF unary_expression                                                      // GCC, variable alignment
    438                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::AlignOf), $2); }
     434                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), $2 ); }
    439435        | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
    440                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::AlignOf), new TypeValueNode($3)); }
     436                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 )); }
    441437        | ANDAND no_attr_identifier                                                     // GCC, address of label
    442                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::LabelAddress), new VarRefNode($2, true)); }
     438                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true )); }
    443439        ;
    444440
    445441unary_operator:
    446         '&'                                                                                     { $$ = new OperatorNode(OperatorNode::AddressOf); }
    447         | '+'                                                                           { $$ = new OperatorNode(OperatorNode::UnPlus); }
    448         | '-'                                                                           { $$ = new OperatorNode(OperatorNode::UnMinus); }
    449         | '~'                                                                           { $$ = new OperatorNode(OperatorNode::BitNeg); }
     442        '&'                                                                                     { $$ = new OperatorNode( OperatorNode::AddressOf ); }
     443        | '+'                                                                           { $$ = new OperatorNode( OperatorNode::UnPlus ); }
     444        | '-'                                                                           { $$ = new OperatorNode( OperatorNode::UnMinus ); }
     445        | '~'                                                                           { $$ = new OperatorNode( OperatorNode::BitNeg ); }
    450446        ;
    451447
     
    453449        unary_expression
    454450        | '(' type_name_no_function ')' cast_expression
    455                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Cast), new TypeValueNode($2), $4); }
     451                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( $2 ), $4 ); }
    456452        | '(' type_name_no_function ')' tuple
    457                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Cast), new TypeValueNode($2), $4); }
     453                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( $2 ), $4 ); }
    458454        ;
    459455
     
    461457        cast_expression
    462458        | multiplicative_expression '*' cast_expression
    463                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Mul),$1,$3); }
     459                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), $1, $3 ); }
    464460        | multiplicative_expression '/' cast_expression
    465                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Div),$1,$3); }
     461                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), $1, $3 ); }
    466462        | multiplicative_expression '%' cast_expression
    467                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Mod),$1,$3); }
     463                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), $1, $3 ); }
    468464        ;
    469465
     
    471467        multiplicative_expression
    472468        | additive_expression '+' multiplicative_expression
    473                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Plus),$1,$3); }
     469                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), $1, $3 ); }
    474470        | additive_expression '-' multiplicative_expression
    475                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Minus),$1,$3); }
     471                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), $1, $3 ); }
    476472        ;
    477473
     
    479475        additive_expression
    480476        | shift_expression LS additive_expression
    481                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::LShift),$1,$3); }
     477                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), $1, $3 ); }
    482478        | shift_expression RS additive_expression
    483                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::RShift),$1,$3); }
     479                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), $1, $3 ); }
    484480        ;
    485481
     
    487483        shift_expression
    488484        | relational_expression '<' shift_expression
    489                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::LThan),$1,$3); }
     485                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), $1, $3 ); }
    490486        | relational_expression '>' shift_expression
    491                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::GThan),$1,$3); }
     487                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), $1, $3 ); }
    492488        | relational_expression LE shift_expression
    493                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::LEThan),$1,$3); }
     489                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), $1, $3 ); }
    494490        | relational_expression GE shift_expression
    495                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::GEThan),$1,$3); }
     491                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), $1, $3 ); }
    496492        ;
    497493
     
    499495        relational_expression
    500496        | equality_expression EQ relational_expression
    501                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Eq), $1, $3); }
     497                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), $1, $3 ); }
    502498        | equality_expression NE relational_expression
    503                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Neq), $1, $3); }
     499                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), $1, $3 ); }
    504500        ;
    505501
     
    507503        equality_expression
    508504        | AND_expression '&' equality_expression
    509                 { $$ =new CompositeExprNode(new OperatorNode(OperatorNode::BitAnd), $1, $3); }
     505                { $$ =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), $1, $3 ); }
    510506        ;
    511507
     
    513509        AND_expression
    514510        | exclusive_OR_expression '^' AND_expression
    515                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Xor), $1, $3); }
     511                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), $1, $3 ); }
    516512        ;
    517513
     
    519515        exclusive_OR_expression
    520516        | inclusive_OR_expression '|' exclusive_OR_expression
    521                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::BitOr), $1, $3); }
     517                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), $1, $3 ); }
    522518        ;
    523519
     
    525521        inclusive_OR_expression
    526522        | logical_AND_expression ANDAND inclusive_OR_expression
    527                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::And), $1, $3); }
     523                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::And ), $1, $3 ); }
    528524        ;
    529525
     
    531527        logical_AND_expression
    532528        | logical_OR_expression OROR logical_AND_expression
    533                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Or), $1, $3); }
     529                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), $1, $3 ); }
    534530        ;
    535531
     
    537533        logical_OR_expression
    538534        | logical_OR_expression '?' comma_expression ':' conditional_expression
    539                 { $$ = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*$1, *$3, *$5) ) ); }
     535                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*$1, *$3, *$5 ) ) ); }
    540536        | logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
    541                 { $$=new CompositeExprNode(new OperatorNode(OperatorNode::NCond),$1,$4); }
     537                { $$=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), $1, $4 ); }
    542538        | logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
    543                 { $$ = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*$1, *$3, *$5) ) ); }
     539                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*$1, *$3, *$5 ) ) ); }
    544540        ;
    545541
     
    552548        conditional_expression
    553549        | unary_expression '=' assignment_expression
    554                 { $$ =new CompositeExprNode(new OperatorNode(OperatorNode::Assign), $1, $3); }
     550                { $$ =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $3 ); }
    555551        | unary_expression assignment_operator assignment_expression
    556                 { $$ =new CompositeExprNode($2, $1, $3); }
     552                { $$ =new CompositeExprNode( $2, $1, $3 ); }
    557553        | tuple assignment_opt                                                          // CFA, tuple expression
    558                 { $$ = ($2 == 0) ? $1 : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $2 ); }
     554                { $$ = ( $2 == 0 ) ? $1 : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $2 ); }
    559555        ;
    560556
     
    566562
    567563tuple:                                                                                                  // CFA, tuple
    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
     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
    570566        '[' push pop ']'
    571567                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
     
    585581
    586582assignment_operator:
    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); }
     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 ); }
    597593        ;
    598594
    599595comma_expression:
    600596        assignment_expression
    601         | comma_expression ',' assignment_expression    // { $$ = (ExpressionNode *)$1->add_to_list($3); }
    602                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Comma),$1,$3); }
     597        | comma_expression ',' assignment_expression    // { $$ = (ExpressionNode *)$1->add_to_list( $3 ); }
     598                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), $1, $3 ); }
    603599        ;
    604600
     
    624620labeled_statement:
    625621        no_attr_identifier ':' attribute_list_opt statement
    626                 { $$ = $4->add_label($1);}
     622                { $$ = $4->add_label( $1 );}
    627623        ;
    628624
     
    631627                { $$ = new CompoundStmtNode( (StatementNode *)0 ); }
    632628        | '{'
    633                 // Two scopes are necessary because the block itself has a scope, but every declaration within the
    634                 // block also requires its own scope
     629                // Two scopes are necessary because the block itself has a scope, but every declaration within the block also
     630                // requires its own scope
    635631          push push
    636632          label_declaration_opt                                                         // GCC, local labels
     
    642638        block_item
    643639        | block_item_list push block_item
    644                 { if ($1 != 0) { $1->set_link($3); $$ = $1; } }
     640                { if ( $1 != 0 ) { $1->set_link( $3 ); $$ = $1; } }
    645641        ;
    646642
     
    658654        statement
    659655        | statement_list statement
    660                 { if ($1 != 0) { $1->set_link($2); $$ = $1; } }
     656                { if ( $1 != 0 ) { $1->set_link( $2 ); $$ = $1; } }
    661657        ;
    662658
    663659expression_statement:
    664660        comma_expression_opt ';'
    665                 { $$ = new StatementNode(StatementNode::Exp, $1, 0); }
     661                { $$ = new StatementNode( StatementNode::Exp, $1, 0 ); }
    666662        ;
    667663
     
    669665        IF '(' comma_expression ')' statement                           %prec THEN
    670666                // explicitly deal with the shift/reduce conflict on if/else
    671                 { $$ = new StatementNode(StatementNode::If, $3, $5); }
     667                { $$ = new StatementNode( StatementNode::If, $3, $5 ); }
    672668        | IF '(' comma_expression ')' statement ELSE statement
    673                 { $$ = new StatementNode(StatementNode::If, $3, (StatementNode *)mkList((*$5, *$7)) ); }
     669                { $$ = new StatementNode( StatementNode::If, $3, (StatementNode *)mkList((*$5, *$7 )) ); }
    674670        | SWITCH '(' comma_expression ')' case_clause           // CFA
    675                 { $$ = new StatementNode(StatementNode::Switch, $3, $5); }
     671                { $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
    676672        | SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA
    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.
     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.
    682677        | CHOOSE '(' comma_expression ')' case_clause           // CFA
    683                 { $$ = new StatementNode(StatementNode::Choose, $3, $5); }
     678                { $$ = new StatementNode( StatementNode::Choose, $3, $5 ); }
    684679        | CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA
    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.
     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.
    690685
    691686case_value:                                                                                             // CFA
    692687        constant_expression                                                     { $$ = $1; }
    693688        | constant_expression ELLIPSIS constant_expression      // GCC, subrange
    694                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Range),$1,$3); }
     689                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $1, $3 ); }
    695690        | subrange                                                                                      // CFA, subrange
    696691        ;
     
    699694        case_value
    700695        | case_value_list ',' case_value
    701                 { $$ = new CompositeExprNode(new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents($1))->set_link($3) ); }
     696                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( $1 ))->set_link( $3 ) ); }
    702697        ;
    703698
    704699case_label:                                                                                             // CFA
    705         CASE case_value_list ':'                                        { $$ = new StatementNode(StatementNode::Case, $2, 0); }
    706         | DEFAULT ':'                                                           { $$ = new StatementNode(StatementNode::Default); }
     700        CASE case_value_list ':'                                        { $$ = new StatementNode( StatementNode::Case, $2, 0 ); }
     701        | DEFAULT ':'                                                           { $$ = new StatementNode( StatementNode::Default ); }
    707702                // A semantic check is required to ensure only one default clause per switch/choose statement.
    708703        ;
     
    710705case_label_list:                                                                                // CFA
    711706        case_label
    712         | case_label_list case_label                            { $$ = (StatementNode *)($1->set_link($2)); }
     707        | case_label_list case_label                            { $$ = (StatementNode *)( $1->set_link( $2 )); }
    713708        ;
    714709
    715710case_clause:                                                                                    // CFA
    716         case_label_list statement                                       { $$ = $1->append_last_case($2); }
     711        case_label_list statement                                       { $$ = $1->append_last_case( $2 ); }
    717712        ;
    718713
     
    725720switch_clause_list:                                                                             // CFA
    726721        case_label_list statement_list
    727                 { $$ = $1->append_last_case($2); }
     722                { $$ = $1->append_last_case( $2 ); }
    728723        | switch_clause_list case_label_list statement_list
    729                 { $$ = (StatementNode *)($1->set_link($2->append_last_case($3))); }
     724                { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
    730725        ;
    731726
     
    738733choose_clause_list:                                                                             // CFA
    739734        case_label_list fall_through
    740                 { $$ = $1->append_last_case($2); }
     735                { $$ = $1->append_last_case( $2 ); }
    741736        | case_label_list statement_list fall_through_opt
    742                 { $$ = $1->append_last_case((StatementNode *)mkList((*$2,*$3))); }
     737                { $$ = $1->append_last_case((StatementNode *)mkList((*$2,*$3 ))); }
    743738        | choose_clause_list case_label_list fall_through
    744                 { $$ = (StatementNode *)($1->set_link($2->append_last_case($3))); }
     739                { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
    745740        | choose_clause_list case_label_list statement_list fall_through_opt
    746                 { $$ = (StatementNode *)($1->set_link($2->append_last_case((StatementNode *)mkList((*$3,*$4))))); }
     741                { $$ = (StatementNode *)( $1->set_link( $2->append_last_case((StatementNode *)mkList((*$3,*$4 ))))); }
    747742        ;
    748743
     
    754749
    755750fall_through:                                                                                   // CFA
    756         FALLTHRU                                                                        { $$ = new StatementNode(StatementNode::Fallthru, 0, 0); }
    757         | FALLTHRU ';'                                                          { $$ = new StatementNode(StatementNode::Fallthru, 0, 0); }
     751        FALLTHRU                                                                        { $$ = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
     752        | FALLTHRU ';'                                                          { $$ = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
    758753        ;
    759754
    760755iteration_statement:
    761756        WHILE '(' comma_expression ')' statement
    762                 { $$ = new StatementNode(StatementNode::While, $3, $5); }
     757                { $$ = new StatementNode( StatementNode::While, $3, $5 ); }
    763758        | DO statement WHILE '(' comma_expression ')' ';'
    764                 { $$ = new StatementNode(StatementNode::Do, $5, $2); }
     759                { $$ = new StatementNode( StatementNode::Do, $5, $2 ); }
    765760        | FOR '(' push for_control_expression ')' statement
    766                 { $$ = new StatementNode(StatementNode::For, $4, $6); }
     761                { $$ = new StatementNode( StatementNode::For, $4, $6 ); }
    767762        ;
    768763
    769764for_control_expression:
    770765        comma_expression_opt pop ';' comma_expression_opt ';' comma_expression_opt
    771                 { $$ = new ForCtlExprNode($1, $4, $6); }
     766                { $$ = new ForCtlExprNode( $1, $4, $6 ); }
    772767        | declaration comma_expression_opt ';' comma_expression_opt // C99
    773                 { $$ = new ForCtlExprNode($1, $2, $4); }
     768                { $$ = new ForCtlExprNode( $1, $2, $4 ); }
    774769        ;
    775770
    776771jump_statement:
    777772        GOTO no_attr_identifier ';'
    778                 { $$ = new StatementNode(StatementNode::Goto, $2); }
     773                { $$ = new StatementNode( StatementNode::Goto, $2 ); }
    779774        | GOTO '*' comma_expression ';'                                         // GCC, computed goto
    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); }
     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 ); }
    783778        | CONTINUE ';'
    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); }
     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 ); }
    787781        | CONTINUE no_attr_identifier ';'                                       // CFA, multi-level continue
    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); }
     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 ); }
    791785        | BREAK ';'
    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); }
     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 ); }
    795788        | BREAK no_attr_identifier ';'                                          // CFA, multi-level exit
    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 ); }
     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 ); }
    799792        | RETURN comma_expression_opt ';'
    800                 { $$ = new StatementNode(StatementNode::Return, $2, 0); }
     793                { $$ = new StatementNode( StatementNode::Return, $2, 0 ); }
    801794        | THROW assignment_expression ';'
    802                 { $$ = new StatementNode(StatementNode::Throw, $2, 0); }
     795                { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    803796        | THROW ';'
    804                 { $$ = new StatementNode(StatementNode::Throw, 0, 0); }
     797                { $$ = new StatementNode( StatementNode::Throw, 0, 0 ); }
    805798        ;
    806799
    807800exception_statement:
    808801        TRY compound_statement handler_list
    809                 { $$ = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3)))); }
     802                { $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }
    810803        | TRY compound_statement finally_clause
    811                 { $$ = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3)))); }
     804                { $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }
    812805        | TRY compound_statement handler_list finally_clause
    813806                {
    814                         $3->set_link($4);
    815                         $$ = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3))));
     807                        $3->set_link( $4 );
     808                        $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 ))));
    816809                }
    817810        ;
     
    820813                // There must be at least one catch clause
    821814        handler_clause
    822                 // ISO/IEC 9899:1999 Section 15.3(6) If present, a "..." handler shall be the last handler for its try
    823                 // block.
     815                // ISO/IEC 9899:1999 Section 15.3(6 ) If present, a "..." handler shall be the last handler for its try block.
    824816        | CATCH '(' ELLIPSIS ')' compound_statement
    825817                { $$ = StatementNode::newCatchStmt( 0, $5, true ); }
     
    830822handler_clause:
    831823        CATCH '(' push push exception_declaration pop ')' compound_statement pop
    832                 { $$ = StatementNode::newCatchStmt($5, $8); }
     824                { $$ = StatementNode::newCatchStmt( $5, $8 ); }
    833825        | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
    834                 { $$ = $1->set_link( StatementNode::newCatchStmt($6, $9) ); }
     826                { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
    835827        ;
    836828
     
    838830        FINALLY compound_statement
    839831                {
    840                         $$ = new StatementNode(StatementNode::Finally, 0, $2);
     832                        $$ = new StatementNode( StatementNode::Finally, 0, $2 );
    841833                        std::cout << "Just created a finally node" << std::endl;
    842834                }
     
    867859asm_statement:
    868860        ASM type_qualifier_list_opt '(' constant_expression ')' ';'
    869                 { $$ = new StatementNode(StatementNode::Asm, 0, 0); }
     861                { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
    870862        | ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ')' ';' // remaining GCC
    871                 { $$ = new StatementNode(StatementNode::Asm, 0, 0); }
     863                { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
    872864        | ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ':' asm_operands_opt ')' ';'
    873                 { $$ = new StatementNode(StatementNode::Asm, 0, 0); }
     865                { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
    874866        | ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list ')' ';'
    875                 { $$ = new StatementNode(StatementNode::Asm, 0, 0); }
     867                { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
    876868        ;
    877869
     
    941933        ;
    942934
    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.
     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.
    950941//
    951942//                      CFA                                     C
     
    968959                }
    969960        | declaration_qualifier_list new_variable_specifier initializer_opt
    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.
     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.
    972963                {
    973964                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    982973
    983974new_variable_specifier:                                                                 // CFA
    984                 // A semantic check is required to ensure asm_name only appears on declarations with implicit or
    985                 // explicit static storage-class
     975                // A semantic check is required to ensure asm_name only appears on declarations with implicit or explicit static
     976                // storage-class
    986977        new_abstract_declarator_no_tuple identifier_or_typedef_name asm_name_opt
    987978                {
     
    10321023        '[' push pop ']' identifier '(' push new_parameter_type_list_opt pop ')'
    10331024                {
    1034                         typedefTable.setNextIdentifier( *($5) );
     1025                        typedefTable.setNextIdentifier( *( $5 ) );
    10351026                        $$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
    10361027                }
    10371028        | '[' push pop ']' TYPEDEFname '(' push new_parameter_type_list_opt pop ')'
    10381029                {
    1039                         typedefTable.setNextIdentifier( *($5) );
     1030                        typedefTable.setNextIdentifier( *( $5 ) );
    10401031                        $$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
    10411032                }
     
    10451036                //   '[' ']' type_specifier
    10461037                //
    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.
     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.
    10501040        | new_abstract_tuple identifier_or_typedef_name '(' push new_parameter_type_list_opt pop ')'
    1051                 // To obtain LR(1), this rule must be factored out from function return type (see
    1052                 //   new_abstract_declarator).
     1041                // To obtain LR(1 ), this rule must be factored out from function return type (see new_abstract_declarator).
    10531042                {
    10541043                        $$ = DeclarationNode::newFunction( $2, $1, $5, 0, true );
     
    10641053                { $$ = DeclarationNode::newTuple( $3 ); }
    10651054        | '[' push new_parameter_list pop ',' push new_abstract_parameter_list pop ']'
    1066                 // To obtain LR(1), the last new_abstract_parameter_list is added into this flattened rule to
    1067                 // lookahead to the ']'.
     1055                // To obtain LR(1 ), the last new_abstract_parameter_list is added into this flattened rule to lookahead to the
     1056                // ']'.
    10681057                { $$ = DeclarationNode::newTuple( $3->appendList( $7 ) ); }
    10691058        ;
     
    10721061        TYPEDEF new_variable_specifier
    10731062                {
    1074                         typedefTable.addToEnclosingScope( TypedefTable::TD);
     1063                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    10751064                        $$ = $2->addTypedef();
    10761065                }
    10771066        | TYPEDEF new_function_specifier
    10781067                {
    1079                         typedefTable.addToEnclosingScope( TypedefTable::TD);
     1068                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    10801069                        $$ = $2->addTypedef();
    10811070                }
    10821071        | new_typedef_declaration pop ',' push no_attr_identifier
    10831072                {
    1084                         typedefTable.addToEnclosingScope( *$5, TypedefTable::TD);
     1073                        typedefTable.addToEnclosingScope( *$5, TypedefTable::TD );
    10851074                        $$ = $1->appendList( $1->cloneType( $5 ) );
    10861075                }
    10871076        ;
    10881077
    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.
     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.
    10921080
    10931081typedef_declaration:
    10941082        TYPEDEF type_specifier declarator
    10951083                {
    1096                         typedefTable.addToEnclosingScope( TypedefTable::TD);
     1084                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    10971085                        $$ = $3->addType( $2 )->addTypedef();
    10981086                }
    10991087        | typedef_declaration pop ',' push declarator
    11001088                {
    1101                         typedefTable.addToEnclosingScope( TypedefTable::TD);
     1089                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    11021090                        $$ = $1->appendList( $1->cloneBaseType( $5 )->addTypedef() );
    11031091                }
    1104         | type_qualifier_list TYPEDEF type_specifier declarator // remaining OBSOLESCENT (see 2)
    1105                 {
    1106                         typedefTable.addToEnclosingScope( TypedefTable::TD);
     1092        | type_qualifier_list TYPEDEF type_specifier declarator // remaining OBSOLESCENT (see 2 )
     1093                {
     1094                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    11071095                        $$ = $4->addType( $3 )->addQualifiers( $1 )->addTypedef();
    11081096                }
    11091097        | type_specifier TYPEDEF declarator
    11101098                {
    1111                         typedefTable.addToEnclosingScope( TypedefTable::TD);
     1099                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    11121100                        $$ = $3->addType( $1 )->addTypedef();
    11131101                }
    11141102        | type_specifier TYPEDEF type_qualifier_list declarator
    11151103                {
    1116                         typedefTable.addToEnclosingScope( TypedefTable::TD);
    1117                         $$ = $4->addQualifiers($1)->addTypedef()->addType($1);
     1104                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     1105                        $$ = $4->addQualifiers( $1 )->addTypedef()->addType( $1 );
    11181106                }
    11191107        ;
     
    11221110        TYPEDEF no_attr_identifier '=' assignment_expression
    11231111                {
    1124                         typedefTable.addToEnclosingScope(*($2), TypedefTable::TD);
     1112                        typedefTable.addToEnclosingScope( *$2, TypedefTable::TD );
    11251113                        $$ = DeclarationNode::newName( 0 ); // XXX
    11261114                }
    11271115        | typedef_expression pop ',' push no_attr_identifier '=' assignment_expression
    11281116                {
    1129                         typedefTable.addToEnclosingScope(*($5), TypedefTable::TD);
     1117                        typedefTable.addToEnclosingScope( *$5, TypedefTable::TD );
    11301118                        $$ = DeclarationNode::newName( 0 ); // XXX
    11311119                }
     
    11401128
    11411129declaring_list:
    1142                 // A semantic check is required to ensure asm_name only appears on declarations with implicit or
    1143                 // explicit static storage-class
     1130                // A semantic check is required to ensure asm_name only appears on declarations with implicit or explicit static
     1131                // storage-class
    11441132        declaration_specifier declarator asm_name_opt initializer_opt
    11451133                {
    11461134                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1147                         $$ = ($2->addType( $1 ))->addInitializer($4);
     1135                        $$ = ( $2->addType( $1 ))->addInitializer( $4 );
    11481136                }
    11491137        | declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
    11501138                {
    11511139                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1152                         $$ = $1->appendList( $1->cloneBaseType( $4->addInitializer($6) ) );
     1140                        $$ = $1->appendList( $1->cloneBaseType( $4->addInitializer( $6 ) ) );
    11531141                }
    11541142        ;
     
    11751163
    11761164type_qualifier_list:
    1177                 // A semantic check is necessary to ensure a type qualifier is appropriate for the kind of
    1178                 // declaration.
     1165                // A semantic check is necessary to ensure a type qualifier is appropriate for the kind of declaration.
    11791166                //
    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.
     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.
    11831170        type_qualifier
    11841171        | type_qualifier_list type_qualifier
     
    12161203declaration_qualifier_list:
    12171204        storage_class_list
    1218         | type_qualifier_list storage_class_list                        // remaining OBSOLESCENT (see 2)
     1205        | type_qualifier_list storage_class_list                        // remaining OBSOLESCENT (see 2 )
    12191206                { $$ = $1->addQualifiers( $2 ); }
    12201207        | declaration_qualifier_list type_qualifier_list storage_class_list
     
    12231210
    12241211storage_class_list:
    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.
     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.
    12271214                //
    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.
     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.
    12301217        storage_class
    12311218        | storage_class_list storage_class
     
    13811368        | aggregate_key '(' push type_parameter_list pop ')' '(' type_name_list ')' '{' field_declaration_list '}' // CFA
    13821369                { $$ = DeclarationNode::newAggregate( $1, 0, $4, $8, $11 ); }
     1370        | aggregate_key TYPEGENname '(' type_name_list ')' // CFA
     1371                {}
    13831372        | aggregate_key '(' push type_name_list pop ')' no_attr_identifier_or_typedef_name // CFA
    13841373                // push and pop are only to prevent S/R conflicts
     
    15011490
    15021491new_parameter_list:                                                                             // CFA
    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 ']'.
     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 ']'.
    15061494        new_parameter_declaration
    15071495        | new_abstract_parameter_list pop ',' push new_parameter_declaration
     
    15401528        ;
    15411529
    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.
     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.
    15451532
    15461533new_parameter_declaration:                                                              // CFA, new & old style parameter declaration
     
    15701557                {
    15711558                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1572                         $$ = $2->addType( $1 )->addInitializer( new InitializerNode($3) );
     1559                        $$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
    15731560                }
    15741561        | declaration_specifier typedef_parameter_redeclarator assignment_opt
    15751562                {
    15761563                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1577                         $$ = $2->addType( $1 )->addInitializer( new InitializerNode($3) );
     1564                        $$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
    15781565                }
    15791566        ;
     
    15861573
    15871574// ISO/IEC 9899:1999 Section 6.9.1(6) : "An identifier declared as a typedef name shall not be redeclared as a
    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.
     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.
    15901577
    15911578identifier_list:                                                                                // K&R-style parameter list => no types
     
    16111598        no_attr_identifier
    16121599        | TYPEDEFname
    1613         | TYPEGENname
     1600        //      | TYPEGENname
    16141601        ;
    16151602
     
    16361623
    16371624initializer:
    1638         assignment_expression                                           { $$ = new InitializerNode($1); }
    1639         | '{' initializer_list comma_opt '}'            { $$ = new InitializerNode($2, true); }
     1625        assignment_expression                                           { $$ = new InitializerNode( $1 ); }
     1626        | '{' initializer_list comma_opt '}'            { $$ = new InitializerNode( $2, true ); }
    16401627        ;
    16411628
     
    16431630        initializer
    16441631        | designation initializer                                       { $$ = $2->set_designators( $1 ); }
    1645         | initializer_list ',' initializer                      { $$ = (InitializerNode *)( $1->set_link($3) ); }
     1632        | initializer_list ',' initializer                      { $$ = (InitializerNode *)( $1->set_link( $3 ) ); }
    16461633        | initializer_list ',' designation initializer
    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:
     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:
    16521639//
    16531640//              int x[10] = { [1] = 3 };
    16541641//
    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
     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
    16591646
    16601647designation:
     
    16661653designator_list:                                                                                // C99
    16671654        designator
    1668         | designator_list designator                                    { $$ = (ExpressionNode *)($1->set_link( $2 )); }
     1655        | designator_list designator                                    { $$ = (ExpressionNode *)( $1->set_link( $2 )); }
     1656        //| designator_list designator                                          { $$ = new CompositeExprNode( $1, $2 ); }
    16691657        ;
    16701658
     
    16731661                { $$ = new VarRefNode( $2 ); }
    16741662        | '[' push assignment_expression pop ']'                        // C99, single array element
    1675                 // assignment_expression used instead of constant_expression because of shift/reduce conflicts with
    1676                 // tuple.
     1663                // assignment_expression used instead of constant_expression because of shift/reduce conflicts with tuple.
    16771664                { $$ = $3; }
    16781665        | '[' push subrange pop ']'                                                     // CFA, multiple array elements
    16791666                { $$ = $3; }
    16801667        | '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements
    1681                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Range), $3, $5); }
     1668                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $3, $5 ); }
    16821669        | '.' '[' push field_list pop ']'                                       // CFA, tuple field selector
    16831670                { $$ = $4; }
    16841671        ;
    16851672
    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:
     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:
    16881675//
    16891676// Overloading: function, data, and operator identifiers may be overloaded.
    16901677//
    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.
     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.
    16981684//
    16991685// Specifications and Assertions: Specifications are collections of declarations parameterized by one or more
    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.
     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.
    17041690
    17051691typegen_declaration_specifier:                                                  // CFA
     
    17301716type_parameter:                                                                                 // CFA
    17311717        type_class no_attr_identifier_or_typedef_name
    1732                 { typedefTable.addToEnclosingScope(*($2), TypedefTable::TD); }
     1718                { typedefTable.addToEnclosingScope(*( $2 ), TypedefTable::TD ); }
    17331719          assertion_list_opt
    17341720                { $$ = DeclarationNode::newTypeParam( $1, $2 )->addAssertions( $4 ); }
     
    17551741        '|' no_attr_identifier_or_typedef_name '(' type_name_list ')'
    17561742                {
    1757                         typedefTable.openContext( *($2) );
     1743                        typedefTable.openContext( *( $2 ) );
    17581744                        $$ = DeclarationNode::newContextUse( $2, $4 );
    17591745                }
     
    17691755        | assignment_expression
    17701756        | type_name_list ',' type_name
    1771                 { $$ = (ExpressionNode *)($1->set_link(new TypeValueNode( $3 ))); }
     1757                { $$ = (ExpressionNode *)( $1->set_link( new TypeValueNode( $3 ))); }
    17721758        | type_name_list ',' assignment_expression
    1773                 { $$ = (ExpressionNode *)($1->set_link($3)); }
     1759                { $$ = (ExpressionNode *)( $1->set_link( $3 )); }
    17741760        ;
    17751761
     
    17931779        no_attr_identifier_or_typedef_name
    17941780                {
    1795                         typedefTable.addToEnclosingScope(*($1), TypedefTable::TD);
     1781                        typedefTable.addToEnclosingScope( *$1, TypedefTable::TD );
    17961782                        $$ = DeclarationNode::newTypeDecl( $1, 0 );
    17971783                }
    17981784        | no_01_identifier_or_typedef_name '(' push type_parameter_list pop ')'
    17991785                {
    1800                         typedefTable.addToEnclosingScope(*($1), TypedefTable::TG);
     1786                        typedefTable.addToEnclosingScope( *$1, TypedefTable::TG );
    18011787                        $$ = DeclarationNode::newTypeDecl( $1, $4 );
    18021788                }
     
    18061792        CONTEXT no_attr_identifier_or_typedef_name '(' push type_parameter_list pop ')' '{' '}'
    18071793                {
    1808                         typedefTable.addToEnclosingScope(*($2), TypedefTable::ID );
     1794                        typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
    18091795                        $$ = DeclarationNode::newContext( $2, $5, 0 );
    18101796                }
    18111797        | CONTEXT no_attr_identifier_or_typedef_name '(' push type_parameter_list pop ')' '{'
    18121798                {
    1813                         typedefTable.enterContext( *($2) );
     1799                        typedefTable.enterContext( *$2 );
    18141800                        typedefTable.enterScope();
    18151801                }
     
    18171803                {
    18181804                        typedefTable.leaveContext();
    1819                         typedefTable.addToEnclosingScope(*($2), TypedefTable::ID );
     1805                        typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
    18201806                        $$ = DeclarationNode::newContext( $2, $5, $10 );
    18211807                }
     
    18461832        | new_context_declaring_list pop ',' push identifier_or_typedef_name
    18471833                {
    1848                         typedefTable.addToEnclosingScope2( *($5), TypedefTable::ID );
     1834                        typedefTable.addToEnclosingScope2( *$5, TypedefTable::ID );
    18491835                        $$ = $1->appendList( $1->cloneType( $5 ) );
    18501836                }
     
    18821868        external_definition
    18831869        | external_definition_list push external_definition
    1884                 { $$ = ($1 != NULL ) ? $1->appendList( $3 ) : $3; }
     1870                { $$ = ( $1 != NULL ) ? $1->appendList( $3 ) : $3; }
    18851871        ;
    18861872
     
    19141900        function_definition
    19151901
    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)
     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)
    19211906        | function_declarator compound_statement
    19221907                {
     
    20021987subrange:
    20031988        constant_expression '~' constant_expression                     // CFA, integer subrange
    2004                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Range), $1, $3); }
     1989                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $1, $3 ); }
    20051990        ;
    20061991
     
    20432028
    20442029// ============================================================================
    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:
     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:
    20482033//
    20492034//              int (*f())[10] { ... };
    20502035//              ... (*f())[3] += 1;             // definition mimics usage
    20512036//
    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.
     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.
    20552039// ============================================================================
    20562040
    20572041// ----------------------------------------------------------------------------
    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.:
     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.:
    20602044//
    20612045//              valid declaration               invalid definition
     
    20662050//              int (*f)(int);                  int (*f)(int) {}
    20672051//
    2068 // To preclude this syntactic anomaly requires separating the grammar rules for variable and function
    2069 // declarators, hence variable_declarator and function_declarator.
     2052// To preclude this syntactic anomaly requires separating the grammar rules for variable and function declarators, hence
     2053// variable_declarator and function_declarator.
    20702054// ----------------------------------------------------------------------------
    20712055
    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.
     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.
    20742058
    20752059variable_declarator:
     
    20832067        identifier
    20842068                {
    2085                         typedefTable.setNextIdentifier( *($1) );
     2069                        typedefTable.setNextIdentifier( *$1 );
    20862070                        $$ = DeclarationNode::newName( $1 );
    20872071                }
     
    21172101        ;
    21182102
    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.
     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.
    21232107
    21242108function_declarator:
     
    21552139        ;
    21562140
    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.
     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.
    21602144
    21612145old_function_declarator:
     
    21992183//              }
    22002184//
    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.
     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.
    22032187
    22042188typedef_redeclarator:
     
    22122196        TYPEDEFname
    22132197                {
    2214                         typedefTable.setNextIdentifier( *($1) );
     2198                        typedefTable.setNextIdentifier( *( $1 ) );
    22152199                        $$ = DeclarationNode::newName( $1 );
    22162200                }
     
    22482232        ;
    22492233
    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.
     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.
    22542238
    22552239identifier_parameter_declarator:
     
    22892273        ;
    22902274
    2291 // This pattern parses a declaration for a parameter variable or function prototype that is redefining a
    2292 // typedef name, e.g.:
     2275// This pattern parses a declaration for a parameter variable or function prototype that is redefining a typedef name,
     2276// e.g.:
    22932277//
    22942278//              typedef int foo;
    22952279//              int f( int foo ); // redefine typedef name in new scope
    22962280//
    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:
     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:
    22992283//
    23002284//              ISO/IEC 9899:1999 Section 6.7.5.3(11) : "In a parameter declaration, a single typedef name in
     
    23102294//              int g( int g1( T g2( int p ) ) );               // see identifier_parameter_declarator
    23112295//
    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.
     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.
    23162300
    23172301typedef_parameter_redeclarator:
     
    23252309        TYPEDEFname
    23262310                {
    2327                         typedefTable.setNextIdentifier( *($1) );
     2311                        typedefTable.setNextIdentifier( *$1 );
    23282312                        $$ = DeclarationNode::newName( $1 );
    23292313                }
     
    23532337        ;
    23542338
    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.:
     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.:
    23572341//
    23582342//              sizeof( int );
    23592343//              sizeof( int [10] );
    23602344//
    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.
     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.
    23632347
    23642348abstract_declarator:
     
    24262410//              int f( int (int) );             // abstract function-prototype parameter; no parameter name specified
    24272411//
    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.
     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.
    24302414
    24312415abstract_parameter_declarator:
     
    24772461// The declaration of an array parameter has additional syntax over arrays in normal variable declarations:
    24782462//
    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."
     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."
    24822465
    24832466array_parameter_1st_dimension:
     
    24982481        ;
    24992482
    2500 // This pattern parses a declaration of an abstract variable, i.e., there is no identifier to which the type
    2501 // applies, e.g.:
     2483// This pattern parses a declaration of an abstract variable, i.e., there is no identifier to which the type applies,
     2484// e.g.:
    25022485//
    25032486//              sizeof( int ); // abstract variable; no identifier name specified
    25042487//
    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.
     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.
    25072490
    25082491variable_abstract_declarator:
     
    25422525        ;
    25432526
    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.
     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.
    25462529
    25472530new_identifier_parameter_declarator_tuple:                              // CFA
     
    25732556
    25742557new_identifier_parameter_array:                                                 // CFA
    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.
     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.
    25772560        '[' push pop ']' type_specifier
    25782561                { $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     
    26112594        ;
    26122595
    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.:
     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.:
    26152598//
    26162599//              [int] f( int );                         // abstract variable parameter; no parameter name specified
     
    26282611//
    26292612// Therefore, it is necessary to look at the token after identifier_or_typedef_name to know when to reduce
    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.
     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.
    26332616
    26342617new_abstract_declarator_tuple:                                                  // CFA
     
    26602643
    26612644new_abstract_array:                                                                             // CFA
    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.
     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.
    26642647        '[' push pop ']' type_specifier
    26652648                { $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     
    26902673        ;
    26912674
    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."
     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."
    26982680//
    26992681// 3) ISO/IEC 9899:1999 Section 6.11.6(1) : "The use of function declarators with empty parentheses (not
    27002682//    prototype-format parameter type declarators) is an obsolescent feature."
    27012683//
    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.
     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.
    27052686
    27062687//************************* MISCELLANEOUS ********************************
     
    27302711
    27312712// Local Variables: //
     2713// mode: c++ //
    27322714// tab-width: 4 //
    2733 // mode: c++ //
    27342715// compile-command: "make install" //
    27352716// End: //
  • src/ResolvExpr/AlternativeFinder.cc

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

    ra1d5d2a rde62360d  
    1010// Created On       : Sun May 17 12:17:01 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 21:50:37 2015
    13 // Update Count     : 23
     12// Last Modified On : Wed Jun 24 15:47:16 2015
     13// Update Count     : 50
    1414//
    1515
     
    4545                virtual void visit( ChooseStmt *switchStmt );
    4646                virtual void visit( CaseStmt *caseStmt );
     47                virtual void visit( BranchStmt *branchStmt );
    4748                virtual void visit( ReturnStmt *returnStmt );
    4849
     
    260261        void Resolver::visit( CaseStmt *caseStmt ) {
    261262                Visitor::visit( caseStmt );
     263        }
     264
     265        void Resolver::visit( BranchStmt *branchStmt ) {
     266                // must resolve the argument for a computed goto
     267                if ( branchStmt->get_type() == BranchStmt::Goto ) { // check for computed goto statement
     268                        if ( NameExpr * arg = dynamic_cast< NameExpr * >( branchStmt->get_computedTarget() ) ) {
     269                                VoidType v = Type::Qualifiers();                // cast to void * for the alternative finder
     270                                PointerType pt( Type::Qualifiers(), v.clone() );
     271                                CastExpr * castExpr = new CastExpr( arg, pt.clone() );
     272                                Expression * newExpr = findSingleExpression( castExpr, *this ); // find best expression
     273                                branchStmt->set_target( newExpr );
     274                        } // if
     275                } // if
    262276        }
    263277
  • src/SymTab/Validate.cc

    ra1d5d2a rde62360d  
    1010// Created On       : Sun May 17 21:50:04 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 08:06:13 2015
    13 // Update Count     : 26
     12// Last Modified On : Sat Jun 13 17:10:29 2015
     13// Update Count     : 29
    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 );
     557                FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true, false );
    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 );
     600                FunctionDecl *assignDecl = new FunctionDecl( "?=?",  functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true, false );
    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 );
     648                FunctionDecl *func = new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::AutoGen, type, stmts, false, false );
    649649                declsToAdd.push_back( func );
    650650        }
  • src/SynTree/CompoundStmt.cc

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

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

    ra1d5d2a rde62360d  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 12 23:55:26 2015
    13 // Update Count     : 24
     12// Last Modified On : Sat Jun 13 09:10:31 2015
     13// Update Count     : 25
    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 );
     103        FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn );
    104104        FunctionDecl( const FunctionDecl &other );
    105105        virtual ~FunctionDecl();
     
    113113        void set_statements( CompoundStmt *newValue ) { statements = newValue; }
    114114        bool get_isInline() const { return isInline; }
    115 //      void set_isInline( bool newValue ) { isInline = newValue; }
     115        bool get_isNoreturn() const { return isNoreturn; }
    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;
     127        bool isInline, isNoreturn;
    128128        std::list< std::string > oldIdents;
    129129        std::list< Declaration* > oldDecls;
  • src/SynTree/FunctionDecl.cc

    ra1d5d2a rde62360d  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 08:12:20 2015
    13 // Update Count     : 14
     12// Last Modified On : Sat Jun 13 09:10:32 2015
     13// Update Count     : 16
    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 )
    24                 : Parent( name, sc, linkage ), type( type ), statements( statements ), isInline( isInline ) {
     23FunctionDecl::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 ) {
    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 ) {
     32        : Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ), isInline( other.isInline ), isNoreturn( other.isNoreturn ) {
    3333}
    3434
     
    6060                os << "inline ";
    6161        } // if
     62        if ( isNoreturn ) {
     63                os << "_Noreturn ";
     64        } // if
    6265        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    6366                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
     
    7073
    7174        if ( ! oldIdents.empty() ) {
    72                 os << string( indent+2, ' ' ) << "with parameter names" << endl;
     75                os << string( indent + 2, ' ' ) << "with parameter names" << endl;
    7376                for ( std::list< std::string >::const_iterator i = oldIdents.begin(); i != oldIdents.end(); ++i ) {
    74                         os << string( indent+4, ' ' ) << *i << endl;
     77                        os << string( indent + 4, ' ' ) << *i << endl;
    7578                } // for
    7679        } // if
    7780
    7881        if ( ! oldDecls.empty() ) {
    79                 os << string( indent+2, ' ' ) << "with parameter declarations" << endl;
    80                 printAll( oldDecls, os, indent+4 );
     82                os << string( indent + 2, ' ' ) << "with parameter declarations" << endl;
     83                printAll( oldDecls, os, indent + 4 );
    8184        } // if
    8285        if ( statements ) {
    83                 os << string( indent+2, ' ' ) << "with body " << endl;
    84                 statements->print( os, indent+4 );
     86                os << string( indent + 2, ' ' ) << "with body " << endl;
     87                statements->print( os, indent + 4 );
    8588        } // if
    8689}
     
    9598        if ( isInline ) {
    9699                os << "inline ";
     100        } // if
     101        if ( isNoreturn ) {
     102                os << "_Noreturn ";
    97103        } // if
    98104        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
  • src/SynTree/Statement.cc

    ra1d5d2a rde62360d  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun  5 07:51:04 2015
    13 // Update Count     : 15
     12// Last Modified On : Tue Jun 23 11:42:09 2015
     13// Update Count     : 21
    1414//
    1515
     
    3030Statement::Statement( std::list<Label> _labels ) : labels(_labels ) {}
    3131
    32 void Statement::print( std::ostream &, int indent ) {}
     32void Statement::print( std::ostream &, int indent ) const {}
    3333
    3434Statement::~Statement() {}
     
    3838ExprStmt::~ExprStmt() {}
    3939
    40 void ExprStmt::print( std::ostream &os, int indent ) {
     40void ExprStmt::print( std::ostream &os, int indent ) const {
    4141        os << string( indent, ' ' ) << "Expression Statement:" << endl;
    4242        expr->print( os, indent + 2 );
     
    5858}
    5959
    60 void BranchStmt::print( std::ostream &os, int indent ) {
     60void BranchStmt::print( std::ostream &os, int indent ) const {
    6161        os << string( indent, ' ' ) << "Branch (" << brType[type] << ")" << endl ;
    6262}
     
    6868}
    6969
    70 void ReturnStmt::print( std::ostream &os, int indent ) {
     70void ReturnStmt::print( std::ostream &os, int indent ) const {
    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 ) {
     81void IfStmt::print( std::ostream &os, int indent ) const {
    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 ) {
     105void SwitchStmt::print( std::ostream &os, int indent ) const {
    106106        os << string( indent, ' ' ) << "Switch on condition: ";
    107107        condition->print( os );
     
    109109
    110110        // branches
    111         std::list<Statement *>::iterator i;
     111        std::list<Statement *>::const_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 ) {
     132void CaseStmt::print( std::ostream &os, int indent ) const {
    133133        os << string( indent, ' ' );
    134134
    135         if ( isDefault())
     135        if ( isDefault() )
    136136                os << "Default ";
    137137        else {
     
    142142        os << endl;
    143143
    144         std::list<Statement *>::iterator i;
     144        std::list<Statement *>::const_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 ) {
     160void ChooseStmt::print( std::ostream &os, int indent ) const {
    161161        os << string( indent, ' ' ) << "Choose on condition: ";
    162162        condition->print( os );
     
    164164
    165165        // branches
    166         std::list<Statement *>::iterator i;
     166        std::list<Statement *>::const_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 ) {
     173void FallthruStmt::print( std::ostream &os, int indent ) const {
    174174        os << string( indent, ' ' ) << "Fall-through statement" << endl;
    175175}
     
    183183}
    184184
    185 void WhileStmt::print( std::ostream &os, int indent ) {
     185void WhileStmt::print( std::ostream &os, int indent ) const {
    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 ) {
     205void ForStmt::print( std::ostream &os, int indent ) const {
    206206        os << string( indent, ' ' ) << "Labels: {";
    207         for (std::list<Label>::iterator it = get_labels().begin(); it != get_labels().end(); ++it) {
     207        for ( std::list<Label>::const_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 ) {
     247void TryStmt::print( std::ostream &os, int indent ) const {
    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         std::list<Statement *>::iterator i;
    255         for ( i = handlers.begin(); i != handlers.end(); i++)
     254        for ( std::list<Statement *>::const_iterator i = handlers.begin(); i != handlers.end(); i++)
    256255                (*i )->print( os, indent + 4 );
    257256
     
    272271}
    273272
    274 void CatchStmt::print( std::ostream &os, int indent ) {
     273void CatchStmt::print( std::ostream &os, int indent ) const {
    275274        os << string( indent, ' ' ) << "Catch Statement" << endl;
    276275
     
    294293}
    295294
    296 void FinallyStmt::print( std::ostream &os, int indent ) {
     295void FinallyStmt::print( std::ostream &os, int indent ) const {
    297296        os << string( indent, ' ' ) << "Finally Statement" << endl;
    298297        os << string( indent + 2, ' ' ) << "with block: " << endl;
     
    304303NullStmt::~NullStmt() {}
    305304
    306 void NullStmt::print( std::ostream &os, int indent ) {
     305void NullStmt::print( std::ostream &os, int indent ) const {
    307306        os << string( indent, ' ' ) << "Null Statement" << endl ;
    308307}
  • src/SynTree/Statement.h

    ra1d5d2a rde62360d  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun  4 14:03:31 2015
    13 // Update Count     : 14
     12// Last Modified On : Tue Jun 23 11:44:27 2015
     13// Update Count     : 20
    1414//
    1515
     
    2828
    2929        std::list<Label> & get_labels() { return labels; }
     30        const std::list<Label> & get_labels() const { return labels; }
    3031
    3132        virtual Statement *clone() const = 0;
    3233        virtual void accept( Visitor &v ) = 0;
    3334        virtual Statement *acceptMutator( Mutator &m ) = 0;
    34         virtual void print( std::ostream &os, int indent = 0 );
     35        virtual void print( std::ostream &os, int indent = 0 ) const;
    3536  protected:
    3637        std::list<Label> labels;
     
    4849        virtual void accept( Visitor &v ) { v.visit( this ); }
    4950        virtual CompoundStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    50         virtual void print( std::ostream &os, int indent = 0 );
     51        virtual void print( std::ostream &os, int indent = 0 ) const;
    5152  private:
    5253        std::list<Statement*> kids;
     
    6465        virtual void accept( Visitor &v ) { v.visit( this ); }
    6566        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    66         virtual void print( std::ostream &os, int indent = 0 );
     67        virtual void print( std::ostream &os, int indent = 0 ) const;
    6768  private:
    6869        Expression *expr;
     
    8485        virtual void accept( Visitor &v ) { v.visit( this ); }
    8586        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    86         virtual void print( std::ostream &os, int indent = 0 );
     87        virtual void print( std::ostream &os, int indent = 0 ) const;
    8788  private:
    8889        Expression *condition;
     
    106107
    107108        virtual SwitchStmt *clone() const { return new SwitchStmt( *this ); }
    108         virtual void print( std::ostream &os, int indent = 0 );
     109        virtual void print( std::ostream &os, int indent = 0 ) const;
    109110  private:
    110111        Expression * condition;
     
    127128
    128129        virtual ChooseStmt *clone() const { return new ChooseStmt( *this ); }
    129         virtual void print( std::ostream &os, int indent = 0 );
     130        virtual void print( std::ostream &os, int indent = 0 ) const;
    130131  private:
    131132        Expression *condition;
     
    141142
    142143        virtual FallthruStmt *clone() const { return new FallthruStmt( *this ); }
    143         virtual void print( std::ostream &os, int indent = 0 );
     144        virtual void print( std::ostream &os, int indent = 0 ) const;
    144145};
    145146
     
    153154                std::list<Statement *> stmts = std::list<Statement *>() );
    154155
    155         bool isDefault() { return _isDefault; }
     156        bool isDefault() const { return _isDefault; }
    156157        void set_default(bool b) { _isDefault = b; }
    157158
     
    166167
    167168        virtual CaseStmt *clone() const { return new CaseStmt( *this ); }
    168         virtual void print( std::ostream &os, int indent = 0 );
     169        virtual void print( std::ostream &os, int indent = 0 ) const;
    169170  private:
    170171        Expression * condition;
     
    189190        virtual void accept( Visitor &v ) { v.visit( this ); }
    190191        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    191         virtual void print( std::ostream &os, int indent = 0 );
     192        virtual void print( std::ostream &os, int indent = 0 ) const;
    192193  private:
    193194        Expression *condition;
     
    214215        virtual void accept( Visitor &v ) { v.visit( this ); }
    215216        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    216         virtual void print( std::ostream &os, int indent = 0 );
     217        virtual void print( std::ostream &os, int indent = 0 ) const;
    217218  private:
    218219        Statement *initialization;
     
    224225class BranchStmt : public Statement {
    225226  public:
    226         enum Type { Goto = 0 , Break, Continue };
     227        enum Type { Goto = 0, Break, Continue };
    227228
    228229        BranchStmt( std::list<Label> labels, Label target, Type ) throw (SemanticError);
     
    243244        virtual void accept( Visitor &v ) { v.visit( this ); }
    244245        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    245         virtual void print( std::ostream &os, int indent = 0 );
     246        virtual void print( std::ostream &os, int indent = 0 ) const;
    246247  private:
    247248        static const char *brType[];
     
    263264        virtual void accept( Visitor &v ) { v.visit( this ); }
    264265        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    265         virtual void print( std::ostream &os, int indent = 0 );
     266        virtual void print( std::ostream &os, int indent = 0 ) const;
    266267  private:
    267268        Expression *expr;
     
    279280        virtual void accept( Visitor &v ) { v.visit( this ); }
    280281        virtual NullStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    281         virtual void print( std::ostream &os, int indent = 0 );
     282        virtual void print( std::ostream &os, int indent = 0 ) const;
    282283       
    283284  private:
     
    300301        virtual void accept( Visitor &v ) { v.visit( this ); }
    301302        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    302         virtual void print( std::ostream &os, int indent = 0 );
     303        virtual void print( std::ostream &os, int indent = 0 ) const;
    303304       
    304305  private:
     
    322323        virtual void accept( Visitor &v ) { v.visit( this ); }
    323324        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    324         virtual void print( std::ostream &os, int indent = 0 );
     325        virtual void print( std::ostream &os, int indent = 0 ) const;
    325326       
    326327  private:
     
    341342        virtual void accept( Visitor &v ) { v.visit( this ); }
    342343        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    343         virtual void print( std::ostream &os, int indent = 0 );
     344        virtual void print( std::ostream &os, int indent = 0 ) const;
    344345  private:
    345346        CompoundStmt *block;
     
    360361        virtual void accept( Visitor &v ) { v.visit( this ); }
    361362        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    362         virtual void print( std::ostream &os, int indent = 0 );
     363        virtual void print( std::ostream &os, int indent = 0 ) const;
    363364  private:
    364365        Declaration *decl;
  • src/driver/cfa.cc

    ra1d5d2a rde62360d  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 30 10:15:00 2015
    13 // Update Count     : 116
     12// Last Modified On : Tue Jun 23 17:47:03 2015
     13// Update Count     : 119
    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
    8788        bool debugging = false;                                                         // -g flag
    8889
     
    152153                                } // if
    153154
    154                                 // C++ specific arguments
     155                                // C specific arguments
    155156
    156157                        } else if ( arg == "-v" ) {
     
    160161                        } else if ( arg == "-g" ) {
    161162                                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
    162167                                args[nargs] = argv[i];                                  // pass the argument along
    163168                                nargs += 1;
     
    296301                args[nargs] = "-Wno-deprecated";
    297302                nargs += 1;
    298                 args[nargs] = "-std=c99";
    299                 nargs += 1;
     303                if ( ! std_flag ) {                                                             // default c99, if none specified
     304                        args[nargs] = "-std=c99";
     305                        nargs += 1;
     306                } // if
    300307                args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
    301308                nargs += 1;
  • src/main.cc

    ra1d5d2a rde62360d  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 12 06:56:40 2015
    13 // Update Count     : 70
     12// Last Modified On : Mon Jun 22 17:02:11 2015
     13// Update Count     : 73
    1414//
    1515
     
    5858bool
    5959        astp = false,
     60        bresolvep = false,
    6061        exprp = false,
    6162        expraltp = false,
    6263        grammarp = false,
    6364        libcfap = false,
     65        nopreludep = false,
     66        protop = false,
     67        parsep = false,
    6468        resolvep = false,                                                                       // used in AlternativeFinder
    6569        symtabp = false,
    66         parsep = false,
    6770        validp = false,
    68         preludep = true,
    69         protop = false,
    70         codegenp = false,
    71         errorp = false;
    72 
    73 enum { Ast, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Validate, };
     71        errorp = false,
     72        codegenp = false;
     73
     74enum { Ast, Bresolver, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Validate, };
    7475
    7576static struct option long_opts[] = {
    7677        { "ast", no_argument, 0, Ast },
     78        { "before-resolver", no_argument, 0, Bresolver },
    7779        { "expr", no_argument, 0, Expr },
    7880        { "expralt", no_argument, 0, ExprAlt },
     
    9799       
    98100        int c;
    99         while ( (c = getopt_long( argc, argv, "aefglnpqrsvyzD:", long_opts, &long_index )) != -1 ) {
     101        while ( (c = getopt_long( argc, argv, "abefglnpqrsvyzD:", long_opts, &long_index )) != -1 ) {
    100102                switch ( c ) {
    101103                  case Ast:
     
    103105                        astp = true;
    104106                        break;
     107                  case Bresolver:
     108                  case 'b':                                                                             // print before resolver steps
     109                        bresolvep = true;
     110                        break;
    105111                  case Expr:
    106112                  case 'e':                                                                             // dump AST after expression analysis
     
    121127                  case Nopreamble:
    122128                  case 'n':                                                                             // do not read preamble
    123                         preludep = false;
     129                        nopreludep = true;
    124130                        break;
    125131                  case Prototypes:
     
    178184
    179185                // read in the builtins and the prelude
    180                 if ( preludep ) {                                                               // include gcc builtins
     186                if ( ! nopreludep ) {                                                   // include gcc builtins
    181187                        FILE * builtins = fopen( CFA_LIBDIR "/builtins.cf", "r" );
    182188                        if ( builtins == NULL ) {
     
    251257                } // if
    252258
     259                if ( bresolvep ) {
     260                        printAll( translationUnit, std::cout );
     261                        return 0;
     262                } // if
     263
    253264                OPTPRINT( "resolve" )
    254265                ResolvExpr::resolve( translationUnit );
Note: See TracChangeset for help on using the changeset viewer.