Changeset a5a71d0 for src/Parser


Ignore:
Timestamp:
Apr 6, 2016, 5:11:32 PM (10 years ago)
Author:
Rob Schluntz <rschlunt@…>
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, with_gc
Children:
eab39cd
Parents:
39786813 (diff), 3aba311 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'fix-memory-error' into ctor

Conflicts:

src/CodeGen/CodeGenerator.cc
src/Makefile.in
src/Parser/DeclarationNode.cc
src/Parser/ParseNode.h
src/Parser/TypeData.cc
src/Parser/parser.cc
src/Parser/parser.yy
src/ResolvExpr/Resolver.cc
src/SymTab/Validate.cc
src/SynTree/Declaration.h
src/SynTree/Mutator.cc
src/SynTree/Mutator.h
src/SynTree/SynTree.h
src/SynTree/Visitor.cc
src/SynTree/Visitor.h
src/libcfa/prelude.cf

Location:
src/Parser
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    r39786813 ra5a71d0  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Jan 07 13:18:02 2016
    13 // Update Count     : 130
     12// Last Modified On : Mon Apr 04 17:09:46 2016
     13// Update Count     : 142
    1414//
    1515
     
    3434const char *DeclarationNode::storageName[] = { "extern", "static", "auto", "register", "inline", "fortran", "_Noreturn", "_Thread_local", "" };
    3535const char *DeclarationNode::qualifierName[] = { "const", "restrict", "volatile", "lvalue", "_Atomic" };
    36 const char *DeclarationNode::basicTypeName[] = { "char", "int", "float", "double", "void", "_Bool", "_Complex", "_Imaginary" };
     36const char *DeclarationNode::basicTypeName[] = { "char", "int", "float", "double", "void", "_Bool", "_Complex", "_Imaginary", };
    3737const char *DeclarationNode::modifierName[]  = { "signed", "unsigned", "short", "long" };
    3838const char *DeclarationNode::aggregateName[] = { "struct", "union", "context" };
    3939const char *DeclarationNode::typeClassName[] = { "type", "dtype", "ftype" };
     40const char *DeclarationNode::builtinTypeName[] = { "__builtin_va_list" };
    4041
    4142UniqueName DeclarationNode::anonymous( "__anonymous" );
    4243
    43 extern LinkageSpec::Type linkage;               /* defined in cfa.y */
     44extern LinkageSpec::Type linkage;                                               // defined in parser.yy
    4445
    4546DeclarationNode *DeclarationNode::clone() const {
     
    5455        newnode->linkage = linkage;
    5556        return newnode;
    56 }
     57} // DeclarationNode::clone
    5758
    5859DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) {
     
    118119        newnode->type->function->newStyle = newStyle;
    119120        newnode->type->function->body = body;
     121        typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
    120122
    121123        if ( body ) {
     
    130132
    131133        return newnode;
    132 }
     134} // DeclarationNode::newFunction
    133135
    134136DeclarationNode *DeclarationNode::newQualifier( Qualifier q ) {
     
    137139        newnode->type->qualifiers.push_back( q );
    138140        return newnode;
    139 }
     141} // DeclarationNode::newQualifier
    140142
    141143DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
     
    143145        newnode->storageClasses.push_back( sc );
    144146        return newnode;
    145 }
     147} // DeclarationNode::newStorageClass
    146148
    147149DeclarationNode *DeclarationNode::newBasicType( BasicType bt ) {
     
    150152        newnode->type->basic->typeSpec.push_back( bt );
    151153        return newnode;
    152 }
     154} // DeclarationNode::newBasicType
     155
     156DeclarationNode *DeclarationNode::newBuiltinType( BuiltinType bt ) {
     157        DeclarationNode *newnode = new DeclarationNode;
     158        newnode->type = new TypeData( TypeData::Builtin );
     159        newnode->type->builtin->type = bt;
     160        return newnode;
     161} // DeclarationNode::newBuiltinType
    153162
    154163DeclarationNode *DeclarationNode::newModifier( Modifier mod ) {
     
    157166        newnode->type->basic->modifiers.push_back( mod );
    158167        return newnode;
    159 }
     168} // DeclarationNode::newModifier
    160169
    161170DeclarationNode *DeclarationNode::newForall( DeclarationNode *forall ) {
     
    164173        newnode->type->forall = forall;
    165174        return newnode;
    166 }
     175} // DeclarationNode::newForall
    167176
    168177DeclarationNode *DeclarationNode::newFromTypedef( std::string *name ) {
     
    173182        newnode->type->symbolic->params = 0;
    174183        return newnode;
    175 }
     184} // DeclarationNode::newFromTypedef
    176185
    177186DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields ) {
     
    182191        if ( newnode->type->aggregate->name == "" ) {           // anonymous aggregate ?
    183192                newnode->type->aggregate->name = DeclarationNode::anonymous.newName();
    184         } else {
    185                 // SKULLDUGGERY: generate a typedef for the aggregate name so that the aggregate does not have to be qualified
    186                 // by "struct"
     193        } else if ( ! typedefTable.exists( newnode->type->aggregate->name ) ) {
     194                // SKULLDUGGERY: Generate a typedef for the aggregate name so the aggregate does not have to be qualified by
     195                // "struct". Only generate the typedef, if the name is not in use. The typedef is implicitly (silently) removed
     196                // if the name is explicitly used.
    187197                typedefTable.addToEnclosingScope( newnode->type->aggregate->name, TypedefTable::TD );
    188198                DeclarationNode *typedf = new DeclarationNode;
     
    193203        newnode->type->aggregate->fields = fields;
    194204        return newnode;
    195 }
     205} // DeclarationNode::newAggregate
    196206
    197207DeclarationNode *DeclarationNode::newEnum( std::string *name, DeclarationNode *constants ) {
     
    202212        if ( newnode->type->enumeration->name == "" ) {         // anonymous enumeration ?
    203213                newnode->type->enumeration->name = DeclarationNode::anonymous.newName();
    204         } else {
    205                 // SKULLDUGGERY: generate a typedef for the enumeration name so that the enumeration does not have to be
    206                 // qualified by "enum"
     214        } else if ( ! typedefTable.exists( newnode->type->enumeration->name ) ) {
     215                // SKULLDUGGERY: Generate a typedef for the enumeration name so the enumeration does not have to be qualified by
     216                // "enum". Only generate the typedef, if the name is not in use. The typedef is implicitly (silently) removed if
     217                // the name is explicitly used.
    207218                typedefTable.addToEnclosingScope( newnode->type->enumeration->name, TypedefTable::TD );
    208219                DeclarationNode *typedf = new DeclarationNode;
     
    212223        newnode->type->enumeration->constants = constants;
    213224        return newnode;
    214 }
     225} // DeclarationNode::newEnum
    215226
    216227DeclarationNode *DeclarationNode::newEnumConstant( std::string *name, ExpressionNode *constant ) {
    217228        DeclarationNode *newnode = new DeclarationNode;
    218229        newnode->name = assign_strptr( name );
    219         // do something with the constant
    220         return newnode;
    221 }
     230        newnode->enumeratorValue = constant;
     231        typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
     232        return newnode;
     233} // DeclarationNode::newEnumConstant
    222234
    223235DeclarationNode *DeclarationNode::newName( std::string *name ) {
     
    225237        newnode->name = assign_strptr( name );
    226238        return newnode;
    227 }
     239} // DeclarationNode::newName
    228240
    229241DeclarationNode *DeclarationNode::newFromTypeGen( std::string *name, ExpressionNode *params ) {
     
    234246        newnode->type->symbolic->actuals = params;
    235247        return newnode;
    236 }
     248} // DeclarationNode::newFromTypeGen
    237249
    238250DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string *name ) {
     
    243255        newnode->type->variable->name = newnode->name;
    244256        return newnode;
    245 }
    246 
    247 DeclarationNode *DeclarationNode::newContext( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) {
     257} // DeclarationNode::newTypeParam
     258
     259DeclarationNode *DeclarationNode::newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) {
    248260        DeclarationNode *newnode = new DeclarationNode;
    249261        newnode->type = new TypeData( TypeData::Aggregate );
    250         newnode->type->aggregate->kind = Context;
     262        newnode->type->aggregate->kind = Trait;
    251263        newnode->type->aggregate->params = params;
    252264        newnode->type->aggregate->fields = asserts;
    253265        newnode->type->aggregate->name = assign_strptr( name );
    254266        return newnode;
    255 }
    256 
    257 DeclarationNode *DeclarationNode::newContextUse( std::string *name, ExpressionNode *params ) {
     267} // DeclarationNode::newTrait
     268
     269DeclarationNode *DeclarationNode::newTraitUse( std::string *name, ExpressionNode *params ) {
    258270        DeclarationNode *newnode = new DeclarationNode;
    259271        newnode->type = new TypeData( TypeData::AggregateInst );
    260272        newnode->type->aggInst->aggregate = new TypeData( TypeData::Aggregate );
    261         newnode->type->aggInst->aggregate->aggregate->kind = Context;
     273        newnode->type->aggInst->aggregate->aggregate->kind = Trait;
    262274        newnode->type->aggInst->aggregate->aggregate->name = assign_strptr( name );
    263275        newnode->type->aggInst->params = params;
    264276        return newnode;
    265 }
     277} // DeclarationNode::newTraitUse
    266278
    267279DeclarationNode *DeclarationNode::newTypeDecl( std::string *name, DeclarationNode *typeParams ) {
     
    273285        newnode->type->symbolic->name = newnode->name;
    274286        return newnode;
    275 }
     287} // DeclarationNode::newTypeDecl
    276288
    277289DeclarationNode *DeclarationNode::newPointer( DeclarationNode *qualifiers ) {
     
    279291        newnode->type = new TypeData( TypeData::Pointer );
    280292        return newnode->addQualifiers( qualifiers );
    281 }
     293} // DeclarationNode::newPointer
    282294
    283295DeclarationNode *DeclarationNode::newArray( ExpressionNode *size, DeclarationNode *qualifiers, bool isStatic ) {
     
    292304        } // if
    293305        return newnode->addQualifiers( qualifiers );
    294 }
     306} // DeclarationNode::newArray
    295307
    296308DeclarationNode *DeclarationNode::newVarArray( DeclarationNode *qualifiers ) {
     
    796808                        errors.append( e );
    797809                } // try
    798                 cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
     810                cur = dynamic_cast<DeclarationNode *>( cur->get_link() );
    799811        } // while
    800812        if ( ! errors.isEmpty() ) {
     
    883895                          ret = new UnionInstType( type->buildQualifiers(), type->aggregate->name );
    884896                          break;
    885                         case DeclarationNode::Context:
    886                           ret = new ContextInstType( type->buildQualifiers(), type->aggregate->name );
     897                        case DeclarationNode::Trait:
     898                          ret = new TraitInstType( type->buildQualifiers(), type->aggregate->name );
    887899                          break;
    888900                        default:
  • src/Parser/ExpressionNode.cc

    r39786813 ra5a71d0  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Feb  1 13:32:30 2016
    13 // Update Count     : 271
     12// Last Modified On : Sun Mar 13 12:34:38 2016
     13// Update Count     : 272
    1414//
    1515
     
    487487                args.front() = new AddressExpr( args.front() );
    488488                break;
    489           default:
    490                 /* do nothing */
     489          default:              // do nothing
    491490                ;
    492         }
     491        } // switch
    493492
    494493        switch ( op->get_type() ) {
  • src/Parser/ParseNode.h

    r39786813 ra5a71d0  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Feb 09 13:23:34 2016
    13 // Update Count     : 185
     12// Last Modified On : Mon Apr 04 17:10:10 2016
     13// Update Count     : 190
    1414//
    1515
     
    108108
    109109        ConstantNode( Type, std::string * );
    110         ConstantNode( const ConstantNode &other ) : value( *new std::string( other.value ) ) {};
     110        ConstantNode( const ConstantNode &other ) : type( other.type ), btype( other.btype), value( *new std::string( other.value ) ) {};
    111111        ~ConstantNode() { delete &value; }
    112112
     
    330330        enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary };
    331331        enum Modifier  { Signed, Unsigned, Short, Long };
    332         enum Aggregate { Struct, Union, Context };
     332        enum Aggregate { Struct, Union, Trait };
    333333        enum TypeClass { Type, Dtype, Ftype };
     334        enum BuiltinType { Valist };
    334335
    335336        static const char *storageName[];
     
    339340        static const char *aggregateName[];
    340341        static const char *typeClassName[];
     342        static const char *builtinTypeName[];
    341343
    342344        static DeclarationNode *newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param, StatementNode *body, bool newStyle = false );
     
    353355        static DeclarationNode *newFromTypeGen( std::string *, ExpressionNode *params );
    354356        static DeclarationNode *newTypeParam( TypeClass, std::string *);
    355         static DeclarationNode *newContext( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
    356         static DeclarationNode *newContextUse( std::string *name, ExpressionNode *params );
     357        static DeclarationNode *newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
     358        static DeclarationNode *newTraitUse( std::string *name, ExpressionNode *params );
    357359        static DeclarationNode *newTypeDecl( std::string *name, DeclarationNode *typeParams );
    358360        static DeclarationNode *newPointer( DeclarationNode *qualifiers );
     
    364366        static DeclarationNode *newAttr( std::string *, ExpressionNode *expr );
    365367        static DeclarationNode *newAttr( std::string *, DeclarationNode *type );
     368        static DeclarationNode *newBuiltinType( BuiltinType );
    366369
    367370        DeclarationNode *addQualifiers( DeclarationNode *);
     
    402405        LinkageSpec::Type get_linkage() const { return linkage; }
    403406        DeclarationNode *extractAggregate() const;
     407        ExpressionNode *get_enumeratorValue() const { return enumeratorValue; }
    404408
    405409        DeclarationNode();
     
    414418        std::list< std::string > attributes;
    415419        ExpressionNode *bitfieldWidth;
     420        ExpressionNode *enumeratorValue;
    416421        InitializerNode *initializer;
    417422        bool hasEllipsis;
  • src/Parser/Parser.cc

    r39786813 ra5a71d0  
    1010// Created On       : Sat May 16 14:54:28 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 31 23:45:19 2015
    13 // Update Count     : 4
     12// Last Modified On : Mon Mar 21 18:04:47 2016
     13// Update Count     : 5
    1414//
    1515
    1616#include "Parser.h"
    17 #include "TypedefTable.h"
    1817#include "lex.h"
    1918#include "parser.h"
     19#include "TypedefTable.h"
    2020
    2121// global variables in cfa.y
  • src/Parser/TypeData.cc

    r39786813 ra5a71d0  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Jan 14 10:43:42 2016
    13 // Update Count     : 36
     12// Last Modified On : Wed Apr 06 16:57:53 2016
     13// Update Count     : 49
    1414//
    1515
     
    2323#include "SynTree/Expression.h"
    2424#include "SynTree/Statement.h"
     25#include "SynTree/Initializer.h"
    2526
    2627TypeData::TypeData( Kind k ) : kind( k ), base( 0 ), forall( 0 ) {
     
    8485                typeexpr->expr = 0;
    8586                break;
     87          case Builtin:
     88                builtin = new Builtin_t;
     89                break;
    8690          case Attr:
    8791                attr = new Attr_t;
     
    149153                delete typeexpr->expr;
    150154                delete typeexpr;
     155                break;
     156          case Builtin:
     157                delete builtin;
    151158                break;
    152159          case Attr:
     
    221228                newtype->typeexpr->expr = maybeClone( typeexpr->expr );
    222229                break;
     230          case Builtin:
     231                newtype->builtin->type = builtin->type;
     232                break;
    223233          case Attr:
    224234                newtype->attr->expr = maybeClone( attr->expr );
     
    396406                        attr->type->print( os, indent + 2 );
    397407                } // if
     408                break;
     409          case Builtin:
     410                os << "gcc builtin type";
    398411                break;
    399412          default:
     
    524537          case Typeof:
    525538                return buildTypeof();
     539          case Builtin:
     540                return new VarArgsType( buildQualifiers() );
    526541          case Attr:
    527542                return buildAttr();
     
    823838                buildForall( aggregate->params, at->get_parameters() );
    824839                break;
    825           case DeclarationNode::Context:
    826                 at = new ContextDecl( aggregate->name );
     840          case DeclarationNode::Trait:
     841                at = new TraitDecl( aggregate->name );
    827842                buildList( aggregate->params, at->get_parameters() );
    828843                break;
     
    863878                        ret = new UnionInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    864879                        break;
    865                   case DeclarationNode::Context:
    866                         ret = new ContextInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
     880                  case DeclarationNode::Trait:
     881                        ret = new TraitInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    867882                        break;
    868883                  default:
     
    901916        EnumDecl *ret = new EnumDecl( enumeration->name );
    902917        buildList( enumeration->constants, ret->get_members() );
     918        std::list< Declaration * >::iterator members = ret->get_members().begin();
     919        for ( const DeclarationNode *cur = enumeration->constants; cur != NULL; cur = dynamic_cast<DeclarationNode *>( cur->get_link() ), ++members ) {
     920                if ( cur->get_enumeratorValue() != NULL ) {
     921                        ObjectDecl *member = dynamic_cast<ObjectDecl *>(*members);
     922                        member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) );
     923                } // if
     924        } // for
    903925        return ret;
    904926}
  • src/Parser/TypeData.h

    r39786813 ra5a71d0  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jan 14 23:31:15 2016
    13 // Update Count     : 17
     12// Last Modified On : Fri Feb 26 14:21:38 2016
     13// Update Count     : 19
    1414//
    1515
     
    2424struct TypeData {
    2525        enum Kind { Unknown, Basic, Pointer, Array, Function, Aggregate, AggregateInst,
    26                                 Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Attr } kind;
     26                                Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Builtin, Attr } kind;
    2727
    2828        TypeData( Kind k = Unknown );
     
    9898        };
    9999
     100        struct Builtin_t {
     101                DeclarationNode::BuiltinType type;
     102        };
     103
    100104        struct Attr_t {
    101105                std::string name;
     
    116120                Typeof_t * typeexpr;
    117121                Attr_t * attr;
     122                Builtin_t * builtin;
    118123        };
    119124
  • src/Parser/TypedefTable.cc

    r39786813 ra5a71d0  
    1010// Created On       : Sat May 16 15:20:13 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 26 07:30:16 2015
    13 // Update Count     : 19
     12// Last Modified On : Mon Mar 21 18:18:58 2016
     13// Update Count     : 23
    1414//
    1515
    1616#include <map>
    1717#include <list>
     18#include <cassert>
    1819#include "TypedefTable.h"
    19 #include <cassert>
    2020using namespace std;
    2121
     
    2929TypedefTable::TypedefTable() : currentScope( 0 ) {}
    3030
     31bool TypedefTable::exists( const string &identifier ) {
     32        return table.count( identifier ) > 0;
     33}
     34
    3135void TypedefTable::changeKind( const string &identifier, kind_t kind ) {
    3236        tableType::iterator id_pos = table.find( identifier );
    33         if ( id_pos == table.end() ) {
    34                 return;
    35         } else {
    36                 (*((*id_pos ).second.begin())).kind = kind;
    37                 return;
    38         } // if
     37        if ( id_pos == table.end() ) return;
     38        id_pos->second.begin()->kind = kind;
    3939}
    4040
    41 bool TypedefTable::isKind( const string &identifier, kind_t kind ) const {
     41int TypedefTable::isKind( const string &identifier ) const {
    4242        tableType::const_iterator id_pos = table.find( identifier );
    43         if ( id_pos == table.end() ) {
    44                 return true;
    45         } else {
    46                 return (*((*id_pos ).second.begin())).kind == kind;
    47         } // if
    48 }
    49 
    50 bool TypedefTable::isIdentifier( const string &identifier ) const {
    51         return isKind( identifier, ID );
    52 }
    53 
    54 bool TypedefTable::isTypedef( const string &identifier ) const {
    55         return isKind( identifier, TD );
    56 }
    57 
    58 bool TypedefTable::isTypegen( const string &identifier ) const {
    59         return isKind( identifier, TG );
     43        // Name lookup defaults to identifier, and then the identifier's kind is set by the parser.
     44        if ( id_pos == table.end() ) return IDENTIFIER;
     45        return id_pos->second.begin()->kind;
    6046}
    6147
    6248void TypedefTable::addToScope( const std::string &identifier, kind_t kind, int scope ) {
    63         if ( currentContext != "" && scope == contextScope ) {
     49        if ( currentTrait != "" && scope == contextScope ) {
    6450                DeferredEntry entry = { identifier, kind };
    65                 contexts[currentContext].push_back( entry );
     51                contexts[currentTrait].push_back( entry );
    6652        } else {
    6753                debugPrint( "Adding " << identifier << " as kind " << kind << " scope " << scope << " from scope " << currentScope << endl );
     
    11298}
    11399
    114 void TypedefTable::openContext( const std::string &contextName ) {
     100void TypedefTable::openTrait( const std::string &contextName ) {
    115101        map< string, deferListType >::iterator i = contexts.find( contextName );
    116102        if ( i != contexts.end() ) {
     
    150136}
    151137
    152 void TypedefTable::enterContext( const std::string &contextName ) {
    153         currentContext = contextName;
     138void TypedefTable::enterTrait( const std::string &contextName ) {
     139        currentTrait = contextName;
    154140        contextScope = currentScope;
    155141}
    156142
    157 void TypedefTable::leaveContext() {
    158         currentContext = "";
     143void TypedefTable::leaveTrait() {
     144        currentTrait = "";
    159145}
    160146
  • src/Parser/TypedefTable.h

    r39786813 ra5a71d0  
    1010// Created On       : Sat May 16 15:24:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun 25 22:52:15 2015
    13 // Update Count     : 11
     12// Last Modified On : Mon Mar 21 18:17:36 2016
     13// Update Count     : 24
    1414//
    1515
     
    2222#include <stack>
    2323
     24#include "lex.h"
     25#include "parser.h"
     26
    2427class TypedefTable {
    2528  public:
    26         enum kind_t { ID, TD, TG };
     29        enum kind_t { ID = IDENTIFIER, TD = TYPEDEFname, TG = TYPEGENname };
    2730  private:
    2831        struct Entry {
     
    4043
    4144        int currentScope;
    42         std::string currentContext;
     45        std::string currentTrait;
    4346        int contextScope;
    4447       
     
    4952        std::stack< std::string > nextIdentifiers;
    5053
    51         bool isKind( const std::string &identifier, kind_t kind ) const;
    5254        void addToScope( const std::string &identifier, kind_t kind, int scope );
    5355  public:
    5456        TypedefTable();
    5557
    56         bool isIdentifier( const std::string &identifier ) const;
    57         bool isTypedef( const std::string &identifier ) const;
    58         bool isTypegen( const std::string &identifier ) const;
    59 
     58        bool exists( const std::string &identifier );
     59        int isKind( const std::string &identifier ) const;
    6060        void changeKind( const std::string &identifier, kind_t kind );
    6161       
     
    7979       
    8080        // dump the definitions from a pre-defined context into the current scope
    81         void openContext( const std::string &contextName );
     81        void openTrait( const std::string &contextName );
    8282       
    8383        void enterScope();
    8484        void leaveScope();
    85         void enterContext( const std::string &contextName );
    86         void leaveContext();
     85        void enterTrait( const std::string &contextName );
     86        void leaveTrait();
    8787
    8888        void print() const;
  • src/Parser/lex.cc

    r39786813 ra5a71d0  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 179
    385 #define YY_END_OF_BUFFER 180
     384#define YY_NUM_RULES 180
     385#define YY_END_OF_BUFFER 181
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[876] =
     393static yyconst flex_int16_t yy_accept[888] =
    394394    {   0,
    395         0,    0,    0,    0,    0,    0,  114,  114,  117,  117,
    396       180,  178,    7,    9,    8,  137,  116,  101,  142,  145,
    397       113,  124,  125,  140,  138,  128,  139,  131,  141,  106,
    398       107,  108,  129,  130,  147,  149,  148,  150,  178,  101,
    399       122,  178,  123,  143,  101,  103,  101,  101,  101,  101,
    400       101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
    401       101,  126,  146,  127,  144,    7,  178,    4,    4,  179,
    402       104,  179,  105,  114,  115,  121,  117,  118,    7,    9,
    403         0,    8,  154,  173,  101,    0,  166,  136,  159,  167,
    404       164,  151,  162,  152,  163,  161,    0,  111,    3,    0,
    405 
    406       165,  111,  109,    0,    0,  109,  109,    0,    0,  109,
    407       108,  108,  108,    0,  108,  134,  135,  133,  155,  157,
    408       153,  158,  156,    0,    0,    0,    0,    0,    0,    0,
    409         0,    0,    0,    0,    0,    0,    0,    0,  102,  172,
    410         0,  116,  113,  101,    0,    0,  169,    0,  101,  101,
    411       101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
    412       101,  101,  101,  101,  101,   39,  101,  101,  101,  101,
    413       101,  101,  101,  101,  101,  101,   57,  101,  101,  101,
    414       101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
    415       101,  101,  168,  160,    7,    0,    0,    0,    2,    0,
    416 
    417         5,  104,    0,    0,    0,  114,    0,  120,  119,  119,
    418         0,    0,    0,  117,    0,    0,    0,    0,    0,    0,
    419         0,    0,    0,    0,    0,    0,    0,    0,    0,  132,
    420       111,  111,    0,  111,  111,  111,    0,    6,  111,  109,
    421         0,    0,    0,  111,    0,  109,  109,  109,  109,    0,
    422       110,    0,    0,  108,  108,  108,  108,    0,  170,  171,
    423         0,  176,  174,    0,    0,    0,  102,    0,    0,    0,
    424         0,    0,    0,    0,    0,  101,   17,  101,  101,  101,
    425       101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
    426       101,  101,  101,  101,  101,   14,  101,  101,  101,  101,
    427 
    428       101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
    429       101,  101,  101,  101,   51,  101,  101,  101,   64,  101,
    430       101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
    431       101,   88,  101,  101,  101,  101,  101,  101,  101,    0,
    432         0,    0,    0,    0,    0,    0,    0,  119,    0,    0,
    433         0,    0,    0,  119,    0,    0,  177,    0,    0,    0,
    434         0,    0,    0,    0,  111,    0,  111,    0,  111,    0,
    435         0,  111,  111,  109,  109,    0,    0,  110,  110,    0,
    436       110,    0,  110,  108,  108,    0,    0,    0,    0,    0,
    437         0,    0,    0,    0,    0,  175,  101,  101,  101,  101,
    438 
    439       101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
    440       101,  101,  101,  101,  101,  101,  101,  101,  101,   21,
    441       101,   24,  101,   27,  101,  101,  101,  101,  101,  101,
    442       101,   42,  101,   44,  101,  101,  101,  101,  101,  101,
    443       101,   56,  101,   67,  101,  101,  101,  101,  101,  101,
    444       101,  101,  101,  101,  101,   89,  101,  101,   96,  101,
    445       101,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    446         0,    0,    0,    0,    0,  119,    0,    0,    0,    0,
    447         0,  111,  111,    0,    0,    0,    0,    0,  110,  110,
    448         0,  112,    0,  110,  110,    0,    0,    0,    0,    0,
    449 
    450         0,    0,    0,    0,    0,    0,    0,    0,  101,  101,
    451        22,  101,  101,  101,  101,  101,  101,  101,   15,  101,
    452       101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
    453       101,  101,  101,   23,   25,  101,   32,  101,  101,  101,
    454       101,  101,   41,  101,  101,  101,  101,   49,  101,  101,
    455        54,  101,  101,  101,  101,  101,   76,  101,  101,  101,
    456       101,  101,   86,  101,  101,   94,  101,  101,  100,    0,
     395        0,    0,    0,    0,    0,    0,  115,  115,  118,  118,
     396      181,  179,    7,    9,    8,  138,  117,  102,  143,  146,
     397      114,  125,  126,  141,  139,  129,  140,  132,  142,  107,
     398      108,  109,  130,  131,  148,  150,  149,  151,  179,  102,
     399      123,  179,  124,  144,  102,  104,  102,  102,  102,  102,
     400      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     401      102,  102,  127,  147,  128,  145,    7,  179,    4,    4,
     402      180,  105,  180,  106,  115,  116,  122,  118,  119,    7,
     403        9,    0,    8,  155,  174,  102,    0,  167,  137,  160,
     404      168,  165,  152,  163,  153,  164,  162,    0,  112,    3,
     405
     406        0,  166,  112,  110,    0,    0,  110,  110,    0,    0,
     407      110,  109,  109,  109,    0,  109,  135,  136,  134,  156,
     408      158,  154,  159,  157,    0,    0,    0,    0,    0,    0,
     409        0,    0,    0,    0,    0,    0,    0,    0,    0,  103,
     410      173,    0,  117,  114,  102,    0,    0,  170,    0,  102,
     411      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     412      102,  102,  102,  102,  102,  102,   38,  102,  102,  102,
     413      102,  102,  102,  102,  102,  102,  102,   56,  102,  102,
     414      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     415      102,  102,  102,  102,  169,  161,    7,    0,    0,    0,
     416
     417        2,    0,    5,  105,    0,    0,    0,  115,    0,  121,
     418      120,  120,    0,    0,    0,  118,    0,    0,    0,    0,
    457419        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    458         0,    0,    0,    0,    0,    0,    0,    0,  112,    0,
    459         0,  110,  112,  112,  112,  112,  112,  110,    0,    0,
    460 
    461         0,    0,    0,    0,    0,    0,    0,    0,  101,    0,
    462       101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
    463       101,  101,  101,  101,  101,  101,   59,  101,  101,  101,
    464       101,  101,  101,  101,  101,   28,  101,  101,  101,  101,
    465        40,   43,   46,  101,  101,   52,  101,   61,   68,  101,
    466       101,   75,   77,   80,   81,   83,   84,  101,  101,   91,
    467       101,  101,    0,    1,    0,    0,    0,    0,    0,    0,
    468       104,    0,    0,    0,  119,    0,    0,    0,    0,  112,
    469       112,  112,  112,    0,    0,    0,    0,    0,    0,    0,
    470         0,    0,  101,  101,   18,  101,  101,  101,  101,  101,
    471 
    472       101,  101,   16,  101,  101,  101,   33,  101,  101,  101,
    473       101,  101,  101,  101,  101,  101,  101,  101,   35,  101,
    474        37,   38,  101,   48,   53,  101,  101,  101,   90,  101,
    475       101,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    476         0,    0,    0,    0,   10,   11,   29,   55,  101,  101,
    477       101,  101,  101,  101,  101,  101,  101,  101,  101,   60,
    478        62,   65,  101,  101,   78,   92,  101,  101,   36,   47,
    479        71,   72,  101,   95,   97,    0,    0,    0,    0,    0,
    480         0,    0,    0,    0,    0,    0,    0,  101,   69,  101,
    481       101,   12,  101,  101,   30,   34,  101,  101,  101,   66,
    482 
    483       101,  101,  101,  101,  101,  101,    0,    0,    0,    0,
    484         0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
    485       101,  101,  101,  101,  101,  101,  101,   50,   63,   73,
    486        79,   93,   98,  101,  101,    0,    0,    0,    0,    0,
    487         0,    0,    0,  101,  101,   13,   19,  101,   31,  101,
    488       101,  101,   26,   87,    0,    0,  101,  101,  101,  101,
    489       101,   74,   99,  101,   85,   20,  101,   45,   82,  101,
    490       101,  101,  101,   70,    0
     420        0,  133,  112,  112,    0,  112,  112,    0,    0,    6,
     421        0,  110,    0,    0,    0,  112,    0,  110,  110,  110,
     422      110,    0,  111,    0,    0,  109,  109,  109,  109,    0,
     423      171,  172,    0,  177,  175,    0,    0,    0,  103,    0,
     424        0,    0,    0,    0,    0,    0,    0,  102,   17,  102,
     425      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     426      102,  102,  102,  102,  102,  102,  102,   14,  102,  102,
     427
     428      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     429      102,  102,  102,  102,  102,  102,   50,  102,  102,  102,
     430       63,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     431      102,  102,  102,  102,  102,   89,  102,  102,  102,  102,
     432      102,  102,  102,    0,    0,    0,    0,    0,    0,    0,
     433        0,  120,    0,    0,    0,    0,    0,  120,    0,    0,
     434      178,    0,    0,    0,    0,    0,    0,    0,  112,    0,
     435      112,    0,  112,    0,    0,  112,    0,  110,  110,    0,
     436        0,  111,  111,    0,  111,    0,  111,  109,  109,    0,
     437        0,    0,    0,    0,    0,    0,    0,    0,    0,  176,
     438
     439      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     440      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     441      102,  102,  102,   21,  102,   24,  102,   27,  102,  102,
     442      102,  102,  102,  102,  102,   41,  102,   43,  102,  102,
     443      102,  102,  102,  102,  102,   55,  102,   66,  102,  102,
     444      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     445      102,  102,  102,  102,   97,  102,  102,    0,    0,    0,
     446        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     447        0,  120,    0,    0,    0,    0,    0,  112,    0,    0,
     448        0,    0,    0,    0,  111,  111,    0,  113,    0,  111,
     449
     450      111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     451        0,    0,    0,    0,  102,  102,   22,  102,  102,  102,
     452      102,  102,  102,  102,   15,  102,  102,  102,  102,  102,
     453      102,  102,  102,  102,  102,  102,  102,  102,  102,   23,
     454       25,  102,   32,  102,  102,  102,  102,   40,  102,  102,
     455      102,  102,   48,  102,  102,   53,  102,  102,   70,  102,
     456      102,  102,   76,  102,  102,  102,  102,  102,   86,   88,
     457      102,  102,   94,  102,  102,  101,    0,    0,    0,    0,
     458        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     459        0,    0,    0,    0,    0,  113,    0,    0,  111,  113,
     460
     461      113,  113,  113,    0,  111,    0,    0,    0,    0,    0,
     462        0,    0,    0,    0,    0,  102,    0,  102,  102,  102,
     463      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     464      102,  102,  102,   58,  102,  102,  102,  102,  102,  102,
     465      102,  102,   28,  102,  102,  102,   39,   42,   45,  102,
     466      102,   51,  102,   60,   67,  102,  102,   75,   77,   80,
     467       81,   83,   84,  102,  102,   91,  102,  102,    0,    1,
     468        0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
     469      120,    0,    0,    0,    0,  113,    0,  113,  113,    0,
     470        0,    0,    0,    0,    0,    0,    0,    0,  102,  102,
     471
     472       18,  102,  102,  102,  102,  102,  102,  102,   16,  102,
     473      102,  102,   33,  102,  102,  102,  102,  102,  102,  102,
     474      102,  102,  102,  102,  102,   36,   37,  102,   47,   52,
     475      102,  102,  102,   90,  102,  102,    0,    0,    0,    0,
     476        0,    0,    0,    0,    0,    0,    0,    0,    0,   10,
     477       11,   29,   54,  102,  102,  102,  102,  102,  102,  102,
     478      102,  102,  102,  102,   59,   61,   64,  102,  102,   78,
     479       92,  102,  102,   35,   46,   71,   72,  102,   95,   98,
     480        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     481        0,    0,  102,   68,  102,  102,   12,  102,  102,   30,
     482
     483       34,  102,  102,  102,   65,  102,  102,  102,  102,  102,
     484      102,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     485        0,    0,    0,    0,   57,  102,  102,  102,  102,  102,
     486      102,  102,   49,   62,   73,   79,   93,   99,  102,  102,
     487        0,    0,    0,    0,    0,    0,    0,    0,  102,  102,
     488       13,   19,  102,  102,   31,  102,  102,  102,   26,   87,
     489        0,    0,  102,  102,  102,  102,  102,  102,   74,  100,
     490      102,   85,   20,  102,  102,   44,   82,  102,  102,  102,
     491      102,  102,  102,  102,   96,   69,    0
    491492    } ;
    492493
     
    499500       16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
    500501       26,   26,   26,   26,   26,   27,   28,   29,   30,   31,
    501        32,   33,   34,   35,   36,   37,   38,   39,   40,   39,
    502        41,   11,   42,   11,   11,   43,   11,   44,   11,   45,
    503        11,   46,   47,   48,   49,   11,   11,   50,   11,   11,
    504        51,   52,   53,   54,   55,   56,   57,   58,   59,   60,
    505 
    506        61,   62,   63,   64,   65,   11,   66,   67,   68,   69,
    507        70,   71,   11,   72,   73,   74,   75,   76,   77,   78,
    508        79,   80,   81,   82,   83,   84,    1,    1,    1,    1,
     502       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
     503       42,   11,   43,   11,   11,   44,   11,   45,   11,   46,
     504       11,   47,   48,   49,   50,   11,   11,   51,   11,   11,
     505       52,   53,   54,   55,   56,   57,   58,   59,   60,   61,
     506
     507       62,   63,   64,   65,   66,   11,   67,   68,   69,   70,
     508       71,   72,   11,   73,   74,   75,   76,   77,   78,   79,
     509       80,   81,   82,   83,   84,   85,    1,    1,    1,    1,
    509510        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    510511        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    523524    } ;
    524525
    525 static yyconst flex_int32_t yy_meta[85] =
     526static yyconst flex_int32_t yy_meta[86] =
    526527    {   0,
    527528        1,    1,    2,    1,    1,    1,    1,    1,    3,    1,
     
    529530        6,    1,    7,    7,    7,    7,    7,    7,    1,    1,
    530531        1,    8,    1,    1,    1,    9,    9,    9,    9,    9,
    531         4,    4,   10,    4,   11,    4,    4,    4,   10,    4,
    532         1,   12,    1,    1,   13,    1,    9,    9,    9,    9,
    533         9,    9,    4,    4,    4,    4,   10,    4,    4,    4,
    534        11,    4,    4,    4,   10,    4,    4,    4,    4,    4,
    535         1,    1,    1,    1
     532        9,    4,    4,   10,    4,   11,    4,    4,    4,   10,
     533        4,    1,   12,    1,    1,   13,    1,    9,    9,    9,
     534        9,    9,    9,    4,    4,    4,    4,   10,    4,    4,
     535        4,   11,    4,    4,    4,   10,    4,    4,    4,    4,
     536        4,    1,    1,    1,    1
    536537    } ;
    537538
    538 static yyconst flex_int16_t yy_base[1050] =
     539static yyconst flex_int16_t yy_base[1062] =
    539540    {   0,
    540         0,   83, 2238, 2237,   93,    0,  175,  176,  177,  178,
    541      2252, 2782,  189, 2782,  195,   54, 2782, 2197,   59,  171,
    542      2782, 2782, 2782,   55,  186, 2782,  189,  187,  202,  214,
    543       272,    0, 2213, 2782,  214, 2213,  150,  340,  153,  222,
    544      2782,  157, 2782,  215,  224, 2782,  207,  181,  221,  249,
    545       235,  289,  155,  255,  218,  206,  266,  256,  323,  259,
    546       192, 2782,  223, 2782, 2210,  377,  342, 2782, 2220, 2782,
    547      2187,  234, 2782,    0, 2782,  421,    0, 2782,  393, 2782,
    548       399,  405, 2782,  492, 2184,  241, 2782, 2782, 2782, 2782,
    549      2782, 2201, 2782, 2200, 2782, 2782, 2211,  552, 2782, 2226,
    550 
    551      2782,  413,  393,  437,  493,  377,  318,  195,  430,  382,
    552         0,  384,  321,  196,  427, 2782, 2782, 2782, 2194, 2782,
    553      2782, 2782, 2193, 2192,  252,  302, 2206,  342,  435,  422,
    554       381,  455,  400,  494, 2185,  440, 2133,  469, 2163, 2782,
    555       276, 2782, 2782,  520, 2159, 2157, 2782, 2128,  414,  463,
    556       470,  325,  254,  479,  432,  274,  480,  423,  483,  498,
    557       492,  503,  499,  509,  341,  455,  484,  377,  510,  512,
    558       517,  518,  529,  530,  531,  537, 2154,  541,  536,  544,
    559       557,  546,  566,  569,  538,  552,  548,  554,  588,  571,
    560       570,  580, 2782, 2782,  645,  651, 2202,  657, 2782,  663,
    561 
    562      2782, 2152,  593, 2147, 2144,    0,  631, 2782, 2782,  669,
    563      2141, 2140, 2139,    0, 2160,  629,  635,  639,  678,  677,
    564       666,  670,  671,  674, 2138,  681,  682, 2115, 2114, 2782,
    565         0,  597,  702,  678,  676, 2111, 2160, 2782,  693,    0,
    566       710,  723,  743,  762,  788,  707, 2782, 2119, 2094,    0,
    567       776, 2138,  768,  723, 2782, 2113, 2086,  809, 2782, 2782,
    568      2118, 2782, 2782,  705,  710, 2098, 2097,  724, 2091, 2088,
    569      2087,    0, 2086,    0, 2056,  709,  682,  707,  712,  710,
    570       724,  647,  750,  671,  786,  751,  748,  731,  778,  787,
    571       789,  788,  792,  790,  758, 2084,  796,  806,  800,  813,
    572 
    573       798,  810,  802,  816,  822,  819,  815,  826,  830,  829,
    574       831,  832,  833,  837,  839,  841,  846,  843, 2081,  848,
    575       850,  849,  851,  852,  854,  853,  857,  855,  858,  863,
    576       868, 2080,  867,  912,  871,  878,  872,  879,  882,  937,
    577       939, 2076, 2074, 2071,    0, 2070,    0,  927,  931, 2069,
    578         0, 2067,    0, 2064,    0, 2084, 2782,  913,  926, 2064,
    579      2060,    0, 2057,    0, 2782,  942,  960,  953, 2782,  966,
    580       981, 1005, 2053, 2782, 2782,  955,  968,  995,  968, 1028,
    581       892, 1014,  970, 2782, 2782, 2049, 2047, 2045,    0, 2042,
    582         0, 2040,    0, 2038,    0, 2782,  909,  944,  982,  943,
    583 
    584      1006,  911, 1012,  923, 1013, 1019, 1009, 1016, 1023, 1024,
    585      1020,  972, 1030, 1028,  989, 1026, 1034, 1027, 1039, 2038,
    586      1044, 2035, 1048, 2034, 1049, 1051, 1052, 1053, 1056, 1057,
    587      1055, 2033, 1059, 2031,  946, 1063, 1066, 1067, 1068, 1071,
    588      1069, 2028, 1075, 2025, 1077, 1080, 1079, 1082, 1084, 1086,
    589      1087, 1090, 1097, 1107, 1088, 1108, 1093, 1098, 2024, 1096,
    590      1111, 1164, 2020,    0, 2018,    0, 2015,    0, 2012,    0,
    591      1151, 2011,    0, 2010,    0, 2008, 2005, 2002,    0, 2001,
    592         0, 1156, 2000, 1162, 1148, 1182, 1149, 1126, 1147, 2782,
    593      1201, 1215, 1241, 2010, 1983, 1992, 1991,    0, 1990,    0,
    594 
    595      1988,    0, 1985,    0, 1982,    0, 1981,    0, 1161, 1149,
    596      1983, 1179, 1140, 1180, 1117, 1182, 1192, 1199, 1181, 1163,
    597      1196, 1200, 1201, 1220, 1198, 1221, 1224,  604, 1226, 1227,
    598      1231, 1233, 1234, 1981, 1244, 1236, 1978, 1240, 1241, 1246,
    599      1247, 1243, 1975, 1250, 1251, 1253, 1254, 1974, 1255, 1267,
    600      1973, 1264, 1271, 1256, 1263, 1257, 1971, 1275, 1277, 1279,
    601      1260, 1281, 1290, 1285, 1288, 1968, 1289, 1291, 1967, 2015,
    602      1961,    0, 1958,    0, 1957,    0, 1956,    0, 1954,    0,
    603      1921,    0, 1919,    0, 1918,    0, 1336, 1342, 1369, 1353,
    604      1915, 2782, 1359, 1307, 1359, 1309, 1912, 2782, 1911,    0,
    605 
    606      1910,    0, 1908,    0, 1905,    0,    0,    0, 1905,    0,
    607      1347, 1295, 1292, 1323, 1337, 1338, 1296, 1349, 1351, 1355,
    608      1353, 1348, 1363, 1364, 1371, 1373, 1380, 1375, 1403, 1381,
    609      1385, 1389, 1094, 1387, 1390, 1904, 1391, 1393, 1397, 1401,
    610      1903, 1901, 1898, 1394, 1400, 1897, 1404, 1896, 1894, 1402,
    611      1408, 1891, 1890, 1889, 1887, 1884, 1880, 1417, 1412, 1876,
    612      1420, 1418, 1921, 2782, 1853,    0, 1852,    0,    0,    0,
    613      1854,    0,    0,    0, 2782,    0,    0,    0,    0, 1463,
    614      1849, 2782, 2782, 1469, 1846,    0, 1845,    0,    0,    0,
    615         0, 1844, 1407, 1446, 1845, 1406, 1423, 1300, 1431, 1449,
    616 
    617      1455, 1447, 1842, 1457, 1448, 1459, 1464, 1460, 1490, 1474,
    618      1470, 1494, 1480, 1475, 1484, 1485, 1486, 1482, 1841, 1487,
    619      1840, 1838, 1489, 1835, 1834, 1491, 1493, 1497, 1833, 1498,
    620      1500,    0,    0,    0, 1828, 1825, 1824, 1548,    0, 1823,
    621      1821, 1818, 1817, 1816, 1817, 1814, 1813, 1812, 1505, 1510,
    622      1502, 1501, 1504, 1508, 1513, 1517, 1526, 1528, 1559, 1810,
    623      1533, 1807, 1534, 1535, 1544, 1545, 1538, 1539, 1806, 1805,
    624      1803, 1800, 1540, 1799, 1798, 1793, 1786, 1784, 1783, 1780,
    625      1779, 1778, 1776, 1759, 1750, 1749, 1746, 1546, 1742, 1549,
    626      1550, 1552, 1554, 1557, 1558, 1739, 1556, 1589, 1566, 1732,
    627 
    628      1565, 1572, 1577, 1579, 1567, 1578, 1727, 1726, 1705, 1704,
    629      1703, 1696, 1694, 1693, 1650, 1649, 1647, 1645, 1644, 1646,
    630      1571, 1584, 1582, 1581, 1586, 1593, 1595, 1645, 1644, 1597,
    631      1642, 1641, 1598, 1599, 1602, 1636, 1635, 1633, 1422, 1421,
    632      1205, 1201,  946, 1605, 1610,  910, 1603, 1607,  768, 1613,
    633      1618, 1619,  723,  605,  503,  370, 1609, 1620, 1623, 1624,
    634      1625,  338,  337, 1627,  290,  251, 1630,  200,  196, 1631,
    635      1632, 1637, 1633,  136, 2782, 1707, 1720, 1733, 1743, 1753,
    636      1766, 1776, 1789, 1802, 1815, 1823, 1833, 1840, 1847, 1854,
    637      1861, 1868, 1875, 1882, 1889, 1896, 1909, 1916, 1920, 1928,
    638 
    639      1931, 1938, 1945, 1952, 1955, 1962, 1968, 1981, 1994, 2001,
    640      2008, 2015, 2022, 2025, 2032, 2035, 2042, 2045, 2052, 2055,
    641      2062, 2065, 2072, 2075, 2082, 2085, 2092, 2100, 2107, 2114,
    642      2121, 2128, 2131, 2138, 2141, 2148, 2151, 2158, 2164, 2177,
    643      2184, 2191, 2194, 2201, 2204, 2211, 2214, 2221, 2224, 2231,
    644      2234, 2241, 2244, 2251, 2258, 2261, 2268, 2271, 2278, 2285,
    645      2292, 2295, 2302, 2305, 2312, 2315, 2322, 2325, 2332, 2335,
    646      2342, 2348, 2361, 2368, 2375, 2378, 2385, 2388, 2395, 2398,
    647      2405, 2408, 2415, 2418, 2425, 2428, 2435, 2438, 2445, 2448,
    648      2455, 2462, 2465, 2472, 2475, 2482, 2485, 2492, 2495, 2498,
    649 
    650      2504, 2511, 2520, 2527, 2534, 2537, 2544, 2547, 2550, 2556,
    651      2563, 2566, 2569, 2572, 2575, 2578, 2581, 2584, 2591, 2594,
    652      2601, 2604, 2607, 2610, 2613, 2623, 2630, 2633, 2636, 2639,
    653      2646, 2653, 2660, 2663, 2670, 2677, 2684, 2691, 2698, 2705,
    654      2712, 2719, 2726, 2733, 2740, 2747, 2754, 2761, 2768
     541        0,   84, 2272, 2269,   94,    0,  177,  178,  179,  180,
     542     2285, 2822,  191, 2822,  197,   55, 2822, 2231,   60,  173,
     543     2822, 2822, 2822,   56,  188, 2822,  191,  189,  204,  216,
     544      275,    0, 2249, 2822,  216, 2247,  152,  344,  155,  220,
     545     2822,  159, 2822,  217,  226, 2822,  185,  154,  212,  251,
     546      237,  270,  235,  257,  241,  205,  193,  305,  314,  333,
     547      238,  228, 2822,  225, 2822, 2242,  402,  390, 2822, 2253,
     548     2822, 2221,  235, 2822,    0, 2822,  426,    0, 2822,  417,
     549     2822,  439,  451, 2822,  498, 2219,  264, 2822, 2822, 2822,
     550     2822, 2822, 2235, 2822, 2232, 2822, 2822, 2244,  559, 2822,
     551
     552     2261, 2822,  438,  444,  511,  534,  289,  253,  197,  380,
     553      305,    0,  319,  280,  198,  322, 2822, 2822, 2822, 2230,
     554     2822, 2822, 2822, 2227, 2224,  218,  255, 2239,  298,  350,
     555      368,  312,  440,  398,  405, 2220,  441, 2168,  446, 2196,
     556     2822,  335, 2822, 2822,  468, 2190, 2189, 2822, 2162,  439,
     557      282,  433,  372,  281,  437,  434,  428,  570,  444,  466,
     558      464,  469,  475,  321,  492,  438,  471,  445,  474,  512,
     559      489,  503,  496,  521,  276,  515,  516, 2189,  526,  510,
     560      519,  525,  543,  522,  560,  553,  523,  561,  551,  544,
     561      599,  582,  593,  584, 2822, 2822,  660,  651, 2236,  666,
     562
     563     2822,  678, 2822, 2183,  607, 2179, 2178,    0,  693, 2822,
     564     2822,  684, 2176, 2156, 2154,    0, 2177,  578,  608,  617,
     565      654,  679,  650,  683,  684,  687, 2172,  690,  691, 2147,
     566     2146, 2822,    0,  683,  710,  686,  700, 2145, 2196, 2822,
     567      714,    0,  427,  746,  764,  786,  808,  621, 2822, 2152,
     568     2125,    0,  794, 2171,  795,  709, 2822, 2147, 2121,  832,
     569     2822, 2822, 2152, 2822, 2822,  711,  714, 2129, 2129,  717,
     570     2125, 2123, 2120,    0, 2117,    0, 2088,  694,  679,  712,
     571      709,  711,  698,  566,  726,  743,  771,  741,  790,  784,
     572      800,  795,  742,  744,  814,  816,  818, 2118,  819,  745,
     573
     574      820,  821,  822,  823,  824,  746,  825,  748,  659,  831,
     575      826,  833,  838,  839,  848,  850,  851,  844,  834,  857,
     576     2116,  858,  859,  860,  862,  861,  864,  865,  867,  868,
     577      866,  871,  876,  872,  878, 2113,  880,  689,  881,  882,
     578      892,  896,  893,  953,  954, 2109, 2108, 2106,    0, 2103,
     579        0,  941,  945, 2102,    0, 2101,    0, 2099,    0, 2118,
     580     2822,  940,  941, 2094, 2088,    0, 2086,    0, 2822,  953,
     581      975,  964, 2822,  981,  997, 1021, 2084, 2822, 2822,  939,
     582      940, 1006,  982, 1041,  310, 1039, 1004, 2822, 2822, 2081,
     583     2079, 2077,    0, 2074,    0, 2071,    0, 2070,    0, 2822,
     584
     585      886,  941,  960,  962,  977,  976,  980,  982, 1017, 1010,
     586     1002,  998, 1022, 1031, 1028, 1033, 1034, 1037, 1040, 1043,
     587     1038, 1041, 1053, 2072, 1055, 2070, 1045, 2067, 1056, 1061,
     588     1063, 1065, 1066, 1067, 1070, 2064, 1071, 2063, 1073, 1074,
     589     1075, 1078, 1080, 1081, 1085, 2062, 1087, 2060, 1084, 1089,
     590     1091, 1097, 1099, 1092, 1102, 1103, 1105, 1106, 1108,  905,
     591     1109, 1116, 1110, 1122, 2057, 1120, 1123, 1179, 2051,    0,
     592     2050,    0, 2049,    0, 2047,    0, 1166, 2044,    0, 2041,
     593        0, 2040, 2039, 2037,    0, 2034,    0, 1173, 2031, 1179,
     594     1137, 1195, 1181, 1178, 1176, 2822, 1219, 1231, 1253, 2042,
     595
     596     2017, 2027, 2024,    0, 2021,    0, 2020,    0, 2019,    0,
     597     2017,    0, 2014,    0, 1141, 1172, 2014, 1180, 1155, 1196,
     598     1157, 1216, 1207, 1231, 1125, 1210, 1232, 1214, 1187, 1236,
     599     1235, 1237, 1238, 1272, 1249, 1252, 1250, 1253, 1254, 2013,
     600     1261, 1256, 2012, 1260, 1263, 1264, 1257, 2010, 1271, 1268,
     601     1269, 1273, 2007, 1275, 1282, 2006, 1283, 1284, 2005, 1276,
     602     1286, 1289, 2003, 1294, 1291, 1296, 1295, 1297, 1310, 2000,
     603     1305, 1308, 1999, 1307, 1300, 1998, 2046, 1960,    0, 1958,
     604        0, 1957,    0, 1954,    0, 1951,    0, 1950,    0, 1949,
     605        0, 1947,    0, 1355, 1361, 1389, 1372, 1944, 2822, 1378,
     606
     607     1325, 1365, 1379, 1941, 2822, 1940,    0, 1939,    0, 1937,
     608        0, 1934,    0,    0,    0, 1936,    0, 1366, 1312, 1311,
     609     1341, 1323, 1368, 1369, 1374, 1356, 1383, 1372, 1388, 1390,
     610     1393, 1395, 1396, 1398, 1400, 1431, 1406, 1407, 1411, 1408,
     611     1413, 1414, 1935, 1409, 1416, 1419, 1933, 1930, 1929, 1422,
     612     1424, 1928, 1429, 1926, 1923, 1425, 1430, 1919, 1915, 1911,
     613     1895, 1894, 1893, 1436, 1433, 1891, 1439, 1440, 1938, 2822,
     614     1884,    0, 1883,    0,    0,    0, 1884,    0,    0,    0,
     615     2822,    0,    0,    0,    0, 1486, 1878, 2822, 2822, 1492,
     616     1877,    0, 1876,    0,    0,    0,    0, 1874, 1447, 1444,
     617
     618     1874, 1449, 1471, 1479, 1450, 1480, 1482, 1469, 1873, 1486,
     619     1490, 1488, 1502, 1452, 1510, 1504, 1491, 1519, 1506, 1498,
     620     1508, 1512, 1513, 1514, 1515, 1872, 1870, 1517, 1867, 1866,
     621     1518, 1520, 1523, 1865, 1521, 1525,    0,    0,    0, 1860,
     622     1857, 1856, 1575,    0, 1855, 1853, 1850, 1849, 1848, 1849,
     623     1846, 1845, 1844, 1531, 1536, 1527, 1528, 1552, 1533, 1537,
     624     1539, 1555, 1557, 1569, 1842, 1560, 1839, 1561, 1559, 1568,
     625     1572, 1567, 1573, 1838, 1837, 1835, 1828, 1574, 1826, 1825,
     626     1819, 1818, 1817, 1815, 1798, 1789, 1788, 1785, 1778, 1775,
     627     1768, 1766, 1576, 1768, 1577, 1581, 1580, 1579, 1584, 1585,
     628
     629     1747, 1586, 1615, 1590, 1746, 1591, 1592, 1602, 1600, 1594,
     630     1606, 1742, 1735, 1733, 1732, 1690, 1689, 1686, 1685, 1683,
     631     1682, 1678, 1677, 1674, 1676, 1607, 1611, 1614, 1612, 1608,
     632     1616, 1620, 1675, 1623, 1624, 1530, 1453, 1630, 1625, 1629,
     633     1438, 1354, 1319, 1318, 1267, 1212, 1210, 1208, 1631, 1636,
     634     1178, 1639, 1635, 1643, 1177, 1644, 1646, 1650, 1126,  964,
     635      937,  903, 1651, 1652, 1654, 1655, 1656, 1658,  788,  752,
     636     1660,  607,  487, 1662, 1663,  394,  357, 1664, 1666, 1668,
     637     1670, 1669, 1672, 1674,  233,  137, 2822, 1747, 1760, 1773,
     638     1783, 1793, 1806, 1816, 1829, 1842, 1855, 1863, 1873, 1880,
     639
     640     1887, 1894, 1901, 1908, 1915, 1922, 1929, 1936, 1949, 1956,
     641     1960, 1968, 1971, 1978, 1985, 1992, 1995, 2002, 2008, 2021,
     642     2034, 2041, 2048, 2055, 2062, 2065, 2072, 2075, 2082, 2085,
     643     2092, 2095, 2102, 2105, 2112, 2115, 2122, 2125, 2132, 2140,
     644     2147, 2154, 2161, 2168, 2171, 2178, 2181, 2188, 2191, 2198,
     645     2204, 2217, 2224, 2231, 2234, 2241, 2244, 2251, 2254, 2261,
     646     2264, 2271, 2274, 2281, 2284, 2291, 2298, 2301, 2308, 2311,
     647     2318, 2325, 2332, 2335, 2342, 2345, 2352, 2355, 2362, 2365,
     648     2372, 2375, 2382, 2388, 2401, 2408, 2415, 2418, 2425, 2428,
     649     2435, 2438, 2445, 2448, 2455, 2458, 2465, 2468, 2475, 2478,
     650
     651     2485, 2488, 2495, 2502, 2505, 2512, 2515, 2522, 2525, 2532,
     652     2535, 2538, 2544, 2551, 2560, 2567, 2574, 2577, 2584, 2587,
     653     2590, 2596, 2603, 2606, 2609, 2612, 2615, 2618, 2621, 2624,
     654     2631, 2634, 2641, 2644, 2647, 2650, 2653, 2663, 2670, 2673,
     655     2676, 2679, 2686, 2693, 2700, 2703, 2710, 2717, 2724, 2731,
     656     2738, 2745, 2752, 2759, 2766, 2773, 2780, 2787, 2794, 2801,
     657     2808
    655658    } ;
    656659
    657 static yyconst flex_int16_t yy_def[1050] =
     660static yyconst flex_int16_t yy_def[1062] =
    658661    {   0,
    659       875,    1,  876,  876,  875,    5,  877,  877,  878,  878,
    660       875,  875,  875,  875,  875,  875,  875,  879,  875,  875,
    661       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    662       875,   31,  875,  875,  875,  875,  875,  875,  880,  879,
    663       875,  875,  875,  875,  879,  875,  879,  879,  879,  879,
    664       879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
    665       879,  875,  875,  875,  875,  875,  881,  875,  875,  875,
    666       882,  875,  875,  883,  875,  875,  884,  875,  875,  875,
    667       875,  875,  875,  875,  879,  875,  875,  875,  875,  875,
    668       875,  875,  875,  875,  875,  875,  875,  875,  875,  885,
    669 
    670       875,   98,   30,  875,  875,  875,  875,  886,   30,  875,
    671        31,  875,  875,   31,  875,  875,  875,  875,  875,  875,
    672       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    673       875,  875,  875,  875,  875,  875,  875,  875,  887,  875,
    674       875,  875,  875,  879,  888,  889,  875,  875,  879,  879,
    675       879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
    676       879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
    677       879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
    678       879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
    679       879,  879,  875,  875,  875,  881,  881,  881,  875,  881,
    680 
    681       875,  882,  875,  890,  891,  883,  875,  875,  875,  875,
    682       892,  893,  894,  884,  875,  875,  875,  875,  875,  875,
    683       875,  875,  875,  875,  875,  875,  875,  895,  896,  875,
    684        98,  875,  875,  875,  875,   98,  897,  875,  875,  103,
    685       103,  875,  875,  875,  875,  875,  875,  875,  875,  898,
    686       899,  900,  875,  875,  875,  875,  875,  875,  875,  875,
    687       875,  875,  875,  875,  875,  875,  887,  875,  901,  902,
    688       903,  904,  905,  906,  875,  907,  907,  907,  907,  907,
    689       907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
    690       907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
    691 
    692       907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
    693       907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
    694       907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
    695       907,  907,  907,  907,  907,  907,  907,  907,  907,  908,
    696       909,  910,  911,  912,  913,  914,  915,  875,  875,  916,
    697       917,  918,  919,  920,  921,  875,  875,  875,  875,  875,
    698       922,  923,  924,  925,  875,  875,  875,  875,  875,  875,
    699       875,  367,  372,  875,  875,  926,  927,  928,  875,  875,
    700       875,  928,  875,  875,  875,  929,  930,  931,  932,  933,
    701       934,  935,  936,  937,  938,  875,  939,  939,  939,  939,
    702 
    703       939,  939,  939,  939,  939,  939,  939,  939,  939,  939,
    704       939,  939,  939,  939,  939,  939,  939,  939,  939,  939,
    705       939,  939,  939,  939,  939,  939,  939,  939,  939,  939,
    706       939,  939,  939,  939,  939,  939,  939,  939,  939,  939,
    707       939,  939,  939,  939,  939,  939,  939,  939,  939,  939,
    708       939,  939,  939,  939,  939,  939,  939,  939,  939,  939,
    709       939,  940,  941,  942,  943,  944,  945,  946,  947,  948,
    710       875,  949,  950,  951,  952,  953,  953,  954,  955,  956,
    711       957,  875,  482,  875,  958,  875,  958,  875,  875,  875,
    712       875,  875,  875,  875,  875,  959,  960,  961,  962,  963,
    713 
    714       964,  965,  966,  967,  968,  969,  970,  971,  972,  972,
    715       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    716       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    717       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    718       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    719       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    720       972,  972,  972,  972,  972,  972,  972,  972,  972,  973,
    721       974,  975,  976,  977,  978,  979,  980,  981,  982,  983,
    722       984,  985,  986,  987,  988,  989,  875,  875,  875,  875,
    723       990,  875,  589,  875,  875,  875,  593,  875,  991,  992,
    724 
    725       993,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
    726      1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
    727      1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
    728      1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
    729      1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
    730      1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
    731      1001, 1001, 1003,  875, 1004, 1005, 1006, 1007, 1008, 1009,
    732      1010, 1011, 1012, 1013,  875, 1014, 1015, 1016, 1017,  875,
    733       680,  875,  875,  875, 1018, 1019, 1020, 1021, 1022, 1023,
    734      1024, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
    735 
    736      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
    737      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
    738      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
    739      1026, 1027, 1028, 1029, 1030, 1031, 1032,  875, 1033, 1018,
    740      1020, 1034, 1035, 1025, 1026, 1026, 1026, 1026, 1026, 1026,
    741      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
    742      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
    743      1026, 1026, 1026, 1026, 1026, 1036, 1037, 1030, 1038, 1031,
    744      1039, 1032, 1040, 1041, 1034, 1042, 1035, 1026, 1026, 1026,
    745      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
    746 
    747      1026, 1026, 1026, 1026, 1026, 1026, 1043, 1036, 1044, 1037,
    748      1045, 1038, 1046, 1039, 1047, 1040, 1048, 1041, 1042, 1026,
    749      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
    750      1026, 1026, 1026, 1026, 1026, 1049, 1043, 1044, 1045, 1046,
    751      1020, 1047, 1048, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
    752      1026, 1026, 1026, 1026, 1049, 1020, 1026, 1026, 1026, 1026,
    753      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
    754      1026, 1026, 1026, 1026,    0,  875,  875,  875,  875,  875,
    755       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    756       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    757 
    758       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    759       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    760       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    761       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    762       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    763       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    764       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    765       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    766       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    767       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    768 
    769       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    770       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    771       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    772       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    773       875,  875,  875,  875,  875,  875,  875,  875,  875
     662      887,    1,  888,  888,  887,    5,  889,  889,  890,  890,
     663      887,  887,  887,  887,  887,  887,  887,  891,  887,  887,
     664      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     665      887,   31,  887,  887,  887,  887,  887,  887,  892,  891,
     666      887,  887,  887,  887,  891,  887,  891,  891,  891,  891,
     667      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     668      891,  891,  887,  887,  887,  887,  887,  893,  887,  887,
     669      887,  894,  887,  887,  895,  887,  887,  896,  887,  887,
     670      887,  887,  887,  887,  887,  891,  887,  887,  887,  887,
     671      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     672
     673      897,  887,   99,   30,  887,  887,  887,  887,  898,   30,
     674      887,   31,  887,  887,   31,  887,  887,  887,  887,  887,
     675      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     676      887,  887,  887,  887,  887,  887,  887,  887,  887,  899,
     677      887,  887,  887,  887,  891,  900,  901,  887,  887,  891,
     678      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     679      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     680      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     681      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     682      891,  891,  891,  891,  887,  887,  887,  893,  893,  893,
     683
     684      887,  893,  887,  894,  887,  902,  903,  895,  887,  887,
     685      887,  887,  904,  905,  906,  896,  887,  887,  887,  887,
     686      887,  887,  887,  887,  887,  887,  887,  887,  887,  907,
     687      908,  887,   99,  887,  887,  887,  887,   99,  909,  887,
     688      887,  104,  104,  887,  887,  887,  887,  887,  887,  887,
     689      887,  910,  911,  912,  887,  887,  887,  887,  887,  887,
     690      887,  887,  887,  887,  887,  887,  887,  887,  899,  887,
     691      913,  914,  915,  916,  917,  918,  887,  919,  919,  919,
     692      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     693      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     694
     695      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     696      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     697      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     698      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     699      919,  919,  919,  920,  921,  922,  923,  924,  925,  926,
     700      927,  887,  887,  928,  929,  930,  931,  932,  933,  887,
     701      887,  887,  887,  887,  934,  935,  936,  937,  887,  887,
     702      887,  887,  887,  887,  887,  371,  376,  887,  887,  938,
     703      939,  940,  887,  887,  887,  940,  887,  887,  887,  941,
     704      942,  943,  944,  945,  946,  947,  948,  949,  950,  887,
     705
     706      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     707      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     708      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     709      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     710      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     711      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     712      951,  951,  951,  951,  951,  951,  951,  952,  953,  954,
     713      955,  956,  957,  958,  959,  960,  887,  961,  962,  963,
     714      964,  965,  965,  966,  967,  968,  969,  887,  488,  887,
     715      970,  887,  970,  887,  887,  887,  887,  887,  887,  887,
     716
     717      887,  971,  972,  973,  974,  975,  976,  977,  978,  979,
     718      980,  981,  982,  983,  984,  984,  984,  984,  984,  984,
     719      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     720      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     721      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     722      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     723      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     724      984,  984,  984,  984,  984,  984,  985,  986,  987,  988,
     725      989,  990,  991,  992,  993,  994,  995,  996,  997,  998,
     726      999, 1000, 1001,  887,  887,  887,  887, 1002,  887,  596,
     727
     728      887,  887,  887,  600,  887, 1003, 1004, 1005, 1006, 1007,
     729     1008, 1009, 1010, 1011, 1012, 1013, 1014, 1013, 1013, 1013,
     730     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     731     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     732     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     733     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     734     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1015,  887,
     735     1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
     736      887, 1026, 1027, 1028, 1029,  887,  686,  887,  887,  887,
     737     1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1038,
     738
     739     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     740     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     741     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     742     1038, 1038, 1038, 1038, 1038, 1038, 1039, 1040, 1041, 1042,
     743     1043, 1044,  887, 1045, 1030, 1032, 1046, 1047, 1037, 1038,
     744     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     745     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     746     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     747     1048, 1049, 1042, 1050, 1043, 1051, 1044, 1052, 1053, 1046,
     748     1054, 1047, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     749
     750     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     751     1038, 1055, 1048, 1056, 1049, 1057, 1050, 1058, 1051, 1059,
     752     1052, 1060, 1053, 1054, 1038, 1038, 1038, 1038, 1038, 1038,
     753     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     754     1061, 1055, 1056, 1057, 1058, 1032, 1059, 1060, 1038, 1038,
     755     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     756     1061, 1032, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     757     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     758     1038, 1038, 1038, 1038, 1038, 1038,    0,  887,  887,  887,
     759      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     760
     761      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     762      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     763      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     764      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     765      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     766      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     767      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     768      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     769      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     770      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     771
     772      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     773      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     774      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     775      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     776      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     777      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     778      887
    774779    } ;
    775780
    776 static yyconst flex_int16_t yy_nxt[2867] =
     781static yyconst flex_int16_t yy_nxt[2908] =
    777782    {   0,
    778783       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    780785       28,   29,   30,   31,   32,   32,   32,   32,   33,   34,
    781786       35,   36,   37,   38,   39,   18,   18,   18,   18,   18,
    782        18,   18,   40,   18,   18,   18,   18,   18,   40,   18,
    783        41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
    784        51,   52,   53,   18,   54,   18,   55,   18,   18,   18,
    785        18,   56,   57,   58,   59,   60,   61,   18,   18,   18,
    786        62,   63,   64,   65,   66,   83,   91,   84,   84,   66,
    787        87,   88,   67,   70,   70,   70,   70,   70,   70,   70,
    788 
    789        70,   70,   70,   71,   70,   70,   70,   70,   70,   70,
    790        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
    791        70,   70,   70,   70,   70,   70,   70,   70,   71,   71,
     787       18,   18,   18,   40,   18,   18,   18,   18,   18,   40,
     788       18,   41,   42,   43,   44,   45,   46,   47,   48,   49,
     789       50,   51,   52,   53,   18,   54,   18,   55,   18,   18,
     790       56,   18,   57,   58,   59,   60,   61,   62,   18,   18,
     791       18,   63,   64,   65,   66,   67,   84,   92,   85,   85,
     792       67,   88,   89,   68,   71,   71,   71,   71,   71,   71,
     793
     794       71,   71,   71,   71,   72,   71,   71,   71,   71,   71,
    792795       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    793        71,   71,   71,   70,   72,   70,   70,   71,   73,   71,
    794        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    795        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    796        71,   71,   71,   70,   70,   70,   70,   75,   75,   78,
    797        78,  122,  123,   89,  140,   78,   78,   86,   75,   75,
    798        79,   80,   81,   81,   81,   79,   81,   80,   82,   82,
    799 
    800        82,   81,   90,   92,  141,  145,   86,   97,   94,   98,
    801        98,   98,   98,   98,   98,  250,  875,   93,   99,   84,
    802        95,   96,   84,  100,  176,  117,   76,   76,   76,   76,
    803       142,  146,   86,  101,  102,  143,  103,  103,  103,  103,
    804       104,  104,  118,   86,  119,  120,  147,   86,  148,  252,
    805       258,   86,  160,  105,  193,  192,  106,   86,   86,  149,
    806       150,  151,  107,  108,  152,  153,  181,  154,  109,   86,
    807       155,  156,   86,   86,  105,   86,  144,  161,  157,  158,
    808       110,  159,  204,  261,  162,  262,   86,  179,  107,  228,
    809       163,  108,  102,  180,  111,  111,  111,  111,  111,  111,
    810 
    811        86,  168,   86,  169,  194,   86,   86,   86,  205,  164,
    812        86,  105,  170,  165,  112,  229,  177,   86,  166,  186,
    813       113,  281,  167,  178,  269,   86,  114,  187,  191,  182,
    814       183,  142,  105,  261,  188,  262,  143,  284,  115,  184,
    815        86,   86,  185,  198,  199,  171,  113,  124,  198,  189,
    816       270,  125,  126,  172,  127,  173,  128,  129,  174,  130,
    817       248,  131,  175,  256,  200,  200,  200,  200,  200,  200,
    818       132,  133,  134,  261,   86,  262,   86,  144,  195,   80,
    819        81,   81,   81,  195,  249,  280,  196,  257,   86,   86,
    820       135,  190,   86,  136,   79,   80,   81,   81,   81,   79,
    821 
    822        81,   80,   81,   81,   81,   81,   81,   80,   82,   82,
    823        82,   81,  261,  305,  262,  240,  240,  240,  240,  246,
    824       137,  138,  207,  208,  875,  247,  254,  207,   86,  209,
    825       247,  261,  255,  262,  209,   98,   98,   98,   98,   98,
    826        98,  263,  875,  210,  210,  210,  210,  241,  246,  308,
    827       875,  247,  263,  261,  209,  262,  247,  102,  255,  104,
    828       104,  104,  104,  104,  104,   86,  261,  239,  262,  211,
    829       875,  261,  209,  262,   86,  255,  105,  209,  209,  875,
    830       276,  209,  209,   86,  253,  264,  261,  277,  262,  209,
    831       296,  242,  209,  254,  209,  212,  209,  105,  213,  215,
    832 
    833       261,  255,  262,  216,  217,  283,   86,  875,  218,  219,
    834       243,  220,  243,  221,   86,  244,  244,  244,  244,  244,
    835       244,   86,  222,  223,  224,  261,  265,  262,  142,  306,
    836        86,   86,  278,  143,   86,   86,  285,  286,  287,  279,
    837       288,  289,  225,   86,  290,  226,  291,  245,  282,   86,
    838        86,  292,  293,  294,   86,  295,  297,  875,  298,  301,
    839        86,   86,  307,   86,  299,  300,  309,  303,   86,   86,
    840       304,   86,  302,  227,  231,  231,  231,  231,  231,  231,
    841        86,   86,   86,  312,  310,  311,  313,   86,   86,   86,
    842       232,  233,   86,  234,  235,   86,  142,   86,  314,   86,
    843 
    844       321,  315,  330,   86,  320,   86,  236,  318,   86,  316,
    845       317,  232,  233,  232,  319,  325,  234,   86,  235,  322,
    846        86,   86,   86,  331,  333,  328,  332,  629,  326,  323,
    847       324,   86,  207,  208,  337,  335,  338,  207,  365,   86,
    848       329,  342,  334,  336,  339,  327,  195,   80,   81,   81,
    849        81,  195,  198,  199,  196,   86,   86,  198,  198,  199,
    850       356,  365,  357,  198,  340,  199,  356,  343,  357,  340,
    851       356,  341,  357,  200,  200,  200,  200,  200,  200,  200,
    852       200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
    853       200,  348,  348,  348,  348,  357,  357,  356,   86,  357,
    854 
    855       358,  356,  356,  357,  357,  356,  359,  357,  356,  356,
    856       357,  357,  356,  356,  357,  357,  369,  365,  403,  366,
    857       369,  366,   86,  349,  367,  367,  367,  367,  367,  367,
    858       875,  232,  233,   86,  234,  235,  261,  369,  262,  369,
    859       365,  261,  405,  262,  369,  104,  104,  104,  104,  104,
    860       104,  398,  232,  233,  232,  374,  368,  234,   86,  235,
    861        86,   86,  105,   86,  371,  244,  244,  244,  244,  244,
    862       244,  384,  386,  397,   86,   86,  399,  253,  401,  400,
    863       402,  374,   86,  105,  372,  372,  372,  372,  372,  372,
    864       104,  104,  104,  104,  104,  104,  377,  384,  387,   86,
    865 
    866       232,   86,   86,  234,  235,  243,  404,  243,  411,   86,
    867       244,  244,  244,  244,  244,  244,  373,  410,  379,   86,
    868       380,  232,  253,  232,  381,  409,  234,  419,  235,   86,
    869       382,  111,  111,  111,  111,  111,  111,   86,   86,   86,
    870        86,   86,  383,   86,  412,  415,  380,   86,  416,   86,
    871       381,   86,  406,   86,  413,  414,  417,   86,  407,  408,
    872       422,   86,  421,  258,   86,  420,   86,   86,  418,  424,
    873        86,  423,  428,   86,  426,  427,  430,   86,  429,  425,
    874        86,   86,   86,   86,   86,  431,  432,  433,   86,  437,
    875        86,  435,   86,  438,   86,  439,  434,   86,  436,   86,
    876 
    877        86,   86,   86,   86,   86,   86,   86,  443,   86,   86,
    878       444,  441,  440,  446,   86,  442,  445,  451,   86,   86,
    879       142,  450,   86,   86,  447,  449,  448,  456,  452,   86,
    880        86,  459,  453,   86,  494,  460,  454,  455,  340,  199,
    881       457,  199,  458,  340,  356,  341,  357,  197,  461,  209,
    882       209,  209,  209,  348,  348,  348,  348,  356,  495,  357,
    883        86,   86,   86,   86,  367,  367,  367,  367,  367,  367,
    884       366,  509,  366,  514,   86,  367,  367,  367,  367,  367,
    885       367,  471,  482,  482,  482,  482,  482,  482,  231,  231,
    886       231,  231,  231,  231,   86,   86,  516,   86,  232,  486,
    887 
    888       875,  234,  235,  240,  240,  240,  240,  104,  104,  487,
    889       489,  510,  486,  512,  483,  377,  490,  545,  490,  232,
    890       370,  232,  488,   86,  234,  486,  235,  372,  372,  372,
    891       372,  372,  372,   86,  875,  371,  489,  379,  486,  380,
    892        86,  525,  490,  381,  490,  491,  529,  491,  511,  382,
    893       492,  492,  492,  492,  492,  492,  379,   86,  380,  373,
    894        86,  383,  381,   86,   86,  380,  513,   86,  496,  381,
    895        86,   86,  515,  517,   86,   86,  519,   86,   86,   86,
    896       383,   86,  493,  518,  380,   86,  526,  521,  381,  520,
    897        86,  522,  523,  524,  527,   86,  531,  532,  530,   86,
    898 
    899        86,  528,   86,   86,   86,  533,   86,   86,   86,  534,
    900        86,  535,  538,  541,   86,  543,  539,   86,   86,   86,
    901        86,  536,   86,  542,  537,  544,   86,  540,   86,  551,
    902        86,   86,  547,   86,  549,   86,  546,   86,   86,   86,
    903       548,   86,  550,  552,   86,   86,  558,   86,   86,   86,
    904       555,  553,  554,  556,  560,  561,  559,  557,   86,   86,
    905       567,  566,   86,  716,  563,  562,  199,  564,   86,  568,
    906       486,  569,  570,  209,  209,  209,  209,  565,  482,  482,
    907       482,  482,  482,  482,  372,  372,  372,  372,  372,  372,
    908       616,   86,  486,  486,  232,  592,  486,  234,  235,  588,
    909 
    910        86,  588,  487,  591,  589,  589,  589,  589,  589,  589,
    911       483,  614,   86,  612,   86,  232,  484,  232,  486,  486,
    912       234,  592,  235,  492,  492,  492,  492,  492,  492,  611,
    913        86,   86,   86,   86,  621,  620,  590,  593,  593,  593,
    914       593,  593,  593,   86,  615,  613,  617,   86,  618,   86,
    915        86,   86,   86,  594,  626,  875,  595,  596,  491,  856,
    916       491,  619,  622,  492,  492,  492,  492,  492,  492,  597,
    917       623,   86,   86,  624,  594,   86,  594,   86,   86,  595,
    918       625,  596,   86,  627,   86,   86,  630,   86,  628,  635,
    919       634,   86,   86,  633,   86,   86,  636,   86,   86,  632,
    920 
    921       631,   86,   86,  641,   86,   86,   86,   86,   86,  638,
    922       642,   86,  639,  640,   86,   86,  644,  637,   86,  643,
    923       645,  646,   86,  647,  648,  652,   86,  651,   86,  650,
    924        86,  649,   86,  656,  653,  658,   86,  655,  654,   86,
    925        86,   86,   86,   86,  657,  659,   86,   86,  682,  660,
    926       682,   86,  696,  695,  700,  662,  749,  661,  482,  482,
    927       482,  482,  482,  482,  589,  589,  589,  589,  589,  589,
    928       588,  682,  588,  682,   86,  589,  589,  589,  589,  589,
    929       589,  593,  593,  593,  593,  593,  593,  697,   86,   86,
    930       587,  680,  680,  680,  680,  680,  680,  683,   86,   86,
    931 
    932        86,  683,   86,  693,   86,  698,   86,  594,  701,  703,
    933       595,  596,  699,  597,   86,   86,  694,  704,  683,  702,
    934       683,  705,   86,  681,   86,  683,   86,  712,  594,  706,
    935       594,   86,   86,  595,  710,  596,   86,  707,   86,  708,
    936        86,   86,   86,  711,   86,   86,  709,  713,   86,  715,
    937       718,   86,   86,   86,   86,   86,  714,   86,   86,   86,
    938       717,  722,  726,   86,  719,  723,  727,  720,   86,   86,
    939       721,   86,  725,  729,   86,  875,  875,  728,  724,  745,
    940       730,  748,   86,  747,  731,  680,  680,  680,  680,  680,
    941       680,  593,  593,  593,  593,  593,  593,   86,   86,   86,
    942 
    943        86,  594,  750,  751,  595,  596,   86,  746,   86,  752,
    944        86,   86,  755,  759,  754,   86,  753,  681,  757,  756,
    945       762,   86,  594,  684,  594,   86,   86,  595,  760,  596,
    946       761,   86,  758,   86,  763,   86,   86,   86,   86,  764,
    947        86,   86,   86,  765,   86,   86,  766,  769,   86,   86,
    948       767,   86,   86,   86,  768,   86,   86,  774,  790,   86,
    949       775,   86,  771,  770,   86,  792,  772,  791,   86,  773,
    950       680,  680,  680,  680,  680,  680,  788,   86,  789,   86,
    951       796,  794,  793,  798,   86,   86,   86,  799,  800,   86,
    952        86,   86,  797,  801,  795,   86,   86,   86,  802,  803,
    953 
    954        86,   86,  738,   86,  804,   86,  823,   86,   86,   86,
    955        86,  825,  826,  805,  806,  828,   86,   86,   86,  822,
    956       829,  821,   86,   86,  820,  827,  831,  824,   86,   86,
    957        86,  832,   86,   86,  834,   86,  846,   86,  830,  833,
    958        86,  847,  845,  844,   86,  835,   86,  849,   86,   86,
    959        86,  851,  852,   86,   86,  848,   86,  859,   86,  853,
    960        86,   86,  854,  850,   86,  857,  858,  861,  860,   86,
    961        86,   86,  862,  863,   86,   86,   86,  866,   86,  868,
    962       864,   86,   86,   86,   86,  867,  865,  875,   86,  875,
    963       855,  871,   86,   86,  874,   86,   86,   86,  875,  875,
    964 
    965       869,  843,  870,  875,  842,  872,  873,   68,   68,   68,
    966        68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
    967        74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
    968        74,   74,   74,   77,   77,   77,   77,   77,   77,   77,
    969        77,   77,   77,   77,   77,   77,   85,  875,  840,   85,
    970       875,   85,   85,   85,   85,   85,  139,  839,  875,  838,
    971       139,  139,  139,  139,  139,  139,  197,  197,  197,  197,
    972       197,  197,  197,  197,  197,  197,  197,  197,  197,  202,
    973       875,  837,  202,   86,  202,  202,  202,  202,  202,  206,
    974        86,  206,  206,   86,  206,  206,  206,  206,  206,  206,
    975 
    976       875,  206,  214,  819,  875,  214,  214,  214,  214,  214,
    977       214,  214,  214,  818,  214,  237,  237,  237,  237,  237,
    978       237,  237,  237,  237,  237,  237,  237,  237,  251,  251,
    979       816,  251,  875,  814,  875,  251,  267,  812,  875,  267,
    980       810,  267,  267,  267,  267,  267,  271,  808,  271,   86,
    981        86,   86,  271,  273,   86,  273,   86,   86,   86,  273,
    982       344,   86,  344,   86,   86,   86,  344,  346,   86,  346,
    983       875,  787,  785,  346,  350,  875,  350,  875,  782,  780,
    984       350,  352,  778,  352,   86,   86,   86,  352,  354,   86,
    985       354,   86,   86,   86,  354,  361,   86,  361,  744,  741,
    986 
    987       740,  361,  363,  738,  363,  203,  734,  733,  363,  237,
    988       237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
    989       237,  237,  376,  664,  376,  378,  378,   86,  378,  378,
    990       378,   86,  378,  251,  251,   86,  251,  388,   86,  388,
    991        86,   86,   86,  388,  390,   86,  390,   86,   86,   86,
    992       390,  392,   86,  392,   86,   86,   86,  392,  271,  691,
    993       271,  394,  690,  394,  688,  686,  684,  394,  273,  591,
    994       273,   85,  679,  678,   85,  676,   85,   85,   85,   85,
    995        85,  197,  197,  197,  197,  197,  197,  197,  197,  197,
    996       197,  197,  197,  197,  462,  462,  462,  462,  462,  462,
    997 
    998       462,  462,  462,  462,  462,  462,  462,  463,  674,  463,
    999       672,  670,  668,  463,  465,  666,  465,  664,   86,   86,
    1000       465,  467,   86,  467,   86,   86,   86,  467,  344,   86,
    1001       344,  469,   86,  469,   86,  610,  608,  469,  346,  606,
    1002       346,  472,  604,  472,  602,  600,  496,  472,  350,  598,
    1003       350,  474,  598,  474,  587,  586,  584,  474,  352,  477,
    1004       352,  476,  477,  476,  582,  580,  578,  476,  354,  576,
    1005       354,  478,  574,  478,  572,   86,   86,  478,  361,   86,
    1006       361,  480,   86,  480,   86,   86,   86,  480,  363,   86,
    1007       363,  485,  508,  485,  506,  485,  504,  485,  376,  502,
    1008 
    1009       376,  500,  376,  498,  376,  378,  378,  484,  378,  378,
    1010       378,  481,  378,  497,  479,  497,  357,  357,  477,  497,
    1011       499,  475,  499,  473,  470,  468,  499,  501,  466,  501,
    1012       464,   86,   86,  501,  388,   86,  388,  503,  396,  503,
    1013       395,  393,  391,  503,  390,  389,  390,  505,  268,  505,
    1014       263,  262,  385,  505,  392,  385,  392,  507,  250,  507,
    1015       375,  375,  238,  507,  394,  370,  394,   85,  364,  362,
    1016        85,  360,   85,   85,   85,   85,   85,  462,  462,  462,
    1017       462,  462,  462,  462,  462,  462,  462,  462,  462,  462,
    1018       571,  356,  571,  355,  353,  351,  571,  463,  347,  463,
    1019 
    1020       573,  345,  573,  203,  199,   86,  573,  465,  275,  465,
    1021       575,  274,  575,  272,  268,  263,  575,  467,  266,  467,
    1022       577,  263,  577,  261,  260,  259,  577,  469,  238,  469,
    1023       579,  230,  579,   84,   84,   86,  579,  472,  203,  472,
    1024       581,  201,  581,   84,  121,  116,  581,  474,   86,  474,
    1025       476,  875,  476,   69,   69,  875,  476,  583,  875,  583,
    1026       875,  875,  875,  583,  478,  875,  478,  585,  875,  585,
    1027       875,  875,  875,  585,  480,  875,  480,  485,  875,  485,
    1028       875,  485,  875,  485,  378,  875,  378,  875,  875,  875,
    1029       378,  599,  875,  599,  875,  875,  875,  599,  497,  875,
    1030 
    1031       497,  601,  875,  601,  875,  875,  875,  601,  499,  875,
    1032       499,  603,  875,  603,  875,  875,  875,  603,  501,  875,
    1033       501,  605,  875,  605,  875,  875,  875,  605,  503,  875,
    1034       503,  607,  875,  607,  875,  875,  875,  607,  505,  875,
    1035       505,  609,  875,  609,  875,  875,  875,  609,  507,  875,
    1036       507,   85,  875,  875,   85,  875,   85,   85,   85,   85,
    1037        85,  663,  663,  663,  663,  663,  663,  663,  663,  663,
    1038       663,  663,  663,  663,  665,  875,  665,  875,  875,  875,
    1039       665,  571,  875,  571,  667,  875,  667,  875,  875,  875,
    1040       667,  573,  875,  573,  669,  875,  669,  875,  875,  875,
    1041 
    1042       669,  575,  875,  575,  671,  875,  671,  875,  875,  875,
    1043       671,  577,  875,  577,  673,  875,  673,  875,  875,  875,
    1044       673,  579,  875,  579,  675,  875,  675,  875,  875,  875,
    1045       675,  581,  875,  581,  677,  875,  677,  875,  875,  875,
    1046       677,  583,  875,  583,   85,  875,   85,  875,  875,  875,
    1047        85,  585,  875,  585,  485,  875,  485,  875,  875,  875,
    1048       485,  685,  875,  685,  875,  875,  875,  685,  599,  875,
    1049       599,  687,  875,  687,  875,  875,  875,  687,  601,  875,
    1050       601,  689,  875,  689,  875,  875,  875,  689,  603,  875,
    1051       603,  139,  875,  139,  875,  875,  875,  139,  605,  875,
    1052 
    1053       605,  692,  875,  692,  607,  875,  607,   85,  875,  875,
    1054        85,  875,   85,   85,   85,   85,   85,  609,  875,  609,
    1055       663,  663,  663,  663,  663,  663,  663,  663,  663,  663,
    1056       663,  663,  663,  732,  875,  732,  875,  875,  875,  732,
    1057       665,  875,  665,  202,  875,  202,  875,  875,  875,  202,
    1058       667,  875,  667,  735,  875,  735,  669,  875,  669,  202,
    1059       875,  875,  202,  875,  202,  202,  202,  202,  202,  671,
    1060       875,  671,  736,  875,  736,  673,  875,  673,  675,  875,
    1061       675,  737,  875,  737,  677,  875,  677,   85,  875,   85,
    1062       739,  875,  739,  875,  875,  875,  739,  685,  875,  685,
    1063 
    1064       267,  875,  267,  875,  875,  875,  267,  687,  875,  687,
    1065       742,  875,  742,  689,  875,  689,  139,  875,  139,  743,
    1066       875,  743,  875,  875,  875,  743,   85,  875,  875,   85,
    1067       875,   85,   85,   85,   85,   85,  776,  875,  776,  732,
    1068       875,  732,  202,  875,  202,  777,  875,  777,  875,  875,
    1069       875,  777,  779,  875,  779,  875,  875,  875,  779,  781,
    1070       875,  781,  875,  875,  875,  781,  783,  875,  783,  784,
    1071       875,  784,  875,  875,  875,  784,  786,  875,  786,  875,
    1072       875,  875,  786,  807,  875,  807,  875,  875,  875,  807,
    1073       809,  875,  809,  875,  875,  875,  809,  811,  875,  811,
    1074 
    1075       875,  875,  875,  811,  813,  875,  813,  875,  875,  875,
    1076       813,  815,  875,  815,  875,  875,  875,  815,  817,  875,
    1077       817,  875,  875,  875,  817,  609,  875,  609,  875,  875,
    1078       875,  609,  836,  875,  836,  875,  875,  875,  836,  671,
    1079       875,  671,  875,  875,  875,  671,  675,  875,  675,  875,
    1080       875,  875,  675,   85,  875,   85,  875,  875,  875,   85,
    1081       841,  875,  841,  875,  875,  875,  841,  139,  875,  139,
    1082       875,  875,  875,  139,  202,  875,  202,  875,  875,  875,
    1083       202,   11,  875,  875,  875,  875,  875,  875,  875,  875,
    1084       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1085 
    1086       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1087       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1088       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1089       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1090       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1091       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1092       875,  875,  875,  875,  875,  875
     796       71,   71,   71,   71,   71,   71,   71,   71,   71,   72,
     797       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
     798       72,   72,   72,   72,   72,   71,   73,   71,   71,   72,
     799       74,   72,   72,   72,   72,   72,   72,   72,   72,   72,
     800       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
     801       72,   72,   72,   72,   72,   71,   71,   71,   71,   76,
     802       76,   79,   79,  123,  124,   90,  141,   79,   79,   87,
     803       76,   76,   80,   81,   82,   82,   82,   80,   82,   81,
     804
     805       83,   83,   83,   82,   91,   93,   87,  142,  146,   98,
     806       95,   99,   99,   99,   99,   99,   99,  252,  887,   94,
     807      100,   85,   96,   97,   85,  101,  161,  118,  143,   77,
     808       77,   77,   77,  144,  147,  102,  103,   87,  104,  104,
     809      104,  104,  105,  105,  119,   87,  120,  121,  148,  263,
     810      149,  264,  254,  260,  183,  106,  195,   87,  159,  107,
     811      160,  150,  151,  152,   87,  108,  109,  153,  154,  162,
     812      155,  110,   87,  156,  157,  145,  163,  106,   87,  182,
     813       87,  158,  164,  111,  206,   87,  263,   87,  264,   87,
     814       87,  108,  194,   87,  109,  103,  250,  112,  112,  112,
     815
     816      112,  112,  112,   87,  169,  177,  170,  196,  193,   87,
     817      207,  180,  165,  230,  106,  171,  166,  181,  113,  178,
     818      251,  167,   87,  258,  114,  168,  179,  172,   87,  263,
     819      115,  264,  248,   87,   87,  173,  106,  174,  249,  231,
     820      175,  143,  116,  263,  176,  264,  144,  259,  317,  283,
     821      114,  125,  280,  500,  249,  126,  127,   87,  128,  191,
     822      129,  130,  256,  131,  249,  132,   87,  265,  257,  184,
     823      185,  257,  248,   87,  133,  134,  135,  501,  188,  186,
     824      249,  263,  187,  264,  271,   87,  189,  265,  145,  256,
     825      305,  200,  201,  190,  257,  136,  200,  257,  137,  263,
     826
     827      887,  264,  192,  197,   81,   82,   82,   82,  197,   87,
     828      272,  198,  202,  202,  202,  202,  202,  202,   80,   81,
     829       82,   82,   82,   80,   87,  138,  139,  209,  210,  263,
     830      887,  264,  209,  282,  211,  255,  263,  267,  264,  211,
     831       82,   81,   82,   82,   82,   82,   87,  887,  212,  212,
     832      212,  212,   82,   81,   83,   83,   83,   82,  887,  211,
     833       99,   99,   99,   99,   99,   99,  242,  242,  242,  242,
     834      266,  263,  263,  264,  264,  213,  143,  263,  211,  264,
     835       87,  144,  375,  211,  211,   87,   87,  211,  211,   87,
     836       87,   87,  286,  241,  887,  211,   87,   87,  211,  243,
     837
     838      211,  214,  211,  281,  215,  217,  278,  284,  285,  218,
     839      219,  307,  298,  279,  220,  221,   87,  222,   87,  223,
     840       87,   87,  887,   87,  309,  300,   87,   87,  224,  225,
     841      226,  103,  303,  105,  105,  105,  105,  105,  105,   87,
     842      299,   87,  301,  302,   87,  304,  308,  310,   87,  227,
     843      106,  245,  228,  245,  306,   87,  246,  246,  246,  246,
     844      246,  246,   87,  313,   87,  315,  244,   87,   87,  311,
     845      314,   87,  106,   87,   87,   87,  323,   87,   87,  322,
     846      229,  233,  233,  233,  233,  233,  233,  312,  333,  247,
     847      319,  316,  328,  320,  318,   87,   87,  234,  235,  236,
     848
     849      321,  237,  236,   87,  324,   87,  325,  143,  335,  360,
     850      331,  361,   87,   87,  238,  337,  326,  327,   87,  236,
     851      235,  236,   87,  329,  237,  332,  236,  287,  288,  289,
     852      336,  290,  291,  334,   87,  292,   87,  293,  407,  360,
     853      330,  361,  294,  295,  296,   87,  297,  339,  360,  343,
     854      361,   87,  200,  201,  338,  340,  346,  200,  341,   87,
     855      342,  197,   81,   82,   82,   82,  197,  200,  201,  198,
     856      378,  361,  200,  202,  202,  202,  202,  202,  202,  344,
     857      201,  360,  347,  361,  344,  360,  345,  361,  202,  202,
     858      202,  202,  202,  202,  209,  210,  378,  143,  361,  209,
     859
     860      202,  202,  202,  202,  202,  202,  352,  352,  352,  352,
     861      360,   87,  361,  362,  360,  360,  361,  361,  360,  363,
     862      361,  360,  360,  361,  361,  369,  369,  370,  369,  370,
     863      435,   87,  371,  371,  371,  371,  371,  371,  373,  353,
     864      373,   87,  263,  373,  264,  263,   87,  264,  369,  402,
     865       87,  369,  234,  235,  236,  406,  237,  236,  388,  401,
     866      373,   87,  373,   87,   87,  372,  390,  373,  105,  105,
     867      105,  105,  105,  105,  236,  235,  236,  404,   87,  237,
     868      405,  236,  403,  408,  388,  106,  246,  246,  246,  246,
     869      246,  246,  391,   87,   87,   87,   87,   87,   87,  419,
     870
     871       87,  255,  425,  432,   87,  420,  434,  106,  376,  376,
     872      376,  376,  376,  376,  381,  409,  413,  105,  105,  105,
     873      105,  105,  105,   87,  234,  245,  236,  245,  237,  236,
     874      246,  246,  246,  246,  246,  246,   87,  383,  410,  384,
     875       87,  377,   87,  385,  411,  412,  236,   87,  236,  386,
     876      255,  237,   87,  236,  112,  112,  112,  112,  112,  112,
     877      414,  387,  415,  417,  418,  384,   87,  416,   87,  385,
     878       87,   87,   87,   87,   87,   87,   87,   87,   87,  421,
     879      427,  426,  433,   87,  437,   87,   87,  260,  423,  424,
     880       87,   87,  436,  429,  428,  422,   87,  430,  431,  439,
     881
     882       87,  438,   87,   87,  446,  441,  440,  442,  443,   87,
     883       87,   87,   87,   87,   87,  445,   87,   87,   87,   87,
     884       87,  448,  447,   87,   87,  444,  449,  451,   87,  456,
     885       87,  450,   87,   87,   87,  452,  455,  454,   87,  453,
     886      457,  462,  460,  461,   87,   87,  458,  464,   87,  515,
     887      459,  463,  465,  466,  344,  201,  201,   87,  887,  344,
     888      467,  345,  199,  211,  211,  211,  211,  352,  352,  352,
     889      352,  360,  360,  361,  361,  371,  371,  371,  371,  371,
     890      371,  370,  569,  370,  492,  492,  371,  371,  371,  371,
     891      371,  371,  887,   87,  493,  494,  477,  488,  488,  488,
     892
     893      488,  488,  488,  233,  233,  233,  233,  233,  233,  516,
     894      492,  492,   87,  234,   87,  236,   87,  237,  236,  242,
     895      242,  242,  242,  105,  105,  495,  381,  517,   87,   87,
     896      489,  496,   87,  518,   87,  236,  374,  236,  519,  520,
     897      237,  521,  236,  376,  376,  376,  376,  376,  376,  383,
     898       87,  384,  375,  496,   87,  385,  522,  496,  497,  887,
     899      497,  386,   87,  498,  498,  498,  498,  498,  498,   87,
     900      525,  495,  526,  387,   87,  524,  377,  384,  523,  496,
     901       87,  385,  383,   87,  384,   87,   87,  527,  385,   87,
     902       87,  532,   87,   87,  502,   87,  499,   87,  535,  528,
     903
     904      529,  537,  530,  531,  533,   87,  387,   87,   87,  541,
     905      384,  534,  538,   87,  385,   87,  536,   87,   87,   87,
     906      539,  540,   87,   87,  546,   87,   87,   87,  544,  542,
     907       87,  548,   87,   87,  547,  543,   87,   87,  549,   87,
     908      545,   87,  552,   87,   87,  550,  556,  554,  551,   87,
     909      559,   87,  553,  555,   87,   87,  557,   87,   87,  558,
     910       87,   87,   87,  564,  560,  567,  563,  568,   87,  561,
     911      566,  562,   87,  565,   87,   87,  571,   87,   87,  573,
     912      627,  201,  492,  570,  576,  574,  572,  577,  211,  211,
     913      211,  211,  493,   87,  575,  488,  488,  488,  488,  488,
     914
     915      488,  376,  376,  376,  376,  376,  376,   87,  492,   87,
     916      618,  234,  595,  236,  595,  237,  236,  596,  596,  596,
     917      596,  596,  596,  492,   87,  599,  492,  621,  489,   87,
     918       87,  623,   87,  236,  490,  236,  598,  619,  237,   87,
     919      236,  498,  498,  498,  498,  498,  498,  620,   87,  492,
     920      597,  599,  492,  600,  600,  600,  600,  600,  600,   87,
     921      631,  622,   87,  887,  625,  887,   87,  862,   87,  601,
     922      497,  602,  497,  603,  602,  498,  498,  498,  498,  498,
     923      498,  624,  628,   87,   87,  630,  604,   87,   87,   87,
     924       87,  602,  633,  602,  626,  636,  603,  632,  602,  629,
     925
     926      634,   87,   87,  635,   87,   87,   87,  642,   87,   87,
     927      637,  641,   87,   87,  640,   87,   87,  643,  647,  639,
     928       87,   87,  887,   87,   87,   87,  638,   87,   87,  644,
     929      645,  646,  648,  650,   87,   87,   87,  649,   87,  653,
     930      651,   87,  652,   87,  654,  655,   87,   87,   87,   87,
     931      656,  657,   87,  660,  659,  661,  664,   87,  658,   87,
     932       87,  663,   87,   87,   87,  668,  665,  688,  688,  662,
     933      666,  701,  702,  887,  887,   87,  667,  488,  488,  488,
     934      488,  488,  488,  596,  596,  596,  596,  596,  596,  595,
     935      688,  595,  704,   87,  596,  596,  596,  596,  596,  596,
     936
     937      600,  600,  600,  600,  600,  600,  703,  688,   87,  887,
     938      594,  686,  686,  686,  686,  686,  686,  689,   87,  689,
     939       87,   87,  689,  699,   87,  708,   87,  601,  706,  602,
     940      688,  603,  602,  604,  707,   87,  700,  710,  709,  689,
     941       87,  689,   87,  705,  687,   87,  689,   87,   87,  602,
     942       87,  602,   87,  716,  603,  718,  602,  712,   87,   87,
     943       87,   87,  711,   87,  714,   87,   87,  713,   87,  717,
     944      715,   87,  721,  719,   87,  724,   87,   87,  722,  720,
     945      727,   87,   87,   87,  725,   87,  731,  723,   87,  732,
     946      726,   87,   87,  861,  728,  734,   87,  733,  730,   87,
     947
     948      735,   87,   87,  729,   87,   87,  751,  736,  686,  686,
     949      686,  686,  686,  686,  600,  600,  600,  600,  600,  600,
     950      750,   87,  755,   87,  601,  763,  602,  752,  603,  602,
     951      753,   87,   87,  764,   87,  756,  754,  757,   87,  758,
     952       87,  687,   87,   87,  759,  767,  602,  690,  602,  761,
     953       87,  603,  766,  602,   87,  760,   87,  762,   87,  765,
     954       87,  768,   87,  769,   87,   87,   87,   87,  770,   87,
     955       87,   87,   87,   87,  771,   87,  774,   87,  772,   87,
     956       87,  779,   87,   87,  795,   87,  780,  773,   87,   87,
     957      776,   87,  775,  803,  777,  796,  778,  686,  686,  686,
     958
     959      686,  686,  686,  793,   87,  794,  799,   87,  798,   87,
     960      801,   87,   87,   87,  797,  804,  805,  800,  806,   87,
     961       87,   87,  802,  807,   87,   87,   87,  808,   87,   87,
     962      743,   87,   87,   87,  809,  828,   87,   87,   87,  830,
     963      831,  833,   87,   87,   87,  834,   87,  836,  810,  811,
     964      826,  827,   87,  829,   87,  825,  832,  837,   87,   87,
     965       87,  838,  839,   87,   87,  835,   87,   87,   87,  851,
     966      850,  855,   87,  852,  840,   87,   87,   87,  853,  857,
     967      849,   87,   87,   87,  854,  858,  859,   87,   87,  856,
     968      860,   87,  863,  864,  865,   87,   87,  866,   87,  868,
     969
     970      867,  869,   87,   87,   87,  870,   87,   87,   87,  873,
     971       87,  875,   87,  876,   87,   87,   87,  874,   87,  872,
     972       87,   87,   87,  871,   87,  880,   87,   87,   87,  887,
     973      879,  881,  887,  848,  877,  878,  886,  887,  847,  884,
     974      887,  845,  882,  883,  887,  844,  885,   69,   69,   69,
     975       69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
     976       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
     977       75,   75,   75,   78,   78,   78,   78,   78,   78,   78,
     978       78,   78,   78,   78,   78,   78,   86,  887,  843,   86,
     979      887,   86,   86,   86,   86,   86,  140,  842,   87,   87,
     980
     981      140,  140,  140,  140,  140,  140,  199,  199,  199,  199,
     982      199,  199,  199,  199,  199,  199,  199,  199,  199,  204,
     983       87,  887,  204,  824,  204,  204,  204,  204,  204,  208,
     984      887,  208,  208,  823,  208,  208,  208,  208,  208,  208,
     985      821,  208,  216,  887,  819,  216,  216,  216,  216,  216,
     986      216,  216,  216,  887,  216,  239,  239,  239,  239,  239,
     987      239,  239,  239,  239,  239,  239,  239,  239,  253,  253,
     988      817,  253,  887,  815,  813,  253,  269,   87,   87,  269,
     989       87,  269,  269,  269,  269,  269,  273,   87,  273,   87,
     990       87,   87,  273,  275,   87,  275,   87,   87,   87,  275,
     991
     992      348,   87,  348,  887,  792,  790,  348,  350,  887,  350,
     993      887,  787,  785,  350,  354,  783,  354,   87,   87,   87,
     994      354,  356,   87,  356,   87,   87,   87,  356,  358,  749,
     995      358,  746,  745,  743,  358,  365,  205,  365,  739,  738,
     996      670,  365,  367,   87,  367,   87,   87,   87,  367,  239,
     997      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
     998      239,  239,  380,   87,  380,  382,  382,   87,  382,  382,
     999      382,   87,  382,  253,  253,   87,  253,  392,   87,  392,
     1000       87,   87,   87,  392,  394,   87,  394,   87,   87,  697,
     1001      394,  396,  696,  396,  694,  692,  690,  396,  273,  598,
     1002
     1003      273,  398,  685,  398,  684,  682,  680,  398,  275,  678,
     1004      275,   86,  676,  674,   86,  672,   86,   86,   86,   86,
     1005       86,  199,  199,  199,  199,  199,  199,  199,  199,  199,
     1006      199,  199,  199,  199,  468,  468,  468,  468,  468,  468,
     1007      468,  468,  468,  468,  468,  468,  468,  469,  670,  469,
     1008       87,   87,   87,  469,  471,   87,  471,   87,   87,   87,
     1009      471,  473,   87,  473,   87,   87,   87,  473,  348,  617,
     1010      348,  475,  615,  475,  613,  611,  609,  475,  350,  607,
     1011      350,  478,  502,  478,  605,  605,  594,  478,  354,  593,
     1012      354,  480,  591,  480,  483,  483,  589,  480,  356,  587,
     1013
     1014      356,  482,  585,  482,  583,  581,  579,  482,  358,   87,
     1015      358,  484,   87,  484,   87,   87,   87,  484,  365,   87,
     1016      365,  486,   87,  486,   87,  514,  512,  486,  367,  510,
     1017      367,  491,  508,  491,  506,  491,  504,  491,  380,  490,
     1018      380,  487,  380,  485,  380,  382,  382,  361,  382,  382,
     1019      382,  361,  382,  503,  483,  503,  481,  479,  476,  503,
     1020      505,  474,  505,  472,  470,   87,  505,  507,   87,  507,
     1021       87,  400,  399,  507,  392,  397,  392,  509,  395,  509,
     1022      393,  270,  265,  509,  394,  264,  394,  511,  389,  511,
     1023      389,  252,  379,  511,  396,  379,  396,  513,  240,  513,
     1024
     1025      374,  368,  366,  513,  398,  364,  398,   86,  360,  359,
     1026       86,  357,   86,   86,   86,   86,   86,  468,  468,  468,
     1027      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
     1028      578,  355,  578,  351,  349,  205,  578,  469,  201,  469,
     1029      580,   87,  580,  277,  276,  274,  580,  471,  270,  471,
     1030      582,  265,  582,  268,  265,  263,  582,  473,  262,  473,
     1031      584,  261,  584,  240,  232,   85,  584,  475,   85,  475,
     1032      586,   87,  586,  205,  203,   85,  586,  478,  122,  478,
     1033      588,  117,  588,   87,  887,   70,  588,  480,   70,  480,
     1034      482,  887,  482,  887,  887,  887,  482,  590,  887,  590,
     1035
     1036      887,  887,  887,  590,  484,  887,  484,  592,  887,  592,
     1037      887,  887,  887,  592,  486,  887,  486,  491,  887,  491,
     1038      887,  491,  887,  491,  382,  887,  382,  887,  887,  887,
     1039      382,  606,  887,  606,  887,  887,  887,  606,  503,  887,
     1040      503,  608,  887,  608,  887,  887,  887,  608,  505,  887,
     1041      505,  610,  887,  610,  887,  887,  887,  610,  507,  887,
     1042      507,  612,  887,  612,  887,  887,  887,  612,  509,  887,
     1043      509,  614,  887,  614,  887,  887,  887,  614,  511,  887,
     1044      511,  616,  887,  616,  887,  887,  887,  616,  513,  887,
     1045      513,   86,  887,  887,   86,  887,   86,   86,   86,   86,
     1046
     1047       86,  669,  669,  669,  669,  669,  669,  669,  669,  669,
     1048      669,  669,  669,  669,  671,  887,  671,  887,  887,  887,
     1049      671,  578,  887,  578,  673,  887,  673,  887,  887,  887,
     1050      673,  580,  887,  580,  675,  887,  675,  887,  887,  887,
     1051      675,  582,  887,  582,  677,  887,  677,  887,  887,  887,
     1052      677,  584,  887,  584,  679,  887,  679,  887,  887,  887,
     1053      679,  586,  887,  586,  681,  887,  681,  887,  887,  887,
     1054      681,  588,  887,  588,  683,  887,  683,  887,  887,  887,
     1055      683,  590,  887,  590,   86,  887,   86,  887,  887,  887,
     1056       86,  592,  887,  592,  491,  887,  491,  887,  887,  887,
     1057
     1058      491,  691,  887,  691,  887,  887,  887,  691,  606,  887,
     1059      606,  693,  887,  693,  887,  887,  887,  693,  608,  887,
     1060      608,  695,  887,  695,  887,  887,  887,  695,  610,  887,
     1061      610,  140,  887,  140,  887,  887,  887,  140,  612,  887,
     1062      612,  698,  887,  698,  614,  887,  614,   86,  887,  887,
     1063       86,  887,   86,   86,   86,   86,   86,  616,  887,  616,
     1064      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
     1065      669,  669,  669,  737,  887,  737,  887,  887,  887,  737,
     1066      671,  887,  671,  204,  887,  204,  887,  887,  887,  204,
     1067      673,  887,  673,  740,  887,  740,  675,  887,  675,  204,
     1068
     1069      887,  887,  204,  887,  204,  204,  204,  204,  204,  677,
     1070      887,  677,  741,  887,  741,  679,  887,  679,  681,  887,
     1071      681,  742,  887,  742,  683,  887,  683,   86,  887,   86,
     1072      744,  887,  744,  887,  887,  887,  744,  691,  887,  691,
     1073      269,  887,  269,  887,  887,  887,  269,  693,  887,  693,
     1074      747,  887,  747,  695,  887,  695,  140,  887,  140,  748,
     1075      887,  748,  887,  887,  887,  748,   86,  887,  887,   86,
     1076      887,   86,   86,   86,   86,   86,  781,  887,  781,  737,
     1077      887,  737,  204,  887,  204,  782,  887,  782,  887,  887,
     1078      887,  782,  784,  887,  784,  887,  887,  887,  784,  786,
     1079
     1080      887,  786,  887,  887,  887,  786,  788,  887,  788,  789,
     1081      887,  789,  887,  887,  887,  789,  791,  887,  791,  887,
     1082      887,  887,  791,  812,  887,  812,  887,  887,  887,  812,
     1083      814,  887,  814,  887,  887,  887,  814,  816,  887,  816,
     1084      887,  887,  887,  816,  818,  887,  818,  887,  887,  887,
     1085      818,  820,  887,  820,  887,  887,  887,  820,  822,  887,
     1086      822,  887,  887,  887,  822,  616,  887,  616,  887,  887,
     1087      887,  616,  841,  887,  841,  887,  887,  887,  841,  677,
     1088      887,  677,  887,  887,  887,  677,  681,  887,  681,  887,
     1089      887,  887,  681,   86,  887,   86,  887,  887,  887,   86,
     1090
     1091      846,  887,  846,  887,  887,  887,  846,  140,  887,  140,
     1092      887,  887,  887,  140,  204,  887,  204,  887,  887,  887,
     1093      204,   11,  887,  887,  887,  887,  887,  887,  887,  887,
     1094      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1095      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1096      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1097      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1098      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1099      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1100      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1101
     1102      887,  887,  887,  887,  887,  887,  887
    10931103    } ;
    10941104
    1095 static yyconst flex_int16_t yy_chk[2867] =
     1105static yyconst flex_int16_t yy_chk[2908] =
    10961106    {   0,
    10971107        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11031113        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    11041114        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1105         1,    1,    1,    1,    2,   16,   24,   16,   24,    2,
    1106        19,   19,    2,    5,    5,    5,    5,    5,    5,    5,
     1115        1,    1,    1,    1,    1,    2,   16,   24,   16,   24,
     1116        2,   19,   19,    2,    5,    5,    5,    5,    5,    5,
    11071117
    11081118        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
     
    11131123        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11141124        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    1115         5,    5,    5,    5,    5,    5,    5,    7,    8,    9,
    1116        10,   37,   37,   20,   39,    9,   10,  874,    7,    8,
    1117        13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
    1118 
    1119        15,   15,   20,   25,   39,   42,   53,   28,   27,   28,
    1120        28,   28,   28,   28,   28,  108,  114,   25,   29,   25,
    1121        27,   27,   27,   29,   53,   35,    7,    8,    9,   10,
    1122        40,   42,   48,   29,   30,   40,   30,   30,   30,   30,
    1123        30,   30,   35,   61,   35,   35,   44,  869,   44,  108,
    1124       114,  868,   48,   30,   63,   61,   30,   56,   47,   45,
    1125        45,   45,   30,   30,   45,   45,   56,   45,   30,   55,
    1126        45,   45,   49,   40,   30,   45,   40,   49,   45,   47,
    1127        30,   47,   72,  125,   49,  125,   51,   55,   30,   86,
    1128        49,   30,   31,   55,   31,   31,   31,   31,   31,   31,
    1129 
    1130        50,   51,  866,   51,   63,  153,   54,   58,   72,   50,
    1131        60,   31,   51,   50,   31,   86,   54,   57,   50,   58,
    1132        31,  153,   50,   54,  141,  156,   31,   58,   60,   57,
    1133        57,   59,   31,  126,   58,  126,   59,  156,   31,   57,
    1134        52,  865,   57,   67,   67,   52,   31,   38,   67,   59,
    1135       141,   38,   38,   52,   38,   52,   38,   38,   52,   38,
    1136       107,   38,   52,  113,   67,   67,   67,   67,   67,   67,
    1137        38,   38,   38,  128,   59,  128,  152,   59,   66,   66,
    1138        66,   66,   66,   66,  107,  152,   66,  113,  863,  862,
    1139        38,   59,  165,   38,   79,   79,   79,   79,   79,   79,
    1140 
    1141        81,   81,   81,   81,   81,   81,   82,   82,   82,   82,
    1142        82,   82,  131,  165,  131,  103,  103,  103,  103,  106,
    1143        38,   38,   76,   76,  856,  106,  112,   76,  168,   76,
    1144       110,  133,  112,  133,   76,  102,  102,  102,  102,  102,
    1145       102,  130,  103,   76,   76,   76,   76,  103,  110,  168,
    1146       109,  106,  129,  130,   76,  130,  110,  104,  112,  104,
    1147       104,  104,  104,  104,  104,  149,  129,  102,  129,   76,
    1148       103,  136,   76,  136,  158,  115,  104,   76,   76,  109,
    1149       149,   76,   76,  155,  109,  132,  132,  149,  132,   76,
    1150       158,  104,   76,  115,   76,   76,   76,  104,   76,   84,
    1151 
    1152       138,  115,  138,   84,   84,  155,  166,  109,   84,   84,
    1153       105,   84,  105,   84,  150,  105,  105,  105,  105,  105,
    1154       105,  151,   84,   84,   84,  134,  134,  134,  144,  166,
    1155       154,  157,  150,  144,  159,  167,  157,  157,  157,  151,
    1156       157,  157,   84,  161,  157,   84,  157,  105,  154,  160,
    1157       163,  157,  157,  157,  162,  157,  159,  855,  160,  162,
    1158       164,  169,  167,  170,  161,  161,  169,  163,  171,  172,
    1159       164,  144,  162,   84,   98,   98,   98,   98,   98,   98,
    1160       173,  174,  175,  171,  169,  170,  172,  179,  176,  185,
    1161        98,   98,  178,   98,   98,  180,  189,  182,  173,  187,
    1162 
    1163       180,  174,  185,  186,  179,  188,   98,  178,  181,  175,
    1164       176,   98,   98,   98,  178,  182,   98,  183,   98,  181,
    1165       184,  191,  190,  186,  188,  184,  187,  528,  183,  181,
    1166       181,  192,  207,  207,  191,  190,  191,  207,  232,  189,
    1167       184,  203,  189,  190,  192,  183,  195,  195,  195,  195,
    1168       195,  195,  196,  196,  195,  528,  854,  196,  198,  198,
    1169       216,  232,  216,  198,  200,  200,  217,  203,  217,  200,
    1170       218,  200,  218,  196,  196,  196,  196,  196,  196,  198,
    1171       198,  198,  198,  198,  198,  200,  200,  200,  200,  200,
    1172       200,  210,  210,  210,  210,  219,  220,  221,  282,  221,
    1173 
    1174       222,  222,  223,  222,  223,  224,  224,  224,  220,  219,
    1175       220,  219,  226,  227,  226,  227,  234,  235,  282,  233,
    1176       234,  233,  284,  210,  233,  233,  233,  233,  233,  233,
    1177       241,  239,  239,  277,  239,  239,  264,  234,  264,  234,
    1178       235,  265,  284,  265,  234,  242,  242,  242,  242,  242,
    1179       242,  277,  239,  239,  239,  246,  233,  239,  278,  239,
    1180       276,  280,  242,  279,  241,  243,  243,  243,  243,  243,
    1181       243,  254,  268,  276,  853,  281,  278,  242,  280,  279,
    1182       281,  246,  288,  242,  244,  244,  244,  244,  244,  244,
    1183       253,  253,  253,  253,  253,  253,  251,  254,  268,  287,
    1184 
    1185       244,  283,  286,  244,  244,  245,  283,  245,  288,  295,
    1186       245,  245,  245,  245,  245,  245,  244,  287,  251,  849,
    1187       251,  244,  253,  244,  251,  286,  244,  295,  244,  289,
    1188       251,  258,  258,  258,  258,  258,  258,  285,  290,  292,
    1189       291,  294,  251,  293,  289,  291,  251,  297,  292,  301,
    1190       251,  299,  285,  303,  290,  290,  293,  298,  285,  285,
    1191       299,  302,  298,  258,  300,  297,  307,  304,  294,  301,
    1192       306,  300,  304,  305,  303,  303,  306,  308,  305,  302,
    1193       310,  309,  311,  312,  313,  307,  308,  309,  314,  313,
    1194       315,  311,  316,  314,  318,  315,  310,  317,  312,  320,
    1195 
    1196       322,  321,  323,  324,  326,  325,  328,  318,  327,  329,
    1197       320,  316,  315,  322,  330,  317,  321,  327,  333,  331,
    1198       334,  326,  335,  337,  323,  325,  324,  333,  328,  336,
    1199       338,  337,  329,  339,  381,  338,  330,  331,  340,  340,
    1200       335,  341,  336,  340,  358,  340,  358,  341,  339,  348,
    1201       348,  348,  348,  349,  349,  349,  349,  359,  381,  359,
    1202       397,  846,  402,  334,  366,  366,  366,  366,  366,  366,
    1203       368,  397,  368,  402,  404,  368,  368,  368,  368,  368,
    1204       368,  348,  367,  367,  367,  367,  367,  367,  370,  370,
    1205       370,  370,  370,  370,  400,  398,  404,  435,  367,  376,
    1206 
    1207       843,  367,  367,  371,  371,  371,  371,  371,  371,  376,
    1208       379,  398,  377,  400,  367,  378,  379,  435,  383,  367,
    1209       370,  367,  377,  412,  367,  376,  367,  372,  372,  372,
    1210       372,  372,  372,  399,  382,  371,  383,  378,  377,  378,
    1211       415,  412,  379,  378,  383,  380,  415,  380,  399,  378,
    1212       380,  380,  380,  380,  380,  380,  382,  401,  382,  372,
    1213       407,  378,  382,  403,  405,  378,  401,  408,  382,  378,
    1214       406,  411,  403,  405,  409,  410,  407,  416,  418,  414,
    1215       382,  413,  380,  406,  382,  417,  413,  409,  382,  408,
    1216       419,  410,  410,  411,  414,  421,  417,  418,  416,  423,
    1217 
    1218       425,  414,  426,  427,  428,  419,  431,  429,  430,  421,
    1219       433,  423,  427,  429,  436,  431,  427,  437,  438,  439,
    1220       441,  425,  440,  430,  426,  433,  443,  428,  445,  441,
    1221       447,  446,  437,  448,  439,  449,  436,  450,  451,  455,
    1222       438,  452,  440,  443,  457,  633,  450,  460,  453,  458,
    1223       447,  445,  446,  448,  452,  453,  451,  449,  454,  456,
    1224       458,  457,  461,  633,  455,  454,  462,  456,  515,  460,
    1225       488,  461,  462,  471,  471,  471,  471,  456,  482,  482,
    1226       482,  482,  482,  482,  484,  484,  484,  484,  484,  484,
    1227       515,  513,  485,  487,  482,  489,  488,  482,  482,  486,
    1228 
    1229       510,  486,  485,  487,  486,  486,  486,  486,  486,  486,
    1230       482,  513,  509,  510,  520,  482,  484,  482,  485,  487,
    1231       482,  489,  482,  491,  491,  491,  491,  491,  491,  509,
    1232       512,  514,  519,  516,  520,  519,  486,  492,  492,  492,
    1233       492,  492,  492,  517,  514,  512,  516,  521,  517,  525,
    1234       518,  522,  523,  492,  525,  842,  492,  492,  493,  841,
    1235       493,  518,  521,  493,  493,  493,  493,  493,  493,  492,
    1236       522,  524,  526,  523,  492,  527,  492,  529,  530,  492,
    1237       524,  492,  531,  526,  532,  533,  529,  536,  527,  535,
    1238       533,  538,  539,  532,  542,  535,  536,  540,  541,  531,
    1239 
    1240       530,  544,  545,  542,  546,  547,  549,  554,  556,  539,
    1241       544,  561,  540,  541,  555,  552,  546,  538,  550,  545,
    1242       547,  549,  553,  550,  552,  556,  558,  555,  559,  554,
    1243       560,  553,  562,  561,  558,  563,  564,  560,  559,  565,
    1244       567,  563,  568,  613,  562,  564,  612,  617,  594,  565,
    1245       596,  698,  613,  612,  617,  568,  698,  567,  587,  587,
    1246       587,  587,  587,  587,  588,  588,  588,  588,  588,  588,
    1247       590,  594,  590,  596,  614,  590,  590,  590,  590,  590,
    1248       590,  593,  593,  593,  593,  593,  593,  614,  615,  616,
    1249       587,  589,  589,  589,  589,  589,  589,  595,  611,  622,
    1250 
    1251       618,  595,  619,  611,  621,  615,  620,  589,  618,  620,
    1252       589,  589,  616,  593,  623,  624,  611,  621,  595,  619,
    1253       595,  622,  625,  589,  626,  595,  628,  629,  589,  623,
    1254       589,  627,  630,  589,  627,  589,  631,  624,  634,  625,
    1255       632,  635,  637,  628,  638,  644,  626,  630,  639,  632,
    1256       635,  645,  640,  650,  629,  647,  631,  696,  693,  651,
    1257       634,  640,  650,  659,  637,  644,  651,  638,  658,  662,
    1258       639,  661,  647,  659,  697,  840,  839,  658,  645,  693,
    1259       661,  697,  699,  696,  662,  680,  680,  680,  680,  680,
    1260       680,  684,  684,  684,  684,  684,  684,  694,  702,  705,
    1261 
    1262       700,  680,  699,  700,  680,  680,  701,  694,  704,  701,
    1263       706,  708,  705,  709,  704,  707,  702,  680,  707,  706,
    1264       712,  711,  680,  684,  680,  710,  714,  680,  710,  680,
    1265       711,  713,  708,  718,  713,  715,  716,  717,  720,  714,
    1266       723,  709,  726,  715,  727,  712,  716,  720,  728,  730,
    1267       717,  731,  752,  751,  718,  753,  749,  730,  751,  754,
    1268       731,  750,  726,  723,  755,  753,  727,  752,  756,  728,
    1269       738,  738,  738,  738,  738,  738,  749,  757,  750,  758,
    1270       757,  755,  754,  759,  761,  763,  764,  761,  763,  767,
    1271       768,  773,  758,  764,  756,  765,  766,  788,  765,  766,
    1272 
    1273       790,  791,  738,  792,  767,  793,  792,  797,  794,  795,
    1274       759,  794,  795,  768,  773,  798,  801,  799,  805,  791,
    1275       799,  790,  821,  802,  788,  797,  802,  793,  803,  806,
    1276       804,  803,  824,  823,  805,  822,  823,  825,  801,  804,
    1277       798,  824,  822,  821,  826,  806,  827,  826,  830,  833,
    1278       834,  830,  833,  835,  847,  825,  844,  847,  848,  834,
    1279       857,  845,  835,  827,  850,  844,  845,  850,  848,  851,
    1280       852,  858,  851,  852,  859,  860,  861,  859,  864,  861,
    1281       857,  867,  870,  871,  873,  860,  858,  838,  872,  837,
    1282       836,  870,  832,  831,  873,  829,  828,  820,  819,  818,
    1283 
    1284       864,  817,  867,  816,  815,  871,  872,  876,  876,  876,
    1285       876,  876,  876,  876,  876,  876,  876,  876,  876,  876,
    1286       877,  877,  877,  877,  877,  877,  877,  877,  877,  877,
    1287       877,  877,  877,  878,  878,  878,  878,  878,  878,  878,
    1288       878,  878,  878,  878,  878,  878,  879,  814,  813,  879,
    1289       812,  879,  879,  879,  879,  879,  880,  811,  810,  809,
    1290       880,  880,  880,  880,  880,  880,  881,  881,  881,  881,
    1291       881,  881,  881,  881,  881,  881,  881,  881,  881,  882,
    1292       808,  807,  882,  800,  882,  882,  882,  882,  882,  883,
    1293       796,  883,  883,  789,  883,  883,  883,  883,  883,  883,
    1294 
    1295       787,  883,  884,  786,  785,  884,  884,  884,  884,  884,
    1296       884,  884,  884,  784,  884,  885,  885,  885,  885,  885,
    1297       885,  885,  885,  885,  885,  885,  885,  885,  886,  886,
    1298       783,  886,  782,  781,  780,  886,  887,  779,  778,  887,
    1299       777,  887,  887,  887,  887,  887,  888,  776,  888,  775,
    1300       774,  772,  888,  889,  771,  889,  770,  769,  762,  889,
    1301       890,  760,  890,  748,  747,  746,  890,  891,  745,  891,
    1302       744,  743,  742,  891,  892,  741,  892,  740,  737,  736,
    1303       892,  893,  735,  893,  729,  725,  724,  893,  894,  722,
    1304       894,  721,  719,  703,  894,  895,  695,  895,  692,  687,
    1305 
    1306       685,  895,  896,  681,  896,  671,  667,  665,  896,  897,
    1307       897,  897,  897,  897,  897,  897,  897,  897,  897,  897,
    1308       897,  897,  898,  663,  898,  899,  899,  660,  899,  899,
    1309       899,  657,  899,  900,  900,  656,  900,  901,  655,  901,
    1310       654,  653,  652,  901,  902,  649,  902,  648,  646,  643,
    1311       902,  903,  642,  903,  641,  636,  609,  903,  904,  605,
    1312       904,  905,  603,  905,  601,  599,  597,  905,  906,  591,
    1313       906,  907,  585,  583,  907,  581,  907,  907,  907,  907,
    1314       907,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1315       908,  908,  908,  908,  909,  909,  909,  909,  909,  909,
    1316 
    1317       909,  909,  909,  909,  909,  909,  909,  910,  579,  910,
    1318       577,  575,  573,  910,  911,  571,  911,  570,  569,  566,
    1319       911,  912,  557,  912,  551,  548,  543,  912,  913,  537,
    1320       913,  914,  534,  914,  511,  507,  505,  914,  915,  503,
    1321       915,  916,  501,  916,  499,  497,  496,  916,  917,  495,
    1322       917,  918,  494,  918,  483,  480,  478,  918,  919,  477,
    1323       919,  920,  476,  920,  474,  472,  469,  920,  921,  467,
    1324       921,  922,  465,  922,  463,  459,  444,  922,  923,  442,
    1325       923,  924,  434,  924,  432,  424,  422,  924,  925,  420,
    1326       925,  926,  394,  926,  392,  926,  390,  926,  927,  388,
    1327 
    1328       927,  387,  927,  386,  927,  928,  928,  373,  928,  928,
    1329       928,  363,  928,  929,  361,  929,  360,  356,  354,  929,
    1330       930,  352,  930,  350,  346,  344,  930,  931,  343,  931,
    1331       342,  332,  319,  931,  932,  296,  932,  933,  275,  933,
    1332       273,  271,  270,  933,  934,  269,  934,  935,  267,  935,
    1333       266,  261,  257,  935,  936,  256,  936,  937,  252,  937,
    1334       249,  248,  237,  937,  938,  236,  938,  939,  229,  228,
    1335       939,  225,  939,  939,  939,  939,  939,  940,  940,  940,
    1336       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    1337       941,  215,  941,  213,  212,  211,  941,  942,  205,  942,
    1338 
    1339       943,  204,  943,  202,  197,  177,  943,  944,  148,  944,
    1340       945,  146,  945,  145,  139,  137,  945,  946,  135,  946,
    1341       947,  127,  947,  124,  123,  119,  947,  948,  100,  948,
    1342       949,   97,  949,   94,   92,   85,  949,  950,   71,  950,
    1343       951,   69,  951,   65,   36,   33,  951,  952,   18,  952,
    1344       953,   11,  953,    4,    3,    0,  953,  954,    0,  954,
    1345         0,    0,    0,  954,  955,    0,  955,  956,    0,  956,
    1346         0,    0,    0,  956,  957,    0,  957,  958,    0,  958,
    1347         0,  958,    0,  958,  959,    0,  959,    0,    0,    0,
    1348       959,  960,    0,  960,    0,    0,    0,  960,  961,    0,
    1349 
    1350       961,  962,    0,  962,    0,    0,    0,  962,  963,    0,
    1351       963,  964,    0,  964,    0,    0,    0,  964,  965,    0,
    1352       965,  966,    0,  966,    0,    0,    0,  966,  967,    0,
    1353       967,  968,    0,  968,    0,    0,    0,  968,  969,    0,
    1354       969,  970,    0,  970,    0,    0,    0,  970,  971,    0,
    1355       971,  972,    0,    0,  972,    0,  972,  972,  972,  972,
    1356       972,  973,  973,  973,  973,  973,  973,  973,  973,  973,
    1357       973,  973,  973,  973,  974,    0,  974,    0,    0,    0,
    1358       974,  975,    0,  975,  976,    0,  976,    0,    0,    0,
    1359       976,  977,    0,  977,  978,    0,  978,    0,    0,    0,
    1360 
    1361       978,  979,    0,  979,  980,    0,  980,    0,    0,    0,
    1362       980,  981,    0,  981,  982,    0,  982,    0,    0,    0,
    1363       982,  983,    0,  983,  984,    0,  984,    0,    0,    0,
    1364       984,  985,    0,  985,  986,    0,  986,    0,    0,    0,
     1125        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
     1126        8,    9,   10,   37,   37,   20,   39,    9,   10,  886,
     1127        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
     1128
     1129       15,   15,   15,   15,   20,   25,   48,   39,   42,   28,
     1130       27,   28,   28,   28,   28,   28,   28,  109,  115,   25,
     1131       29,   25,   27,   27,   27,   29,   48,   35,   40,    7,
     1132        8,    9,   10,   40,   42,   29,   30,   47,   30,   30,
     1133       30,   30,   30,   30,   35,   57,   35,   35,   44,  126,
     1134       44,  126,  109,  115,   57,   30,   64,   56,   47,   30,
     1135       47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
     1136       45,   30,   40,   45,   45,   40,   49,   30,   45,   56,
     1137       62,   45,   49,   30,   73,  885,  127,   53,  127,   51,
     1138       61,   30,   62,   55,   30,   31,  108,   31,   31,   31,
     1139
     1140       31,   31,   31,   50,   51,   53,   51,   64,   61,   54,
     1141       73,   55,   50,   87,   31,   51,   50,   55,   31,   54,
     1142      108,   50,   52,  114,   31,   50,   54,   52,  175,  129,
     1143       31,  129,  107,  154,  151,   52,   31,   52,  107,   87,
     1144       52,   60,   31,  132,   52,  132,   60,  114,  175,  154,
     1145       31,   38,  151,  385,  111,   38,   38,   58,   38,   60,
     1146       38,   38,  113,   38,  107,   38,   59,  130,  113,   58,
     1147       58,  116,  111,  164,   38,   38,   38,  385,   59,   58,
     1148      111,  130,   58,  130,  142,   60,   59,  131,   60,  116,
     1149      164,   68,   68,   59,  113,   38,   68,  116,   38,  131,
     1150
     1151      110,  131,   60,   67,   67,   67,   67,   67,   67,  877,
     1152      142,   67,   68,   68,   68,   68,   68,   68,   80,   80,
     1153       80,   80,   80,   80,  153,   38,   38,   77,   77,  134,
     1154      110,  134,   77,  153,   77,  110,  135,  135,  135,   77,
     1155       82,   82,   82,   82,   82,   82,  876,  243,   77,   77,
     1156       77,   77,   83,   83,   83,   83,   83,   83,  110,   77,
     1157      103,  103,  103,  103,  103,  103,  104,  104,  104,  104,
     1158      133,  133,  137,  133,  137,   77,  145,  139,   77,  139,
     1159      157,  145,  243,   77,   77,  152,  156,   77,   77,  155,
     1160      166,  150,  157,  103,  104,   77,  159,  168,   77,  104,
     1161
     1162       77,   77,   77,  152,   77,   85,  150,  155,  156,   85,
     1163       85,  166,  159,  150,   85,   85,  161,   85,  160,   85,
     1164      145,  162,  104,  167,  168,  161,  169,  163,   85,   85,
     1165       85,  105,  163,  105,  105,  105,  105,  105,  105,  873,
     1166      160,  171,  162,  162,  165,  163,  167,  169,  173,   85,
     1167      105,  106,   85,  106,  165,  172,  106,  106,  106,  106,
     1168      106,  106,  180,  171,  170,  173,  105,  176,  177,  170,
     1169      172,  181,  105,  174,  184,  187,  181,  182,  179,  180,
     1170       85,   99,   99,   99,   99,   99,   99,  170,  187,  106,
     1171      177,  174,  184,  179,  176,  183,  190,   99,   99,   99,
     1172
     1173      179,   99,   99,  189,  182,  186,  183,  191,  189,  218,
     1174      186,  218,  185,  188,   99,  190,  183,  183,  284,   99,
     1175       99,   99,  158,  185,   99,  186,   99,  158,  158,  158,
     1176      189,  158,  158,  188,  192,  158,  194,  158,  284,  219,
     1177      185,  219,  158,  158,  158,  193,  158,  192,  220,  194,
     1178      220,  191,  198,  198,  191,  192,  205,  198,  193,  872,
     1179      193,  197,  197,  197,  197,  197,  197,  200,  200,  197,
     1180      248,  221,  200,  198,  198,  198,  198,  198,  198,  202,
     1181      202,  223,  205,  223,  202,  221,  202,  221,  200,  200,
     1182      200,  200,  200,  200,  209,  209,  248,  338,  222,  209,
     1183
     1184      202,  202,  202,  202,  202,  202,  212,  212,  212,  212,
     1185      222,  309,  222,  224,  224,  225,  224,  225,  226,  226,
     1186      226,  228,  229,  228,  229,  234,  234,  235,  236,  235,
     1187      309,  279,  235,  235,  235,  235,  235,  235,  237,  212,
     1188      237,  338,  266,  237,  266,  267,  278,  267,  234,  279,
     1189      283,  236,  241,  241,  241,  283,  241,  241,  256,  278,
     1190      237,  281,  237,  282,  280,  235,  270,  237,  244,  244,
     1191      244,  244,  244,  244,  241,  241,  241,  281,  285,  241,
     1192      282,  241,  280,  285,  256,  244,  245,  245,  245,  245,
     1193      245,  245,  270,  288,  293,  286,  294,  300,  306,  293,
     1194
     1195      308,  244,  300,  306,  870,  294,  308,  244,  246,  246,
     1196      246,  246,  246,  246,  253,  286,  288,  255,  255,  255,
     1197      255,  255,  255,  287,  246,  247,  246,  247,  246,  246,
     1198      247,  247,  247,  247,  247,  247,  290,  253,  287,  253,
     1199      869,  246,  289,  253,  287,  287,  246,  292,  246,  253,
     1200      255,  246,  291,  246,  260,  260,  260,  260,  260,  260,
     1201      289,  253,  290,  292,  292,  253,  295,  291,  296,  253,
     1202      297,  299,  301,  302,  303,  304,  305,  307,  311,  295,
     1203      302,  301,  307,  310,  311,  312,  319,  260,  297,  299,
     1204      313,  314,  310,  304,  303,  296,  318,  305,  305,  313,
     1205
     1206      315,  312,  316,  317,  319,  315,  314,  316,  317,  320,
     1207      322,  323,  324,  326,  325,  318,  327,  328,  331,  329,
     1208      330,  322,  320,  332,  334,  317,  323,  325,  333,  330,
     1209      335,  324,  337,  339,  340,  326,  329,  328,  401,  327,
     1210      331,  337,  334,  335,  341,  343,  332,  340,  342,  401,
     1211      333,  339,  341,  342,  344,  344,  345,  460,  862,  344,
     1212      343,  344,  345,  352,  352,  352,  352,  353,  353,  353,
     1213      353,  362,  363,  362,  363,  370,  370,  370,  370,  370,
     1214      370,  372,  460,  372,  380,  381,  372,  372,  372,  372,
     1215      372,  372,  861,  402,  380,  381,  352,  371,  371,  371,
     1216
     1217      371,  371,  371,  374,  374,  374,  374,  374,  374,  402,
     1218      380,  381,  403,  371,  404,  371,  860,  371,  371,  375,
     1219      375,  375,  375,  375,  375,  383,  382,  403,  406,  405,
     1220      371,  383,  407,  404,  408,  371,  374,  371,  405,  406,
     1221      371,  407,  371,  376,  376,  376,  376,  376,  376,  382,
     1222      412,  382,  375,  387,  411,  382,  408,  383,  384,  386,
     1223      384,  382,  410,  384,  384,  384,  384,  384,  384,  409,
     1224      411,  387,  412,  382,  413,  410,  376,  382,  409,  387,
     1225      415,  382,  386,  414,  386,  416,  417,  413,  386,  418,
     1226      421,  417,  419,  422,  386,  420,  384,  427,  419,  414,
     1227
     1228      414,  421,  415,  416,  418,  423,  386,  425,  429,  427,
     1229      386,  418,  422,  430,  386,  431,  420,  432,  433,  434,
     1230      423,  425,  435,  437,  433,  439,  440,  441,  431,  429,
     1231      442,  435,  443,  444,  434,  430,  449,  445,  437,  447,
     1232      432,  450,  441,  451,  454,  439,  445,  443,  440,  452,
     1233      450,  453,  442,  444,  455,  456,  447,  457,  458,  449,
     1234      459,  461,  463,  455,  451,  458,  454,  459,  462,  452,
     1235      457,  453,  466,  456,  464,  467,  462,  525,  859,  463,
     1236      525,  468,  491,  461,  467,  464,  462,  468,  477,  477,
     1237      477,  477,  491,  515,  466,  488,  488,  488,  488,  488,
     1238
     1239      488,  490,  490,  490,  490,  490,  490,  519,  491,  521,
     1240      515,  488,  492,  488,  492,  488,  488,  492,  492,  492,
     1241      492,  492,  492,  494,  516,  495,  493,  519,  488,  855,
     1242      851,  521,  518,  488,  490,  488,  493,  516,  488,  529,
     1243      488,  497,  497,  497,  497,  497,  497,  518,  520,  494,
     1244      492,  495,  493,  498,  498,  498,  498,  498,  498,  523,
     1245      529,  520,  526,  848,  523,  847,  528,  846,  522,  498,
     1246      499,  498,  499,  498,  498,  499,  499,  499,  499,  499,
     1247      499,  522,  526,  524,  527,  528,  498,  531,  530,  532,
     1248      533,  498,  531,  498,  524,  534,  498,  530,  498,  527,
     1249
     1250      532,  535,  537,  533,  536,  538,  539,  541,  542,  547,
     1251      535,  539,  544,  541,  538,  545,  546,  542,  547,  537,
     1252      550,  551,  845,  549,  534,  552,  536,  554,  560,  544,
     1253      545,  546,  549,  551,  555,  557,  558,  550,  561,  555,
     1254      552,  562,  554,  565,  557,  558,  564,  567,  566,  568,
     1255      560,  561,  575,  565,  564,  566,  569,  571,  562,  574,
     1256      572,  568,  569,  620,  619,  575,  571,  601,  601,  567,
     1257      572,  619,  620,  844,  843,  622,  574,  594,  594,  594,
     1258      594,  594,  594,  595,  595,  595,  595,  595,  595,  597,
     1259      601,  597,  622,  621,  597,  597,  597,  597,  597,  597,
     1260
     1261      600,  600,  600,  600,  600,  600,  621,  602,  626,  842,
     1262      594,  596,  596,  596,  596,  596,  596,  603,  618,  603,
     1263      623,  624,  603,  618,  628,  626,  625,  596,  624,  596,
     1264      602,  596,  596,  600,  625,  627,  618,  628,  627,  603,
     1265      629,  603,  630,  623,  596,  631,  603,  632,  633,  596,
     1266      634,  596,  635,  634,  596,  636,  596,  630,  637,  638,
     1267      640,  644,  629,  639,  632,  641,  642,  631,  645,  635,
     1268      633,  646,  639,  637,  650,  642,  651,  656,  640,  638,
     1269      646,  653,  657,  636,  644,  665,  656,  641,  664,  657,
     1270      645,  667,  668,  841,  650,  665,  700,  664,  653,  699,
     1271
     1272      667,  702,  705,  651,  714,  837,  700,  668,  686,  686,
     1273      686,  686,  686,  686,  690,  690,  690,  690,  690,  690,
     1274      699,  708,  705,  703,  686,  714,  686,  702,  686,  686,
     1275      703,  704,  706,  715,  707,  706,  704,  707,  710,  708,
     1276      712,  686,  711,  717,  710,  718,  686,  690,  686,  712,
     1277      720,  686,  717,  686,  713,  711,  716,  713,  719,  716,
     1278      721,  719,  715,  720,  722,  723,  724,  725,  721,  728,
     1279      731,  718,  732,  735,  722,  733,  725,  736,  723,  756,
     1280      757,  735,  836,  754,  756,  759,  736,  724,  755,  760,
     1281      731,  761,  728,  764,  732,  757,  733,  743,  743,  743,
     1282
     1283      743,  743,  743,  754,  758,  755,  760,  762,  759,  763,
     1284      762,  769,  766,  768,  758,  766,  768,  761,  769,  772,
     1285      770,  764,  763,  770,  771,  773,  778,  771,  793,  795,
     1286      743,  798,  797,  796,  772,  797,  799,  800,  802,  799,
     1287      800,  803,  804,  806,  807,  804,  810,  807,  773,  778,
     1288      795,  796,  809,  798,  808,  793,  802,  808,  811,  826,
     1289      830,  809,  810,  827,  829,  806,  828,  803,  831,  828,
     1290      827,  831,  832,  829,  811,  834,  835,  839,  830,  835,
     1291      826,  840,  838,  849,  830,  838,  839,  853,  850,  832,
     1292      840,  852,  849,  850,  852,  854,  856,  853,  857,  856,
     1293
     1294      854,  857,  858,  863,  864,  858,  865,  866,  867,  865,
     1295      868,  867,  871,  868,  874,  875,  878,  866,  879,  864,
     1296      880,  882,  881,  863,  883,  878,  884,  833,  825,  824,
     1297      875,  879,  823,  822,  871,  874,  884,  821,  820,  882,
     1298      819,  818,  880,  881,  817,  816,  883,  888,  888,  888,
     1299      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
     1300      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     1301      889,  889,  889,  890,  890,  890,  890,  890,  890,  890,
     1302      890,  890,  890,  890,  890,  890,  891,  815,  814,  891,
     1303      813,  891,  891,  891,  891,  891,  892,  812,  805,  801,
     1304
     1305      892,  892,  892,  892,  892,  892,  893,  893,  893,  893,
     1306      893,  893,  893,  893,  893,  893,  893,  893,  893,  894,
     1307      794,  792,  894,  791,  894,  894,  894,  894,  894,  895,
     1308      790,  895,  895,  789,  895,  895,  895,  895,  895,  895,
     1309      788,  895,  896,  787,  786,  896,  896,  896,  896,  896,
     1310      896,  896,  896,  785,  896,  897,  897,  897,  897,  897,
     1311      897,  897,  897,  897,  897,  897,  897,  897,  898,  898,
     1312      784,  898,  783,  782,  781,  898,  899,  780,  779,  899,
     1313      777,  899,  899,  899,  899,  899,  900,  776,  900,  775,
     1314      774,  767,  900,  901,  765,  901,  753,  752,  751,  901,
     1315
     1316      902,  750,  902,  749,  748,  747,  902,  903,  746,  903,
     1317      745,  742,  741,  903,  904,  740,  904,  734,  730,  729,
     1318      904,  905,  727,  905,  726,  709,  701,  905,  906,  698,
     1319      906,  693,  691,  687,  906,  907,  677,  907,  673,  671,
     1320      669,  907,  908,  666,  908,  663,  662,  661,  908,  909,
     1321      909,  909,  909,  909,  909,  909,  909,  909,  909,  909,
     1322      909,  909,  910,  660,  910,  911,  911,  659,  911,  911,
     1323      911,  658,  911,  912,  912,  655,  912,  913,  654,  913,
     1324      652,  649,  648,  913,  914,  647,  914,  643,  616,  612,
     1325      914,  915,  610,  915,  608,  606,  604,  915,  916,  598,
     1326
     1327      916,  917,  592,  917,  590,  588,  586,  917,  918,  584,
     1328      918,  919,  582,  580,  919,  578,  919,  919,  919,  919,
     1329      919,  920,  920,  920,  920,  920,  920,  920,  920,  920,
     1330      920,  920,  920,  920,  921,  921,  921,  921,  921,  921,
     1331      921,  921,  921,  921,  921,  921,  921,  922,  577,  922,
     1332      576,  573,  570,  922,  923,  563,  923,  559,  556,  553,
     1333      923,  924,  548,  924,  543,  540,  517,  924,  925,  513,
     1334      925,  926,  511,  926,  509,  507,  505,  926,  927,  503,
     1335      927,  928,  502,  928,  501,  500,  489,  928,  929,  486,
     1336      929,  930,  484,  930,  483,  482,  480,  930,  931,  478,
     1337
     1338      931,  932,  475,  932,  473,  471,  469,  932,  933,  465,
     1339      933,  934,  448,  934,  446,  438,  436,  934,  935,  428,
     1340      935,  936,  426,  936,  424,  398,  396,  936,  937,  394,
     1341      937,  938,  392,  938,  391,  938,  390,  938,  939,  377,
     1342      939,  367,  939,  365,  939,  940,  940,  364,  940,  940,
     1343      940,  360,  940,  941,  358,  941,  356,  354,  350,  941,
     1344      942,  348,  942,  347,  346,  336,  942,  943,  321,  943,
     1345      298,  277,  275,  943,  944,  273,  944,  945,  272,  945,
     1346      271,  269,  268,  945,  946,  263,  946,  947,  259,  947,
     1347      258,  254,  251,  947,  948,  250,  948,  949,  239,  949,
     1348
     1349      238,  231,  230,  949,  950,  227,  950,  951,  217,  215,
     1350      951,  214,  951,  951,  951,  951,  951,  952,  952,  952,
     1351      952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
     1352      953,  213,  953,  207,  206,  204,  953,  954,  199,  954,
     1353      955,  178,  955,  149,  147,  146,  955,  956,  140,  956,
     1354      957,  138,  957,  136,  128,  125,  957,  958,  124,  958,
     1355      959,  120,  959,  101,   98,   95,  959,  960,   93,  960,
     1356      961,   86,  961,   72,   70,   66,  961,  962,   36,  962,
     1357      963,   33,  963,   18,   11,    4,  963,  964,    3,  964,
     1358      965,    0,  965,    0,    0,    0,  965,  966,    0,  966,
     1359
     1360        0,    0,    0,  966,  967,    0,  967,  968,    0,  968,
     1361        0,    0,    0,  968,  969,    0,  969,  970,    0,  970,
     1362        0,  970,    0,  970,  971,    0,  971,    0,    0,    0,
     1363      971,  972,    0,  972,    0,    0,    0,  972,  973,    0,
     1364      973,  974,    0,  974,    0,    0,    0,  974,  975,    0,
     1365      975,  976,    0,  976,    0,    0,    0,  976,  977,    0,
     1366      977,  978,    0,  978,    0,    0,    0,  978,  979,    0,
     1367      979,  980,    0,  980,    0,    0,    0,  980,  981,    0,
     1368      981,  982,    0,  982,    0,    0,    0,  982,  983,    0,
     1369      983,  984,    0,    0,  984,    0,  984,  984,  984,  984,
     1370
     1371      984,  985,  985,  985,  985,  985,  985,  985,  985,  985,
     1372      985,  985,  985,  985,  986,    0,  986,    0,    0,    0,
    13651373      986,  987,    0,  987,  988,    0,  988,    0,    0,    0,
    13661374      988,  989,    0,  989,  990,    0,  990,    0,    0,    0,
    1367       990,  991,    0,  991,    0,    0,    0,  991,  992,    0,
    1368       992,  993,    0,  993,    0,    0,    0,  993,  994,    0,
    1369       994,  995,    0,  995,    0,    0,    0,  995,  996,    0,
    1370       996,  997,    0,  997,    0,    0,    0,  997,  998,    0,
    1371 
    1372       998,  999,    0,  999, 1000,    0, 1000, 1001,    0,    0,
    1373      1001,    0, 1001, 1001, 1001, 1001, 1001, 1002,    0, 1002,
    1374      1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003,
    1375      1003, 1003, 1003, 1004,    0, 1004,    0,    0,    0, 1004,
    1376      1005,    0, 1005, 1006,    0, 1006,    0,    0,    0, 1006,
    1377      1007,    0, 1007, 1008,    0, 1008, 1009,    0, 1009, 1010,
    1378         0,    0, 1010,    0, 1010, 1010, 1010, 1010, 1010, 1011,
    1379         0, 1011, 1012,    0, 1012, 1013,    0, 1013, 1014,    0,
    1380      1014, 1015,    0, 1015, 1016,    0, 1016, 1017,    0, 1017,
    1381      1018,    0, 1018,    0,    0,    0, 1018, 1019,    0, 1019,
    1382 
    1383      1020,    0, 1020,    0,    0,    0, 1020, 1021,    0, 1021,
    1384      1022,    0, 1022, 1023,    0, 1023, 1024,    0, 1024, 1025,
    1385         0, 1025,    0,    0,    0, 1025, 1026,    0,    0, 1026,
    1386         0, 1026, 1026, 1026, 1026, 1026, 1027,    0, 1027, 1028,
    1387         0, 1028, 1029,    0, 1029, 1030,    0, 1030,    0,    0,
    1388         0, 1030, 1031,    0, 1031,    0,    0,    0, 1031, 1032,
    1389         0, 1032,    0,    0,    0, 1032, 1033,    0, 1033, 1034,
    1390         0, 1034,    0,    0,    0, 1034, 1035,    0, 1035,    0,
    1391         0,    0, 1035, 1036,    0, 1036,    0,    0,    0, 1036,
    1392      1037,    0, 1037,    0,    0,    0, 1037, 1038,    0, 1038,
    1393 
    1394         0,    0,    0, 1038, 1039,    0, 1039,    0,    0,    0,
    1395      1039, 1040,    0, 1040,    0,    0,    0, 1040, 1041,    0,
    1396      1041,    0,    0,    0, 1041, 1042,    0, 1042,    0,    0,
     1375      990,  991,    0,  991,  992,    0,  992,    0,    0,    0,
     1376      992,  993,    0,  993,  994,    0,  994,    0,    0,    0,
     1377      994,  995,    0,  995,  996,    0,  996,    0,    0,    0,
     1378      996,  997,    0,  997,  998,    0,  998,    0,    0,    0,
     1379      998,  999,    0,  999, 1000,    0, 1000,    0,    0,    0,
     1380     1000, 1001,    0, 1001, 1002,    0, 1002,    0,    0,    0,
     1381
     1382     1002, 1003,    0, 1003,    0,    0,    0, 1003, 1004,    0,
     1383     1004, 1005,    0, 1005,    0,    0,    0, 1005, 1006,    0,
     1384     1006, 1007,    0, 1007,    0,    0,    0, 1007, 1008,    0,
     1385     1008, 1009,    0, 1009,    0,    0,    0, 1009, 1010,    0,
     1386     1010, 1011,    0, 1011, 1012,    0, 1012, 1013,    0,    0,
     1387     1013,    0, 1013, 1013, 1013, 1013, 1013, 1014,    0, 1014,
     1388     1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
     1389     1015, 1015, 1015, 1016,    0, 1016,    0,    0,    0, 1016,
     1390     1017,    0, 1017, 1018,    0, 1018,    0,    0,    0, 1018,
     1391     1019,    0, 1019, 1020,    0, 1020, 1021,    0, 1021, 1022,
     1392
     1393        0,    0, 1022,    0, 1022, 1022, 1022, 1022, 1022, 1023,
     1394        0, 1023, 1024,    0, 1024, 1025,    0, 1025, 1026,    0,
     1395     1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0, 1029,
     1396     1030,    0, 1030,    0,    0,    0, 1030, 1031,    0, 1031,
     1397     1032,    0, 1032,    0,    0,    0, 1032, 1033,    0, 1033,
     1398     1034,    0, 1034, 1035,    0, 1035, 1036,    0, 1036, 1037,
     1399        0, 1037,    0,    0,    0, 1037, 1038,    0,    0, 1038,
     1400        0, 1038, 1038, 1038, 1038, 1038, 1039,    0, 1039, 1040,
     1401        0, 1040, 1041,    0, 1041, 1042,    0, 1042,    0,    0,
    13971402        0, 1042, 1043,    0, 1043,    0,    0,    0, 1043, 1044,
    1398         0, 1044,    0,    0,    0, 1044, 1045,    0, 1045,    0,
    1399         0,    0, 1045, 1046,    0, 1046,    0,    0,    0, 1046,
    1400      1047,    0, 1047,    0,    0,    0, 1047, 1048,    0, 1048,
    1401         0,    0,    0, 1048, 1049,    0, 1049,    0,    0,    0,
    1402      1049,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1403       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1404 
    1405       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1406       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1407       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1408       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1409       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1410       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
    1411       875,  875,  875,  875,  875,  875
     1403
     1404        0, 1044,    0,    0,    0, 1044, 1045,    0, 1045, 1046,
     1405        0, 1046,    0,    0,    0, 1046, 1047,    0, 1047,    0,
     1406        0,    0, 1047, 1048,    0, 1048,    0,    0,    0, 1048,
     1407     1049,    0, 1049,    0,    0,    0, 1049, 1050,    0, 1050,
     1408        0,    0,    0, 1050, 1051,    0, 1051,    0,    0,    0,
     1409     1051, 1052,    0, 1052,    0,    0,    0, 1052, 1053,    0,
     1410     1053,    0,    0,    0, 1053, 1054,    0, 1054,    0,    0,
     1411        0, 1054, 1055,    0, 1055,    0,    0,    0, 1055, 1056,
     1412        0, 1056,    0,    0,    0, 1056, 1057,    0, 1057,    0,
     1413        0,    0, 1057, 1058,    0, 1058,    0,    0,    0, 1058,
     1414
     1415     1059,    0, 1059,    0,    0,    0, 1059, 1060,    0, 1060,
     1416        0,    0,    0, 1060, 1061,    0, 1061,    0,    0,    0,
     1417     1061,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1418      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1419      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1420      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1421      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1422      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1423      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1424      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1425
     1426      887,  887,  887,  887,  887,  887,  887
    14121427    } ;
    14131428
    14141429/* Table of booleans, true if rule could match eol. */
    1415 static yyconst flex_int32_t yy_rule_can_match_eol[180] =
     1430static yyconst flex_int32_t yy_rule_can_match_eol[181] =
    14161431    {   0,
    141714321, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    14201435    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14211436    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1422     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0,
    1423     1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1437    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
     1438    0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14241439    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14251440    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1426         };
     1441    0,     };
    14271442
    14281443static yy_state_type yy_last_accepting_state;
     
    14521467 * Created On       : Sat Sep 22 08:58:10 2001
    14531468 * Last Modified By : Peter A. Buhr
    1454  * Last Modified On : Tue Feb  2 15:06:54 2016
    1455  * Update Count     : 426
     1469 * Last Modified On : Mon Mar 21 23:33:46 2016
     1470 * Update Count     : 450
    14561471 */
    14571472#line 20 "lex.ll"
     
    14651480
    14661481#include "lex.h"
     1482#include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
    14671483#include "ParseNode.h"
    1468 #include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
     1484#include "TypedefTable.h"
    14691485
    14701486char *yyfilename;
     
    14821498#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    14831499#define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
    1484 #define IDENTIFIER_RETURN()     RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) )
     1500#define IDENTIFIER_RETURN()     RETURN_VAL( typedefTable.isKind( yytext ) )
    14851501#define ATTRIBUTE_RETURN()      RETURN_VAL( ATTR_IDENTIFIER )
    14861502
     
    15021518// attribute identifier, GCC: $ in identifier
    15031519// numeric constants, CFA: '_' in constant
    1504 // GCC: D (double), LD (long double) and iI (imaginary) suffixes
     1520// GCC: D (double), DL (long double) and iI (imaginary) suffixes
     1521//floating_suffix "_"?([fFdD]|[lL]|[D][L])|([iI][lLfFdD])|([lLfFdD][iI]))
    15051522// character escape sequence, GCC: \e => esc character
    15061523// ' stop highlighting
     
    15111528
    15121529
    1513 #line 1514 "Parser/lex.cc"
     1530#line 1531 "Parser/lex.cc"
    15141531
    15151532#define INITIAL 0
     
    17031720        register int yy_act;
    17041721   
    1705 #line 137 "lex.ll"
     1722#line 139 "lex.ll"
    17061723
    17071724                                   /* line directives */
    1708 #line 1709 "Parser/lex.cc"
     1725#line 1726 "Parser/lex.cc"
    17091726
    17101727        if ( !(yy_init) )
     
    17601777                                {
    17611778                                yy_current_state = (int) yy_def[yy_current_state];
    1762                                 if ( yy_current_state >= 876 )
     1779                                if ( yy_current_state >= 888 )
    17631780                                        yy_c = yy_meta[(unsigned int) yy_c];
    17641781                                }
     
    17661783                        ++yy_cp;
    17671784                        }
    1768                 while ( yy_base[yy_current_state] != 2782 );
     1785                while ( yy_base[yy_current_state] != 2822 );
    17691786
    17701787yy_find_action:
     
    18031820/* rule 1 can match eol */
    18041821YY_RULE_SETUP
    1805 #line 139 "lex.ll"
     1822#line 141 "lex.ll"
    18061823{
    18071824        /* " stop highlighting */
     
    18301847/* rule 2 can match eol */
    18311848YY_RULE_SETUP
    1832 #line 162 "lex.ll"
     1849#line 164 "lex.ll"
    18331850;
    18341851        YY_BREAK
     
    18361853case 3:
    18371854YY_RULE_SETUP
    1838 #line 165 "lex.ll"
     1855#line 167 "lex.ll"
    18391856{ BEGIN COMMENT; }
    18401857        YY_BREAK
     
    18421859/* rule 4 can match eol */
    18431860YY_RULE_SETUP
    1844 #line 166 "lex.ll"
     1861#line 168 "lex.ll"
    18451862;
    18461863        YY_BREAK
    18471864case 5:
    18481865YY_RULE_SETUP
    1849 #line 167 "lex.ll"
     1866#line 169 "lex.ll"
    18501867{ BEGIN 0; }
    18511868        YY_BREAK
     
    18541871/* rule 6 can match eol */
    18551872YY_RULE_SETUP
    1856 #line 170 "lex.ll"
     1873#line 172 "lex.ll"
    18571874;
    18581875        YY_BREAK
     
    18601877case 7:
    18611878YY_RULE_SETUP
    1862 #line 173 "lex.ll"
     1879#line 175 "lex.ll"
    18631880{ WHITE_RETURN(' '); }
    18641881        YY_BREAK
    18651882case 8:
    18661883YY_RULE_SETUP
    1867 #line 174 "lex.ll"
     1884#line 176 "lex.ll"
    18681885{ WHITE_RETURN(' '); }
    18691886        YY_BREAK
     
    18711888/* rule 9 can match eol */
    18721889YY_RULE_SETUP
    1873 #line 175 "lex.ll"
     1890#line 177 "lex.ll"
    18741891{ NEWLINE_RETURN(); }
    18751892        YY_BREAK
     
    18771894case 10:
    18781895YY_RULE_SETUP
    1879 #line 178 "lex.ll"
     1896#line 180 "lex.ll"
    18801897{ KEYWORD_RETURN(ALIGNAS); }                    // C11
    18811898        YY_BREAK
    18821899case 11:
    18831900YY_RULE_SETUP
    1884 #line 179 "lex.ll"
     1901#line 181 "lex.ll"
    18851902{ KEYWORD_RETURN(ALIGNOF); }                    // C11
    18861903        YY_BREAK
    18871904case 12:
    18881905YY_RULE_SETUP
    1889 #line 180 "lex.ll"
     1906#line 182 "lex.ll"
    18901907{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
    18911908        YY_BREAK
    18921909case 13:
    18931910YY_RULE_SETUP
    1894 #line 181 "lex.ll"
     1911#line 183 "lex.ll"
    18951912{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
    18961913        YY_BREAK
    18971914case 14:
    18981915YY_RULE_SETUP
    1899 #line 182 "lex.ll"
     1916#line 184 "lex.ll"
    19001917{ KEYWORD_RETURN(ASM); }
    19011918        YY_BREAK
    19021919case 15:
    19031920YY_RULE_SETUP
    1904 #line 183 "lex.ll"
     1921#line 185 "lex.ll"
    19051922{ KEYWORD_RETURN(ASM); }                                // GCC
    19061923        YY_BREAK
    19071924case 16:
    19081925YY_RULE_SETUP
    1909 #line 184 "lex.ll"
     1926#line 186 "lex.ll"
    19101927{ KEYWORD_RETURN(ASM); }                                // GCC
    19111928        YY_BREAK
    19121929case 17:
    19131930YY_RULE_SETUP
    1914 #line 185 "lex.ll"
     1931#line 187 "lex.ll"
    19151932{ KEYWORD_RETURN(AT); }                                 // CFA
    19161933        YY_BREAK
    19171934case 18:
    19181935YY_RULE_SETUP
    1919 #line 186 "lex.ll"
     1936#line 188 "lex.ll"
    19201937{ KEYWORD_RETURN(ATOMIC); }                             // C11
    19211938        YY_BREAK
    19221939case 19:
    19231940YY_RULE_SETUP
    1924 #line 187 "lex.ll"
     1941#line 189 "lex.ll"
    19251942{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    19261943        YY_BREAK
    19271944case 20:
    19281945YY_RULE_SETUP
    1929 #line 188 "lex.ll"
     1946#line 190 "lex.ll"
    19301947{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    19311948        YY_BREAK
    19321949case 21:
    19331950YY_RULE_SETUP
    1934 #line 189 "lex.ll"
     1951#line 191 "lex.ll"
    19351952{ KEYWORD_RETURN(AUTO); }
    19361953        YY_BREAK
    19371954case 22:
    19381955YY_RULE_SETUP
    1939 #line 190 "lex.ll"
     1956#line 192 "lex.ll"
    19401957{ KEYWORD_RETURN(BOOL); }                               // C99
    19411958        YY_BREAK
    19421959case 23:
    19431960YY_RULE_SETUP
    1944 #line 191 "lex.ll"
     1961#line 193 "lex.ll"
    19451962{ KEYWORD_RETURN(BREAK); }
    19461963        YY_BREAK
    19471964case 24:
    19481965YY_RULE_SETUP
    1949 #line 192 "lex.ll"
     1966#line 194 "lex.ll"
    19501967{ KEYWORD_RETURN(CASE); }
    19511968        YY_BREAK
    19521969case 25:
    19531970YY_RULE_SETUP
    1954 #line 193 "lex.ll"
     1971#line 195 "lex.ll"
    19551972{ KEYWORD_RETURN(CATCH); }                              // CFA
    19561973        YY_BREAK
    19571974case 26:
    19581975YY_RULE_SETUP
    1959 #line 194 "lex.ll"
     1976#line 196 "lex.ll"
    19601977{ KEYWORD_RETURN(CATCHRESUME); }                // CFA
    19611978        YY_BREAK
    19621979case 27:
    19631980YY_RULE_SETUP
    1964 #line 195 "lex.ll"
     1981#line 197 "lex.ll"
    19651982{ KEYWORD_RETURN(CHAR); }
    19661983        YY_BREAK
    19671984case 28:
    19681985YY_RULE_SETUP
    1969 #line 196 "lex.ll"
     1986#line 198 "lex.ll"
    19701987{ KEYWORD_RETURN(CHOOSE); }                             // CFA
    19711988        YY_BREAK
    19721989case 29:
    19731990YY_RULE_SETUP
    1974 #line 197 "lex.ll"
     1991#line 199 "lex.ll"
    19751992{ KEYWORD_RETURN(COMPLEX); }                    // C99
    19761993        YY_BREAK
    19771994case 30:
    19781995YY_RULE_SETUP
    1979 #line 198 "lex.ll"
     1996#line 200 "lex.ll"
    19801997{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    19811998        YY_BREAK
    19821999case 31:
    19832000YY_RULE_SETUP
    1984 #line 199 "lex.ll"
     2001#line 201 "lex.ll"
    19852002{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    19862003        YY_BREAK
    19872004case 32:
    19882005YY_RULE_SETUP
    1989 #line 200 "lex.ll"
     2006#line 202 "lex.ll"
    19902007{ KEYWORD_RETURN(CONST); }
    19912008        YY_BREAK
    19922009case 33:
    19932010YY_RULE_SETUP
    1994 #line 201 "lex.ll"
     2011#line 203 "lex.ll"
    19952012{ KEYWORD_RETURN(CONST); }                              // GCC
    19962013        YY_BREAK
    19972014case 34:
    19982015YY_RULE_SETUP
    1999 #line 202 "lex.ll"
     2016#line 204 "lex.ll"
    20002017{ KEYWORD_RETURN(CONST); }                              // GCC
    20012018        YY_BREAK
    20022019case 35:
    20032020YY_RULE_SETUP
    2004 #line 203 "lex.ll"
    2005 { KEYWORD_RETURN(CONTEXT); }                    // CFA
     2021#line 205 "lex.ll"
     2022{ KEYWORD_RETURN(CONTINUE); }
    20062023        YY_BREAK
    20072024case 36:
    20082025YY_RULE_SETUP
    2009 #line 204 "lex.ll"
    2010 { KEYWORD_RETURN(CONTINUE); }
     2026#line 206 "lex.ll"
     2027{ KEYWORD_RETURN(DEFAULT); }
    20112028        YY_BREAK
    20122029case 37:
    20132030YY_RULE_SETUP
    2014 #line 205 "lex.ll"
    2015 { KEYWORD_RETURN(DEFAULT); }
     2031#line 207 "lex.ll"
     2032{ KEYWORD_RETURN(DISABLE); }                    // CFA
    20162033        YY_BREAK
    20172034case 38:
    20182035YY_RULE_SETUP
    2019 #line 206 "lex.ll"
    2020 { KEYWORD_RETURN(DISABLE); }                    // CFA
     2036#line 208 "lex.ll"
     2037{ KEYWORD_RETURN(DO); }
    20212038        YY_BREAK
    20222039case 39:
    20232040YY_RULE_SETUP
    2024 #line 207 "lex.ll"
    2025 { KEYWORD_RETURN(DO); }
     2041#line 209 "lex.ll"
     2042{ KEYWORD_RETURN(DOUBLE); }
    20262043        YY_BREAK
    20272044case 40:
    20282045YY_RULE_SETUP
    2029 #line 208 "lex.ll"
    2030 { KEYWORD_RETURN(DOUBLE); }
     2046#line 210 "lex.ll"
     2047{ KEYWORD_RETURN(DTYPE); }                              // CFA
    20312048        YY_BREAK
    20322049case 41:
    20332050YY_RULE_SETUP
    2034 #line 209 "lex.ll"
    2035 { KEYWORD_RETURN(DTYPE); }                              // CFA
     2051#line 211 "lex.ll"
     2052{ KEYWORD_RETURN(ELSE); }
    20362053        YY_BREAK
    20372054case 42:
    20382055YY_RULE_SETUP
    2039 #line 210 "lex.ll"
    2040 { KEYWORD_RETURN(ELSE); }
     2056#line 212 "lex.ll"
     2057{ KEYWORD_RETURN(ENABLE); }                             // CFA
    20412058        YY_BREAK
    20422059case 43:
    20432060YY_RULE_SETUP
    2044 #line 211 "lex.ll"
    2045 { KEYWORD_RETURN(ENABLE); }                             // CFA
     2061#line 213 "lex.ll"
     2062{ KEYWORD_RETURN(ENUM); }
    20462063        YY_BREAK
    20472064case 44:
    20482065YY_RULE_SETUP
    2049 #line 212 "lex.ll"
    2050 { KEYWORD_RETURN(ENUM); }
     2066#line 214 "lex.ll"
     2067{ KEYWORD_RETURN(EXTENSION); }                  // GCC
    20512068        YY_BREAK
    20522069case 45:
    20532070YY_RULE_SETUP
    2054 #line 213 "lex.ll"
    2055 { KEYWORD_RETURN(EXTENSION); }                  // GCC
     2071#line 215 "lex.ll"
     2072{ KEYWORD_RETURN(EXTERN); }
    20562073        YY_BREAK
    20572074case 46:
    20582075YY_RULE_SETUP
    2059 #line 214 "lex.ll"
    2060 { KEYWORD_RETURN(EXTERN); }
     2076#line 216 "lex.ll"
     2077{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
    20612078        YY_BREAK
    20622079case 47:
    20632080YY_RULE_SETUP
    2064 #line 215 "lex.ll"
    2065 { KEYWORD_RETURN(FALLTHRU); }                   // CFA
     2081#line 217 "lex.ll"
     2082{ KEYWORD_RETURN(FINALLY); }                    // CFA
    20662083        YY_BREAK
    20672084case 48:
    20682085YY_RULE_SETUP
    2069 #line 216 "lex.ll"
    2070 { KEYWORD_RETURN(FINALLY); }                    // CFA
     2086#line 218 "lex.ll"
     2087{ KEYWORD_RETURN(FLOAT); }
    20712088        YY_BREAK
    20722089case 49:
    20732090YY_RULE_SETUP
    2074 #line 217 "lex.ll"
    2075 { KEYWORD_RETURN(FLOAT); }
     2091#line 219 "lex.ll"
     2092{ KEYWORD_RETURN(FLOAT); }                              // GCC
    20762093        YY_BREAK
    20772094case 50:
    20782095YY_RULE_SETUP
    2079 #line 218 "lex.ll"
    2080 { KEYWORD_RETURN(FLOAT); }                              // GCC
     2096#line 220 "lex.ll"
     2097{ KEYWORD_RETURN(FOR); }
    20812098        YY_BREAK
    20822099case 51:
    20832100YY_RULE_SETUP
    2084 #line 219 "lex.ll"
    2085 { KEYWORD_RETURN(FOR); }
     2101#line 221 "lex.ll"
     2102{ KEYWORD_RETURN(FORALL); }                             // CFA
    20862103        YY_BREAK
    20872104case 52:
    20882105YY_RULE_SETUP
    2089 #line 220 "lex.ll"
    2090 { KEYWORD_RETURN(FORALL); }                             // CFA
     2106#line 222 "lex.ll"
     2107{ KEYWORD_RETURN(FORTRAN); }
    20912108        YY_BREAK
    20922109case 53:
    20932110YY_RULE_SETUP
    2094 #line 221 "lex.ll"
    2095 { KEYWORD_RETURN(FORTRAN); }
     2111#line 223 "lex.ll"
     2112{ KEYWORD_RETURN(FTYPE); }                              // CFA
    20962113        YY_BREAK
    20972114case 54:
    20982115YY_RULE_SETUP
    2099 #line 222 "lex.ll"
    2100 { KEYWORD_RETURN(FTYPE); }                              // CFA
     2116#line 224 "lex.ll"
     2117{ KEYWORD_RETURN(GENERIC); }                    // C11
    21012118        YY_BREAK
    21022119case 55:
    21032120YY_RULE_SETUP
    2104 #line 223 "lex.ll"
    2105 { KEYWORD_RETURN(GENERIC); }                    // C11
     2121#line 225 "lex.ll"
     2122{ KEYWORD_RETURN(GOTO); }
    21062123        YY_BREAK
    21072124case 56:
    21082125YY_RULE_SETUP
    2109 #line 224 "lex.ll"
    2110 { KEYWORD_RETURN(GOTO); }
     2126#line 226 "lex.ll"
     2127{ KEYWORD_RETURN(IF); }
    21112128        YY_BREAK
    21122129case 57:
    21132130YY_RULE_SETUP
    2114 #line 225 "lex.ll"
    2115 { KEYWORD_RETURN(IF); }
     2131#line 227 "lex.ll"
     2132{ KEYWORD_RETURN(IMAGINARY); }                  // C99
    21162133        YY_BREAK
    21172134case 58:
    2118 YY_RULE_SETUP
    2119 #line 226 "lex.ll"
    2120 { KEYWORD_RETURN(IMAGINARY); }                  // C99
    2121         YY_BREAK
    2122 case 59:
    2123 YY_RULE_SETUP
    2124 #line 227 "lex.ll"
    2125 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
    2126         YY_BREAK
    2127 case 60:
    21282135YY_RULE_SETUP
    21292136#line 228 "lex.ll"
    21302137{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    21312138        YY_BREAK
     2139case 59:
     2140YY_RULE_SETUP
     2141#line 229 "lex.ll"
     2142{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2143        YY_BREAK
     2144case 60:
     2145YY_RULE_SETUP
     2146#line 230 "lex.ll"
     2147{ KEYWORD_RETURN(INLINE); }                             // C99
     2148        YY_BREAK
    21322149case 61:
    2133 YY_RULE_SETUP
    2134 #line 229 "lex.ll"
    2135 { KEYWORD_RETURN(INLINE); }                             // C99
    2136         YY_BREAK
    2137 case 62:
    2138 YY_RULE_SETUP
    2139 #line 230 "lex.ll"
    2140 { KEYWORD_RETURN(INLINE); }                             // GCC
    2141         YY_BREAK
    2142 case 63:
    21432150YY_RULE_SETUP
    21442151#line 231 "lex.ll"
    21452152{ KEYWORD_RETURN(INLINE); }                             // GCC
    21462153        YY_BREAK
     2154case 62:
     2155YY_RULE_SETUP
     2156#line 232 "lex.ll"
     2157{ KEYWORD_RETURN(INLINE); }                             // GCC
     2158        YY_BREAK
     2159case 63:
     2160YY_RULE_SETUP
     2161#line 233 "lex.ll"
     2162{ KEYWORD_RETURN(INT); }
     2163        YY_BREAK
    21472164case 64:
    21482165YY_RULE_SETUP
    2149 #line 232 "lex.ll"
    2150 { KEYWORD_RETURN(INT); }
     2166#line 234 "lex.ll"
     2167{ KEYWORD_RETURN(INT); }                                // GCC
    21512168        YY_BREAK
    21522169case 65:
    21532170YY_RULE_SETUP
    2154 #line 233 "lex.ll"
    2155 { KEYWORD_RETURN(INT); }                                // GCC
     2171#line 235 "lex.ll"
     2172{ KEYWORD_RETURN(LABEL); }                              // GCC
    21562173        YY_BREAK
    21572174case 66:
    21582175YY_RULE_SETUP
    2159 #line 234 "lex.ll"
    2160 { KEYWORD_RETURN(LABEL); }                              // GCC
     2176#line 236 "lex.ll"
     2177{ KEYWORD_RETURN(LONG); }
    21612178        YY_BREAK
    21622179case 67:
    21632180YY_RULE_SETUP
    2164 #line 235 "lex.ll"
    2165 { KEYWORD_RETURN(LONG); }
     2181#line 237 "lex.ll"
     2182{ KEYWORD_RETURN(LVALUE); }                             // CFA
    21662183        YY_BREAK
    21672184case 68:
    21682185YY_RULE_SETUP
    2169 #line 236 "lex.ll"
    2170 { KEYWORD_RETURN(LVALUE); }                             // CFA
     2186#line 238 "lex.ll"
     2187{ KEYWORD_RETURN(NORETURN); }                   // C11
    21712188        YY_BREAK
    21722189case 69:
    21732190YY_RULE_SETUP
    2174 #line 237 "lex.ll"
    2175 { KEYWORD_RETURN(NORETURN); }                   // C11
     2191#line 239 "lex.ll"
     2192{ KEYWORD_RETURN(OFFSETOF); }           // GCC
    21762193        YY_BREAK
    21772194case 70:
    21782195YY_RULE_SETUP
    2179 #line 238 "lex.ll"
    2180 { KEYWORD_RETURN(OFFSETOF); }           // GCC
     2196#line 240 "lex.ll"
     2197{ KEYWORD_RETURN(OTYPE); }                              // CFA
    21812198        YY_BREAK
    21822199case 71:
    21832200YY_RULE_SETUP
    2184 #line 239 "lex.ll"
     2201#line 241 "lex.ll"
    21852202{ KEYWORD_RETURN(REGISTER); }
    21862203        YY_BREAK
    21872204case 72:
    21882205YY_RULE_SETUP
    2189 #line 240 "lex.ll"
     2206#line 242 "lex.ll"
    21902207{ KEYWORD_RETURN(RESTRICT); }                   // C99
    21912208        YY_BREAK
    21922209case 73:
    21932210YY_RULE_SETUP
    2194 #line 241 "lex.ll"
     2211#line 243 "lex.ll"
    21952212{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    21962213        YY_BREAK
    21972214case 74:
    21982215YY_RULE_SETUP
    2199 #line 242 "lex.ll"
     2216#line 244 "lex.ll"
    22002217{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    22012218        YY_BREAK
    22022219case 75:
    22032220YY_RULE_SETUP
    2204 #line 243 "lex.ll"
     2221#line 245 "lex.ll"
    22052222{ KEYWORD_RETURN(RETURN); }
    22062223        YY_BREAK
    22072224case 76:
    22082225YY_RULE_SETUP
    2209 #line 244 "lex.ll"
     2226#line 246 "lex.ll"
    22102227{ KEYWORD_RETURN(SHORT); }
    22112228        YY_BREAK
    22122229case 77:
    22132230YY_RULE_SETUP
    2214 #line 245 "lex.ll"
     2231#line 247 "lex.ll"
    22152232{ KEYWORD_RETURN(SIGNED); }
    22162233        YY_BREAK
    22172234case 78:
    22182235YY_RULE_SETUP
    2219 #line 246 "lex.ll"
     2236#line 248 "lex.ll"
    22202237{ KEYWORD_RETURN(SIGNED); }                             // GCC
    22212238        YY_BREAK
    22222239case 79:
    22232240YY_RULE_SETUP
    2224 #line 247 "lex.ll"
     2241#line 249 "lex.ll"
    22252242{ KEYWORD_RETURN(SIGNED); }                             // GCC
    22262243        YY_BREAK
    22272244case 80:
    22282245YY_RULE_SETUP
    2229 #line 248 "lex.ll"
     2246#line 250 "lex.ll"
    22302247{ KEYWORD_RETURN(SIZEOF); }
    22312248        YY_BREAK
    22322249case 81:
    22332250YY_RULE_SETUP
    2234 #line 249 "lex.ll"
     2251#line 251 "lex.ll"
    22352252{ KEYWORD_RETURN(STATIC); }
    22362253        YY_BREAK
    22372254case 82:
    22382255YY_RULE_SETUP
    2239 #line 250 "lex.ll"
     2256#line 252 "lex.ll"
    22402257{ KEYWORD_RETURN(STATICASSERT); }               // C11
    22412258        YY_BREAK
    22422259case 83:
    22432260YY_RULE_SETUP
    2244 #line 251 "lex.ll"
     2261#line 253 "lex.ll"
    22452262{ KEYWORD_RETURN(STRUCT); }
    22462263        YY_BREAK
    22472264case 84:
    22482265YY_RULE_SETUP
    2249 #line 252 "lex.ll"
     2266#line 254 "lex.ll"
    22502267{ KEYWORD_RETURN(SWITCH); }
    22512268        YY_BREAK
    22522269case 85:
    22532270YY_RULE_SETUP
    2254 #line 253 "lex.ll"
     2271#line 255 "lex.ll"
    22552272{ KEYWORD_RETURN(THREADLOCAL); }                // C11
    22562273        YY_BREAK
    22572274case 86:
    22582275YY_RULE_SETUP
    2259 #line 254 "lex.ll"
     2276#line 256 "lex.ll"
    22602277{ KEYWORD_RETURN(THROW); }                              // CFA
    22612278        YY_BREAK
    22622279case 87:
    22632280YY_RULE_SETUP
    2264 #line 255 "lex.ll"
     2281#line 257 "lex.ll"
    22652282{ KEYWORD_RETURN(THROWRESUME); }                // CFA
    22662283        YY_BREAK
    22672284case 88:
    22682285YY_RULE_SETUP
    2269 #line 256 "lex.ll"
     2286#line 258 "lex.ll"
     2287{ KEYWORD_RETURN(TRAIT); }                              // CFA
     2288        YY_BREAK
     2289case 89:
     2290YY_RULE_SETUP
     2291#line 259 "lex.ll"
    22702292{ KEYWORD_RETURN(TRY); }                                // CFA
    22712293        YY_BREAK
    2272 case 89:
    2273 YY_RULE_SETUP
    2274 #line 257 "lex.ll"
    2275 { KEYWORD_RETURN(TYPE); }                               // CFA
    2276         YY_BREAK
    22772294case 90:
    22782295YY_RULE_SETUP
    2279 #line 258 "lex.ll"
     2296#line 260 "lex.ll"
    22802297{ KEYWORD_RETURN(TYPEDEF); }
    22812298        YY_BREAK
    22822299case 91:
    2283 YY_RULE_SETUP
    2284 #line 259 "lex.ll"
    2285 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2286         YY_BREAK
    2287 case 92:
    2288 YY_RULE_SETUP
    2289 #line 260 "lex.ll"
    2290 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2291         YY_BREAK
    2292 case 93:
    22932300YY_RULE_SETUP
    22942301#line 261 "lex.ll"
    22952302{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    22962303        YY_BREAK
     2304case 92:
     2305YY_RULE_SETUP
     2306#line 262 "lex.ll"
     2307{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2308        YY_BREAK
     2309case 93:
     2310YY_RULE_SETUP
     2311#line 263 "lex.ll"
     2312{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2313        YY_BREAK
    22972314case 94:
    22982315YY_RULE_SETUP
    2299 #line 262 "lex.ll"
     2316#line 264 "lex.ll"
    23002317{ KEYWORD_RETURN(UNION); }
    23012318        YY_BREAK
    23022319case 95:
    23032320YY_RULE_SETUP
    2304 #line 263 "lex.ll"
     2321#line 265 "lex.ll"
    23052322{ KEYWORD_RETURN(UNSIGNED); }
    23062323        YY_BREAK
    23072324case 96:
    23082325YY_RULE_SETUP
    2309 #line 264 "lex.ll"
     2326#line 266 "lex.ll"
     2327{ KEYWORD_RETURN(VALIST); }                     // GCC
     2328        YY_BREAK
     2329case 97:
     2330YY_RULE_SETUP
     2331#line 267 "lex.ll"
    23102332{ KEYWORD_RETURN(VOID); }
    23112333        YY_BREAK
    2312 case 97:
    2313 YY_RULE_SETUP
    2314 #line 265 "lex.ll"
     2334case 98:
     2335YY_RULE_SETUP
     2336#line 268 "lex.ll"
    23152337{ KEYWORD_RETURN(VOLATILE); }
    23162338        YY_BREAK
    2317 case 98:
    2318 YY_RULE_SETUP
    2319 #line 266 "lex.ll"
     2339case 99:
     2340YY_RULE_SETUP
     2341#line 269 "lex.ll"
    23202342{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    23212343        YY_BREAK
    2322 case 99:
    2323 YY_RULE_SETUP
    2324 #line 267 "lex.ll"
     2344case 100:
     2345YY_RULE_SETUP
     2346#line 270 "lex.ll"
    23252347{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    23262348        YY_BREAK
    2327 case 100:
    2328 YY_RULE_SETUP
    2329 #line 268 "lex.ll"
     2349case 101:
     2350YY_RULE_SETUP
     2351#line 271 "lex.ll"
    23302352{ KEYWORD_RETURN(WHILE); }
    23312353        YY_BREAK
    23322354/* identifier */
    2333 case 101:
    2334 YY_RULE_SETUP
    2335 #line 271 "lex.ll"
    2336 { IDENTIFIER_RETURN(); }
    2337         YY_BREAK
    23382355case 102:
    2339 YY_RULE_SETUP
    2340 #line 272 "lex.ll"
    2341 { ATTRIBUTE_RETURN(); }
    2342         YY_BREAK
    2343 case 103:
    2344 YY_RULE_SETUP
    2345 #line 273 "lex.ll"
    2346 { BEGIN BKQUOTE; }
    2347         YY_BREAK
    2348 case 104:
    23492356YY_RULE_SETUP
    23502357#line 274 "lex.ll"
    23512358{ IDENTIFIER_RETURN(); }
    23522359        YY_BREAK
     2360case 103:
     2361YY_RULE_SETUP
     2362#line 275 "lex.ll"
     2363{ ATTRIBUTE_RETURN(); }
     2364        YY_BREAK
     2365case 104:
     2366YY_RULE_SETUP
     2367#line 276 "lex.ll"
     2368{ BEGIN BKQUOTE; }
     2369        YY_BREAK
    23532370case 105:
    23542371YY_RULE_SETUP
    2355 #line 275 "lex.ll"
     2372#line 277 "lex.ll"
     2373{ IDENTIFIER_RETURN(); }
     2374        YY_BREAK
     2375case 106:
     2376YY_RULE_SETUP
     2377#line 278 "lex.ll"
    23562378{ BEGIN 0; }
    23572379        YY_BREAK
    23582380/* numeric constants */
    2359 case 106:
    2360 YY_RULE_SETUP
    2361 #line 278 "lex.ll"
     2381case 107:
     2382YY_RULE_SETUP
     2383#line 281 "lex.ll"
    23622384{ NUMERIC_RETURN(ZERO); }                               // CFA
    23632385        YY_BREAK
    2364 case 107:
    2365 YY_RULE_SETUP
    2366 #line 279 "lex.ll"
     2386case 108:
     2387YY_RULE_SETUP
     2388#line 282 "lex.ll"
    23672389{ NUMERIC_RETURN(ONE); }                                // CFA
    23682390        YY_BREAK
    2369 case 108:
    2370 YY_RULE_SETUP
    2371 #line 280 "lex.ll"
     2391case 109:
     2392YY_RULE_SETUP
     2393#line 283 "lex.ll"
    23722394{ NUMERIC_RETURN(INTEGERconstant); }
    23732395        YY_BREAK
    2374 case 109:
    2375 YY_RULE_SETUP
    2376 #line 281 "lex.ll"
     2396case 110:
     2397YY_RULE_SETUP
     2398#line 284 "lex.ll"
    23772399{ NUMERIC_RETURN(INTEGERconstant); }
    23782400        YY_BREAK
    2379 case 110:
    2380 YY_RULE_SETUP
    2381 #line 282 "lex.ll"
     2401case 111:
     2402YY_RULE_SETUP
     2403#line 285 "lex.ll"
    23822404{ NUMERIC_RETURN(INTEGERconstant); }
    23832405        YY_BREAK
    2384 case 111:
    2385 YY_RULE_SETUP
    2386 #line 283 "lex.ll"
     2406case 112:
     2407YY_RULE_SETUP
     2408#line 286 "lex.ll"
    23872409{ NUMERIC_RETURN(FLOATINGconstant); }
    23882410        YY_BREAK
    2389 case 112:
    2390 YY_RULE_SETUP
    2391 #line 284 "lex.ll"
     2411case 113:
     2412YY_RULE_SETUP
     2413#line 287 "lex.ll"
    23922414{ NUMERIC_RETURN(FLOATINGconstant); }
    23932415        YY_BREAK
    23942416/* character constant, allows empty value */
    2395 case 113:
    2396 YY_RULE_SETUP
    2397 #line 287 "lex.ll"
     2417case 114:
     2418YY_RULE_SETUP
     2419#line 290 "lex.ll"
    23982420{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    23992421        YY_BREAK
    2400 case 114:
    2401 YY_RULE_SETUP
    2402 #line 288 "lex.ll"
     2422case 115:
     2423YY_RULE_SETUP
     2424#line 291 "lex.ll"
    24032425{ *strtext += std::string( yytext ); }
    24042426        YY_BREAK
    2405 case 115:
    2406 /* rule 115 can match eol */
    2407 YY_RULE_SETUP
    2408 #line 289 "lex.ll"
     2427case 116:
     2428/* rule 116 can match eol */
     2429YY_RULE_SETUP
     2430#line 292 "lex.ll"
    24092431{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
    24102432        YY_BREAK
    24112433/* ' stop highlighting */
    24122434/* string constant */
    2413 case 116:
    2414 YY_RULE_SETUP
    2415 #line 293 "lex.ll"
     2435case 117:
     2436YY_RULE_SETUP
     2437#line 296 "lex.ll"
    24162438{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    24172439        YY_BREAK
    2418 case 117:
    2419 YY_RULE_SETUP
    2420 #line 294 "lex.ll"
     2440case 118:
     2441YY_RULE_SETUP
     2442#line 297 "lex.ll"
    24212443{ *strtext += std::string( yytext ); }
    24222444        YY_BREAK
    2423 case 118:
    2424 /* rule 118 can match eol */
    2425 YY_RULE_SETUP
    2426 #line 295 "lex.ll"
     2445case 119:
     2446/* rule 119 can match eol */
     2447YY_RULE_SETUP
     2448#line 298 "lex.ll"
    24272449{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
    24282450        YY_BREAK
    24292451/* " stop highlighting */
    24302452/* common character/string constant */
    2431 case 119:
    2432 YY_RULE_SETUP
    2433 #line 299 "lex.ll"
     2453case 120:
     2454YY_RULE_SETUP
     2455#line 302 "lex.ll"
    24342456{ rm_underscore(); *strtext += std::string( yytext ); }
    24352457        YY_BREAK
    2436 case 120:
    2437 /* rule 120 can match eol */
    2438 YY_RULE_SETUP
    2439 #line 300 "lex.ll"
     2458case 121:
     2459/* rule 121 can match eol */
     2460YY_RULE_SETUP
     2461#line 303 "lex.ll"
    24402462{}                                              // continuation (ALSO HANDLED BY CPP)
    24412463        YY_BREAK
    2442 case 121:
    2443 YY_RULE_SETUP
    2444 #line 301 "lex.ll"
     2464case 122:
     2465YY_RULE_SETUP
     2466#line 304 "lex.ll"
    24452467{ *strtext += std::string( yytext ); } // unknown escape character
    24462468        YY_BREAK
    24472469/* punctuation */
    2448 case 122:
    2449 YY_RULE_SETUP
    2450 #line 304 "lex.ll"
    2451 { ASCIIOP_RETURN(); }
    2452         YY_BREAK
    24532470case 123:
    2454 YY_RULE_SETUP
    2455 #line 305 "lex.ll"
    2456 { ASCIIOP_RETURN(); }
    2457         YY_BREAK
    2458 case 124:
    2459 YY_RULE_SETUP
    2460 #line 306 "lex.ll"
    2461 { ASCIIOP_RETURN(); }
    2462         YY_BREAK
    2463 case 125:
    24642471YY_RULE_SETUP
    24652472#line 307 "lex.ll"
    24662473{ ASCIIOP_RETURN(); }
    24672474        YY_BREAK
    2468 case 126:
     2475case 124:
    24692476YY_RULE_SETUP
    24702477#line 308 "lex.ll"
    24712478{ ASCIIOP_RETURN(); }
    24722479        YY_BREAK
    2473 case 127:
     2480case 125:
    24742481YY_RULE_SETUP
    24752482#line 309 "lex.ll"
    24762483{ ASCIIOP_RETURN(); }
    24772484        YY_BREAK
    2478 case 128:
     2485case 126:
    24792486YY_RULE_SETUP
    24802487#line 310 "lex.ll"
    2481 { ASCIIOP_RETURN(); }                                   // also operator
    2482         YY_BREAK
    2483 case 129:
     2488{ ASCIIOP_RETURN(); }
     2489        YY_BREAK
     2490case 127:
    24842491YY_RULE_SETUP
    24852492#line 311 "lex.ll"
    24862493{ ASCIIOP_RETURN(); }
    24872494        YY_BREAK
    2488 case 130:
     2495case 128:
    24892496YY_RULE_SETUP
    24902497#line 312 "lex.ll"
    24912498{ ASCIIOP_RETURN(); }
    24922499        YY_BREAK
    2493 case 131:
     2500case 129:
    24942501YY_RULE_SETUP
    24952502#line 313 "lex.ll"
    24962503{ ASCIIOP_RETURN(); }                                   // also operator
    24972504        YY_BREAK
     2505case 130:
     2506YY_RULE_SETUP
     2507#line 314 "lex.ll"
     2508{ ASCIIOP_RETURN(); }
     2509        YY_BREAK
     2510case 131:
     2511YY_RULE_SETUP
     2512#line 315 "lex.ll"
     2513{ ASCIIOP_RETURN(); }
     2514        YY_BREAK
    24982515case 132:
    24992516YY_RULE_SETUP
    2500 #line 314 "lex.ll"
     2517#line 316 "lex.ll"
     2518{ ASCIIOP_RETURN(); }                                   // also operator
     2519        YY_BREAK
     2520case 133:
     2521YY_RULE_SETUP
     2522#line 317 "lex.ll"
    25012523{ NAMEDOP_RETURN(ELLIPSIS); }
    25022524        YY_BREAK
    25032525/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
    2504 case 133:
    2505 YY_RULE_SETUP
    2506 #line 317 "lex.ll"
     2526case 134:
     2527YY_RULE_SETUP
     2528#line 320 "lex.ll"
    25072529{ RETURN_VAL('['); }
    25082530        YY_BREAK
    2509 case 134:
    2510 YY_RULE_SETUP
    2511 #line 318 "lex.ll"
     2531case 135:
     2532YY_RULE_SETUP
     2533#line 321 "lex.ll"
    25122534{ RETURN_VAL(']'); }
    25132535        YY_BREAK
    2514 case 135:
    2515 YY_RULE_SETUP
    2516 #line 319 "lex.ll"
     2536case 136:
     2537YY_RULE_SETUP
     2538#line 322 "lex.ll"
    25172539{ RETURN_VAL('{'); }
    25182540        YY_BREAK
    2519 case 136:
    2520 YY_RULE_SETUP
    2521 #line 320 "lex.ll"
     2541case 137:
     2542YY_RULE_SETUP
     2543#line 323 "lex.ll"
    25222544{ RETURN_VAL('}'); }
    25232545        YY_BREAK
    25242546/* operators */
    2525 case 137:
    2526 YY_RULE_SETUP
    2527 #line 323 "lex.ll"
    2528 { ASCIIOP_RETURN(); }
    2529         YY_BREAK
    25302547case 138:
    2531 YY_RULE_SETUP
    2532 #line 324 "lex.ll"
    2533 { ASCIIOP_RETURN(); }
    2534         YY_BREAK
    2535 case 139:
    2536 YY_RULE_SETUP
    2537 #line 325 "lex.ll"
    2538 { ASCIIOP_RETURN(); }
    2539         YY_BREAK
    2540 case 140:
    25412548YY_RULE_SETUP
    25422549#line 326 "lex.ll"
    25432550{ ASCIIOP_RETURN(); }
    25442551        YY_BREAK
    2545 case 141:
     2552case 139:
    25462553YY_RULE_SETUP
    25472554#line 327 "lex.ll"
    25482555{ ASCIIOP_RETURN(); }
    25492556        YY_BREAK
    2550 case 142:
     2557case 140:
    25512558YY_RULE_SETUP
    25522559#line 328 "lex.ll"
    25532560{ ASCIIOP_RETURN(); }
    25542561        YY_BREAK
    2555 case 143:
     2562case 141:
    25562563YY_RULE_SETUP
    25572564#line 329 "lex.ll"
    25582565{ ASCIIOP_RETURN(); }
    25592566        YY_BREAK
    2560 case 144:
     2567case 142:
    25612568YY_RULE_SETUP
    25622569#line 330 "lex.ll"
    25632570{ ASCIIOP_RETURN(); }
    25642571        YY_BREAK
    2565 case 145:
     2572case 143:
    25662573YY_RULE_SETUP
    25672574#line 331 "lex.ll"
    25682575{ ASCIIOP_RETURN(); }
    25692576        YY_BREAK
    2570 case 146:
     2577case 144:
    25712578YY_RULE_SETUP
    25722579#line 332 "lex.ll"
    25732580{ ASCIIOP_RETURN(); }
    25742581        YY_BREAK
    2575 case 147:
     2582case 145:
    25762583YY_RULE_SETUP
    25772584#line 333 "lex.ll"
    25782585{ ASCIIOP_RETURN(); }
    25792586        YY_BREAK
    2580 case 148:
     2587case 146:
    25812588YY_RULE_SETUP
    25822589#line 334 "lex.ll"
    25832590{ ASCIIOP_RETURN(); }
    25842591        YY_BREAK
    2585 case 149:
     2592case 147:
    25862593YY_RULE_SETUP
    25872594#line 335 "lex.ll"
    25882595{ ASCIIOP_RETURN(); }
    25892596        YY_BREAK
    2590 case 150:
     2597case 148:
    25912598YY_RULE_SETUP
    25922599#line 336 "lex.ll"
    25932600{ ASCIIOP_RETURN(); }
    25942601        YY_BREAK
     2602case 149:
     2603YY_RULE_SETUP
     2604#line 337 "lex.ll"
     2605{ ASCIIOP_RETURN(); }
     2606        YY_BREAK
     2607case 150:
     2608YY_RULE_SETUP
     2609#line 338 "lex.ll"
     2610{ ASCIIOP_RETURN(); }
     2611        YY_BREAK
    25952612case 151:
    25962613YY_RULE_SETUP
    2597 #line 338 "lex.ll"
     2614#line 339 "lex.ll"
     2615{ ASCIIOP_RETURN(); }
     2616        YY_BREAK
     2617case 152:
     2618YY_RULE_SETUP
     2619#line 341 "lex.ll"
    25982620{ NAMEDOP_RETURN(ICR); }
    25992621        YY_BREAK
    2600 case 152:
    2601 YY_RULE_SETUP
    2602 #line 339 "lex.ll"
     2622case 153:
     2623YY_RULE_SETUP
     2624#line 342 "lex.ll"
    26032625{ NAMEDOP_RETURN(DECR); }
    26042626        YY_BREAK
    2605 case 153:
    2606 YY_RULE_SETUP
    2607 #line 340 "lex.ll"
     2627case 154:
     2628YY_RULE_SETUP
     2629#line 343 "lex.ll"
    26082630{ NAMEDOP_RETURN(EQ); }
    26092631        YY_BREAK
    2610 case 154:
    2611 YY_RULE_SETUP
    2612 #line 341 "lex.ll"
     2632case 155:
     2633YY_RULE_SETUP
     2634#line 344 "lex.ll"
    26132635{ NAMEDOP_RETURN(NE); }
    26142636        YY_BREAK
    2615 case 155:
    2616 YY_RULE_SETUP
    2617 #line 342 "lex.ll"
     2637case 156:
     2638YY_RULE_SETUP
     2639#line 345 "lex.ll"
    26182640{ NAMEDOP_RETURN(LS); }
    26192641        YY_BREAK
    2620 case 156:
    2621 YY_RULE_SETUP
    2622 #line 343 "lex.ll"
     2642case 157:
     2643YY_RULE_SETUP
     2644#line 346 "lex.ll"
    26232645{ NAMEDOP_RETURN(RS); }
    26242646        YY_BREAK
    2625 case 157:
    2626 YY_RULE_SETUP
    2627 #line 344 "lex.ll"
     2647case 158:
     2648YY_RULE_SETUP
     2649#line 347 "lex.ll"
    26282650{ NAMEDOP_RETURN(LE); }
    26292651        YY_BREAK
    2630 case 158:
    2631 YY_RULE_SETUP
    2632 #line 345 "lex.ll"
     2652case 159:
     2653YY_RULE_SETUP
     2654#line 348 "lex.ll"
    26332655{ NAMEDOP_RETURN(GE); }
    26342656        YY_BREAK
    2635 case 159:
    2636 YY_RULE_SETUP
    2637 #line 346 "lex.ll"
     2657case 160:
     2658YY_RULE_SETUP
     2659#line 349 "lex.ll"
    26382660{ NAMEDOP_RETURN(ANDAND); }
    26392661        YY_BREAK
    2640 case 160:
    2641 YY_RULE_SETUP
    2642 #line 347 "lex.ll"
     2662case 161:
     2663YY_RULE_SETUP
     2664#line 350 "lex.ll"
    26432665{ NAMEDOP_RETURN(OROR); }
    26442666        YY_BREAK
    2645 case 161:
    2646 YY_RULE_SETUP
    2647 #line 348 "lex.ll"
     2667case 162:
     2668YY_RULE_SETUP
     2669#line 351 "lex.ll"
    26482670{ NAMEDOP_RETURN(ARROW); }
    26492671        YY_BREAK
    2650 case 162:
    2651 YY_RULE_SETUP
    2652 #line 349 "lex.ll"
     2672case 163:
     2673YY_RULE_SETUP
     2674#line 352 "lex.ll"
    26532675{ NAMEDOP_RETURN(PLUSassign); }
    26542676        YY_BREAK
    2655 case 163:
    2656 YY_RULE_SETUP
    2657 #line 350 "lex.ll"
     2677case 164:
     2678YY_RULE_SETUP
     2679#line 353 "lex.ll"
    26582680{ NAMEDOP_RETURN(MINUSassign); }
    26592681        YY_BREAK
    2660 case 164:
    2661 YY_RULE_SETUP
    2662 #line 351 "lex.ll"
     2682case 165:
     2683YY_RULE_SETUP
     2684#line 354 "lex.ll"
    26632685{ NAMEDOP_RETURN(MULTassign); }
    26642686        YY_BREAK
    2665 case 165:
    2666 YY_RULE_SETUP
    2667 #line 352 "lex.ll"
     2687case 166:
     2688YY_RULE_SETUP
     2689#line 355 "lex.ll"
    26682690{ NAMEDOP_RETURN(DIVassign); }
    26692691        YY_BREAK
    2670 case 166:
    2671 YY_RULE_SETUP
    2672 #line 353 "lex.ll"
     2692case 167:
     2693YY_RULE_SETUP
     2694#line 356 "lex.ll"
    26732695{ NAMEDOP_RETURN(MODassign); }
    26742696        YY_BREAK
    2675 case 167:
    2676 YY_RULE_SETUP
    2677 #line 354 "lex.ll"
     2697case 168:
     2698YY_RULE_SETUP
     2699#line 357 "lex.ll"
    26782700{ NAMEDOP_RETURN(ANDassign); }
    26792701        YY_BREAK
    2680 case 168:
    2681 YY_RULE_SETUP
    2682 #line 355 "lex.ll"
     2702case 169:
     2703YY_RULE_SETUP
     2704#line 358 "lex.ll"
    26832705{ NAMEDOP_RETURN(ORassign); }
    26842706        YY_BREAK
    2685 case 169:
    2686 YY_RULE_SETUP
    2687 #line 356 "lex.ll"
     2707case 170:
     2708YY_RULE_SETUP
     2709#line 359 "lex.ll"
    26882710{ NAMEDOP_RETURN(ERassign); }
    26892711        YY_BREAK
    2690 case 170:
    2691 YY_RULE_SETUP
    2692 #line 357 "lex.ll"
     2712case 171:
     2713YY_RULE_SETUP
     2714#line 360 "lex.ll"
    26932715{ NAMEDOP_RETURN(LSassign); }
    26942716        YY_BREAK
    2695 case 171:
    2696 YY_RULE_SETUP
    2697 #line 358 "lex.ll"
     2717case 172:
     2718YY_RULE_SETUP
     2719#line 361 "lex.ll"
    26982720{ NAMEDOP_RETURN(RSassign); }
    26992721        YY_BREAK
    2700 case 172:
    2701 YY_RULE_SETUP
    2702 #line 360 "lex.ll"
     2722case 173:
     2723YY_RULE_SETUP
     2724#line 363 "lex.ll"
    27032725{ NAMEDOP_RETURN(ATassign); }
    27042726        YY_BREAK
    27052727/* CFA, operator identifier */
    2706 case 173:
    2707 YY_RULE_SETUP
    2708 #line 363 "lex.ll"
     2728case 174:
     2729YY_RULE_SETUP
     2730#line 366 "lex.ll"
    27092731{ IDENTIFIER_RETURN(); }                                // unary
    27102732        YY_BREAK
    2711 case 174:
    2712 YY_RULE_SETUP
    2713 #line 364 "lex.ll"
     2733case 175:
     2734YY_RULE_SETUP
     2735#line 367 "lex.ll"
    27142736{ IDENTIFIER_RETURN(); }
    27152737        YY_BREAK
    2716 case 175:
    2717 YY_RULE_SETUP
    2718 #line 365 "lex.ll"
     2738case 176:
     2739YY_RULE_SETUP
     2740#line 368 "lex.ll"
    27192741{ IDENTIFIER_RETURN(); }
    27202742        YY_BREAK
    2721 case 176:
    2722 YY_RULE_SETUP
    2723 #line 366 "lex.ll"
     2743case 177:
     2744YY_RULE_SETUP
     2745#line 369 "lex.ll"
    27242746{ IDENTIFIER_RETURN(); }                // binary
    27252747        YY_BREAK
     
    27502772          an argument list.
    27512773        */
    2752 case 177:
    2753 YY_RULE_SETUP
    2754 #line 393 "lex.ll"
     2774case 178:
     2775YY_RULE_SETUP
     2776#line 396 "lex.ll"
    27552777{
    27562778        // 1 or 2 character unary operator ?
     
    27652787        YY_BREAK
    27662788/* unknown characters */
    2767 case 178:
    2768 YY_RULE_SETUP
    2769 #line 405 "lex.ll"
     2789case 179:
     2790YY_RULE_SETUP
     2791#line 408 "lex.ll"
    27702792{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    27712793        YY_BREAK
    2772 case 179:
    2773 YY_RULE_SETUP
    2774 #line 407 "lex.ll"
     2794case 180:
     2795YY_RULE_SETUP
     2796#line 410 "lex.ll"
    27752797ECHO;
    27762798        YY_BREAK
    2777 #line 2778 "Parser/lex.cc"
     2799#line 2800 "Parser/lex.cc"
    27782800case YY_STATE_EOF(INITIAL):
    27792801case YY_STATE_EOF(COMMENT):
     
    30723094                        {
    30733095                        yy_current_state = (int) yy_def[yy_current_state];
    3074                         if ( yy_current_state >= 876 )
     3096                        if ( yy_current_state >= 888 )
    30753097                                yy_c = yy_meta[(unsigned int) yy_c];
    30763098                        }
     
    31003122                {
    31013123                yy_current_state = (int) yy_def[yy_current_state];
    3102                 if ( yy_current_state >= 876 )
     3124                if ( yy_current_state >= 888 )
    31033125                        yy_c = yy_meta[(unsigned int) yy_c];
    31043126                }
    31053127        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3106         yy_is_jam = (yy_current_state == 875);
     3128        yy_is_jam = (yy_current_state == 887);
    31073129
    31083130        return yy_is_jam ? 0 : yy_current_state;
     
    37503772#define YYTABLES_NAME "yytables"
    37513773
    3752 #line 407 "lex.ll"
     3774#line 410 "lex.ll"
    37533775
    37543776
  • src/Parser/lex.h

    r39786813 ra5a71d0  
    1010// Created On       : Sat Sep 22 08:58:10 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  8 20:28:48 2015
    13 // Update Count     : 341
     12// Last Modified On : Mon Mar 21 18:18:06 2016
     13// Update Count     : 346
    1414//
    1515
     
    2020void yyerror( const char * );
    2121
     22#include <string>
     23#include "ParseNode.h"
    2224// External declarations for information sharing between lexer and scanner
    23 #include "TypedefTable.h"
     25class TypedefTable;
    2426extern TypedefTable typedefTable;
    2527
  • src/Parser/lex.ll

    r39786813 ra5a71d0  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Tue Feb  2 15:06:54 2016
    13  * Update Count     : 426
     12 * Last Modified On : Mon Mar 21 23:33:46 2016
     13 * Update Count     : 450
    1414 */
    1515
     
    2727
    2828#include "lex.h"
     29#include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
    2930#include "ParseNode.h"
    30 #include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
     31#include "TypedefTable.h"
    3132
    3233char *yyfilename;
     
    4445#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    4546#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 IDENTIFIER_RETURN()     RETURN_VAL( typedefTable.isKind( yytext ) )
    4748#define ATTRIBUTE_RETURN()      RETURN_VAL( ATTR_IDENTIFIER )
    4849
     
    9596fractional_constant ({decimal_digits}?"."{decimal_digits})|({decimal_digits}".")
    9697exponent "_"?[eE]"_"?[+-]?{decimal_digits}
    97                                 // GCC: D (double), LD (long double) and iI (imaginary) suffixes
    98 floating_suffix "_"?([fFdD]?|([lL]?)|([iI][lLfFdD]?)|([lLfFdD][iI]))
     98                                // GCC: D (double), DL (long double) and iI (imaginary) suffixes
     99floating_suffix "_"?([fFdDlL][iI]?|"DL"|[iI][lLfFdD]?)
     100                                //floating_suffix "_"?([fFdD]|[lL]|[D][L])|([iI][lLfFdD])|([lLfFdD][iI]))
    99101floating_constant (({fractional_constant}{exponent}?)|({decimal_digits}{exponent})){floating_suffix}?
    100102
     
    137139%%
    138140                                   /* line directives */
    139 ^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["][^\n]*"\n" {
     141^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" {
    140142        /* " stop highlighting */
    141143        char *end_num;
     
    201203__const                 { KEYWORD_RETURN(CONST); }                              // GCC
    202204__const__               { KEYWORD_RETURN(CONST); }                              // GCC
    203 context                 { KEYWORD_RETURN(CONTEXT); }                    // CFA
    204205continue                { KEYWORD_RETURN(CONTINUE); }
    205206default                 { KEYWORD_RETURN(DEFAULT); }
     
    237238_Noreturn               { KEYWORD_RETURN(NORETURN); }                   // C11
    238239__builtin_offsetof { KEYWORD_RETURN(OFFSETOF); }                // GCC
     240otype                   { KEYWORD_RETURN(OTYPE); }                              // CFA
    239241register                { KEYWORD_RETURN(REGISTER); }
    240242restrict                { KEYWORD_RETURN(RESTRICT); }                   // C99
     
    254256throw                   { KEYWORD_RETURN(THROW); }                              // CFA
    255257throwResume             { KEYWORD_RETURN(THROWRESUME); }                // CFA
     258trait                   { KEYWORD_RETURN(TRAIT); }                              // CFA
    256259try                             { KEYWORD_RETURN(TRY); }                                // CFA
    257 type                    { KEYWORD_RETURN(TYPE); }                               // CFA
    258260typedef                 { KEYWORD_RETURN(TYPEDEF); }
    259261typeof                  { KEYWORD_RETURN(TYPEOF); }                             // GCC
     
    262264union                   { KEYWORD_RETURN(UNION); }
    263265unsigned                { KEYWORD_RETURN(UNSIGNED); }
     266__builtin_va_list { KEYWORD_RETURN(VALIST); }                   // GCC
    264267void                    { KEYWORD_RETURN(VOID); }
    265268volatile                { KEYWORD_RETURN(VOLATILE); }
  • src/Parser/parser.cc

    r39786813 ra5a71d0  
    22
    33/* Bison implementation for Yacc-like parsers in C
    4 
     4   
    55      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
    6 
     6   
    77   This program is free software: you can redistribute it and/or modify
    88   it under the terms of the GNU General Public License as published by
    99   the Free Software Foundation, either version 3 of the License, or
    1010   (at your option) any later version.
    11 
     11   
    1212   This program is distributed in the hope that it will be useful,
    1313   but WITHOUT ANY WARRANTY; without even the implied warranty of
    1414   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1515   GNU General Public License for more details.
    16 
     16   
    1717   You should have received a copy of the GNU General Public License
    1818   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     
    2727   Bison output files to be licensed under the GNU General Public
    2828   License without this special exception.
    29 
     29   
    3030   This special exception was added by the Free Software Foundation in
    3131   version 2.2 of Bison.  */
     
    7777#include <cstdio>
    7878#include <stack>
     79#include "lex.h"
     80#include "parser.h"
     81#include "ParseNode.h"
    7982#include "TypedefTable.h"
    80 #include "lex.h"
    81 #include "ParseNode.h"
    8283#include "TypeData.h"
    8384#include "LinkageSpec.h"
     
    9091
    9192/* Line 268 of yacc.c  */
    92 #line 93 "Parser/parser.cc"
     93#line 94 "Parser/parser.cc"
    9394
    9495/* Enabling traces.  */
     
    138139     SIGNED = 277,
    139140     UNSIGNED = 278,
    140      BOOL = 279,
    141      COMPLEX = 280,
    142      IMAGINARY = 281,
    143      TYPEOF = 282,
    144      LABEL = 283,
    145      ENUM = 284,
    146      STRUCT = 285,
    147      UNION = 286,
    148      TYPE = 287,
    149      FTYPE = 288,
    150      DTYPE = 289,
    151      CONTEXT = 290,
    152      SIZEOF = 291,
    153      OFFSETOF = 292,
    154      ATTRIBUTE = 293,
    155      EXTENSION = 294,
    156      IF = 295,
    157      ELSE = 296,
    158      SWITCH = 297,
    159      CASE = 298,
    160      DEFAULT = 299,
    161      DO = 300,
    162      WHILE = 301,
    163      FOR = 302,
    164      BREAK = 303,
    165      CONTINUE = 304,
    166      GOTO = 305,
    167      RETURN = 306,
    168      CHOOSE = 307,
    169      DISABLE = 308,
    170      ENABLE = 309,
    171      FALLTHRU = 310,
    172      TRY = 311,
    173      CATCH = 312,
    174      CATCHRESUME = 313,
    175      FINALLY = 314,
    176      THROW = 315,
    177      THROWRESUME = 316,
    178      AT = 317,
    179      ASM = 318,
    180      ALIGNAS = 319,
    181      ALIGNOF = 320,
    182      ATOMIC = 321,
    183      GENERIC = 322,
    184      NORETURN = 323,
    185      STATICASSERT = 324,
    186      THREADLOCAL = 325,
    187      IDENTIFIER = 326,
    188      QUOTED_IDENTIFIER = 327,
    189      TYPEDEFname = 328,
    190      TYPEGENname = 329,
    191      ATTR_IDENTIFIER = 330,
    192      ATTR_TYPEDEFname = 331,
    193      ATTR_TYPEGENname = 332,
    194      INTEGERconstant = 333,
    195      FLOATINGconstant = 334,
    196      CHARACTERconstant = 335,
    197      STRINGliteral = 336,
    198      ZERO = 337,
    199      ONE = 338,
    200      ARROW = 339,
    201      ICR = 340,
    202      DECR = 341,
    203      LS = 342,
    204      RS = 343,
    205      LE = 344,
    206      GE = 345,
    207      EQ = 346,
    208      NE = 347,
    209      ANDAND = 348,
    210      OROR = 349,
    211      ELLIPSIS = 350,
    212      MULTassign = 351,
    213      DIVassign = 352,
    214      MODassign = 353,
    215      PLUSassign = 354,
    216      MINUSassign = 355,
    217      LSassign = 356,
    218      RSassign = 357,
    219      ANDassign = 358,
    220      ERassign = 359,
    221      ORassign = 360,
    222      ATassign = 361,
    223      THEN = 362
     141     VALIST = 279,
     142     BOOL = 280,
     143     COMPLEX = 281,
     144     IMAGINARY = 282,
     145     TYPEOF = 283,
     146     LABEL = 284,
     147     ENUM = 285,
     148     STRUCT = 286,
     149     UNION = 287,
     150     OTYPE = 288,
     151     FTYPE = 289,
     152     DTYPE = 290,
     153     TRAIT = 291,
     154     SIZEOF = 292,
     155     OFFSETOF = 293,
     156     ATTRIBUTE = 294,
     157     EXTENSION = 295,
     158     IF = 296,
     159     ELSE = 297,
     160     SWITCH = 298,
     161     CASE = 299,
     162     DEFAULT = 300,
     163     DO = 301,
     164     WHILE = 302,
     165     FOR = 303,
     166     BREAK = 304,
     167     CONTINUE = 305,
     168     GOTO = 306,
     169     RETURN = 307,
     170     CHOOSE = 308,
     171     DISABLE = 309,
     172     ENABLE = 310,
     173     FALLTHRU = 311,
     174     TRY = 312,
     175     CATCH = 313,
     176     CATCHRESUME = 314,
     177     FINALLY = 315,
     178     THROW = 316,
     179     THROWRESUME = 317,
     180     AT = 318,
     181     ASM = 319,
     182     ALIGNAS = 320,
     183     ALIGNOF = 321,
     184     ATOMIC = 322,
     185     GENERIC = 323,
     186     NORETURN = 324,
     187     STATICASSERT = 325,
     188     THREADLOCAL = 326,
     189     IDENTIFIER = 327,
     190     QUOTED_IDENTIFIER = 328,
     191     TYPEDEFname = 329,
     192     TYPEGENname = 330,
     193     ATTR_IDENTIFIER = 331,
     194     ATTR_TYPEDEFname = 332,
     195     ATTR_TYPEGENname = 333,
     196     INTEGERconstant = 334,
     197     FLOATINGconstant = 335,
     198     CHARACTERconstant = 336,
     199     STRINGliteral = 337,
     200     ZERO = 338,
     201     ONE = 339,
     202     ARROW = 340,
     203     ICR = 341,
     204     DECR = 342,
     205     LS = 343,
     206     RS = 344,
     207     LE = 345,
     208     GE = 346,
     209     EQ = 347,
     210     NE = 348,
     211     ANDAND = 349,
     212     OROR = 350,
     213     ELLIPSIS = 351,
     214     MULTassign = 352,
     215     DIVassign = 353,
     216     MODassign = 354,
     217     PLUSassign = 355,
     218     MINUSassign = 356,
     219     LSassign = 357,
     220     RSassign = 358,
     221     ANDassign = 359,
     222     ERassign = 360,
     223     ORassign = 361,
     224     ATassign = 362,
     225     THEN = 363
    224226   };
    225227#endif
     
    246248#define SIGNED 277
    247249#define UNSIGNED 278
    248 #define BOOL 279
    249 #define COMPLEX 280
    250 #define IMAGINARY 281
    251 #define TYPEOF 282
    252 #define LABEL 283
    253 #define ENUM 284
    254 #define STRUCT 285
    255 #define UNION 286
    256 #define TYPE 287
    257 #define FTYPE 288
    258 #define DTYPE 289
    259 #define CONTEXT 290
    260 #define SIZEOF 291
    261 #define OFFSETOF 292
    262 #define ATTRIBUTE 293
    263 #define EXTENSION 294
    264 #define IF 295
    265 #define ELSE 296
    266 #define SWITCH 297
    267 #define CASE 298
    268 #define DEFAULT 299
    269 #define DO 300
    270 #define WHILE 301
    271 #define FOR 302
    272 #define BREAK 303
    273 #define CONTINUE 304
    274 #define GOTO 305
    275 #define RETURN 306
    276 #define CHOOSE 307
    277 #define DISABLE 308
    278 #define ENABLE 309
    279 #define FALLTHRU 310
    280 #define TRY 311
    281 #define CATCH 312
    282 #define CATCHRESUME 313
    283 #define FINALLY 314
    284 #define THROW 315
    285 #define THROWRESUME 316
    286 #define AT 317
    287 #define ASM 318
    288 #define ALIGNAS 319
    289 #define ALIGNOF 320
    290 #define ATOMIC 321
    291 #define GENERIC 322
    292 #define NORETURN 323
    293 #define STATICASSERT 324
    294 #define THREADLOCAL 325
    295 #define IDENTIFIER 326
    296 #define QUOTED_IDENTIFIER 327
    297 #define TYPEDEFname 328
    298 #define TYPEGENname 329
    299 #define ATTR_IDENTIFIER 330
    300 #define ATTR_TYPEDEFname 331
    301 #define ATTR_TYPEGENname 332
    302 #define INTEGERconstant 333
    303 #define FLOATINGconstant 334
    304 #define CHARACTERconstant 335
    305 #define STRINGliteral 336
    306 #define ZERO 337
    307 #define ONE 338
    308 #define ARROW 339
    309 #define ICR 340
    310 #define DECR 341
    311 #define LS 342
    312 #define RS 343
    313 #define LE 344
    314 #define GE 345
    315 #define EQ 346
    316 #define NE 347
    317 #define ANDAND 348
    318 #define OROR 349
    319 #define ELLIPSIS 350
    320 #define MULTassign 351
    321 #define DIVassign 352
    322 #define MODassign 353
    323 #define PLUSassign 354
    324 #define MINUSassign 355
    325 #define LSassign 356
    326 #define RSassign 357
    327 #define ANDassign 358
    328 #define ERassign 359
    329 #define ORassign 360
    330 #define ATassign 361
    331 #define THEN 362
     250#define VALIST 279
     251#define BOOL 280
     252#define COMPLEX 281
     253#define IMAGINARY 282
     254#define TYPEOF 283
     255#define LABEL 284
     256#define ENUM 285
     257#define STRUCT 286
     258#define UNION 287
     259#define OTYPE 288
     260#define FTYPE 289
     261#define DTYPE 290
     262#define TRAIT 291
     263#define SIZEOF 292
     264#define OFFSETOF 293
     265#define ATTRIBUTE 294
     266#define EXTENSION 295
     267#define IF 296
     268#define ELSE 297
     269#define SWITCH 298
     270#define CASE 299
     271#define DEFAULT 300
     272#define DO 301
     273#define WHILE 302
     274#define FOR 303
     275#define BREAK 304
     276#define CONTINUE 305
     277#define GOTO 306
     278#define RETURN 307
     279#define CHOOSE 308
     280#define DISABLE 309
     281#define ENABLE 310
     282#define FALLTHRU 311
     283#define TRY 312
     284#define CATCH 313
     285#define CATCHRESUME 314
     286#define FINALLY 315
     287#define THROW 316
     288#define THROWRESUME 317
     289#define AT 318
     290#define ASM 319
     291#define ALIGNAS 320
     292#define ALIGNOF 321
     293#define ATOMIC 322
     294#define GENERIC 323
     295#define NORETURN 324
     296#define STATICASSERT 325
     297#define THREADLOCAL 326
     298#define IDENTIFIER 327
     299#define QUOTED_IDENTIFIER 328
     300#define TYPEDEFname 329
     301#define TYPEGENname 330
     302#define ATTR_IDENTIFIER 331
     303#define ATTR_TYPEDEFname 332
     304#define ATTR_TYPEGENname 333
     305#define INTEGERconstant 334
     306#define FLOATINGconstant 335
     307#define CHARACTERconstant 336
     308#define STRINGliteral 337
     309#define ZERO 338
     310#define ONE 339
     311#define ARROW 340
     312#define ICR 341
     313#define DECR 342
     314#define LS 343
     315#define RS 344
     316#define LE 345
     317#define GE 346
     318#define EQ 347
     319#define NE 348
     320#define ANDAND 349
     321#define OROR 350
     322#define ELLIPSIS 351
     323#define MULTassign 352
     324#define DIVassign 353
     325#define MODassign 354
     326#define PLUSassign 355
     327#define MINUSassign 356
     328#define LSassign 357
     329#define RSassign 358
     330#define ANDassign 359
     331#define ERassign 360
     332#define ORassign 361
     333#define ATassign 362
     334#define THEN 363
    332335
    333336
     
    339342
    340343/* Line 293 of yacc.c  */
    341 #line 110 "parser.yy"
     344#line 112 "parser.yy"
    342345
    343346        Token tok;
     
    356359
    357360/* Line 293 of yacc.c  */
    358 #line 359 "Parser/parser.cc"
     361#line 362 "Parser/parser.cc"
    359362} YYSTYPE;
    360363# define YYSTYPE_IS_TRIVIAL 1
     
    368371
    369372/* Line 343 of yacc.c  */
    370 #line 371 "Parser/parser.cc"
     373#line 374 "Parser/parser.cc"
    371374
    372375#ifdef short
     
    585588
    586589/* YYFINAL -- State number of the termination state.  */
    587 #define YYFINAL  248
     590#define YYFINAL  249
    588591/* YYLAST -- Last index in YYTABLE.  */
    589 #define YYLAST   11042
     592#define YYLAST   11290
    590593
    591594/* YYNTOKENS -- Number of terminals.  */
    592 #define YYNTOKENS  132
     595#define YYNTOKENS  133
    593596/* YYNNTS -- Number of nonterminals.  */
    594597#define YYNNTS  238
    595598/* YYNRULES -- Number of rules.  */
    596 #define YYNRULES  751
     599#define YYNRULES  752
    597600/* YYNRULES -- Number of states.  */
    598 #define YYNSTATES  1578
     601#define YYNSTATES  1579
    599602
    600603/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    601604#define YYUNDEFTOK  2
    602 #define YYMAXUTOK   362
     605#define YYMAXUTOK   363
    603606
    604607#define YYTRANSLATE(YYX)                                                \
     
    611614       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    612615       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    613        2,     2,     2,   117,     2,     2,     2,   124,   119,     2,
    614      108,   109,   118,   120,   115,   121,   112,   123,     2,     2,
    615        2,     2,     2,     2,     2,     2,     2,     2,   116,   131,
    616      125,   130,   126,   129,     2,     2,     2,     2,     2,     2,
     616       2,     2,     2,   118,     2,     2,     2,   125,   120,     2,
     617     109,   110,   119,   121,   116,   122,   113,   124,     2,     2,
     618       2,     2,     2,     2,     2,     2,     2,     2,   117,   132,
     619     126,   131,   127,   130,     2,     2,     2,     2,     2,     2,
    617620       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    618621       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    619        2,   110,     2,   111,   127,     2,     2,     2,     2,     2,
     622       2,   111,     2,   112,   128,     2,     2,     2,     2,     2,
    620623       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    621624       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    622        2,     2,     2,   113,   128,   114,   122,     2,     2,     2,
     625       2,     2,     2,   114,   129,   115,   123,     2,     2,     2,
    623626       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    624627       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    644647      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    645648      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
    646      105,   106,   107
     649     105,   106,   107,   108
    647650};
    648651
     
    685688    1156,  1158,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
    686689    1177,  1179,  1181,  1183,  1185,  1187,  1189,  1191,  1193,  1195,
    687     1197,  1199,  1201,  1203,  1205,  1208,  1211,  1215,  1219,  1221,
    688     1225,  1227,  1230,  1233,  1236,  1241,  1246,  1251,  1256,  1258,
    689     1261,  1264,  1268,  1270,  1273,  1276,  1278,  1281,  1284,  1288,
    690     1290,  1293,  1296,  1298,  1300,  1305,  1308,  1314,  1322,  1325,
    691     1328,  1331,  1333,  1336,  1339,  1343,  1346,  1350,  1352,  1355,
    692     1359,  1362,  1365,  1370,  1371,  1373,  1376,  1379,  1381,  1382,
    693     1384,  1387,  1390,  1396,  1403,  1406,  1409,  1414,  1415,  1418,
    694     1419,  1421,  1423,  1425,  1431,  1437,  1443,  1445,  1451,  1457,
    695     1467,  1469,  1475,  1476,  1478,  1480,  1486,  1488,  1490,  1496,
    696     1502,  1504,  1508,  1512,  1517,  1519,  1521,  1523,  1525,  1528,
    697     1530,  1534,  1538,  1540,  1543,  1545,  1549,  1551,  1553,  1555,
    698     1557,  1559,  1561,  1563,  1565,  1567,  1569,  1571,  1574,  1576,
    699     1578,  1580,  1583,  1584,  1587,  1590,  1592,  1597,  1598,  1600,
    700     1603,  1607,  1612,  1615,  1618,  1620,  1623,  1625,  1628,  1634,
    701     1640,  1648,  1655,  1657,  1660,  1663,  1667,  1669,  1672,  1675,
    702     1680,  1683,  1688,  1689,  1694,  1697,  1699,  1701,  1703,  1704,
    703     1707,  1713,  1719,  1733,  1735,  1737,  1741,  1745,  1748,  1752,
    704     1756,  1759,  1764,  1766,  1773,  1783,  1784,  1796,  1798,  1802,
    705     1806,  1810,  1812,  1814,  1820,  1823,  1829,  1830,  1832,  1834,
    706     1838,  1839,  1841,  1843,  1845,  1847,  1848,  1855,  1858,  1860,
    707     1863,  1868,  1871,  1875,  1879,  1883,  1888,  1894,  1900,  1906,
    708     1913,  1915,  1917,  1919,  1923,  1924,  1930,  1931,  1933,  1935,
    709     1938,  1945,  1947,  1951,  1952,  1954,  1959,  1961,  1963,  1965,
    710     1967,  1970,  1972,  1975,  1978,  1980,  1984,  1987,  1991,  1995,
    711     1998,  2003,  2008,  2012,  2021,  2025,  2028,  2030,  2033,  2040,
    712     2049,  2053,  2056,  2060,  2064,  2069,  2074,  2078,  2080,  2082,
    713     2084,  2089,  2096,  2100,  2103,  2107,  2111,  2116,  2121,  2125,
    714     2128,  2130,  2133,  2136,  2138,  2142,  2145,  2149,  2153,  2156,
    715     2161,  2166,  2170,  2177,  2186,  2190,  2193,  2195,  2198,  2201,
    716     2204,  2208,  2212,  2215,  2220,  2225,  2229,  2236,  2245,  2249,
    717     2252,  2254,  2257,  2260,  2262,  2264,  2267,  2271,  2275,  2278,
    718     2283,  2290,  2299,  2301,  2304,  2307,  2309,  2312,  2315,  2319,
    719     2323,  2325,  2330,  2335,  2339,  2345,  2354,  2358,  2361,  2365,
    720     2367,  2373,  2379,  2386,  2393,  2395,  2398,  2401,  2403,  2406,
    721     2409,  2413,  2417,  2419,  2424,  2429,  2433,  2439,  2448,  2452,
    722     2454,  2457,  2459,  2462,  2469,  2475,  2482,  2490,  2498,  2500,
    723     2503,  2506,  2508,  2511,  2514,  2518,  2522,  2524,  2529,  2534,
    724     2538,  2547,  2551,  2553,  2555,  2558,  2560,  2562,  2565,  2569,
    725     2572,  2576,  2579,  2583,  2587,  2590,  2595,  2599,  2602,  2606,
    726     2609,  2614,  2618,  2621,  2628,  2635,  2642,  2650,  2652,  2655,
    727     2657,  2659,  2661,  2664,  2668,  2671,  2675,  2678,  2682,  2686,
    728     2691,  2694,  2698,  2703,  2706,  2712,  2718,  2725,  2732,  2733,
    729     2735,  2736
     690    1197,  1199,  1201,  1203,  1205,  1207,  1210,  1213,  1217,  1221,
     691    1223,  1227,  1229,  1232,  1235,  1238,  1243,  1248,  1253,  1258,
     692    1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,  1283,  1286,
     693    1290,  1292,  1295,  1298,  1300,  1302,  1307,  1310,  1316,  1324,
     694    1327,  1330,  1333,  1335,  1338,  1341,  1345,  1348,  1352,  1354,
     695    1357,  1361,  1364,  1367,  1372,  1373,  1375,  1378,  1381,  1383,
     696    1384,  1386,  1389,  1392,  1398,  1405,  1408,  1411,  1416,  1417,
     697    1420,  1421,  1423,  1425,  1427,  1433,  1439,  1445,  1447,  1453,
     698    1459,  1469,  1471,  1477,  1478,  1480,  1482,  1488,  1490,  1492,
     699    1498,  1504,  1506,  1510,  1514,  1519,  1521,  1523,  1525,  1527,
     700    1530,  1532,  1536,  1540,  1542,  1545,  1547,  1551,  1553,  1555,
     701    1557,  1559,  1561,  1563,  1565,  1567,  1569,  1571,  1573,  1576,
     702    1578,  1580,  1582,  1585,  1586,  1589,  1592,  1594,  1599,  1600,
     703    1602,  1605,  1609,  1614,  1617,  1620,  1622,  1625,  1627,  1630,
     704    1636,  1642,  1650,  1657,  1659,  1662,  1665,  1669,  1671,  1674,
     705    1677,  1682,  1685,  1690,  1691,  1696,  1699,  1701,  1703,  1705,
     706    1706,  1709,  1715,  1721,  1735,  1737,  1739,  1743,  1747,  1750,
     707    1754,  1758,  1761,  1766,  1768,  1775,  1785,  1786,  1798,  1800,
     708    1804,  1808,  1812,  1814,  1816,  1822,  1825,  1831,  1832,  1834,
     709    1836,  1840,  1841,  1843,  1845,  1847,  1849,  1850,  1857,  1860,
     710    1862,  1865,  1870,  1873,  1877,  1881,  1885,  1890,  1896,  1902,
     711    1908,  1915,  1917,  1919,  1921,  1925,  1926,  1932,  1933,  1935,
     712    1937,  1940,  1947,  1949,  1953,  1954,  1956,  1961,  1963,  1965,
     713    1967,  1969,  1972,  1974,  1977,  1980,  1982,  1986,  1989,  1993,
     714    1997,  2000,  2005,  2010,  2014,  2023,  2027,  2030,  2032,  2035,
     715    2042,  2051,  2055,  2058,  2062,  2066,  2071,  2076,  2080,  2082,
     716    2084,  2086,  2091,  2098,  2102,  2105,  2109,  2113,  2118,  2123,
     717    2127,  2130,  2132,  2135,  2138,  2140,  2144,  2147,  2151,  2155,
     718    2158,  2163,  2168,  2172,  2179,  2188,  2192,  2195,  2197,  2200,
     719    2203,  2206,  2210,  2214,  2217,  2222,  2227,  2231,  2238,  2247,
     720    2251,  2254,  2256,  2259,  2262,  2264,  2266,  2269,  2273,  2277,
     721    2280,  2285,  2292,  2301,  2303,  2306,  2309,  2311,  2314,  2317,
     722    2321,  2325,  2327,  2332,  2337,  2341,  2347,  2356,  2360,  2363,
     723    2367,  2369,  2375,  2381,  2388,  2395,  2397,  2400,  2403,  2405,
     724    2408,  2411,  2415,  2419,  2421,  2426,  2431,  2435,  2441,  2450,
     725    2454,  2456,  2459,  2461,  2464,  2471,  2477,  2484,  2492,  2500,
     726    2502,  2505,  2508,  2510,  2513,  2516,  2520,  2524,  2526,  2531,
     727    2536,  2540,  2549,  2553,  2555,  2557,  2560,  2562,  2564,  2567,
     728    2571,  2574,  2578,  2581,  2585,  2589,  2592,  2597,  2601,  2604,
     729    2608,  2611,  2616,  2620,  2623,  2630,  2637,  2644,  2652,  2654,
     730    2657,  2659,  2661,  2663,  2666,  2670,  2673,  2677,  2680,  2684,
     731    2688,  2693,  2696,  2700,  2705,  2708,  2714,  2720,  2727,  2734,
     732    2735,  2737,  2738
    730733};
    731734
     
    733736static const yytype_int16 yyrhs[] =
    734737{
    735      298,     0,    -1,    -1,    -1,    78,    -1,    79,    -1,    80,
    736       -1,    71,    -1,    75,    -1,   139,    -1,    71,    -1,    75,
    737       -1,    71,    -1,   139,    -1,    82,    -1,    83,    -1,    81,
    738       -1,   140,    81,    -1,    71,    -1,   139,    -1,   108,   167,
    739      109,    -1,   108,   171,   109,    -1,   141,    -1,   142,   110,
    740      133,   162,   134,   111,    -1,   142,   108,   143,   109,    -1,
    741      142,   112,   138,    -1,   142,   112,   110,   133,   145,   134,
    742      111,    -1,   142,    84,   138,    -1,   142,    84,   110,   133,
    743      145,   134,   111,    -1,   142,    85,    -1,   142,    86,    -1,
    744      108,   271,   109,   113,   275,   368,   114,    -1,   142,   113,
    745      143,   114,    -1,   144,    -1,   143,   115,   144,    -1,    -1,
    746      162,    -1,   138,   116,   162,    -1,   110,   133,   162,   134,
    747      111,   116,   162,    -1,   110,   133,   162,   115,   165,   134,
    748      111,   116,   162,    -1,   146,    -1,   145,   115,   146,    -1,
    749      138,    -1,   138,   112,   146,    -1,   138,   112,   110,   133,
    750      145,   134,   111,    -1,   138,    84,   146,    -1,   138,    84,
    751      110,   133,   145,   134,   111,    -1,   142,    -1,   135,    -1,
    752      140,    -1,    85,   147,    -1,    86,   147,    -1,    39,   149,
    753       -1,   148,   149,    -1,   117,   149,    -1,   118,   149,    -1,
    754       36,   147,    -1,    36,   108,   271,   109,    -1,    37,   108,
    755      271,   115,   138,   109,    -1,    75,    -1,    75,   108,   272,
    756      109,    -1,    75,   108,   144,   109,    -1,    65,   147,    -1,
    757       65,   108,   271,   109,    -1,    93,   138,    -1,   119,    -1,
    758      120,    -1,   121,    -1,   122,    -1,   147,    -1,   108,   271,
    759      109,   149,    -1,   108,   271,   109,   164,    -1,   149,    -1,
    760      150,   118,   149,    -1,   150,   123,   149,    -1,   150,   124,
    761      149,    -1,   150,    -1,   151,   120,   150,    -1,   151,   121,
    762      150,    -1,   151,    -1,   152,    87,   151,    -1,   152,    88,
    763      151,    -1,   152,    -1,   153,   125,   152,    -1,   153,   126,
    764      152,    -1,   153,    89,   152,    -1,   153,    90,   152,    -1,
    765      153,    -1,   154,    91,   153,    -1,   154,    92,   153,    -1,
    766      154,    -1,   155,   119,   154,    -1,   155,    -1,   156,   127,
    767      155,    -1,   156,    -1,   157,   128,   156,    -1,   157,    -1,
    768      158,    93,   157,    -1,   158,    -1,   159,    94,   158,    -1,
    769      159,    -1,   159,   129,   167,   116,   160,    -1,   159,   129,
    770      116,   160,    -1,   159,   129,   167,   116,   164,    -1,   160,
    771       -1,   160,    -1,   147,   130,   162,    -1,   147,   166,   162,
    772       -1,   164,   369,    -1,    -1,   162,    -1,   110,   111,    -1,
    773      110,   133,   162,   134,   111,    -1,   110,   133,   115,   165,
    774      134,   111,    -1,   110,   133,   162,   115,   165,   134,   111,
    775       -1,   163,    -1,   165,   115,   163,    -1,    96,    -1,    97,
    776       -1,    98,    -1,    99,    -1,   100,    -1,   101,    -1,   102,
    777       -1,   103,    -1,   104,    -1,   105,    -1,   162,    -1,   167,
    778      115,   162,    -1,    -1,   167,    -1,   170,    -1,   171,    -1,
    779      175,    -1,   176,    -1,   188,    -1,   190,    -1,   191,    -1,
    780      196,    -1,   127,   142,   113,   143,   114,   131,    -1,   138,
    781      116,   308,   169,    -1,   113,   114,    -1,   113,   133,   133,
    782      207,   172,   134,   114,    -1,   173,    -1,   172,   133,   173,
    783       -1,   210,    -1,    39,   210,    -1,   304,    -1,   169,   134,
    784       -1,   169,    -1,   174,   169,    -1,   168,   131,    -1,    40,
    785      108,   167,   109,   169,    -1,    40,   108,   167,   109,   169,
    786       41,   169,    -1,    42,   108,   167,   109,   181,    -1,    42,
    787      108,   167,   109,   113,   133,   203,   182,   114,    -1,    52,
    788      108,   167,   109,   181,    -1,    52,   108,   167,   109,   113,
    789      133,   203,   184,   114,    -1,   161,    -1,   161,    95,   161,
    790       -1,   306,    -1,   177,    -1,   178,   115,   177,    -1,    43,
    791      178,   116,    -1,    44,   116,    -1,   179,    -1,   180,   179,
    792       -1,   180,   169,    -1,    -1,   183,    -1,   180,   174,    -1,
    793      183,   180,   174,    -1,    -1,   185,    -1,   180,   187,    -1,
    794      180,   174,   186,    -1,   185,   180,   187,    -1,   185,   180,
    795      174,   186,    -1,    -1,   187,    -1,    55,    -1,    55,   131,
    796       -1,    46,   108,   167,   109,   169,    -1,    45,   169,    46,
    797      108,   167,   109,   131,    -1,    47,   108,   133,   189,   109,
    798      169,    -1,   168,   134,   131,   168,   131,   168,    -1,   210,
    799      168,   131,   168,    -1,    50,   138,   131,    -1,    50,   118,
    800      167,   131,    -1,    49,   131,    -1,    49,   138,   131,    -1,
    801       48,   131,    -1,    48,   138,   131,    -1,    51,   168,   131,
    802       -1,    60,   163,   131,    -1,    61,   163,   131,    -1,    61,
    803      163,    62,   162,   131,    -1,    56,   171,   192,    -1,    56,
    804      171,   194,    -1,    56,   171,   192,   194,    -1,   193,    -1,
    805       57,   108,    95,   109,   171,    -1,   193,    57,   108,    95,
    806      109,   171,    -1,    58,   108,    95,   109,   171,    -1,   193,
    807       58,   108,    95,   109,   171,    -1,    57,   108,   133,   133,
    808      195,   134,   109,   171,   134,    -1,   193,    57,   108,   133,
    809      133,   195,   134,   109,   171,   134,    -1,    58,   108,   133,
    810      133,   195,   134,   109,   171,   134,    -1,   193,    58,   108,
    811      133,   133,   195,   134,   109,   171,   134,    -1,    59,   171,
    812       -1,   223,    -1,   223,   305,    -1,   223,   353,    -1,   362,
    813      138,    -1,   362,    -1,    63,   197,   108,   140,   109,   131,
    814       -1,    63,   197,   108,   140,   116,   198,   109,   131,    -1,
    815       63,   197,   108,   140,   116,   198,   116,   198,   109,   131,
    816       -1,    63,   197,   108,   140,   116,   198,   116,   198,   116,
    817      201,   109,   131,    -1,    63,   197,    50,   108,   140,   116,
    818      116,   198,   116,   201,   116,   202,   109,   131,    -1,    -1,
    819       11,    -1,    -1,   199,    -1,   200,    -1,   199,   115,   200,
    820       -1,   140,   108,   161,   109,    -1,   110,   161,   111,   140,
    821      108,   161,   109,    -1,    -1,   140,    -1,   201,   115,   140,
    822       -1,   138,    -1,   202,   115,   138,    -1,   134,    -1,   204,
    823       -1,   210,    -1,   204,   133,   210,    -1,   134,    -1,   206,
    824       -1,   220,    -1,   206,   133,   220,    -1,    -1,   208,    -1,
    825       28,   209,   131,    -1,   208,    28,   209,   131,    -1,   270,
    826       -1,   209,   115,   270,    -1,   211,    -1,   220,    -1,   212,
    827      134,   131,    -1,   217,   134,   131,    -1,   214,   134,   131,
    828       -1,   289,   134,   131,    -1,   292,   134,   131,    -1,   213,
    829      273,    -1,   229,   213,   273,    -1,   212,   134,   115,   133,
    830      268,   273,    -1,   363,   268,   307,    -1,   366,   268,   307,
    831       -1,   225,   366,   268,   307,    -1,   215,    -1,   225,   215,
    832       -1,   229,   215,    -1,   229,   225,   215,    -1,   214,   134,
    833      115,   133,   268,    -1,   110,   111,   268,   108,   133,   256,
    834      134,   109,    -1,   366,   268,   108,   133,   256,   134,   109,
    835       -1,   216,   268,   108,   133,   256,   134,   109,    -1,   110,
    836      133,   258,   134,   111,    -1,   110,   133,   258,   134,   115,
    837      133,   259,   134,   111,    -1,     3,   213,    -1,     3,   215,
    838       -1,   217,   134,   115,   133,   138,    -1,     3,   223,   305,
    839       -1,   218,   134,   115,   133,   305,    -1,   225,     3,   223,
    840      305,    -1,   223,     3,   305,    -1,   223,     3,   225,   305,
    841       -1,     3,   138,   130,   162,    -1,   219,   134,   115,   133,
    842      138,   130,   162,    -1,   221,   134,   131,    -1,   218,   134,
    843      131,    -1,   219,   134,   131,    -1,   238,   134,   131,    -1,
    844      222,   305,   307,   273,    -1,   221,   115,   308,   305,   307,
    845      273,    -1,   234,    -1,   238,    -1,   240,    -1,   279,    -1,
    846      235,    -1,   239,    -1,   241,    -1,   280,    -1,    -1,   225,
    847       -1,   226,    -1,   225,   226,    -1,   227,    -1,   310,    -1,
    848       10,    -1,    12,    -1,    11,    -1,    14,    -1,    66,    -1,
    849       -1,    13,   108,   228,   282,   109,    -1,   230,    -1,   225,
    850      230,    -1,   229,   225,   230,    -1,   231,    -1,   230,   231,
    851       -1,   232,    -1,     5,    -1,     7,    -1,     4,    -1,     6,
    852       -1,     8,    -1,     9,    -1,    68,    -1,    70,    -1,    16,
     738     299,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
     739      -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
     740      -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,    82,
     741      -1,   141,    82,    -1,    72,    -1,   140,    -1,   109,   168,
     742     110,    -1,   109,   172,   110,    -1,   142,    -1,   143,   111,
     743     134,   163,   135,   112,    -1,   143,   109,   144,   110,    -1,
     744     143,   113,   139,    -1,   143,   113,   111,   134,   146,   135,
     745     112,    -1,   143,    85,   139,    -1,   143,    85,   111,   134,
     746     146,   135,   112,    -1,   143,    86,    -1,   143,    87,    -1,
     747     109,   272,   110,   114,   276,   369,   115,    -1,   143,   114,
     748     144,   115,    -1,   145,    -1,   144,   116,   145,    -1,    -1,
     749     163,    -1,   139,   117,   163,    -1,   111,   134,   163,   135,
     750     112,   117,   163,    -1,   111,   134,   163,   116,   166,   135,
     751     112,   117,   163,    -1,   147,    -1,   146,   116,   147,    -1,
     752     139,    -1,   139,   113,   147,    -1,   139,   113,   111,   134,
     753     146,   135,   112,    -1,   139,    85,   147,    -1,   139,    85,
     754     111,   134,   146,   135,   112,    -1,   143,    -1,   136,    -1,
     755     141,    -1,    86,   148,    -1,    87,   148,    -1,    40,   150,
     756      -1,   149,   150,    -1,   118,   150,    -1,   119,   150,    -1,
     757      37,   148,    -1,    37,   109,   272,   110,    -1,    38,   109,
     758     272,   116,   139,   110,    -1,    76,    -1,    76,   109,   273,
     759     110,    -1,    76,   109,   145,   110,    -1,    66,   148,    -1,
     760      66,   109,   272,   110,    -1,    94,   139,    -1,   120,    -1,
     761     121,    -1,   122,    -1,   123,    -1,   148,    -1,   109,   272,
     762     110,   150,    -1,   109,   272,   110,   165,    -1,   150,    -1,
     763     151,   119,   150,    -1,   151,   124,   150,    -1,   151,   125,
     764     150,    -1,   151,    -1,   152,   121,   151,    -1,   152,   122,
     765     151,    -1,   152,    -1,   153,    88,   152,    -1,   153,    89,
     766     152,    -1,   153,    -1,   154,   126,   153,    -1,   154,   127,
     767     153,    -1,   154,    90,   153,    -1,   154,    91,   153,    -1,
     768     154,    -1,   155,    92,   154,    -1,   155,    93,   154,    -1,
     769     155,    -1,   156,   120,   155,    -1,   156,    -1,   157,   128,
     770     156,    -1,   157,    -1,   158,   129,   157,    -1,   158,    -1,
     771     159,    94,   158,    -1,   159,    -1,   160,    95,   159,    -1,
     772     160,    -1,   160,   130,   168,   117,   161,    -1,   160,   130,
     773     117,   161,    -1,   160,   130,   168,   117,   165,    -1,   161,
     774      -1,   161,    -1,   148,   131,   163,    -1,   148,   167,   163,
     775      -1,   165,   370,    -1,    -1,   163,    -1,   111,   112,    -1,
     776     111,   134,   163,   135,   112,    -1,   111,   134,   116,   166,
     777     135,   112,    -1,   111,   134,   163,   116,   166,   135,   112,
     778      -1,   164,    -1,   166,   116,   164,    -1,    97,    -1,    98,
     779      -1,    99,    -1,   100,    -1,   101,    -1,   102,    -1,   103,
     780      -1,   104,    -1,   105,    -1,   106,    -1,   163,    -1,   168,
     781     116,   163,    -1,    -1,   168,    -1,   171,    -1,   172,    -1,
     782     176,    -1,   177,    -1,   189,    -1,   191,    -1,   192,    -1,
     783     197,    -1,   128,   143,   114,   144,   115,   132,    -1,   139,
     784     117,   309,   170,    -1,   114,   115,    -1,   114,   134,   134,
     785     208,   173,   135,   115,    -1,   174,    -1,   173,   134,   174,
     786      -1,   211,    -1,    40,   211,    -1,   305,    -1,   170,   135,
     787      -1,   170,    -1,   175,   170,    -1,   169,   132,    -1,    41,
     788     109,   168,   110,   170,    -1,    41,   109,   168,   110,   170,
     789      42,   170,    -1,    43,   109,   168,   110,   182,    -1,    43,
     790     109,   168,   110,   114,   134,   204,   183,   115,    -1,    53,
     791     109,   168,   110,   182,    -1,    53,   109,   168,   110,   114,
     792     134,   204,   185,   115,    -1,   162,    -1,   162,    96,   162,
     793      -1,   307,    -1,   178,    -1,   179,   116,   178,    -1,    44,
     794     179,   117,    -1,    45,   117,    -1,   180,    -1,   181,   180,
     795      -1,   181,   170,    -1,    -1,   184,    -1,   181,   175,    -1,
     796     184,   181,   175,    -1,    -1,   186,    -1,   181,   188,    -1,
     797     181,   175,   187,    -1,   186,   181,   188,    -1,   186,   181,
     798     175,   187,    -1,    -1,   188,    -1,    56,    -1,    56,   132,
     799      -1,    47,   109,   168,   110,   170,    -1,    46,   170,    47,
     800     109,   168,   110,   132,    -1,    48,   109,   134,   190,   110,
     801     170,    -1,   169,   135,   132,   169,   132,   169,    -1,   211,
     802     169,   132,   169,    -1,    51,   139,   132,    -1,    51,   119,
     803     168,   132,    -1,    50,   132,    -1,    50,   139,   132,    -1,
     804      49,   132,    -1,    49,   139,   132,    -1,    52,   169,   132,
     805      -1,    61,   164,   132,    -1,    62,   164,   132,    -1,    62,
     806     164,    63,   163,   132,    -1,    57,   172,   193,    -1,    57,
     807     172,   195,    -1,    57,   172,   193,   195,    -1,   194,    -1,
     808      58,   109,    96,   110,   172,    -1,   194,    58,   109,    96,
     809     110,   172,    -1,    59,   109,    96,   110,   172,    -1,   194,
     810      59,   109,    96,   110,   172,    -1,    58,   109,   134,   134,
     811     196,   135,   110,   172,   135,    -1,   194,    58,   109,   134,
     812     134,   196,   135,   110,   172,   135,    -1,    59,   109,   134,
     813     134,   196,   135,   110,   172,   135,    -1,   194,    59,   109,
     814     134,   134,   196,   135,   110,   172,   135,    -1,    60,   172,
     815      -1,   224,    -1,   224,   306,    -1,   224,   354,    -1,   363,
     816     139,    -1,   363,    -1,    64,   198,   109,   141,   110,   132,
     817      -1,    64,   198,   109,   141,   117,   199,   110,   132,    -1,
     818      64,   198,   109,   141,   117,   199,   117,   199,   110,   132,
     819      -1,    64,   198,   109,   141,   117,   199,   117,   199,   117,
     820     202,   110,   132,    -1,    64,   198,    51,   109,   141,   117,
     821     117,   199,   117,   202,   117,   203,   110,   132,    -1,    -1,
     822      11,    -1,    -1,   200,    -1,   201,    -1,   200,   116,   201,
     823      -1,   141,   109,   162,   110,    -1,   111,   162,   112,   141,
     824     109,   162,   110,    -1,    -1,   141,    -1,   202,   116,   141,
     825      -1,   139,    -1,   203,   116,   139,    -1,   135,    -1,   205,
     826      -1,   211,    -1,   205,   134,   211,    -1,   135,    -1,   207,
     827      -1,   221,    -1,   207,   134,   221,    -1,    -1,   209,    -1,
     828      29,   210,   132,    -1,   209,    29,   210,   132,    -1,   271,
     829      -1,   210,   116,   271,    -1,   212,    -1,   221,    -1,   213,
     830     135,   132,    -1,   218,   135,   132,    -1,   215,   135,   132,
     831      -1,   290,   135,   132,    -1,   293,   135,   132,    -1,   214,
     832     274,    -1,   230,   214,   274,    -1,   213,   135,   116,   134,
     833     269,   274,    -1,   364,   269,   308,    -1,   367,   269,   308,
     834      -1,   226,   367,   269,   308,    -1,   216,    -1,   226,   216,
     835      -1,   230,   216,    -1,   230,   226,   216,    -1,   215,   135,
     836     116,   134,   269,    -1,   111,   112,   269,   109,   134,   257,
     837     135,   110,    -1,   367,   269,   109,   134,   257,   135,   110,
     838      -1,   217,   269,   109,   134,   257,   135,   110,    -1,   111,
     839     134,   259,   135,   112,    -1,   111,   134,   259,   135,   116,
     840     134,   260,   135,   112,    -1,     3,   214,    -1,     3,   216,
     841      -1,   218,   135,   116,   134,   139,    -1,     3,   224,   306,
     842      -1,   219,   135,   116,   134,   306,    -1,   226,     3,   224,
     843     306,    -1,   224,     3,   306,    -1,   224,     3,   226,   306,
     844      -1,     3,   139,   131,   163,    -1,   220,   135,   116,   134,
     845     139,   131,   163,    -1,   222,   135,   132,    -1,   219,   135,
     846     132,    -1,   220,   135,   132,    -1,   239,   135,   132,    -1,
     847     223,   306,   308,   274,    -1,   222,   116,   309,   306,   308,
     848     274,    -1,   235,    -1,   239,    -1,   241,    -1,   280,    -1,
     849     236,    -1,   240,    -1,   242,    -1,   281,    -1,    -1,   226,
     850      -1,   227,    -1,   226,   227,    -1,   228,    -1,   311,    -1,
     851      10,    -1,    12,    -1,    11,    -1,    14,    -1,    67,    -1,
     852      -1,    13,   109,   229,   283,   110,    -1,   231,    -1,   226,
     853     231,    -1,   230,   226,   231,    -1,   232,    -1,   231,   232,
     854      -1,   233,    -1,     5,    -1,     7,    -1,     4,    -1,     6,
     855      -1,     8,    -1,     9,    -1,    69,    -1,    71,    -1,    16,
    853856      -1,    21,    -1,    20,    -1,    18,    -1,    19,    -1,    17,
    854       -1,    22,    -1,    23,    -1,    15,    -1,    24,    -1,    25,
    855       -1,    26,    -1,   235,    -1,   229,   235,    -1,   234,   231,
    856       -1,   234,   231,   225,    -1,   234,   231,   235,    -1,   236,
    857       -1,   224,   237,   224,    -1,   233,    -1,   225,   233,    -1,
    858      236,   226,    -1,   236,   233,    -1,    27,   108,   272,   109,
    859       -1,    27,   108,   167,   109,    -1,    77,   108,   272,   109,
    860       -1,    77,   108,   167,   109,    -1,   239,    -1,   229,   239,
    861       -1,   238,   231,    -1,   238,   231,   225,    -1,   242,    -1,
    862      225,   242,    -1,   239,   226,    -1,   241,    -1,   229,   241,
    863       -1,   240,   231,    -1,   240,   231,   225,    -1,    73,    -1,
    864      225,    73,    -1,   241,   226,    -1,   243,    -1,   253,    -1,
    865      244,   113,   245,   114,    -1,   244,   270,    -1,   244,   270,
    866      113,   245,   114,    -1,   244,   108,   288,   109,   113,   245,
    867      114,    -1,   244,   281,    -1,    30,   308,    -1,    31,   308,
    868       -1,   246,    -1,   245,   246,    -1,   247,   131,    -1,    39,
    869      247,   131,    -1,   248,   131,    -1,    39,   248,   131,    -1,
    870      362,    -1,   362,   270,    -1,   247,   115,   270,    -1,   247,
    871      115,    -1,   223,   249,    -1,   248,   115,   308,   249,    -1,
    872       -1,   251,    -1,   314,   250,    -1,   327,   250,    -1,   353,
    873       -1,    -1,   251,    -1,   116,   161,    -1,    29,   308,    -1,
    874      252,   113,   254,   368,   114,    -1,   252,   270,   113,   254,
    875      368,   114,    -1,   252,   270,    -1,   270,   255,    -1,   254,
    876      115,   270,   255,    -1,    -1,   130,   161,    -1,    -1,   257,
    877       -1,   259,    -1,   258,    -1,   258,   134,   115,   133,   259,
    878       -1,   259,   134,   115,   133,    95,    -1,   258,   134,   115,
    879      133,    95,    -1,   263,    -1,   259,   134,   115,   133,   263,
    880       -1,   258,   134,   115,   133,   263,    -1,   258,   134,   115,
    881      133,   259,   134,   115,   133,   263,    -1,   264,    -1,   259,
    882      134,   115,   133,   264,    -1,    -1,   261,    -1,   262,    -1,
    883      262,   134,   115,   133,    95,    -1,   266,    -1,   265,    -1,
    884      262,   134,   115,   133,   266,    -1,   262,   134,   115,   133,
    885      265,    -1,   265,    -1,   358,   268,   369,    -1,   366,   268,
    886      369,    -1,   225,   366,   268,   369,    -1,   215,    -1,   266,
    887       -1,   358,    -1,   366,    -1,   225,   366,    -1,   367,    -1,
    888      222,   332,   369,    -1,   222,   336,   369,    -1,   222,    -1,
    889      222,   347,    -1,   138,    -1,   267,   115,   138,    -1,   136,
    890       -1,    73,    -1,    74,    -1,   137,    -1,    73,    -1,    74,
    891       -1,   138,    -1,    73,    -1,    74,    -1,   362,    -1,   223,
    892       -1,   223,   353,    -1,   362,    -1,   367,    -1,   223,    -1,
    893      223,   341,    -1,    -1,   130,   274,    -1,   106,   274,    -1,
    894      162,    -1,   113,   275,   368,   114,    -1,    -1,   274,    -1,
    895      276,   274,    -1,   275,   115,   274,    -1,   275,   115,   276,
    896      274,    -1,   277,   116,    -1,   270,   116,    -1,   278,    -1,
    897      277,   278,    -1,    79,    -1,   112,   270,    -1,   110,   133,
    898      162,   134,   111,    -1,   110,   133,   306,   134,   111,    -1,
    899      110,   133,   161,    95,   161,   134,   111,    -1,   112,   110,
    900      133,   145,   134,   111,    -1,   280,    -1,   229,   280,    -1,
    901      279,   231,    -1,   279,   231,   225,    -1,   281,    -1,   225,
    902      281,    -1,   280,   226,    -1,    74,   108,   288,   109,    -1,
    903      283,   369,    -1,   282,   115,   283,   369,    -1,    -1,   285,
    904      270,   284,   286,    -1,   223,   332,    -1,    32,    -1,    34,
    905       -1,    33,    -1,    -1,   286,   287,    -1,   128,   270,   108,
    906      288,   109,    -1,   128,   113,   133,   294,   114,    -1,   128,
    907      108,   133,   282,   134,   109,   113,   133,   294,   114,   108,
    908      288,   109,    -1,   272,    -1,   162,    -1,   288,   115,   272,
    909       -1,   288,   115,   162,    -1,    32,   290,    -1,   230,    32,
    910      290,    -1,   289,   115,   290,    -1,   291,   286,    -1,   291,
    911      286,   130,   272,    -1,   270,    -1,   269,   108,   133,   282,
    912      134,   109,    -1,    35,   270,   108,   133,   282,   134,   109,
    913      113,   114,    -1,    -1,    35,   270,   108,   133,   282,   134,
    914      109,   113,   293,   294,   114,    -1,   295,    -1,   294,   133,
    915      295,    -1,   296,   134,   131,    -1,   297,   134,   131,    -1,
    916      213,    -1,   215,    -1,   296,   134,   115,   133,   268,    -1,
    917      223,   305,    -1,   297,   134,   115,   133,   305,    -1,    -1,
    918      299,    -1,   301,    -1,   299,   133,   301,    -1,    -1,   299,
    919       -1,   210,    -1,   303,    -1,   196,    -1,    -1,     5,    81,
    920      302,   113,   300,   114,    -1,    39,   301,    -1,   304,    -1,
    921      319,   171,    -1,   323,   133,   205,   171,    -1,   214,   171,
    922       -1,   222,   319,   171,    -1,   225,   319,   171,    -1,   229,
    923      319,   171,    -1,   229,   225,   319,   171,    -1,   222,   323,
    924      133,   205,   171,    -1,   225,   323,   133,   205,   171,    -1,
    925      229,   323,   133,   205,   171,    -1,   229,   225,   323,   133,
    926      205,   171,    -1,   314,    -1,   319,    -1,   327,    -1,   161,
    927      122,   161,    -1,    -1,    63,   108,   140,   109,   308,    -1,
    928       -1,   309,    -1,   310,    -1,   309,   310,    -1,    38,   108,
    929      108,   311,   109,   109,    -1,   312,    -1,   311,   115,   312,
    930       -1,    -1,   313,    -1,   313,   108,   168,   109,    -1,   268,
    931       -1,   232,    -1,   233,    -1,   226,    -1,   315,   308,    -1,
    932      316,    -1,   317,   308,    -1,   318,   308,    -1,   136,    -1,
    933      108,   315,   109,    -1,   118,   314,    -1,   118,   225,   314,
    934       -1,   108,   316,   109,    -1,   315,   345,    -1,   108,   316,
    935      109,   345,    -1,   108,   317,   109,   346,    -1,   108,   317,
    936      109,    -1,   108,   316,   109,   108,   133,   260,   134,   109,
    937       -1,   108,   318,   109,    -1,   320,   308,    -1,   321,    -1,
    938      322,   308,    -1,   315,   108,   133,   260,   134,   109,    -1,
    939      108,   321,   109,   108,   133,   260,   134,   109,    -1,   108,
    940      320,   109,    -1,   118,   319,    -1,   118,   225,   319,    -1,
    941      108,   321,   109,    -1,   108,   321,   109,   345,    -1,   108,
    942      322,   109,   346,    -1,   108,   322,   109,    -1,   324,    -1,
    943      325,    -1,   326,    -1,   315,   108,   267,   109,    -1,   108,
    944      325,   109,   108,   267,   109,    -1,   108,   324,   109,    -1,
    945      118,   323,    -1,   118,   225,   323,    -1,   108,   325,   109,
    946       -1,   108,   325,   109,   345,    -1,   108,   326,   109,   346,
    947       -1,   108,   326,   109,    -1,   328,   308,    -1,   329,    -1,
    948      330,   308,    -1,   331,   308,    -1,   337,    -1,   108,   328,
    949      109,    -1,   118,   327,    -1,   118,   225,   327,    -1,   108,
    950      329,   109,    -1,   328,   345,    -1,   108,   329,   109,   345,
    951       -1,   108,   330,   109,   346,    -1,   108,   330,   109,    -1,
    952      328,   108,   133,   260,   134,   109,    -1,   108,   329,   109,
    953      108,   133,   260,   134,   109,    -1,   108,   331,   109,    -1,
    954      315,   308,    -1,   333,    -1,   334,   308,    -1,   335,   308,
    955       -1,   118,   332,    -1,   118,   225,   332,    -1,   108,   333,
    956      109,    -1,   315,   351,    -1,   108,   333,   109,   345,    -1,
    957      108,   334,   109,   346,    -1,   108,   334,   109,    -1,   315,
    958      108,   133,   260,   134,   109,    -1,   108,   333,   109,   108,
    959      133,   260,   134,   109,    -1,   108,   335,   109,    -1,   337,
    960      308,    -1,   338,    -1,   339,   308,    -1,   340,   308,    -1,
    961       73,    -1,    74,    -1,   118,   336,    -1,   118,   225,   336,
    962       -1,   108,   338,   109,    -1,   337,   351,    -1,   108,   338,
    963      109,   351,    -1,   337,   108,   133,   260,   134,   109,    -1,
    964      108,   338,   109,   108,   133,   260,   134,   109,    -1,   342,
    965       -1,   343,   308,    -1,   344,   308,    -1,   118,    -1,   118,
    966      225,    -1,   118,   341,    -1,   118,   225,   341,    -1,   108,
    967      342,   109,    -1,   345,    -1,   108,   342,   109,   345,    -1,
    968      108,   343,   109,   346,    -1,   108,   343,   109,    -1,   108,
    969      133,   260,   134,   109,    -1,   108,   342,   109,   108,   133,
    970      260,   134,   109,    -1,   108,   344,   109,    -1,   110,   111,
    971       -1,   110,   111,   346,    -1,   346,    -1,   110,   133,   162,
    972      134,   111,    -1,   110,   133,   118,   134,   111,    -1,   346,
    973      110,   133,   162,   134,   111,    -1,   346,   110,   133,   118,
    974      134,   111,    -1,   348,    -1,   349,   308,    -1,   350,   308,
    975       -1,   118,    -1,   118,   225,    -1,   118,   347,    -1,   118,
    976      225,   347,    -1,   108,   348,   109,    -1,   351,    -1,   108,
    977      348,   109,   351,    -1,   108,   349,   109,   346,    -1,   108,
    978      349,   109,    -1,   108,   133,   260,   134,   109,    -1,   108,
    979      348,   109,   108,   133,   260,   134,   109,    -1,   108,   350,
    980      109,    -1,   352,    -1,   352,   346,    -1,   346,    -1,   110,
    981      111,    -1,   110,   133,   225,   118,   134,   111,    -1,   110,
    982      133,   225,   134,   111,    -1,   110,   133,   225,   162,   134,
    983      111,    -1,   110,   133,     7,   224,   162,   134,   111,    -1,
    984      110,   133,   225,     7,   162,   134,   111,    -1,   354,    -1,
    985      355,   308,    -1,   356,   308,    -1,   118,    -1,   118,   225,
    986       -1,   118,   353,    -1,   118,   225,   353,    -1,   108,   354,
    987      109,    -1,   345,    -1,   108,   354,   109,   345,    -1,   108,
    988      355,   109,   346,    -1,   108,   355,   109,    -1,   108,   354,
    989      109,   108,   133,   260,   134,   109,    -1,   108,   356,   109,
    990       -1,   358,    -1,   366,    -1,   225,   366,    -1,   359,    -1,
    991      360,    -1,   118,   223,    -1,   225,   118,   223,    -1,   118,
    992      367,    -1,   225,   118,   367,    -1,   118,   357,    -1,   225,
    993      118,   357,    -1,   110,   111,   223,    -1,   361,   223,    -1,
    994      110,   111,   346,   223,    -1,   361,   346,   223,    -1,   346,
    995      223,    -1,   110,   111,   359,    -1,   361,   359,    -1,   110,
    996      111,   346,   359,    -1,   361,   346,   359,    -1,   346,   359,
    997       -1,   110,   133,   225,   118,   134,   111,    -1,   110,   133,
    998      225,   162,   134,   111,    -1,   110,   133,   229,   162,   134,
    999      111,    -1,   110,   133,   229,   225,   162,   134,   111,    -1,
    1000      366,    -1,   225,   366,    -1,   363,    -1,   364,    -1,   365,
    1001       -1,   118,   223,    -1,   225,   118,   223,    -1,   118,   367,
    1002       -1,   225,   118,   367,    -1,   118,   362,    -1,   225,   118,
    1003      362,    -1,   110,   111,   223,    -1,   110,   111,   346,   223,
    1004       -1,   346,   223,    -1,   110,   111,   364,    -1,   110,   111,
    1005      346,   364,    -1,   346,   364,    -1,   110,   133,   259,   134,
    1006      111,    -1,   110,   111,   108,   256,   109,    -1,   366,   108,
    1007      133,   256,   134,   109,    -1,   216,   108,   133,   256,   134,
    1008      109,    -1,    -1,   115,    -1,    -1,   130,   162,    -1
     857      -1,    22,    -1,    23,    -1,    15,    -1,    25,    -1,    26,
     858      -1,    27,    -1,    24,    -1,   236,    -1,   230,   236,    -1,
     859     235,   232,    -1,   235,   232,   226,    -1,   235,   232,   236,
     860      -1,   237,    -1,   225,   238,   225,    -1,   234,    -1,   226,
     861     234,    -1,   237,   227,    -1,   237,   234,    -1,    28,   109,
     862     273,   110,    -1,    28,   109,   168,   110,    -1,    78,   109,
     863     273,   110,    -1,    78,   109,   168,   110,    -1,   240,    -1,
     864     230,   240,    -1,   239,   232,    -1,   239,   232,   226,    -1,
     865     243,    -1,   226,   243,    -1,   240,   227,    -1,   242,    -1,
     866     230,   242,    -1,   241,   232,    -1,   241,   232,   226,    -1,
     867      74,    -1,   226,    74,    -1,   242,   227,    -1,   244,    -1,
     868     254,    -1,   245,   114,   246,   115,    -1,   245,   271,    -1,
     869     245,   271,   114,   246,   115,    -1,   245,   109,   289,   110,
     870     114,   246,   115,    -1,   245,   282,    -1,    31,   309,    -1,
     871      32,   309,    -1,   247,    -1,   246,   247,    -1,   248,   132,
     872      -1,    40,   248,   132,    -1,   249,   132,    -1,    40,   249,
     873     132,    -1,   363,    -1,   363,   271,    -1,   248,   116,   271,
     874      -1,   248,   116,    -1,   224,   250,    -1,   249,   116,   309,
     875     250,    -1,    -1,   252,    -1,   315,   251,    -1,   328,   251,
     876      -1,   354,    -1,    -1,   252,    -1,   117,   162,    -1,    30,
     877     309,    -1,   253,   114,   255,   369,   115,    -1,   253,   271,
     878     114,   255,   369,   115,    -1,   253,   271,    -1,   271,   256,
     879      -1,   255,   116,   271,   256,    -1,    -1,   131,   162,    -1,
     880      -1,   258,    -1,   260,    -1,   259,    -1,   259,   135,   116,
     881     134,   260,    -1,   260,   135,   116,   134,    96,    -1,   259,
     882     135,   116,   134,    96,    -1,   264,    -1,   260,   135,   116,
     883     134,   264,    -1,   259,   135,   116,   134,   264,    -1,   259,
     884     135,   116,   134,   260,   135,   116,   134,   264,    -1,   265,
     885      -1,   260,   135,   116,   134,   265,    -1,    -1,   262,    -1,
     886     263,    -1,   263,   135,   116,   134,    96,    -1,   267,    -1,
     887     266,    -1,   263,   135,   116,   134,   267,    -1,   263,   135,
     888     116,   134,   266,    -1,   266,    -1,   359,   269,   370,    -1,
     889     367,   269,   370,    -1,   226,   367,   269,   370,    -1,   216,
     890      -1,   267,    -1,   359,    -1,   367,    -1,   226,   367,    -1,
     891     368,    -1,   223,   333,   370,    -1,   223,   337,   370,    -1,
     892     223,    -1,   223,   348,    -1,   139,    -1,   268,   116,   139,
     893      -1,   137,    -1,    74,    -1,    75,    -1,   138,    -1,    74,
     894      -1,    75,    -1,   139,    -1,    74,    -1,    75,    -1,   363,
     895      -1,   224,    -1,   224,   354,    -1,   363,    -1,   368,    -1,
     896     224,    -1,   224,   342,    -1,    -1,   131,   275,    -1,   107,
     897     275,    -1,   163,    -1,   114,   276,   369,   115,    -1,    -1,
     898     275,    -1,   277,   275,    -1,   276,   116,   275,    -1,   276,
     899     116,   277,   275,    -1,   278,   117,    -1,   271,   117,    -1,
     900     279,    -1,   278,   279,    -1,    80,    -1,   113,   271,    -1,
     901     111,   134,   163,   135,   112,    -1,   111,   134,   307,   135,
     902     112,    -1,   111,   134,   162,    96,   162,   135,   112,    -1,
     903     113,   111,   134,   146,   135,   112,    -1,   281,    -1,   230,
     904     281,    -1,   280,   232,    -1,   280,   232,   226,    -1,   282,
     905      -1,   226,   282,    -1,   281,   227,    -1,    75,   109,   289,
     906     110,    -1,   284,   370,    -1,   283,   116,   284,   370,    -1,
     907      -1,   286,   271,   285,   287,    -1,   224,   333,    -1,    33,
     908      -1,    35,    -1,    34,    -1,    -1,   287,   288,    -1,   129,
     909     271,   109,   289,   110,    -1,   129,   114,   134,   295,   115,
     910      -1,   129,   109,   134,   283,   135,   110,   114,   134,   295,
     911     115,   109,   289,   110,    -1,   273,    -1,   163,    -1,   289,
     912     116,   273,    -1,   289,   116,   163,    -1,    33,   291,    -1,
     913     231,    33,   291,    -1,   290,   116,   291,    -1,   292,   287,
     914      -1,   292,   287,   131,   273,    -1,   271,    -1,   270,   109,
     915     134,   283,   135,   110,    -1,    36,   271,   109,   134,   283,
     916     135,   110,   114,   115,    -1,    -1,    36,   271,   109,   134,
     917     283,   135,   110,   114,   294,   295,   115,    -1,   296,    -1,
     918     295,   134,   296,    -1,   297,   135,   132,    -1,   298,   135,
     919     132,    -1,   214,    -1,   216,    -1,   297,   135,   116,   134,
     920     269,    -1,   224,   306,    -1,   298,   135,   116,   134,   306,
     921      -1,    -1,   300,    -1,   302,    -1,   300,   134,   302,    -1,
     922      -1,   300,    -1,   211,    -1,   304,    -1,   197,    -1,    -1,
     923       5,    82,   303,   114,   301,   115,    -1,    40,   302,    -1,
     924     305,    -1,   320,   172,    -1,   324,   134,   206,   172,    -1,
     925     215,   172,    -1,   223,   320,   172,    -1,   226,   320,   172,
     926      -1,   230,   320,   172,    -1,   230,   226,   320,   172,    -1,
     927     223,   324,   134,   206,   172,    -1,   226,   324,   134,   206,
     928     172,    -1,   230,   324,   134,   206,   172,    -1,   230,   226,
     929     324,   134,   206,   172,    -1,   315,    -1,   320,    -1,   328,
     930      -1,   162,   123,   162,    -1,    -1,    64,   109,   141,   110,
     931     309,    -1,    -1,   310,    -1,   311,    -1,   310,   311,    -1,
     932      39,   109,   109,   312,   110,   110,    -1,   313,    -1,   312,
     933     116,   313,    -1,    -1,   314,    -1,   314,   109,   169,   110,
     934      -1,   269,    -1,   233,    -1,   234,    -1,   227,    -1,   316,
     935     309,    -1,   317,    -1,   318,   309,    -1,   319,   309,    -1,
     936     137,    -1,   109,   316,   110,    -1,   119,   315,    -1,   119,
     937     226,   315,    -1,   109,   317,   110,    -1,   316,   346,    -1,
     938     109,   317,   110,   346,    -1,   109,   318,   110,   347,    -1,
     939     109,   318,   110,    -1,   109,   317,   110,   109,   134,   261,
     940     135,   110,    -1,   109,   319,   110,    -1,   321,   309,    -1,
     941     322,    -1,   323,   309,    -1,   316,   109,   134,   261,   135,
     942     110,    -1,   109,   322,   110,   109,   134,   261,   135,   110,
     943      -1,   109,   321,   110,    -1,   119,   320,    -1,   119,   226,
     944     320,    -1,   109,   322,   110,    -1,   109,   322,   110,   346,
     945      -1,   109,   323,   110,   347,    -1,   109,   323,   110,    -1,
     946     325,    -1,   326,    -1,   327,    -1,   316,   109,   268,   110,
     947      -1,   109,   326,   110,   109,   268,   110,    -1,   109,   325,
     948     110,    -1,   119,   324,    -1,   119,   226,   324,    -1,   109,
     949     326,   110,    -1,   109,   326,   110,   346,    -1,   109,   327,
     950     110,   347,    -1,   109,   327,   110,    -1,   329,   309,    -1,
     951     330,    -1,   331,   309,    -1,   332,   309,    -1,   338,    -1,
     952     109,   329,   110,    -1,   119,   328,    -1,   119,   226,   328,
     953      -1,   109,   330,   110,    -1,   329,   346,    -1,   109,   330,
     954     110,   346,    -1,   109,   331,   110,   347,    -1,   109,   331,
     955     110,    -1,   329,   109,   134,   261,   135,   110,    -1,   109,
     956     330,   110,   109,   134,   261,   135,   110,    -1,   109,   332,
     957     110,    -1,   316,   309,    -1,   334,    -1,   335,   309,    -1,
     958     336,   309,    -1,   119,   333,    -1,   119,   226,   333,    -1,
     959     109,   334,   110,    -1,   316,   352,    -1,   109,   334,   110,
     960     346,    -1,   109,   335,   110,   347,    -1,   109,   335,   110,
     961      -1,   316,   109,   134,   261,   135,   110,    -1,   109,   334,
     962     110,   109,   134,   261,   135,   110,    -1,   109,   336,   110,
     963      -1,   338,   309,    -1,   339,    -1,   340,   309,    -1,   341,
     964     309,    -1,    74,    -1,    75,    -1,   119,   337,    -1,   119,
     965     226,   337,    -1,   109,   339,   110,    -1,   338,   352,    -1,
     966     109,   339,   110,   352,    -1,   338,   109,   134,   261,   135,
     967     110,    -1,   109,   339,   110,   109,   134,   261,   135,   110,
     968      -1,   343,    -1,   344,   309,    -1,   345,   309,    -1,   119,
     969      -1,   119,   226,    -1,   119,   342,    -1,   119,   226,   342,
     970      -1,   109,   343,   110,    -1,   346,    -1,   109,   343,   110,
     971     346,    -1,   109,   344,   110,   347,    -1,   109,   344,   110,
     972      -1,   109,   134,   261,   135,   110,    -1,   109,   343,   110,
     973     109,   134,   261,   135,   110,    -1,   109,   345,   110,    -1,
     974     111,   112,    -1,   111,   112,   347,    -1,   347,    -1,   111,
     975     134,   163,   135,   112,    -1,   111,   134,   119,   135,   112,
     976      -1,   347,   111,   134,   163,   135,   112,    -1,   347,   111,
     977     134,   119,   135,   112,    -1,   349,    -1,   350,   309,    -1,
     978     351,   309,    -1,   119,    -1,   119,   226,    -1,   119,   348,
     979      -1,   119,   226,   348,    -1,   109,   349,   110,    -1,   352,
     980      -1,   109,   349,   110,   352,    -1,   109,   350,   110,   347,
     981      -1,   109,   350,   110,    -1,   109,   134,   261,   135,   110,
     982      -1,   109,   349,   110,   109,   134,   261,   135,   110,    -1,
     983     109,   351,   110,    -1,   353,    -1,   353,   347,    -1,   347,
     984      -1,   111,   112,    -1,   111,   134,   226,   119,   135,   112,
     985      -1,   111,   134,   226,   135,   112,    -1,   111,   134,   226,
     986     163,   135,   112,    -1,   111,   134,     7,   225,   163,   135,
     987     112,    -1,   111,   134,   226,     7,   163,   135,   112,    -1,
     988     355,    -1,   356,   309,    -1,   357,   309,    -1,   119,    -1,
     989     119,   226,    -1,   119,   354,    -1,   119,   226,   354,    -1,
     990     109,   355,   110,    -1,   346,    -1,   109,   355,   110,   346,
     991      -1,   109,   356,   110,   347,    -1,   109,   356,   110,    -1,
     992     109,   355,   110,   109,   134,   261,   135,   110,    -1,   109,
     993     357,   110,    -1,   359,    -1,   367,    -1,   226,   367,    -1,
     994     360,    -1,   361,    -1,   119,   224,    -1,   226,   119,   224,
     995      -1,   119,   368,    -1,   226,   119,   368,    -1,   119,   358,
     996      -1,   226,   119,   358,    -1,   111,   112,   224,    -1,   362,
     997     224,    -1,   111,   112,   347,   224,    -1,   362,   347,   224,
     998      -1,   347,   224,    -1,   111,   112,   360,    -1,   362,   360,
     999      -1,   111,   112,   347,   360,    -1,   362,   347,   360,    -1,
     1000     347,   360,    -1,   111,   134,   226,   119,   135,   112,    -1,
     1001     111,   134,   226,   163,   135,   112,    -1,   111,   134,   230,
     1002     163,   135,   112,    -1,   111,   134,   230,   226,   163,   135,
     1003     112,    -1,   367,    -1,   226,   367,    -1,   364,    -1,   365,
     1004      -1,   366,    -1,   119,   224,    -1,   226,   119,   224,    -1,
     1005     119,   368,    -1,   226,   119,   368,    -1,   119,   363,    -1,
     1006     226,   119,   363,    -1,   111,   112,   224,    -1,   111,   112,
     1007     347,   224,    -1,   347,   224,    -1,   111,   112,   365,    -1,
     1008     111,   112,   347,   365,    -1,   347,   365,    -1,   111,   134,
     1009     260,   135,   112,    -1,   111,   112,   109,   257,   110,    -1,
     1010     367,   109,   134,   257,   135,   110,    -1,   217,   109,   134,
     1011     257,   135,   110,    -1,    -1,   116,    -1,    -1,   131,   163,
     1012      -1
    10091013};
    10101014
     
    10121016static const yytype_uint16 yyrline[] =
    10131017{
    1014        0,   290,   290,   296,   305,   306,   307,   311,   312,   313,
    1015      317,   318,   322,   323,   327,   328,   332,   333,   339,   341,
    1016      343,   345,   350,   351,   357,   361,   363,   364,   366,   367,
    1017      369,   371,   373,   381,   382,   388,   389,   390,   395,   397,
    1018      402,   403,   407,   411,   413,   415,   417,   422,   425,   427,
    1019      429,   431,   433,   435,   437,   439,   445,   447,   449,   451,
    1020      453,   455,   457,   459,   461,   466,   467,   468,   469,   473,
    1021      474,   476,   481,   482,   484,   486,   491,   492,   494,   499,
    1022      500,   502,   507,   508,   510,   512,   514,   519,   520,   522,
    1023      527,   528,   533,   534,   539,   540,   545,   546,   551,   552,
    1024      557,   558,   560,   562,   567,   572,   573,   575,   577,   583,
    1025      584,   590,   592,   594,   596,   601,   602,   607,   608,   609,
    1026      610,   611,   612,   613,   614,   615,   616,   620,   621,   627,
    1027      628,   634,   635,   636,   637,   638,   639,   640,   641,   642,
    1028      651,   658,   660,   670,   671,   676,   678,   680,   682,   686,
    1029      687,   692,   697,   700,   702,   704,   709,   711,   719,   720,
    1030      722,   726,   727,   732,   733,   738,   739,   743,   748,   749,
    1031      753,   755,   761,   762,   766,   768,   770,   772,   778,   779,
    1032      783,   784,   788,   790,   792,   797,   799,   804,   806,   810,
    1033      813,   817,   820,   824,   826,   830,   832,   839,   841,   843,
    1034      852,   854,   856,   858,   860,   865,   867,   869,   871,   876,
    1035      889,   890,   895,   897,   902,   906,   908,   910,   912,   914,
    1036      920,   921,   927,   928,   932,   933,   938,   940,   946,   947,
    1037      949,   954,   956,   963,   965,   969,   970,   975,   977,   981,
    1038      982,   986,   988,   992,   993,   997,   998,  1002,  1003,  1018,
    1039     1019,  1020,  1021,  1022,  1026,  1031,  1038,  1048,  1053,  1058,
    1040     1066,  1071,  1076,  1081,  1086,  1094,  1116,  1121,  1128,  1130,
    1041     1137,  1142,  1147,  1158,  1163,  1168,  1173,  1178,  1187,  1192,
    1042     1200,  1201,  1202,  1203,  1209,  1214,  1222,  1223,  1224,  1225,
    1043     1229,  1230,  1231,  1232,  1237,  1238,  1247,  1248,  1253,  1254,
    1044     1259,  1261,  1263,  1265,  1267,  1270,  1269,  1281,  1282,  1284,
    1045     1294,  1295,  1300,  1304,  1306,  1308,  1310,  1312,  1314,  1316,
    1046     1318,  1323,  1325,  1327,  1329,  1331,  1333,  1335,  1337,  1339,
    1047     1341,  1343,  1345,  1351,  1352,  1354,  1356,  1358,  1363,  1364,
    1048     1370,  1371,  1373,  1375,  1380,  1382,  1384,  1386,  1391,  1392,
    1049     1394,  1396,  1401,  1402,  1404,  1409,  1410,  1412,  1414,  1419,
    1050     1421,  1423,  1428,  1429,  1433,  1435,  1437,  1439,  1441,  1446,
    1051     1448,  1453,  1455,  1460,  1461,  1463,  1464,  1469,  1470,  1472,
    1052     1474,  1479,  1481,  1487,  1488,  1490,  1493,  1496,  1501,  1502,
    1053     1507,  1512,  1516,  1518,  1520,  1525,  1527,  1533,  1534,  1542,
    1054     1543,  1547,  1548,  1549,  1551,  1553,  1560,  1561,  1563,  1565,
    1055     1570,  1571,  1577,  1578,  1582,  1583,  1588,  1589,  1590,  1592,
    1056     1600,  1601,  1603,  1606,  1608,  1612,  1613,  1614,  1616,  1618,
    1057     1622,  1627,  1635,  1636,  1645,  1647,  1652,  1653,  1654,  1658,
    1058     1659,  1660,  1664,  1665,  1666,  1670,  1671,  1672,  1677,  1678,
    1059     1679,  1680,  1686,  1687,  1689,  1694,  1695,  1700,  1701,  1702,
    1060     1703,  1704,  1719,  1720,  1725,  1726,  1734,  1736,  1738,  1741,
    1061     1743,  1745,  1768,  1769,  1771,  1773,  1778,  1779,  1781,  1786,
    1062     1791,  1792,  1798,  1797,  1801,  1805,  1807,  1809,  1815,  1816,
    1063     1821,  1826,  1828,  1833,  1835,  1836,  1838,  1843,  1845,  1847,
    1064     1852,  1854,  1859,  1864,  1872,  1878,  1877,  1891,  1892,  1897,
    1065     1898,  1902,  1907,  1912,  1920,  1925,  1936,  1937,  1948,  1949,
    1066     1955,  1956,  1960,  1961,  1962,  1965,  1964,  1975,  1980,  1985,
    1067     1991,  2000,  2006,  2012,  2018,  2024,  2032,  2038,  2046,  2052,
    1068     2061,  2062,  2063,  2067,  2071,  2073,  2078,  2079,  2083,  2084,
    1069     2089,  2095,  2096,  2099,  2101,  2102,  2106,  2107,  2108,  2109,
    1070     2143,  2145,  2146,  2148,  2153,  2158,  2163,  2165,  2167,  2172,
    1071     2174,  2176,  2178,  2183,  2185,  2195,  2197,  2198,  2203,  2205,
    1072     2207,  2212,  2214,  2216,  2221,  2223,  2225,  2234,  2235,  2236,
    1073     2240,  2242,  2244,  2249,  2251,  2253,  2258,  2260,  2262,  2277,
    1074     2279,  2280,  2282,  2287,  2288,  2293,  2295,  2297,  2302,  2304,
    1075     2306,  2308,  2313,  2315,  2317,  2327,  2329,  2330,  2332,  2337,
    1076     2339,  2341,  2346,  2348,  2350,  2352,  2357,  2359,  2361,  2392,
    1077     2394,  2395,  2397,  2402,  2407,  2415,  2417,  2419,  2424,  2426,
    1078     2431,  2433,  2447,  2448,  2450,  2455,  2457,  2459,  2461,  2463,
    1079     2468,  2469,  2471,  2473,  2478,  2480,  2482,  2488,  2490,  2492,
    1080     2496,  2498,  2500,  2502,  2516,  2517,  2519,  2524,  2526,  2528,
    1081     2530,  2532,  2537,  2538,  2540,  2542,  2547,  2549,  2551,  2557,
    1082     2558,  2560,  2569,  2572,  2574,  2577,  2579,  2581,  2594,  2595,
    1083     2597,  2602,  2604,  2606,  2608,  2610,  2615,  2616,  2618,  2620,
    1084     2625,  2627,  2635,  2636,  2637,  2642,  2643,  2647,  2649,  2651,
    1085     2653,  2655,  2657,  2664,  2666,  2668,  2670,  2672,  2674,  2676,
    1086     2678,  2680,  2682,  2687,  2689,  2691,  2696,  2722,  2723,  2725,
    1087     2729,  2730,  2734,  2736,  2738,  2740,  2742,  2744,  2751,  2753,
    1088     2755,  2757,  2759,  2761,  2766,  2771,  2773,  2775,  2793,  2795,
    1089     2800,  2801
     1018       0,   292,   292,   298,   307,   308,   309,   313,   314,   315,
     1019     319,   320,   324,   325,   329,   330,   334,   335,   341,   343,
     1020     345,   347,   352,   353,   359,   363,   365,   366,   368,   369,
     1021     371,   373,   375,   383,   384,   390,   391,   392,   397,   399,
     1022     404,   405,   409,   413,   415,   417,   419,   424,   427,   429,
     1023     431,   433,   435,   437,   439,   441,   447,   449,   451,   453,
     1024     455,   457,   459,   461,   463,   468,   469,   470,   471,   475,
     1025     476,   478,   483,   484,   486,   488,   493,   494,   496,   501,
     1026     502,   504,   509,   510,   512,   514,   516,   521,   522,   524,
     1027     529,   530,   535,   536,   541,   542,   547,   548,   553,   554,
     1028     559,   560,   562,   564,   569,   574,   575,   577,   579,   585,
     1029     586,   592,   594,   596,   598,   603,   604,   609,   610,   611,
     1030     612,   613,   614,   615,   616,   617,   618,   622,   623,   629,
     1031     630,   636,   637,   638,   639,   640,   641,   642,   643,   644,
     1032     653,   660,   662,   672,   673,   678,   680,   682,   684,   688,
     1033     689,   694,   699,   702,   704,   706,   711,   713,   721,   722,
     1034     724,   728,   729,   734,   735,   740,   741,   745,   750,   751,
     1035     755,   757,   763,   764,   768,   770,   772,   774,   780,   781,
     1036     785,   786,   790,   792,   794,   799,   801,   806,   808,   812,
     1037     815,   819,   822,   826,   828,   832,   834,   841,   843,   845,
     1038     854,   856,   858,   860,   862,   867,   869,   871,   873,   878,
     1039     891,   892,   897,   899,   904,   908,   910,   912,   914,   916,
     1040     922,   923,   929,   930,   934,   935,   940,   942,   948,   949,
     1041     951,   956,   958,   965,   967,   971,   972,   977,   979,   983,
     1042     984,   988,   990,   994,   995,   999,  1000,  1004,  1005,  1020,
     1043    1021,  1022,  1023,  1024,  1028,  1033,  1040,  1050,  1055,  1060,
     1044    1068,  1073,  1078,  1083,  1088,  1096,  1118,  1123,  1130,  1132,
     1045    1139,  1144,  1149,  1160,  1165,  1170,  1175,  1180,  1189,  1194,
     1046    1202,  1203,  1204,  1205,  1211,  1216,  1224,  1225,  1226,  1227,
     1047    1231,  1232,  1233,  1234,  1239,  1240,  1249,  1250,  1255,  1256,
     1048    1261,  1263,  1265,  1267,  1269,  1272,  1271,  1283,  1284,  1286,
     1049    1296,  1297,  1302,  1306,  1308,  1310,  1312,  1314,  1316,  1318,
     1050    1320,  1325,  1327,  1329,  1331,  1333,  1335,  1337,  1339,  1341,
     1051    1343,  1345,  1347,  1349,  1355,  1356,  1358,  1360,  1362,  1367,
     1052    1368,  1374,  1375,  1377,  1379,  1384,  1386,  1388,  1390,  1395,
     1053    1396,  1398,  1400,  1405,  1406,  1408,  1413,  1414,  1416,  1418,
     1054    1423,  1425,  1427,  1432,  1433,  1437,  1439,  1441,  1443,  1445,
     1055    1450,  1452,  1457,  1459,  1464,  1465,  1467,  1468,  1473,  1474,
     1056    1476,  1478,  1483,  1485,  1491,  1492,  1494,  1497,  1500,  1505,
     1057    1506,  1511,  1516,  1520,  1522,  1524,  1529,  1531,  1537,  1538,
     1058    1546,  1547,  1551,  1552,  1553,  1555,  1557,  1564,  1565,  1567,
     1059    1569,  1574,  1575,  1581,  1582,  1586,  1587,  1592,  1593,  1594,
     1060    1596,  1604,  1605,  1607,  1610,  1612,  1616,  1617,  1618,  1620,
     1061    1622,  1626,  1631,  1639,  1640,  1649,  1651,  1656,  1657,  1658,
     1062    1662,  1663,  1664,  1668,  1669,  1670,  1674,  1675,  1676,  1681,
     1063    1682,  1683,  1684,  1690,  1691,  1693,  1698,  1699,  1704,  1705,
     1064    1706,  1707,  1708,  1723,  1724,  1729,  1730,  1738,  1740,  1742,
     1065    1745,  1747,  1749,  1772,  1773,  1775,  1777,  1782,  1783,  1785,
     1066    1790,  1795,  1796,  1802,  1801,  1805,  1809,  1811,  1813,  1819,
     1067    1820,  1825,  1830,  1832,  1837,  1839,  1840,  1842,  1847,  1849,
     1068    1851,  1856,  1858,  1863,  1868,  1876,  1882,  1881,  1895,  1896,
     1069    1901,  1902,  1906,  1911,  1916,  1924,  1929,  1940,  1941,  1952,
     1070    1953,  1959,  1960,  1964,  1965,  1966,  1969,  1968,  1979,  1984,
     1071    1989,  1995,  2004,  2010,  2016,  2022,  2028,  2036,  2042,  2050,
     1072    2056,  2065,  2066,  2067,  2071,  2075,  2077,  2082,  2083,  2087,
     1073    2088,  2093,  2099,  2100,  2103,  2105,  2106,  2110,  2111,  2112,
     1074    2113,  2147,  2149,  2150,  2152,  2157,  2162,  2167,  2169,  2171,
     1075    2176,  2178,  2180,  2182,  2187,  2189,  2199,  2201,  2202,  2207,
     1076    2209,  2211,  2216,  2218,  2220,  2225,  2227,  2229,  2238,  2239,
     1077    2240,  2244,  2246,  2248,  2253,  2255,  2257,  2262,  2264,  2266,
     1078    2281,  2283,  2284,  2286,  2291,  2292,  2297,  2299,  2301,  2306,
     1079    2308,  2310,  2312,  2317,  2319,  2321,  2331,  2333,  2334,  2336,
     1080    2341,  2343,  2345,  2350,  2352,  2354,  2356,  2361,  2363,  2365,
     1081    2396,  2398,  2399,  2401,  2406,  2411,  2419,  2421,  2423,  2428,
     1082    2430,  2435,  2437,  2451,  2452,  2454,  2459,  2461,  2463,  2465,
     1083    2467,  2472,  2473,  2475,  2477,  2482,  2484,  2486,  2492,  2494,
     1084    2496,  2500,  2502,  2504,  2506,  2520,  2521,  2523,  2528,  2530,
     1085    2532,  2534,  2536,  2541,  2542,  2544,  2546,  2551,  2553,  2555,
     1086    2561,  2562,  2564,  2573,  2576,  2578,  2581,  2583,  2585,  2598,
     1087    2599,  2601,  2606,  2608,  2610,  2612,  2614,  2619,  2620,  2622,
     1088    2624,  2629,  2631,  2639,  2640,  2641,  2646,  2647,  2651,  2653,
     1089    2655,  2657,  2659,  2661,  2668,  2670,  2672,  2674,  2676,  2678,
     1090    2680,  2682,  2684,  2686,  2691,  2693,  2695,  2700,  2726,  2727,
     1091    2729,  2733,  2734,  2738,  2740,  2742,  2744,  2746,  2748,  2755,
     1092    2757,  2759,  2761,  2763,  2765,  2770,  2775,  2777,  2779,  2797,
     1093    2799,  2804,  2805
    10901094};
    10911095#endif
     
    10991103  "STATIC", "INLINE", "FORTRAN", "CONST", "VOLATILE", "RESTRICT", "FORALL",
    11001104  "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE",
    1101   "SIGNED", "UNSIGNED", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF", "LABEL",
    1102   "ENUM", "STRUCT", "UNION", "TYPE", "FTYPE", "DTYPE", "CONTEXT", "SIZEOF",
    1103   "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH", "CASE",
    1104   "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN",
    1105   "CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH", "CATCHRESUME",
    1106   "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS", "ALIGNOF",
    1107   "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT", "THREADLOCAL",
    1108   "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname", "TYPEGENname",
    1109   "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
     1105  "SIGNED", "UNSIGNED", "VALIST", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF",
     1106  "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE", "FTYPE", "DTYPE", "TRAIT",
     1107  "SIZEOF", "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH",
     1108  "CASE", "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO",
     1109  "RETURN", "CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH",
     1110  "CATCHRESUME", "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS",
     1111  "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT",
     1112  "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",
     1113  "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
    11101114  "INTEGERconstant", "FLOATINGconstant", "CHARACTERconstant",
    11111115  "STRINGliteral", "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE",
     
    11691173  "type_parameter", "$@2", "type_class", "assertion_list_opt", "assertion",
    11701174  "type_name_list", "type_declaring_list", "type_declarator",
    1171   "type_declarator_name", "context_specifier", "$@3",
    1172   "context_declaration_list", "context_declaration",
    1173   "new_context_declaring_list", "context_declaring_list",
    1174   "translation_unit", "external_definition_list",
    1175   "external_definition_list_opt", "external_definition", "$@4",
    1176   "external_function_definition", "function_definition", "declarator",
    1177   "subrange", "asm_name_opt", "attribute_list_opt", "attribute_list",
    1178   "attribute", "attribute_parameter_list", "attrib", "any_word",
    1179   "variable_declarator", "paren_identifier", "variable_ptr",
    1180   "variable_array", "variable_function", "function_declarator",
    1181   "function_no_ptr", "function_ptr", "function_array",
    1182   "old_function_declarator", "old_function_no_ptr", "old_function_ptr",
    1183   "old_function_array", "type_redeclarator", "paren_type", "type_ptr",
    1184   "type_array", "type_function", "identifier_parameter_declarator",
     1175  "type_declarator_name", "trait_specifier", "$@3",
     1176  "trait_declaration_list", "trait_declaration",
     1177  "new_trait_declaring_list", "trait_declaring_list", "translation_unit",
     1178  "external_definition_list", "external_definition_list_opt",
     1179  "external_definition", "$@4", "external_function_definition",
     1180  "function_definition", "declarator", "subrange", "asm_name_opt",
     1181  "attribute_list_opt", "attribute_list", "attribute",
     1182  "attribute_parameter_list", "attrib", "any_word", "variable_declarator",
     1183  "paren_identifier", "variable_ptr", "variable_array",
     1184  "variable_function", "function_declarator", "function_no_ptr",
     1185  "function_ptr", "function_array", "old_function_declarator",
     1186  "old_function_no_ptr", "old_function_ptr", "old_function_array",
     1187  "type_redeclarator", "paren_type", "type_ptr", "type_array",
     1188  "type_function", "identifier_parameter_declarator",
    11851189  "identifier_parameter_ptr", "identifier_parameter_array",
    11861190  "identifier_parameter_function", "type_parameter_redeclarator",
     
    12191223     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
    12201224     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    1221      355,   356,   357,   358,   359,   360,   361,   362,    40,    41,
    1222       91,    93,    46,   123,   125,    44,    58,    33,    42,    38,
    1223       43,    45,   126,    47,    37,    60,    62,    94,   124,    63,
    1224       61,    59
     1225     355,   356,   357,   358,   359,   360,   361,   362,   363,    40,
     1226      41,    91,    93,    46,   123,   125,    44,    58,    33,    42,
     1227      38,    43,    45,   126,    47,    37,    60,    62,    94,   124,
     1228      63,    61,    59
    12251229};
    12261230# endif
     
    12291233static const yytype_uint16 yyr1[] =
    12301234{
    1231        0,   132,   133,   134,   135,   135,   135,   136,   136,   136,
    1232      137,   137,   138,   138,   139,   139,   140,   140,   141,   141,
    1233      141,   141,   142,   142,   142,   142,   142,   142,   142,   142,
    1234      142,   142,   142,   143,   143,   144,   144,   144,   144,   144,
    1235      145,   145,   146,   146,   146,   146,   146,   147,   147,   147,
    1236      147,   147,   147,   147,   147,   147,   147,   147,   147,   147,
    1237      147,   147,   147,   147,   147,   148,   148,   148,   148,   149,
    1238      149,   149,   150,   150,   150,   150,   151,   151,   151,   152,
    1239      152,   152,   153,   153,   153,   153,   153,   154,   154,   154,
    1240      155,   155,   156,   156,   157,   157,   158,   158,   159,   159,
    1241      160,   160,   160,   160,   161,   162,   162,   162,   162,   163,
    1242      163,   164,   164,   164,   164,   165,   165,   166,   166,   166,
    1243      166,   166,   166,   166,   166,   166,   166,   167,   167,   168,
    1244      168,   169,   169,   169,   169,   169,   169,   169,   169,   169,
    1245      170,   171,   171,   172,   172,   173,   173,   173,   173,   174,
    1246      174,   175,   176,   176,   176,   176,   176,   176,   177,   177,
    1247      177,   178,   178,   179,   179,   180,   180,   181,   182,   182,
    1248      183,   183,   184,   184,   185,   185,   185,   185,   186,   186,
    1249      187,   187,   188,   188,   188,   189,   189,   190,   190,   190,
    1250      190,   190,   190,   190,   190,   190,   190,   191,   191,   191,
    1251      192,   192,   192,   192,   192,   193,   193,   193,   193,   194,
    1252      195,   195,   195,   195,   195,   196,   196,   196,   196,   196,
    1253      197,   197,   198,   198,   199,   199,   200,   200,   201,   201,
    1254      201,   202,   202,   203,   203,   204,   204,   205,   205,   206,
    1255      206,   207,   207,   208,   208,   209,   209,   210,   210,   211,
    1256      211,   211,   211,   211,   212,   212,   212,   213,   213,   213,
    1257      214,   214,   214,   214,   214,   215,   215,   215,   216,   216,
    1258      217,   217,   217,   218,   218,   218,   218,   218,   219,   219,
    1259      220,   220,   220,   220,   221,   221,   222,   222,   222,   222,
    1260      223,   223,   223,   223,   224,   224,   225,   225,   226,   226,
    1261      227,   227,   227,   227,   227,   228,   227,   229,   229,   229,
    1262      230,   230,   231,   232,   232,   232,   232,   232,   232,   232,
    1263      232,   233,   233,   233,   233,   233,   233,   233,   233,   233,
    1264      233,   233,   233,   234,   234,   234,   234,   234,   235,   235,
    1265      236,   236,   236,   236,   237,   237,   237,   237,   238,   238,
    1266      238,   238,   239,   239,   239,   240,   240,   240,   240,   241,
    1267      241,   241,   242,   242,   243,   243,   243,   243,   243,   244,
    1268      244,   245,   245,   246,   246,   246,   246,   247,   247,   247,
    1269      247,   248,   248,   249,   249,   249,   249,   249,   250,   250,
    1270      251,   252,   253,   253,   253,   254,   254,   255,   255,   256,
    1271      256,   257,   257,   257,   257,   257,   258,   258,   258,   258,
    1272      259,   259,   260,   260,   261,   261,   262,   262,   262,   262,
    1273      263,   263,   263,   263,   263,   264,   264,   264,   264,   264,
    1274      265,   265,   266,   266,   267,   267,   268,   268,   268,   269,
    1275      269,   269,   270,   270,   270,   271,   271,   271,   272,   272,
    1276      272,   272,   273,   273,   273,   274,   274,   275,   275,   275,
    1277      275,   275,   276,   276,   277,   277,   278,   278,   278,   278,
    1278      278,   278,   279,   279,   279,   279,   280,   280,   280,   281,
    1279      282,   282,   284,   283,   283,   285,   285,   285,   286,   286,
    1280      287,   287,   287,   288,   288,   288,   288,   289,   289,   289,
    1281      290,   290,   291,   291,   292,   293,   292,   294,   294,   295,
    1282      295,   296,   296,   296,   297,   297,   298,   298,   299,   299,
    1283      300,   300,   301,   301,   301,   302,   301,   301,   303,   303,
    1284      303,   304,   304,   304,   304,   304,   304,   304,   304,   304,
    1285      305,   305,   305,   306,   307,   307,   308,   308,   309,   309,
    1286      310,   311,   311,   312,   312,   312,   313,   313,   313,   313,
    1287      314,   314,   314,   314,   315,   315,   316,   316,   316,   317,
    1288      317,   317,   317,   318,   318,   319,   319,   319,   320,   320,
    1289      320,   321,   321,   321,   322,   322,   322,   323,   323,   323,
    1290      324,   324,   324,   325,   325,   325,   326,   326,   326,   327,
    1291      327,   327,   327,   328,   328,   329,   329,   329,   330,   330,
    1292      330,   330,   331,   331,   331,   332,   332,   332,   332,   333,
    1293      333,   333,   334,   334,   334,   334,   335,   335,   335,   336,
    1294      336,   336,   336,   337,   337,   338,   338,   338,   339,   339,
    1295      340,   340,   341,   341,   341,   342,   342,   342,   342,   342,
    1296      343,   343,   343,   343,   344,   344,   344,   345,   345,   345,
    1297      346,   346,   346,   346,   347,   347,   347,   348,   348,   348,
    1298      348,   348,   349,   349,   349,   349,   350,   350,   350,   351,
    1299      351,   351,   352,   352,   352,   352,   352,   352,   353,   353,
    1300      353,   354,   354,   354,   354,   354,   355,   355,   355,   355,
    1301      356,   356,   357,   357,   357,   358,   358,   359,   359,   359,
    1302      359,   359,   359,   360,   360,   360,   360,   360,   360,   360,
    1303      360,   360,   360,   361,   361,   361,   361,   362,   362,   362,
    1304      363,   363,   364,   364,   364,   364,   364,   364,   365,   365,
    1305      365,   365,   365,   365,   366,   367,   367,   367,   368,   368,
    1306      369,   369
     1235       0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
     1236     138,   138,   139,   139,   140,   140,   141,   141,   142,   142,
     1237     142,   142,   143,   143,   143,   143,   143,   143,   143,   143,
     1238     143,   143,   143,   144,   144,   145,   145,   145,   145,   145,
     1239     146,   146,   147,   147,   147,   147,   147,   148,   148,   148,
     1240     148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
     1241     148,   148,   148,   148,   148,   149,   149,   149,   149,   150,
     1242     150,   150,   151,   151,   151,   151,   152,   152,   152,   153,
     1243     153,   153,   154,   154,   154,   154,   154,   155,   155,   155,
     1244     156,   156,   157,   157,   158,   158,   159,   159,   160,   160,
     1245     161,   161,   161,   161,   162,   163,   163,   163,   163,   164,
     1246     164,   165,   165,   165,   165,   166,   166,   167,   167,   167,
     1247     167,   167,   167,   167,   167,   167,   167,   168,   168,   169,
     1248     169,   170,   170,   170,   170,   170,   170,   170,   170,   170,
     1249     171,   172,   172,   173,   173,   174,   174,   174,   174,   175,
     1250     175,   176,   177,   177,   177,   177,   177,   177,   178,   178,
     1251     178,   179,   179,   180,   180,   181,   181,   182,   183,   183,
     1252     184,   184,   185,   185,   186,   186,   186,   186,   187,   187,
     1253     188,   188,   189,   189,   189,   190,   190,   191,   191,   191,
     1254     191,   191,   191,   191,   191,   191,   191,   192,   192,   192,
     1255     193,   193,   193,   193,   193,   194,   194,   194,   194,   195,
     1256     196,   196,   196,   196,   196,   197,   197,   197,   197,   197,
     1257     198,   198,   199,   199,   200,   200,   201,   201,   202,   202,
     1258     202,   203,   203,   204,   204,   205,   205,   206,   206,   207,
     1259     207,   208,   208,   209,   209,   210,   210,   211,   211,   212,
     1260     212,   212,   212,   212,   213,   213,   213,   214,   214,   214,
     1261     215,   215,   215,   215,   215,   216,   216,   216,   217,   217,
     1262     218,   218,   218,   219,   219,   219,   219,   219,   220,   220,
     1263     221,   221,   221,   221,   222,   222,   223,   223,   223,   223,
     1264     224,   224,   224,   224,   225,   225,   226,   226,   227,   227,
     1265     228,   228,   228,   228,   228,   229,   228,   230,   230,   230,
     1266     231,   231,   232,   233,   233,   233,   233,   233,   233,   233,
     1267     233,   234,   234,   234,   234,   234,   234,   234,   234,   234,
     1268     234,   234,   234,   234,   235,   235,   235,   235,   235,   236,
     1269     236,   237,   237,   237,   237,   238,   238,   238,   238,   239,
     1270     239,   239,   239,   240,   240,   240,   241,   241,   241,   241,
     1271     242,   242,   242,   243,   243,   244,   244,   244,   244,   244,
     1272     245,   245,   246,   246,   247,   247,   247,   247,   248,   248,
     1273     248,   248,   249,   249,   250,   250,   250,   250,   250,   251,
     1274     251,   252,   253,   254,   254,   254,   255,   255,   256,   256,
     1275     257,   257,   258,   258,   258,   258,   258,   259,   259,   259,
     1276     259,   260,   260,   261,   261,   262,   262,   263,   263,   263,
     1277     263,   264,   264,   264,   264,   264,   265,   265,   265,   265,
     1278     265,   266,   266,   267,   267,   268,   268,   269,   269,   269,
     1279     270,   270,   270,   271,   271,   271,   272,   272,   272,   273,
     1280     273,   273,   273,   274,   274,   274,   275,   275,   276,   276,
     1281     276,   276,   276,   277,   277,   278,   278,   279,   279,   279,
     1282     279,   279,   279,   280,   280,   280,   280,   281,   281,   281,
     1283     282,   283,   283,   285,   284,   284,   286,   286,   286,   287,
     1284     287,   288,   288,   288,   289,   289,   289,   289,   290,   290,
     1285     290,   291,   291,   292,   292,   293,   294,   293,   295,   295,
     1286     296,   296,   297,   297,   297,   298,   298,   299,   299,   300,
     1287     300,   301,   301,   302,   302,   302,   303,   302,   302,   304,
     1288     304,   304,   305,   305,   305,   305,   305,   305,   305,   305,
     1289     305,   306,   306,   306,   307,   308,   308,   309,   309,   310,
     1290     310,   311,   312,   312,   313,   313,   313,   314,   314,   314,
     1291     314,   315,   315,   315,   315,   316,   316,   317,   317,   317,
     1292     318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
     1293     321,   321,   322,   322,   322,   323,   323,   323,   324,   324,
     1294     324,   325,   325,   325,   326,   326,   326,   327,   327,   327,
     1295     328,   328,   328,   328,   329,   329,   330,   330,   330,   331,
     1296     331,   331,   331,   332,   332,   332,   333,   333,   333,   333,
     1297     334,   334,   334,   335,   335,   335,   335,   336,   336,   336,
     1298     337,   337,   337,   337,   338,   338,   339,   339,   339,   340,
     1299     340,   341,   341,   342,   342,   342,   343,   343,   343,   343,
     1300     343,   344,   344,   344,   344,   345,   345,   345,   346,   346,
     1301     346,   347,   347,   347,   347,   348,   348,   348,   349,   349,
     1302     349,   349,   349,   350,   350,   350,   350,   351,   351,   351,
     1303     352,   352,   352,   353,   353,   353,   353,   353,   353,   354,
     1304     354,   354,   355,   355,   355,   355,   355,   356,   356,   356,
     1305     356,   357,   357,   358,   358,   358,   359,   359,   360,   360,
     1306     360,   360,   360,   360,   361,   361,   361,   361,   361,   361,
     1307     361,   361,   361,   361,   362,   362,   362,   362,   363,   363,
     1308     363,   364,   364,   365,   365,   365,   365,   365,   365,   366,
     1309     366,   366,   366,   366,   366,   367,   368,   368,   368,   369,
     1310     369,   370,   370
    13071311};
    13081312
     
    13431347       1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
    13441348       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1345        1,     1,     1,     1,     2,     2,     3,     3,     1,     3,
    1346        1,     2,     2,     2,     4,     4,     4,     4,     1,     2,
    1347        2,     3,     1,     2,     2,     1,     2,     2,     3,     1,
    1348        2,     2,     1,     1,     4,     2,     5,     7,     2,     2,
    1349        2,     1,     2,     2,     3,     2,     3,     1,     2,     3,
    1350        2,     2,     4,     0,     1,     2,     2,     1,     0,     1,
    1351        2,     2,     5,     6,     2,     2,     4,     0,     2,     0,
    1352        1,     1,     1,     5,     5,     5,     1,     5,     5,     9,
    1353        1,     5,     0,     1,     1,     5,     1,     1,     5,     5,
    1354        1,     3,     3,     4,     1,     1,     1,     1,     2,     1,
    1355        3,     3,     1,     2,     1,     3,     1,     1,     1,     1,
    1356        1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
    1357        1,     2,     0,     2,     2,     1,     4,     0,     1,     2,
    1358        3,     4,     2,     2,     1,     2,     1,     2,     5,     5,
    1359        7,     6,     1,     2,     2,     3,     1,     2,     2,     4,
    1360        2,     4,     0,     4,     2,     1,     1,     1,     0,     2,
    1361        5,     5,    13,     1,     1,     3,     3,     2,     3,     3,
    1362        2,     4,     1,     6,     9,     0,    11,     1,     3,     3,
    1363        3,     1,     1,     5,     2,     5,     0,     1,     1,     3,
    1364        0,     1,     1,     1,     1,     0,     6,     2,     1,     2,
    1365        4,     2,     3,     3,     3,     4,     5,     5,     5,     6,
    1366        1,     1,     1,     3,     0,     5,     0,     1,     1,     2,
    1367        6,     1,     3,     0,     1,     4,     1,     1,     1,     1,
     1349       1,     1,     1,     1,     1,     2,     2,     3,     3,     1,
     1350       3,     1,     2,     2,     2,     4,     4,     4,     4,     1,
     1351       2,     2,     3,     1,     2,     2,     1,     2,     2,     3,
     1352       1,     2,     2,     1,     1,     4,     2,     5,     7,     2,
     1353       2,     2,     1,     2,     2,     3,     2,     3,     1,     2,
     1354       3,     2,     2,     4,     0,     1,     2,     2,     1,     0,
     1355       1,     2,     2,     5,     6,     2,     2,     4,     0,     2,
     1356       0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
     1357       9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
     1358       5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
     1359       1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
     1360       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
     1361       1,     1,     2,     0,     2,     2,     1,     4,     0,     1,
     1362       2,     3,     4,     2,     2,     1,     2,     1,     2,     5,
     1363       5,     7,     6,     1,     2,     2,     3,     1,     2,     2,
     1364       4,     2,     4,     0,     4,     2,     1,     1,     1,     0,
     1365       2,     5,     5,    13,     1,     1,     3,     3,     2,     3,
     1366       3,     2,     4,     1,     6,     9,     0,    11,     1,     3,
     1367       3,     3,     1,     1,     5,     2,     5,     0,     1,     1,
     1368       3,     0,     1,     1,     1,     1,     0,     6,     2,     1,
     1369       2,     4,     2,     3,     3,     3,     4,     5,     5,     5,
     1370       6,     1,     1,     1,     3,     0,     5,     0,     1,     1,
     1371       2,     6,     1,     3,     0,     1,     4,     1,     1,     1,
     1372       1,     2,     1,     2,     2,     1,     3,     2,     3,     3,
     1373       2,     4,     4,     3,     8,     3,     2,     1,     2,     6,
     1374       8,     3,     2,     3,     3,     4,     4,     3,     1,     1,
     1375       1,     4,     6,     3,     2,     3,     3,     4,     4,     3,
    13681376       2,     1,     2,     2,     1,     3,     2,     3,     3,     2,
    1369        4,     4,     3,     8,     3,     2,     1,     2,     6,     8,
    1370        3,     2,     3,     3,     4,     4,     3,     1,     1,     1,
    1371        4,     6,     3,     2,     3,     3,     4,     4,     3,     2,
    1372        1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
    1373        4,     3,     6,     8,     3,     2,     1,     2,     2,     2,
    1374        3,     3,     2,     4,     4,     3,     6,     8,     3,     2,
    1375        1,     2,     2,     1,     1,     2,     3,     3,     2,     4,
    1376        6,     8,     1,     2,     2,     1,     2,     2,     3,     3,
    1377        1,     4,     4,     3,     5,     8,     3,     2,     3,     1,
    1378        5,     5,     6,     6,     1,     2,     2,     1,     2,     2,
    1379        3,     3,     1,     4,     4,     3,     5,     8,     3,     1,
    1380        2,     1,     2,     6,     5,     6,     7,     7,     1,     2,
    1381        2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
    1382        8,     3,     1,     1,     2,     1,     1,     2,     3,     2,
    1383        3,     2,     3,     3,     2,     4,     3,     2,     3,     2,
    1384        4,     3,     2,     6,     6,     6,     7,     1,     2,     1,
    1385        1,     1,     2,     3,     2,     3,     2,     3,     3,     4,
    1386        2,     3,     4,     2,     5,     5,     6,     6,     0,     1,
    1387        0,     2
     1377       4,     4,     3,     6,     8,     3,     2,     1,     2,     2,
     1378       2,     3,     3,     2,     4,     4,     3,     6,     8,     3,
     1379       2,     1,     2,     2,     1,     1,     2,     3,     3,     2,
     1380       4,     6,     8,     1,     2,     2,     1,     2,     2,     3,
     1381       3,     1,     4,     4,     3,     5,     8,     3,     2,     3,
     1382       1,     5,     5,     6,     6,     1,     2,     2,     1,     2,
     1383       2,     3,     3,     1,     4,     4,     3,     5,     8,     3,
     1384       1,     2,     1,     2,     6,     5,     6,     7,     7,     1,
     1385       2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
     1386       3,     8,     3,     1,     1,     2,     1,     1,     2,     3,
     1387       2,     3,     2,     3,     3,     2,     4,     3,     2,     3,
     1388       2,     4,     3,     2,     6,     6,     6,     7,     1,     2,
     1389       1,     1,     1,     2,     3,     2,     3,     2,     3,     3,
     1390       4,     2,     3,     4,     2,     5,     5,     6,     6,     0,
     1391       1,     0,     2
    13881392};
    13891393
     
    13951399     294,   294,   315,   313,   316,   314,   317,   318,   300,   302,
    13961400     301,     0,   303,   329,   321,   326,   324,   325,   323,   322,
    1397      327,   328,   330,   331,   332,   546,   546,   546,     0,     0,
    1398        0,   294,   220,   304,   319,   320,     7,   359,     0,     8,
    1399       14,    15,     0,     2,   294,   564,     9,   524,   522,   247,
    1400        3,   452,     3,   260,     0,     3,     3,     3,   248,     3,
    1401        0,     0,     0,   295,   296,   298,   294,   307,   310,   312,
    1402      340,   286,   333,   338,   287,   348,   288,   355,   352,   362,
    1403        0,     0,   363,   289,   472,   476,     3,     3,     0,     2,
    1404      518,   523,   528,   299,     0,     0,   546,   576,   546,     2,
    1405      587,   588,   589,   294,     0,   730,   731,     0,    12,   294,
    1406        0,    13,   270,   271,     0,   295,   290,   291,   292,   293,
    1407      525,   305,   391,   547,   548,   369,   370,    12,   443,   444,
    1408       11,   439,   442,     0,   502,   497,   488,   443,   444,     0,
    1409        0,   527,   221,     0,   294,     0,     0,     0,     0,     0,
    1410        0,     0,     0,   294,   294,     2,     0,   732,   295,   581,
    1411      593,   736,   729,   727,   734,     0,     0,     0,   254,     2,
    1412        0,   531,   437,   438,   436,     0,     0,     0,     0,   546,
    1413        0,   633,   634,     0,     0,   544,   540,   546,   561,   546,
    1414      546,   541,     2,   542,   546,   600,   546,   546,   603,     0,
    1415        0,     0,   294,   294,   313,   360,     2,   294,   261,   297,
    1416      308,   341,   353,   477,     0,     2,     0,   452,   262,   295,
    1417      334,   349,   356,   473,     0,     2,     0,   311,   335,   342,
    1418      343,     0,   350,   354,   357,   361,   444,   294,   294,   365,
    1419      368,     0,   394,   474,   478,     0,     0,     0,     1,   294,
    1420        2,   529,   575,   577,   294,     2,   740,   295,   743,   544,
    1421      544,   295,     0,     0,     0,   273,   546,   541,     2,   294,
    1422        0,     0,   294,   549,     2,   500,     2,   553,     0,     0,
    1423        0,     0,     0,     0,    18,    59,     4,     5,     6,    16,
    1424        0,     0,     0,   294,     2,     0,   294,    65,    66,    67,
    1425       68,    48,    19,    49,    22,    47,    69,     0,    72,    76,
    1426       79,    82,    87,    90,    92,    94,    96,    98,   100,   105,
    1427      494,   750,   450,   493,     0,   448,   449,     0,   565,   580,
    1428      583,   586,   592,   595,   598,   359,     0,     2,   738,     0,
    1429      294,   741,     2,   294,     3,   424,     0,   432,   295,   294,
    1430      307,   333,   287,   348,   355,     3,     3,   406,   410,   420,
    1431      425,   472,   294,   426,   705,   706,   294,   427,   429,   294,
    1432        2,   582,   594,   728,     2,     2,   249,     2,   457,     0,
    1433      455,   454,   453,   141,     2,     2,   251,     2,     2,   250,
    1434        2,   281,     2,   282,     0,   280,     0,     0,     0,     0,
    1435        0,     0,     0,     0,     0,   566,   605,     0,   452,     2,
    1436      560,   569,   659,   562,   563,   532,   294,     2,   599,   608,
    1437      601,   602,     0,   276,   294,   294,   339,   295,     0,   295,
    1438        0,   294,   733,   737,   735,   533,   294,   544,   255,   263,
    1439      309,     0,     2,   534,   294,   498,   336,   337,   283,   351,
    1440      358,     0,   294,     2,   383,   294,   371,     0,     0,   377,
    1441      727,   294,   748,   397,     0,   475,   499,   252,   253,   519,
    1442      294,   434,     0,   294,   237,     0,     2,   239,     0,   295,
    1443        0,   257,     2,   258,   278,     0,     0,     2,   294,   544,
    1444      294,   485,   487,   486,     0,     0,   750,     0,   294,     0,
    1445      294,   489,   294,   559,   557,   558,   556,     0,   551,   554,
    1446        0,     0,   294,    56,   294,    69,    52,   294,    62,   294,
    1447      294,    50,    51,    64,     2,   127,     0,     0,   446,     0,
    1448      445,   111,   294,    54,    55,    17,     0,    29,    30,    35,
    1449        2,     0,    35,   117,   118,   119,   120,   121,   122,   123,
    1450      124,   125,   126,     0,     0,    53,     0,     0,     0,     0,
     1401     327,   328,   333,   330,   331,   332,   547,   547,   547,     0,
     1402       0,     0,   294,   220,   304,   319,   320,     7,   360,     0,
     1403       8,    14,    15,     0,     2,   294,   565,     9,   525,   523,
     1404     247,     3,   453,     3,   260,     0,     3,     3,     3,   248,
     1405       3,     0,     0,     0,   295,   296,   298,   294,   307,   310,
     1406     312,   341,   286,   334,   339,   287,   349,   288,   356,   353,
     1407     363,     0,     0,   364,   289,   473,   477,     3,     3,     0,
     1408       2,   519,   524,   529,   299,     0,     0,   547,   577,   547,
     1409       2,   588,   589,   590,   294,     0,   731,   732,     0,    12,
     1410     294,     0,    13,   270,   271,     0,   295,   290,   291,   292,
     1411     293,   526,   305,   392,   548,   549,   370,   371,    12,   444,
     1412     445,    11,   440,   443,     0,   503,   498,   489,   444,   445,
     1413       0,     0,   528,   221,     0,   294,     0,     0,     0,     0,
     1414       0,     0,     0,     0,   294,   294,     2,     0,   733,   295,
     1415     582,   594,   737,   730,   728,   735,     0,     0,     0,   254,
     1416       2,     0,   532,   438,   439,   437,     0,     0,     0,     0,
     1417     547,     0,   634,   635,     0,     0,   545,   541,   547,   562,
     1418     547,   547,   542,     2,   543,   547,   601,   547,   547,   604,
     1419       0,     0,     0,   294,   294,   313,   361,     2,   294,   261,
     1420     297,   308,   342,   354,   478,     0,     2,     0,   453,   262,
     1421     295,   335,   350,   357,   474,     0,     2,     0,   311,   336,
     1422     343,   344,     0,   351,   355,   358,   362,   445,   294,   294,
     1423     366,   369,     0,   395,   475,   479,     0,     0,     0,     1,
     1424     294,     2,   530,   576,   578,   294,     2,   741,   295,   744,
     1425     545,   545,   295,     0,     0,     0,   273,   547,   542,     2,
     1426     294,     0,     0,   294,   550,     2,   501,     2,   554,     0,
     1427       0,     0,     0,     0,     0,    18,    59,     4,     5,     6,
     1428      16,     0,     0,     0,   294,     2,     0,   294,    65,    66,
     1429      67,    68,    48,    19,    49,    22,    47,    69,     0,    72,
     1430      76,    79,    82,    87,    90,    92,    94,    96,    98,   100,
     1431     105,   495,   751,   451,   494,     0,   449,   450,     0,   566,
     1432     581,   584,   587,   593,   596,   599,   360,     0,     2,   739,
     1433       0,   294,   742,     2,   294,     3,   425,     0,   433,   295,
     1434     294,   307,   334,   287,   349,   356,     3,     3,   407,   411,
     1435     421,   426,   473,   294,   427,   706,   707,   294,   428,   430,
     1436     294,     2,   583,   595,   729,     2,     2,   249,     2,   458,
     1437       0,   456,   455,   454,   141,     2,     2,   251,     2,     2,
     1438     250,     2,   281,     2,   282,     0,   280,     0,     0,     0,
     1439       0,     0,     0,     0,     0,     0,   567,   606,     0,   453,
     1440       2,   561,   570,   660,   563,   564,   533,   294,     2,   600,
     1441     609,   602,   603,     0,   276,   294,   294,   340,   295,     0,
     1442     295,     0,   294,   734,   738,   736,   534,   294,   545,   255,
     1443     263,   309,     0,     2,   535,   294,   499,   337,   338,   283,
     1444     352,   359,     0,   294,     2,   384,   294,   372,     0,     0,
     1445     378,   728,   294,   749,   398,     0,   476,   500,   252,   253,
     1446     520,   294,   435,     0,   294,   237,     0,     2,   239,     0,
     1447     295,     0,   257,     2,   258,   278,     0,     0,     2,   294,
     1448     545,   294,   486,   488,   487,     0,     0,   751,     0,   294,
     1449       0,   294,   490,   294,   560,   558,   559,   557,     0,   552,
     1450     555,     0,     0,   294,    56,   294,    69,    52,   294,    62,
     1451     294,   294,    50,    51,    64,     2,   127,     0,     0,   447,
     1452       0,   446,   111,   294,    54,    55,    17,     0,    29,    30,
     1453      35,     2,     0,    35,   117,   118,   119,   120,   121,   122,
     1454     123,   124,   125,   126,     0,     0,    53,     0,     0,     0,
    14511455       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1452        0,     0,     0,     0,     0,     0,   108,     2,   645,   451,
    1453      642,   546,   546,   650,   479,   294,     2,   584,   585,     0,
    1454      596,   597,     0,     2,   739,   742,   111,   294,     2,   294,
    1455        0,   707,   295,   711,   702,   703,   709,     0,     2,     2,
    1456      667,   546,   750,   616,   546,   546,   750,   546,   630,   546,
    1457      546,   681,   433,   664,   546,   546,   672,   679,   294,   428,
    1458      295,     0,     0,   294,   717,   295,   722,   750,   714,   294,
    1459      719,   750,   294,   294,   294,     0,   111,     0,    18,     5,
    1460        2,     0,    19,     0,   458,   748,     0,     0,   464,   241,
    1461        0,   294,     0,     0,     0,   544,   568,   572,   574,   604,
    1462      607,   611,   614,   567,   606,     0,   284,   657,     0,   294,
    1463      277,     0,     0,     0,     0,   275,     2,     0,   259,   535,
    1464      294,     0,     0,     0,     0,   294,   294,     0,     0,   691,
    1465      381,   384,   388,   546,   388,   696,   387,   688,   546,   546,
    1466      364,   372,   380,   373,   546,   375,   378,   294,   749,     0,
    1467        0,   395,   748,   295,     3,   413,     3,   417,   416,   590,
    1468        0,   530,   294,     3,     3,   294,   432,   295,     3,   426,
    1469      427,     2,     0,     0,     0,   484,   306,   294,   480,   482,
    1470        3,     2,     2,     0,   501,     3,     0,   553,   129,     0,
    1471        0,   222,     0,     0,     0,     2,     0,     0,    36,     0,
    1472        0,   111,   294,    20,     0,    21,     0,   691,   447,     0,
    1473      109,     3,     2,    27,     2,     0,    33,     0,     2,    25,
    1474        0,   106,   107,    73,    74,    75,    77,    78,    80,    81,
    1475       85,    86,    83,    84,    88,    89,    91,    93,    95,    97,
    1476       99,     0,     0,   751,   294,     0,     0,     0,   646,   647,
    1477      643,   644,   496,   495,   294,     0,     3,   294,   713,   294,
    1478      718,   295,   294,   294,   294,   661,   704,   660,     2,   294,
    1479        0,     0,     0,     0,     0,     0,     0,     0,   682,     0,
    1480      668,   619,   635,   669,     2,   615,   622,   430,   617,   618,
    1481      431,     2,   629,   638,   631,   632,   665,   666,   680,   708,
    1482      712,   710,   750,   268,     2,   744,     2,   421,   716,   721,
    1483      422,     0,   400,     3,     3,     3,     3,   452,     3,     0,
    1484        2,   467,   463,   749,     0,   459,   466,     2,   462,   465,
    1485        0,   294,   242,   264,     3,   272,   274,     0,   452,     2,
    1486      570,   571,     2,   609,   610,     0,   658,   536,     3,   345,
    1487      344,   347,   346,   294,   537,     0,   538,   294,   374,   376,
    1488        2,     0,     0,     0,     0,   104,   390,   692,   693,   385,
    1489      389,   386,   689,   690,   379,   383,   366,   397,   392,   398,
    1490        0,     0,     0,   435,   240,     0,     0,     3,     2,   667,
    1491      428,     0,   526,     0,   750,   488,     0,   294,   294,   294,
    1492        0,   550,   552,   130,     0,     0,   215,     0,     0,     0,
    1493      223,   224,    57,     0,    63,   294,     0,    61,    60,     0,
    1494      128,   692,   457,    70,    71,   110,   115,     3,   109,     0,
    1495        0,     0,    24,    35,     3,     0,    32,   102,     0,     3,
    1496      649,   653,   656,   648,     3,   591,     3,   715,   720,     2,
    1497      294,     3,     3,   295,     0,     3,   621,   625,   628,   637,
    1498      671,   675,   678,   294,     3,   620,   636,   670,   294,   294,
    1499      423,   294,   294,   745,     0,     0,     0,     0,   256,     0,
    1500      104,     0,     3,     3,     0,   460,     0,   456,     0,     0,
    1501      245,   294,     0,     0,   129,     0,     0,     0,     0,     0,
    1502      129,     0,     0,   109,   109,     2,     0,     0,     0,     3,
    1503      131,   132,     2,   143,   133,   134,   135,   136,   137,   138,
    1504      145,   147,     0,     0,     0,   285,   294,   294,   546,     0,
    1505      539,   294,   111,   695,   699,   701,   694,   382,   396,   393,
    1506      578,     2,   663,   662,     0,   668,     2,   481,   483,   503,
    1507        3,   511,   512,     0,     2,   507,     3,     3,     0,     0,
    1508      555,   222,     0,     0,     0,   222,     0,     0,     3,    37,
    1509      748,   109,     0,     3,   660,    42,     3,    40,     3,    34,
    1510        0,     3,   101,   103,     0,     2,   651,   652,     0,     0,
    1511      294,     0,     0,     0,     3,   637,     0,     2,   623,   624,
    1512        2,   639,     2,   673,   674,     0,     0,     3,     0,     3,
    1513        3,     3,     3,   408,   407,   411,     2,     2,   747,   746,
    1514      112,     0,     0,     0,     0,     3,   461,     3,     0,   243,
    1515      146,     3,   295,   294,     0,     0,     0,     0,     2,   191,
    1516        0,   189,     0,     0,     0,     0,     0,     0,     0,     0,
    1517      111,     0,   546,   151,   148,   294,     0,     0,   267,   279,
    1518        3,     3,   545,   612,   367,     2,   697,   698,   294,   266,
    1519      294,     0,   514,   491,   294,     0,     0,   490,   505,     0,
    1520        0,     0,   216,     0,   225,    58,   109,     0,     0,   116,
    1521      113,     0,     0,     0,     0,     0,     0,    23,     0,   654,
    1522      294,   579,   265,   723,   724,   725,     0,   676,   294,   294,
    1523      294,     3,     3,     0,   684,     0,     0,     0,     0,   294,
    1524      294,     3,   543,   468,   469,     0,     0,   246,   295,     0,
    1525        0,     0,     0,   294,   192,   190,     0,   187,   193,     0,
    1526        0,     0,     0,   197,   200,   198,   194,     0,   195,    35,
    1527      129,   144,   142,   244,     0,     0,   294,   415,   419,   418,
    1528        0,   508,     2,   509,     2,   510,   504,   294,   228,     0,
    1529      226,     0,   228,     3,   660,    31,   114,     2,    45,     2,
    1530       43,    41,    28,   112,    26,     3,   726,     3,     3,     3,
    1531        0,     0,   683,   685,   626,   640,   269,     2,   405,     3,
    1532      404,     0,   471,   468,   129,     0,     0,   129,     3,     0,
    1533      129,   188,     0,     2,     2,   209,   199,     0,     0,     0,
    1534        0,   140,   573,   613,     3,     2,     0,     0,     2,   229,
    1535        0,     0,   217,     0,     0,     0,     0,     0,     0,     0,
    1536        0,     0,   686,   687,   294,     0,   470,   152,     0,     0,
    1537        2,   165,   129,   154,     0,   182,     0,   129,     0,     2,
    1538      156,     0,     2,     0,     2,     2,     2,   196,    32,     0,
    1539      294,   513,   515,   506,     0,     0,     0,     0,   114,    38,
    1540        3,     3,   655,   627,   641,   677,   409,   129,   158,   161,
    1541        0,   160,   164,     3,   167,   166,     0,   129,   184,   129,
    1542        3,     0,   294,     0,   294,     0,     2,     0,     2,   139,
    1543      700,     2,   230,   231,     0,   227,   218,     0,     0,     0,
    1544      153,     0,     0,   163,   233,   168,     2,   235,   183,     0,
    1545      186,   172,   201,     3,   210,   214,   203,     3,     0,   294,
    1546        0,   294,     0,     0,     0,    39,    46,    44,   159,   162,
    1547      129,     0,   169,   294,   129,   129,     0,   173,     0,     0,
    1548      691,   211,   212,   213,     0,   202,     3,   204,     3,   294,
    1549      219,   232,   149,   170,   155,   129,   236,   185,   180,   178,
    1550      174,   157,   129,     0,   692,     0,     0,     0,     0,   150,
    1551      171,   181,   175,   179,   178,   176,     3,     3,     0,     0,
    1552      492,   177,   205,   207,     3,     3,   206,   208
     1456       0,     0,     0,     0,     0,     0,     0,   108,     2,   646,
     1457     452,   643,   547,   547,   651,   480,   294,     2,   585,   586,
     1458       0,   597,   598,     0,     2,   740,   743,   111,   294,     2,
     1459     294,     0,   708,   295,   712,   703,   704,   710,     0,     2,
     1460       2,   668,   547,   751,   617,   547,   547,   751,   547,   631,
     1461     547,   547,   682,   434,   665,   547,   547,   673,   680,   294,
     1462     429,   295,     0,     0,   294,   718,   295,   723,   751,   715,
     1463     294,   720,   751,   294,   294,   294,     0,   111,     0,    18,
     1464       5,     2,     0,    19,     0,   459,   749,     0,     0,   465,
     1465     241,     0,   294,     0,     0,     0,   545,   569,   573,   575,
     1466     605,   608,   612,   615,   568,   607,     0,   284,   658,     0,
     1467     294,   277,     0,     0,     0,     0,   275,     2,     0,   259,
     1468     536,   294,     0,     0,     0,     0,   294,   294,     0,     0,
     1469     692,   382,   385,   389,   547,   389,   697,   388,   689,   547,
     1470     547,   365,   373,   381,   374,   547,   376,   379,   294,   750,
     1471       0,     0,   396,   749,   295,     3,   414,     3,   418,   417,
     1472     591,     0,   531,   294,     3,     3,   294,   433,   295,     3,
     1473     427,   428,     2,     0,     0,     0,   485,   306,   294,   481,
     1474     483,     3,     2,     2,     0,   502,     3,     0,   554,   129,
     1475       0,     0,   222,     0,     0,     0,     2,     0,     0,    36,
     1476       0,     0,   111,   294,    20,     0,    21,     0,   692,   448,
     1477       0,   109,     3,     2,    27,     2,     0,    33,     0,     2,
     1478      25,     0,   106,   107,    73,    74,    75,    77,    78,    80,
     1479      81,    85,    86,    83,    84,    88,    89,    91,    93,    95,
     1480      97,    99,     0,     0,   752,   294,     0,     0,     0,   647,
     1481     648,   644,   645,   497,   496,   294,     0,     3,   294,   714,
     1482     294,   719,   295,   294,   294,   294,   662,   705,   661,     2,
     1483     294,     0,     0,     0,     0,     0,     0,     0,     0,   683,
     1484       0,   669,   620,   636,   670,     2,   616,   623,   431,   618,
     1485     619,   432,     2,   630,   639,   632,   633,   666,   667,   681,
     1486     709,   713,   711,   751,   268,     2,   745,     2,   422,   717,
     1487     722,   423,     0,   401,     3,     3,     3,     3,   453,     3,
     1488       0,     2,   468,   464,   750,     0,   460,   467,     2,   463,
     1489     466,     0,   294,   242,   264,     3,   272,   274,     0,   453,
     1490       2,   571,   572,     2,   610,   611,     0,   659,   537,     3,
     1491     346,   345,   348,   347,   294,   538,     0,   539,   294,   375,
     1492     377,     2,     0,     0,     0,     0,   104,   391,   693,   694,
     1493     386,   390,   387,   690,   691,   380,   384,   367,   398,   393,
     1494     399,     0,     0,     0,   436,   240,     0,     0,     3,     2,
     1495     668,   429,     0,   527,     0,   751,   489,     0,   294,   294,
     1496     294,     0,   551,   553,   130,     0,     0,   215,     0,     0,
     1497       0,   223,   224,    57,     0,    63,   294,     0,    61,    60,
     1498       0,   128,   693,   458,    70,    71,   110,   115,     3,   109,
     1499       0,     0,     0,    24,    35,     3,     0,    32,   102,     0,
     1500       3,   650,   654,   657,   649,     3,   592,     3,   716,   721,
     1501       2,   294,     3,     3,   295,     0,     3,   622,   626,   629,
     1502     638,   672,   676,   679,   294,     3,   621,   637,   671,   294,
     1503     294,   424,   294,   294,   746,     0,     0,     0,     0,   256,
     1504       0,   104,     0,     3,     3,     0,   461,     0,   457,     0,
     1505       0,   245,   294,     0,     0,   129,     0,     0,     0,     0,
     1506       0,   129,     0,     0,   109,   109,     2,     0,     0,     0,
     1507       3,   131,   132,     2,   143,   133,   134,   135,   136,   137,
     1508     138,   145,   147,     0,     0,     0,   285,   294,   294,   547,
     1509       0,   540,   294,   111,   696,   700,   702,   695,   383,   397,
     1510     394,   579,     2,   664,   663,     0,   669,     2,   482,   484,
     1511     504,     3,   512,   513,     0,     2,   508,     3,     3,     0,
     1512       0,   556,   222,     0,     0,     0,   222,     0,     0,     3,
     1513      37,   749,   109,     0,     3,   661,    42,     3,    40,     3,
     1514      34,     0,     3,   101,   103,     0,     2,   652,   653,     0,
     1515       0,   294,     0,     0,     0,     3,   638,     0,     2,   624,
     1516     625,     2,   640,     2,   674,   675,     0,     0,     3,     0,
     1517       3,     3,     3,     3,   409,   408,   412,     2,     2,   748,
     1518     747,   112,     0,     0,     0,     0,     3,   462,     3,     0,
     1519     243,   146,     3,   295,   294,     0,     0,     0,     0,     2,
     1520     191,     0,   189,     0,     0,     0,     0,     0,     0,     0,
     1521       0,   111,     0,   547,   151,   148,   294,     0,     0,   267,
     1522     279,     3,     3,   546,   613,   368,     2,   698,   699,   294,
     1523     266,   294,     0,   515,   492,   294,     0,     0,   491,   506,
     1524       0,     0,     0,   216,     0,   225,    58,   109,     0,     0,
     1525     116,   113,     0,     0,     0,     0,     0,     0,    23,     0,
     1526     655,   294,   580,   265,   724,   725,   726,     0,   677,   294,
     1527     294,   294,     3,     3,     0,   685,     0,     0,     0,     0,
     1528     294,   294,     3,   544,   469,   470,     0,     0,   246,   295,
     1529       0,     0,     0,     0,   294,   192,   190,     0,   187,   193,
     1530       0,     0,     0,     0,   197,   200,   198,   194,     0,   195,
     1531      35,   129,   144,   142,   244,     0,     0,   294,   416,   420,
     1532     419,     0,   509,     2,   510,     2,   511,   505,   294,   228,
     1533       0,   226,     0,   228,     3,   661,    31,   114,     2,    45,
     1534       2,    43,    41,    28,   112,    26,     3,   727,     3,     3,
     1535       3,     0,     0,   684,   686,   627,   641,   269,     2,   406,
     1536       3,   405,     0,   472,   469,   129,     0,     0,   129,     3,
     1537       0,   129,   188,     0,     2,     2,   209,   199,     0,     0,
     1538       0,     0,   140,   574,   614,     3,     2,     0,     0,     2,
     1539     229,     0,     0,   217,     0,     0,     0,     0,     0,     0,
     1540       0,     0,     0,   687,   688,   294,     0,   471,   152,     0,
     1541       0,     2,   165,   129,   154,     0,   182,     0,   129,     0,
     1542       2,   156,     0,     2,     0,     2,     2,     2,   196,    32,
     1543       0,   294,   514,   516,   507,     0,     0,     0,     0,   114,
     1544      38,     3,     3,   656,   628,   642,   678,   410,   129,   158,
     1545     161,     0,   160,   164,     3,   167,   166,     0,   129,   184,
     1546     129,     3,     0,   294,     0,   294,     0,     2,     0,     2,
     1547     139,   701,     2,   230,   231,     0,   227,   218,     0,     0,
     1548       0,   153,     0,     0,   163,   233,   168,     2,   235,   183,
     1549       0,   186,   172,   201,     3,   210,   214,   203,     3,     0,
     1550     294,     0,   294,     0,     0,     0,    39,    46,    44,   159,
     1551     162,   129,     0,   169,   294,   129,   129,     0,   173,     0,
     1552       0,   692,   211,   212,   213,     0,   202,     3,   204,     3,
     1553     294,   219,   232,   149,   170,   155,   129,   236,   185,   180,
     1554     178,   174,   157,   129,     0,   693,     0,     0,     0,     0,
     1555     150,   171,   181,   175,   179,   178,   176,     3,     3,     0,
     1556       0,   493,   177,   205,   207,     3,     3,   206,   208
    15531557};
    15541558
     
    15561560static const yytype_int16 yydefgoto[] =
    15571561{
    1558       -1,   839,   474,   301,    45,   131,   132,   302,   303,   304,
    1559      305,   785,   786,  1146,  1147,   306,   307,   308,   309,   310,
    1560      311,   312,   313,   314,   315,   316,   317,   318,   319,  1051,
    1561      525,   996,   321,   997,   554,   973,  1078,  1542,  1080,  1081,
    1562     1082,  1083,  1543,  1084,  1085,  1459,  1460,  1421,  1422,  1423,
    1563     1521,  1522,  1526,  1527,  1562,  1563,  1086,  1379,  1087,  1088,
    1564     1313,  1314,  1315,  1503,  1089,   143,   979,   980,   981,  1400,
    1565     1484,  1495,  1496,   475,   476,   901,   902,  1059,    48,    49,
    1566       50,    51,    52,   345,   156,    55,    56,    57,    58,    59,
    1567      347,    61,    62,   261,    64,    65,   272,   349,   350,    68,
    1568       69,    70,    71,   116,    73,   202,   352,   117,    76,   118,
    1569       78,    79,    80,   455,   456,   457,   458,   700,   939,   701,
    1570       81,    82,   462,   721,   881,   882,   355,   356,   724,   725,
    1571      726,   357,   358,   359,   360,   472,   339,   133,   134,   529,
    1572      323,   168,   654,   655,   656,   657,   658,    83,   119,    85,
    1573      495,   496,   965,   497,   275,   501,   324,    86,   135,   136,
    1574       87,  1337,  1124,  1125,  1126,  1127,    88,    89,   742,    90,
    1575      271,    91,    92,   185,  1053,   688,   410,   123,    93,   507,
    1576      508,   509,   186,   266,   188,   189,   190,   267,    96,    97,
    1577       98,    99,   100,   101,   102,   193,   194,   195,   196,   197,
    1578      851,   613,   614,   615,   616,   198,   618,   619,   620,   579,
    1579      580,   581,   582,   705,   103,   622,   623,   624,   625,   626,
    1580      627,   938,   707,   708,   709,   603,   363,   364,   365,   366,
    1581      325,   162,   105,   106,   107,   368,   719,   576
     1562      -1,   840,   475,   302,    46,   132,   133,   303,   304,   305,
     1563     306,   786,   787,  1147,  1148,   307,   308,   309,   310,   311,
     1564     312,   313,   314,   315,   316,   317,   318,   319,   320,  1052,
     1565     526,   997,   322,   998,   555,   974,  1079,  1543,  1081,  1082,
     1566    1083,  1084,  1544,  1085,  1086,  1460,  1461,  1422,  1423,  1424,
     1567    1522,  1523,  1527,  1528,  1563,  1564,  1087,  1380,  1088,  1089,
     1568    1314,  1315,  1316,  1504,  1090,   144,   980,   981,   982,  1401,
     1569    1485,  1496,  1497,   476,   477,   902,   903,  1060,    49,    50,
     1570      51,    52,    53,   346,   157,    56,    57,    58,    59,    60,
     1571     348,    62,    63,   262,    65,    66,   273,   350,   351,    69,
     1572      70,    71,    72,   117,    74,   203,   353,   118,    77,   119,
     1573      79,    80,    81,   456,   457,   458,   459,   701,   940,   702,
     1574      82,    83,   463,   722,   882,   883,   356,   357,   725,   726,
     1575     727,   358,   359,   360,   361,   473,   340,   134,   135,   530,
     1576     324,   169,   655,   656,   657,   658,   659,    84,   120,    86,
     1577     496,   497,   966,   498,   276,   502,   325,    87,   136,   137,
     1578      88,  1338,  1125,  1126,  1127,  1128,    89,    90,   743,    91,
     1579     272,    92,    93,   186,  1054,   689,   411,   124,    94,   508,
     1580     509,   510,   187,   267,   189,   190,   191,   268,    97,    98,
     1581      99,   100,   101,   102,   103,   194,   195,   196,   197,   198,
     1582     852,   614,   615,   616,   617,   199,   619,   620,   621,   580,
     1583     581,   582,   583,   706,   104,   623,   624,   625,   626,   627,
     1584     628,   939,   708,   709,   710,   604,   364,   365,   366,   367,
     1585     326,   163,   106,   107,   108,   369,   720,   577
    15821586};
    15831587
    15841588/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15851589   STATE-NUM.  */
    1586 #define YYPACT_NINF -1281
     1590#define YYPACT_NINF -1356
    15871591static const yytype_int16 yypact[] =
    15881592{
    1589     3705,  8889, -1281,   104, -1281, -1281, -1281, -1281, -1281, -1281,
    1590    -1281,    44, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281,
    1591    -1281, -1281, -1281, -1281, -1281,   155,   155,   155,  1205,   815,
    1592      110,  6006,   222, -1281, -1281, -1281, -1281, -1281,   130, -1281,
    1593    -1281, -1281,  1267,   189,  3199, -1281, -1281, -1281, -1281, -1281,
    1594    -1281,    31,   144, -1281,  1338, -1281, -1281, -1281, -1281,   153,
    1595     1410,   279,    82,  7674, -1281, -1281,  8086,  1234, -1281, -1281,
    1596    -1281,   981,   359,  7231,   925,   669,   981,  1012, -1281, -1281,
    1597      738,   575, -1281,   981,  1119, -1281,   242, -1281,   416,   419,
    1598    -1281, -1281, -1281, -1281,   277,   144,   155, -1281,   155, -1281,
    1599    -1281, -1281, -1281,  9536,  1338, -1281, -1281,  1338, -1281,  9574,
    1600      321, -1281, -1281, -1281,  2195,  9607, -1281,   565,   565,   565,
    1601    -1281, -1281, -1281,   155, -1281, -1281, -1281,   280,   366,   418,
    1602    -1281, -1281, -1281,   425, -1281, -1281, -1281, -1281, -1281,   443,
    1603      475, -1281, -1281,   120,  8972,  3739,   375,   387,   486,   496,
    1604      514,   527,   541,  8273,  7081,   550,   568, -1281,  9460, -1281,
    1605    -1281, -1281, -1281,   602, -1281,   121,  4456,  4456, -1281,   552,
    1606      298, -1281, -1281, -1281, -1281,   634,   302,   306,   327,   155,
    1607      590, -1281, -1281,  1410,  2454,   696, -1281,    90, -1281,   155,
    1608      155,   144, -1281, -1281,   124, -1281,   155,   155, -1281,  2638,
    1609      658,   667,   565,  6993, -1281, -1281,   678,  3199, -1281, -1281,
    1610      981, -1281, -1281, -1281,   144, -1281,  1338,    31, -1281,  8010,
    1611    -1281,   565,   565,   565,   144, -1281,  1205, -1281,  5198, -1281,
    1612    -1281,   673,   565, -1281,   565, -1281,   130,  8972,  9002,   686,
    1613    -1281,   815,   694,   565, -1281,  1205,   728,   736, -1281,  6006,
    1614      544, -1281, -1281, -1281,  9431, -1281, -1281,  3957, -1281,   696,
    1615       79,  9607,  6464,  2195,  2638, -1281,   157, -1281, -1281,  9574,
    1616     1338,   717,  7703, -1281, -1281,   699, -1281, 10744,   783,   831,
    1617     3925,   787,  6306, 10567, -1281,   827, -1281, -1281, -1281, -1281,
    1618    10625, 10625,   544,  8633,   829,  6306,  9085, -1281, -1281, -1281,
    1619    -1281, -1281, -1281,   862, -1281,  1121,  2197,  6306, -1281,   599,
    1620      388,   472,   354,   593,   830,   867,   873,   970,   245, -1281,
    1621    -1281,   874,   650, -1281,   325, -1281, -1281,  3739, -1281, -1281,
    1622      585,   901, -1281,   747,   901,   958,   130, -1281, -1281,   962,
    1623     9536, -1281,   977,  8746, -1281, -1281,   957,   935,  8355,  6993,
    1624      981, -1281,   981,   565,   565, -1281, -1281, -1281, -1281, -1281,
    1625    -1281,   565,  9645,  1338, -1281, -1281,  9683,  1067, -1281,  9123,
    1626    -1281, -1281, -1281, -1281, -1281, -1281, -1281,   990,  5315,  6306,
    1627    -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281,
    1628    -1281, -1281, -1281, -1281,  2195, -1281,   846,   996,   998,  1002,
    1629      864,  1005,  1008,  1026,  2454, -1281, -1281,  1031,    31,  1033,
    1630    -1281, -1281,  1061, -1281, -1281, -1281,  9431, -1281, -1281, -1281,
    1631    -1281, -1281,  2638, -1281,  8972,  8972, -1281,   565,  2195,  7112,
    1632     1338,  8426, -1281, -1281, -1281, -1281,  9431,    79, -1281, -1281,
    1633      981,   144, -1281, -1281,  9431, -1281,  6877, -1281, -1281,   565,
    1634      565,   376,  9716,  1035,  1868,  2111, -1281,   334,   338,   815,
    1635    -1281,  9002,  1059,  1047,   815,   565, -1281, -1281, -1281, -1281,
    1636     9940, -1281,   583,  6755, -1281,   144,  1065, -1281,  2195, 10825,
    1637    10471, -1281, -1281, -1281, -1281,   889,  2638, -1281,  8497,   696,
    1638     7558, -1281, -1281, -1281,  1286,   636,   874,   815,  7703,   868,
    1639     9574, -1281,  7703, -1281, -1281, -1281, -1281,   638, -1281,  1073,
    1640      831,   207,  8633, -1281,  9716, -1281, -1281,  8633, -1281,  8859,
    1641     8633, -1281, -1281, -1281,  1071, -1281,   681,  1077,   668,  1078,
    1642    -1281,  4381,  6724, -1281, -1281, -1281,   328, -1281, -1281, 10490,
    1643    -1281,   385, 10490, -1281, -1281, -1281, -1281, -1281, -1281, -1281,
    1644    -1281, -1281, -1281,  6464,  6464, -1281,  6306,  6306,  6306,  6306,
    1645     6306,  6306,  6306,  6306,  6306,  6306,  6306,  6306,  6306,  6306,
    1646     6306,  6306,  6306,  6306,  4789,  6464, -1281,   650,  1062, -1281,
    1647    -1281,   155,   155, -1281, -1281,  8972, -1281, -1281,  1061,   544,
    1648    -1281,  1061, 10548, -1281, -1281, -1281,  5232,  6724,  1079,  9198,
    1649     1080, -1281,  9754, -1281, -1281,   602, -1281,  1082,  1185,  1084,
    1650     1899,   185,   874, -1281,   155,   155,   874,   233, -1281,   155,
    1651      155,  1061, -1281, -1281,   155,   155, -1281,   901,  9792,  1338,
    1652    10968,   234,   509,  9792, -1281,  5821, -1281,   874, -1281,  9645,
    1653    -1281,   293,  5525,  5525,  5525,  1338, -1281,  5054,  1072,   558,
    1654      990,  1016,  1083,  1086, -1281,  1074,  4456,   592, -1281,  1172,
    1655     1338,  5525,   544,  2195,   544,   696,   809,   901, -1281, -1281,
    1656      814,   901, -1281, -1281, -1281,   831, -1281,   901,   144,  9940,
    1657    -1281,   682,  1095,   691,  1099, -1281,  1098,   144, -1281, -1281,
    1658     9431,   144,  1103,   362,   407,  9825,  7200,  1999,  6306,  1917,
    1659    -1281, -1281,  1101,    94,  1101, -1281, -1281, -1281,   155,   155,
    1660    -1281, -1281,   815, -1281,   155, -1281, -1281,  3122,   815,  1107,
    1661     6306, -1281,  1059, 10968, -1281, -1281,  1102, -1281, -1281, -1281,
    1662      544, -1281, 10897,  6306, -1281,  5525,   675,  8355, -1281, -1281,
    1663      602,  1108,  1109,  1286,  3745, -1281, -1281,  7703, -1281, -1281,
    1664     1111, -1281, -1281,  1116, -1281,  1111,  1128, 10744,  6464,   146,
    1665     1113,    53,  1136,  1115,  1137,   829,  1131,  1139, -1281,  1142,
    1666     1143,  1696,  6843, -1281,  6464, -1281,   668,  1691, -1281,  6022,
    1667     6464,  1138, -1281, -1281,   990,   708, -1281,  6464, -1281, -1281,
    1668      727, -1281, -1281, -1281, -1281, -1281,   599,   599,   388,   388,
    1669      472,   472,   472,   472,   354,   354,   593,   830,   867,   873,
    1670      970,  6306,   755, -1281,  9940,  1148,  1149,  1152,  1062, -1281,
    1671    -1281, -1281, -1281, -1281,  9940,   713,  6306,  5525, -1281,  9645,
    1672    -1281,  7319,  9311,  9236,  7081, -1281, -1281, -1281,  1185,  9940,
    1673      951,  1160,  1163,  1165,  1166,  1175,  1176,  1182, -1281,  3532,
    1674     1899, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281,
    1675    -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281,  1061, -1281,
    1676    -1281, -1281,   874, -1281, -1281, -1281, -1281, -1281, -1281, -1281,
    1677    -1281,  1183, -1281,  1187,  1189, -1281, -1281,    31,  1138,  5054,
    1678    -1281, -1281, -1281,  5315,  1180, -1281, -1281, -1281, -1281, -1281,
    1679      815,  6243,  1272, -1281, -1281, -1281, -1281,  1188,    31, -1281,
    1680    -1281,  1061, -1281, -1281,  1061,    70,  1061, -1281, -1281, -1281,
    1681    -1281, -1281, -1281,  9498, -1281,   144, -1281,  9002, -1281, -1281,
    1682     1201,   818,  1208,  1212,  1213, -1281, -1281,  1917, -1281, -1281,
    1683    -1281, -1281, -1281, -1281, -1281,  1868, -1281,  1047, -1281, -1281,
    1684     1210,  1216,  1211, -1281, -1281,  1218,  1223, -1281,   675,  1777,
    1685    -1281,   562, -1281,  3745,   874, -1281,  1226,  7703,  9863,  8972,
    1686     1230, -1281, -1281,  1225,  1235,  1238, -1281,  6306,   252,    40,
    1687     1231, -1281,  1242,   544,  1242,  6724,  6464, -1281, -1281,  1242,
    1688    -1281,  1691,  5315, -1281, -1281, -1281, -1281,  1236,  6464,  1245,
    1689      544,  5054, -1281, 10490, -1281,   544, -1281, -1281,  6464, -1281,
    1690      850,   901, -1281, -1281, -1281, -1281, -1281, -1281, -1281,   990,
    1691     8746, -1281, -1281,  7438,  1249, -1281,   856,   901, -1281,   872,
    1692      904,   901, -1281,   565,  4646, -1281, -1281, -1281,  9940,  9940,
    1693    -1281,  8426,  8426, -1281,  1252,  1255,  1264,  1271, -1281,  1253,
    1694      594,   247,  1138, -1281,   544, -1281,  4456, -1281,  6464,   459,
    1695    -1281,  6603,  1274,  1279, 10343,  1281,  1283,   301,   308,   344,
    1696     6464,  1285,   144,  6464,  6464,  1284,   498,  1282,  1268, -1281,
    1697    -1281, -1281,  1289, -1281, -1281, -1281, -1281, -1281, -1281, -1281,
    1698    -1281, -1281,   815,  1296,  6464, -1281,  9940,  9940,   155,  1301,
    1699    -1281,  9349,  4935,   934,   901, -1281, -1281, -1281, -1281, -1281,
    1700    -1281, -1281, -1281, -1281,  1305,  1777, -1281, -1281,  1290, -1281,
    1701     1111, -1281, -1281,  2195,  1309, -1281, -1281, -1281,   734,  1312,
    1702    -1281,    53,  1317,  6306,  1303,    53,    53,  1327,  1323, -1281,
    1703     1074,  6464,  1328,  1236,  1036,   113,  1326, -1281,  1323, -1281,
    1704     1331,  1326, -1281, -1281,  1337, -1281, -1281,  1061,  1340,  1343,
    1705     6962,  1342,  1344,  1350, -1281, -1281,  1353, -1281, -1281,  1061,
    1706    -1281, -1281, -1281, -1281,  1061,  6464,  6464,  6306,  1355, -1281,
    1707    -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281,
    1708    -1281,  6306,  6306,  1356,  1357,  1326, -1281, -1281,   815, -1281,
    1709    -1281, -1281,  7939,  9863,  6464,  6464,  1423,  6464, -1281, -1281,
    1710     1341, -1281,  1345,  6464,  1347,  1358,  6464,  1097,  1360,    74,
    1711     8776,  1197,   155, -1281, -1281,  6243,  1361,   467, -1281, -1281,
    1712    -1281, -1281, -1281, -1281, -1281, -1281, -1281,  1061, 10467, -1281,
    1713     8497,  1362, -1281, -1281,  9863,   482,   494, -1281,  1372,  1383,
    1714      831,  1394, -1281,    66, -1281, -1281,  6464,  1395,  1393, -1281,
    1715    -1281,  1399,   430,   657,   544,  1400,  1401, -1281,  1406, -1281,
    1716     9940, -1281, -1281, -1281, -1281, -1281,  1412, -1281,  9940,  9940,
    1717     9940, -1281, -1281,  1413, -1281,  1415,  1425,  1427,   623,  8125,
    1718     8240, -1281, -1281,   278, -1281,  1426,  1429, -1281,  8568,   745,
    1719      759,  1430,   769,  6445, -1281, -1281,   502, -1281, -1281,   770,
    1720     1434,  1436,   144,  1487,   911, -1281, -1281,  6464, -1281, 10490,
    1721    10343, -1281, -1281, -1281,  1442,  1444,  9940, -1281, -1281, -1281,
    1722     1437, -1281, -1281, -1281, -1281, -1281, -1281,  9863,   831,   269,
    1723    -1281,  1424,   831,  1236,   373, -1281, -1281, -1281, -1281, -1281,
    1724    -1281, -1281, -1281,  1443, -1281, -1281, -1281, -1281, -1281, -1281,
    1725     1452,  1454, -1281, -1281, -1281, -1281, -1281, -1281, -1281,  1458,
    1726    -1281,  1457, -1281, -1281, 10343,   148,  6464, 10343, -1281,  1462,
    1727     6464, -1281,   171,  1484,  1486, -1281, -1281,  1465,  1476,  1455,
    1728      905, -1281, -1281, -1281, -1281, -1281,  1338,  2195,  1471,   862,
    1729      918,  6306, -1281,   772,  1477,  6464,   544,   544,  1480,  1482,
    1730     1483,  1485, -1281, -1281,  8426,  1472, -1281,  1555,  6306,  1493,
    1731    -1281, -1281, 10254, -1281,   790, -1281,  1467, 10343,  1468, -1281,
    1732    -1281,  1511, -1281,  1513, -1281,  1507,  1529, -1281,  1496,  1519,
    1733     9863, -1281, -1281, -1281,   831,   544,  1520,  1499,  1515, -1281,
    1734     1326,  1326, -1281, -1281, -1281, -1281, -1281, 10343,   258, -1281,
    1735      922, -1281, -1281,  7790, -1281, -1281,  1501,  6464, -1281,  6464,
    1736     7790,   144,  9716,   144,  9716,  1528, -1281,  1530, -1281, -1281,
    1737    -1281,  1524,   862, -1281,   794, -1281, -1281,  6464,  1540,  1542,
    1738    -1281,  6306,  6306, -1281, -1281,  1051,   133, -1281, -1281,  1510,
    1739    -1281,  1051, -1281, -1281,  2099,   544, -1281, -1281,   144,  9716,
    1740      144,  9716,  1546,  1525,   544, -1281, -1281, -1281, -1281, -1281,
    1741    10254,  1541,  1051,  7866,  6464, 10165,  1543,  1051,  1551,  2099,
    1742     2338, -1281, -1281, -1281,  1552, -1281, -1281, -1281, -1281,  8972,
    1743    -1281, -1281, -1281, 10072, -1281, 10254, -1281, -1281,  1531,  9979,
    1744    -1281, -1281, 10165,   144,  2338,   144,  1557,  1559,   795, -1281,
    1745    10072, -1281, -1281, -1281,  9979, -1281, -1281, -1281,   144,   144,
    1746    -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281
     1593    5863,  4890, -1356,    65, -1356, -1356, -1356, -1356, -1356, -1356,
     1594   -1356,     9, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356,
     1595   -1356, -1356, -1356, -1356, -1356, -1356,   139,   139,   139,  1216,
     1596     781,    63,  4761,   238, -1356, -1356, -1356, -1356, -1356,   165,
     1597   -1356, -1356, -1356,   572,   207,  2350, -1356, -1356, -1356, -1356,
     1598   -1356, -1356,    59,   217, -1356,  1506, -1356, -1356, -1356, -1356,
     1599     220,  1734,   341,    66,  7480, -1356, -1356,  9240,  1240, -1356,
     1600   -1356, -1356,  1320,   351,  3183,  1125,   757,  1320,  1149, -1356,
     1601   -1356,  1042,   895, -1356,  1320,  1227, -1356,   243, -1356,   378,
     1602     403, -1356, -1356, -1356, -1356,   303,   217,   139, -1356,   139,
     1603   -1356, -1356, -1356, -1356,  9019,  1506, -1356, -1356,  1506, -1356,
     1604    9774,   314, -1356, -1356, -1356,  1811,  9812, -1356,   726,   726,
     1605     726, -1356, -1356, -1356,   139, -1356, -1356, -1356,   353,   381,
     1606     400, -1356, -1356, -1356,   417, -1356, -1356, -1356, -1356, -1356,
     1607     424,   436, -1356, -1356,    28,  8867,  2398,   371,   447,   459,
     1608     467,   482,   495,   557,  8670,  6999,   468,   584, -1356,  9350,
     1609   -1356, -1356, -1356, -1356,   594, -1356,   335,  4628,  4628, -1356,
     1610     575,   352, -1356, -1356, -1356, -1356,   602,   432,   434,   470,
     1611     139,   624, -1356, -1356,  1734,  1711,   656, -1356,    68, -1356,
     1612     139,   139,   217, -1356, -1356,    93, -1356,   139,   139, -1356,
     1613    2093,   670,   699,   726,  6910, -1356, -1356,   654,  2350, -1356,
     1614   -1356,  1320, -1356, -1356, -1356,   217, -1356,  1506,    59, -1356,
     1615    7819, -1356,   726,   726,   726,   217, -1356,  1216, -1356,  6673,
     1616   -1356, -1356,   659,   726, -1356,   726, -1356,   165,  8867,  8784,
     1617     714, -1356,   781,   740,   726, -1356,  1216,   737,   749, -1356,
     1618    4761,   791, -1356, -1356, -1356,  4061, -1356, -1356,  7390, -1356,
     1619     656,    62,  9812, 10718,  1811,  2093, -1356,   152, -1356, -1356,
     1620    9774,  1506,   770,  7511, -1356, -1356,   269, -1356,  3425,   779,
     1621     827,  3643,   814, 10872, 10930, -1356,   817, -1356, -1356, -1356,
     1622   -1356, 10949, 10949,   791,  8525,   818, 10872,  8981, -1356, -1356,
     1623   -1356, -1356, -1356, -1356,   855, -1356,   889,  2173, 10872, -1356,
     1624     498,   751,   809,   524,   880,   822,   831,   819,   869,     5,
     1625   -1356, -1356,   883,    64, -1356,   116, -1356, -1356,  2398, -1356,
     1626   -1356,   516,   900, -1356,   644,   900,   913,   165, -1356, -1356,
     1627     915,  9019, -1356,   916,  8639, -1356, -1356,  1004,  1539,  8240,
     1628    6910,  1320, -1356,  1320,   726,   726, -1356, -1356, -1356, -1356,
     1629   -1356, -1356,   726,  9885,  1506, -1356, -1356,  9923,  1500, -1356,
     1630    7969, -1356, -1356, -1356, -1356, -1356, -1356, -1356,   929,  5043,
     1631   10872, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356,
     1632   -1356, -1356, -1356, -1356, -1356,  1811, -1356,   876,   936,   938,
     1633     944,   885,   947,   954,   957,  1711, -1356, -1356,   930,    59,
     1634     960, -1356, -1356,   970, -1356, -1356, -1356,  4061, -1356, -1356,
     1635   -1356, -1356, -1356,  2093, -1356,  8867,  8867, -1356,   726,  1811,
     1636    7030,  1506,  8313, -1356, -1356, -1356, -1356,  4061,    62, -1356,
     1637   -1356,  1320,   217, -1356, -1356,  4061, -1356,  6793, -1356, -1356,
     1638     726,   726,   472,  9953,   974,  1092,  5671, -1356,   521,   543,
     1639     781, -1356,  8784,   976,   959,   781,   726, -1356, -1356, -1356,
     1640   -1356, 10252, -1356,   560,  6550, -1356,   217,   981, -1356,  1811,
     1641   11070, 10776, -1356, -1356, -1356, -1356,   921,  2093, -1356,  8386,
     1642     656,  6061, -1356, -1356, -1356,   820,   612,   883,   781,  7511,
     1643    1338,  9774, -1356,  7511, -1356, -1356, -1356, -1356,   638, -1356,
     1644     994,   827,   255,  8525, -1356,  9953, -1356, -1356,  8525, -1356,
     1645    8753,  8525, -1356, -1356, -1356,   993, -1356,   665,   998,   161,
     1646    1002, -1356,  9490,  6639, -1356, -1356, -1356,   290, -1356, -1356,
     1647   10795, -1356,   366, 10795, -1356, -1356, -1356, -1356, -1356, -1356,
     1648   -1356, -1356, -1356, -1356, 10718, 10718, -1356, 10872, 10872, 10872,
     1649   10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872,
     1650   10872, 10872, 10872, 10872, 10872,  5362, 10718, -1356,    64,  1168,
     1651   -1356, -1356,   139,   139, -1356, -1356,  8867, -1356, -1356,   970,
     1652     791, -1356,   970, 10853, -1356, -1356, -1356,  3524,  6639,  1016,
     1653    9095,  1028, -1356, 10035, -1356, -1356,   594, -1356,  1029,   776,
     1654    1036,  1922,   164,   883, -1356,   139,   139,   883,   174, -1356,
     1655     139,   139,   970, -1356, -1356,   139,   139, -1356,   900, 10065,
     1656    1506, 11215,   233,   347, 10065, -1356, 10214, -1356,   883, -1356,
     1657    9885, -1356,   125,  7935,  7935,  7935,  1506, -1356,  6115,  1033,
     1658     414,   929,  1150,  1037,  1038, -1356,  1054,  4628,   555, -1356,
     1659    1124,  1506,  7935,   791,  1811,   791,   656,   704,   900, -1356,
     1660   -1356,   729,   900, -1356, -1356, -1356,   827, -1356,   900,   217,
     1661   10252, -1356,   666,  1061,   679,  1062, -1356,  1065,   217, -1356,
     1662   -1356,  4061,   217,  1059,   553,   573, 10103,  7119,  1590, 10872,
     1663    1954, -1356, -1356,  1066,    39,  1066, -1356, -1356, -1356,   139,
     1664     139, -1356, -1356,   781, -1356,   139, -1356, -1356,  9630,   781,
     1665    1069, 10872, -1356,   976, 11215, -1356, -1356,  1075, -1356, -1356,
     1666   -1356,   791, -1356, 11143, 10872, -1356,  7935,   588,  8240, -1356,
     1667   -1356,   594,  1072,  1077,   820,  2542, -1356, -1356,  7511, -1356,
     1668   -1356,  1074, -1356, -1356,  1088, -1356,  1074,  1090,  3425, 10718,
     1669     205,  1073,    47,  1094,  1082,  1100,   818,  1102,  1110, -1356,
     1670    1113,  1117,  9661,  6759, -1356, 10718, -1356,   161,  1861, -1356,
     1671    6396, 10718,  1120, -1356, -1356,   929,   689, -1356, 10718, -1356,
     1672   -1356,   865, -1356, -1356, -1356, -1356, -1356,   498,   498,   751,
     1673     751,   809,   809,   809,   809,   524,   524,   880,   822,   831,
     1674     819,   869, 10872,   875, -1356, 10252,  1119,  1140,  1142,  1168,
     1675   -1356, -1356, -1356, -1356, -1356, 10252,   691, 10872,  7935, -1356,
     1676    9885, -1356,  7239,  9209,  8905,  6999, -1356, -1356, -1356,   776,
     1677   10252,   927,  1145,  1152,  1158,  1159,  1162,  1166,  1172, -1356,
     1678    4275,  1922, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356,
     1679   -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356,   970,
     1680   -1356, -1356, -1356,   883, -1356, -1356, -1356, -1356, -1356, -1356,
     1681   -1356, -1356,  1176, -1356,  1183,  1185, -1356, -1356,    59,  1120,
     1682    6115, -1356, -1356, -1356,  5043,  1144, -1356, -1356, -1356, -1356,
     1683   -1356,   781,  6242,  1231, -1356, -1356, -1356, -1356,  1165,    59,
     1684   -1356, -1356,   970, -1356, -1356,   970,    29,   970, -1356, -1356,
     1685   -1356, -1356, -1356, -1356,  9380, -1356,   217, -1356,  8784, -1356,
     1686   -1356,  1190,   906,  1187,  1193,  1198, -1356, -1356,  1954, -1356,
     1687   -1356, -1356, -1356, -1356, -1356, -1356,  1092, -1356,   959, -1356,
     1688   -1356,  1195,  1202,  1201, -1356, -1356,  1206,  1210, -1356,   588,
     1689    2182, -1356,   533, -1356,  2542,   883, -1356,  1213,  7511, 10176,
     1690    8867,  1220, -1356, -1356,  1218,  1222,  1224, -1356, 10872,   230,
     1691      -1,  1219, -1356,  1225,   791,  1225,  6639, 10718, -1356, -1356,
     1692    1225, -1356,  1861,  5043, -1356, -1356, -1356, -1356,  1236, 10718,
     1693    1233,   791,  6115, -1356, 10795, -1356,   791, -1356, -1356, 10718,
     1694   -1356,   782,   900, -1356, -1356, -1356, -1356, -1356, -1356, -1356,
     1695     929,  8639, -1356, -1356,  7359,  1237, -1356,   807,   900, -1356,
     1696     825,   836,   900, -1356,   726,  4460, -1356, -1356, -1356, 10252,
     1697   10252, -1356,  8313,  8313, -1356,  1241,  1248,  1246,  1259, -1356,
     1698    1262,   672,   244,  1120, -1356,   791, -1356,  4628, -1356, 10718,
     1699     578, -1356,  6519,  1267,  1271, 10660,  1272,  1277,   122,   304,
     1700     298, 10718,  1279,   217, 10718, 10718,  1280,   678,  1254,  1261,
     1701   -1356, -1356, -1356,  1284, -1356, -1356, -1356, -1356, -1356, -1356,
     1702   -1356, -1356, -1356,   781,  1290, 10718, -1356, 10252, 10252,   139,
     1703    1292, -1356,  9743,  9520,   847,   900, -1356, -1356, -1356, -1356,
     1704   -1356, -1356, -1356, -1356, -1356,  1293,  2182, -1356, -1356,  1275,
     1705   -1356,  1074, -1356, -1356,  1811,  1296, -1356, -1356, -1356,   706,
     1706    1291, -1356,    47,  1305, 10872,  1288,    47,    47,  1314,  1310,
     1707   -1356,  1054, 10718,  1315,  1236,   711,   214,  1317, -1356,  1310,
     1708   -1356,  1323,  1317, -1356, -1356,  1328, -1356, -1356,   970,  1329,
     1709    1330,  6879,  1331,  1339,  1341, -1356, -1356,  1340, -1356, -1356,
     1710     970, -1356, -1356, -1356, -1356,   970, 10718, 10718, 10872,  1344,
     1711   -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356,
     1712   -1356, -1356, 10872, 10872,  1347,  1349,  1317, -1356, -1356,   781,
     1713   -1356, -1356, -1356,  7746, 10176, 10718, 10718,  1394, 10718, -1356,
     1714   -1356,  1333, -1356,  1334, 10718,  1335,  1343, 10718,   992,  1345,
     1715      36,  8158,  1229,   139, -1356, -1356,  6242,  1348,   585, -1356,
     1716   -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356,   970, 10478,
     1717   -1356,  8386,  1360, -1356, -1356, 10176,   592,   598, -1356,  1356,
     1718    1355,   827,  1366, -1356,   179, -1356, -1356, 10718,  1368,  1363,
     1719   -1356, -1356,  1369,   484,   663,   791,  1376,  1378, -1356,  1380,
     1720   -1356, 10252, -1356, -1356, -1356, -1356, -1356,  1382, -1356, 10252,
     1721   10252, 10252, -1356, -1356,  1386, -1356,  1389,  1392,  1393,   682,
     1722    8008,  8124, -1356, -1356,   370, -1356,  1396,  1397, -1356,  8459,
     1723     715,   725,  1395,   760,  6377, -1356, -1356,   641, -1356, -1356,
     1724     796,  1402,  1403,   217,  1453,   961, -1356, -1356, 10718, -1356,
     1725   10795, 10660, -1356, -1356, -1356,  1406,  1407, 10252, -1356, -1356,
     1726   -1356,  1405, -1356, -1356, -1356, -1356, -1356, -1356, 10176,   827,
     1727     287, -1356,  1388,   827,  1236,   361, -1356, -1356, -1356, -1356,
     1728   -1356, -1356, -1356, -1356,  1408, -1356, -1356, -1356, -1356, -1356,
     1729   -1356,  1411,  1412, -1356, -1356, -1356, -1356, -1356, -1356, -1356,
     1730    1418, -1356,  1417, -1356, -1356, 10660,   272, 10718, 10660, -1356,
     1731    1422, 10718, -1356,   306,  1438,  1441, -1356, -1356,  1430,  1431,
     1732    1413,   918, -1356, -1356, -1356, -1356, -1356,  1506,  1811,  1433,
     1733     855,   946, 10872, -1356,   801,  1439, 10718,   791,   791,  1442,
     1734    1448,  1449,  1450, -1356, -1356,  8313,  1452, -1356,  1535, 10872,
     1735    1462, -1356, -1356, 10571, -1356,   803, -1356,  1460, 10660,  1463,
     1736   -1356, -1356,  1489, -1356,  1493, -1356,  1511,  1512, -1356,  1480,
     1737    1508, 10176, -1356, -1356, -1356,   827,   791,  1514,  1484,  1509,
     1738   -1356,  1317,  1317, -1356, -1356, -1356, -1356, -1356, 10660,   301,
     1739   -1356,   958, -1356, -1356,  7597, -1356, -1356,  1502, 10718, -1356,
     1740   10718,  7597,   217,  9953,   217,  9953,  1515, -1356,  1522, -1356,
     1741   -1356, -1356,  1520,   855, -1356,   811, -1356, -1356, 10718,  1526,
     1742    1527, -1356, 10872, 10872, -1356, -1356,  1055,   154, -1356, -1356,
     1743    1510, -1356,  1055, -1356, -1356,  1716,   791, -1356, -1356,   217,
     1744    9953,   217,  9953,  1532,  1517,   791, -1356, -1356, -1356, -1356,
     1745   -1356, 10571,  1528,  1055,  7673, 10718, 10482,  1531,  1055,  1537,
     1746    1716,  2045, -1356, -1356, -1356,  1545, -1356, -1356, -1356, -1356,
     1747    8867, -1356, -1356, -1356, 10349, -1356, 10571, -1356, -1356,  1529,
     1748   10256, -1356, -1356, 10482,   217,  2045,   217,  1558,  1559,   815,
     1749   -1356, 10349, -1356, -1356, -1356, 10256, -1356, -1356, -1356,   217,
     1750     217, -1356, -1356, -1356, -1356, -1356, -1356, -1356, -1356
    17471751};
    17481752
     
    17501754static const yytype_int16 yypgoto[] =
    17511755{
    1752    -1281,  4254,  1590, -1281,  1409, -1281,    52,     0,  -229, -1281,
    1753      596,  -527,  -497,  -931,   -99,  4508, -1281,   358,   609,   563,
    1754      518,   591,  1104,  1105,  1110,  1117,  1112, -1281,   613,  -339,
    1755     5346,  -893,  -690,  -919, -1281,   401,  -634,   444, -1281,   753,
    1756    -1281,   449, -1224, -1281, -1281,   191, -1281, -1265,  -724,   305,
    1757    -1281, -1281, -1281, -1281,   129, -1170, -1281, -1281, -1281, -1281,
    1758    -1281, -1281,   382, -1175,    71, -1281,  -381, -1281,   560,   356,
    1759    -1281,   229, -1281,  -338, -1281, -1281, -1281,   632,  -691, -1281,
    1760    -1281,    11, -1000,    10,  2865, -1281, -1281, -1281,  -125, -1281,
    1761      275,   363,  -194,  1416,  4157, -1281, -1281,    24,    25,   374,
    1762     -202,  1621, -1281,  2138, -1281, -1281,   112,  2165, -1281,  2832,
    1763      139, -1281, -1281,  -416,  -434,  1276,  1278,   786,  1028,   400,
    1764    -1281, -1281,  1269,   793,  -513, -1281,  -522,   -57,  -636, -1281,
    1765    -1281,  -959,  -994,   122,   819,  1153,   135, -1281,  1441,   296,
    1766     -299,  -212,  -109,   749,   844, -1281,  1087, -1281,  2859,  1478,
    1767     -462,  1000, -1281, -1281,   778, -1281,  -233, -1281,   -72, -1281,
    1768    -1281, -1281, -1232,   504, -1281, -1281, -1281,  1259, -1281,    68,
    1769    -1281, -1281,  -850,   -96, -1280,   -93,  1665, -1281,  2401, -1281,
    1770      993, -1281,  -164,   689,  -177,  -176,  -170,     2,   -39,   -33,
    1771      -28,  1052,    48,    75,    93,  -100,  -167,  -166,  -153,  -148,
    1772     -277,  -569,  -500,  -490,  -543,  -300,  -514, -1281, -1281,  -506,
    1773     1174,  1177,  1181,  2149,  5126,  -572,  -549,  -544,  -523,  -484,
    1774    -1281,  -427,  -665,  -663,  -660,  -602,  -320,  -271, -1281, -1281,
    1775      102,   140,   -84, -1281,  3728,   128,  -603,  -447
     1756   -1356,  4068,  1513, -1356,  1381, -1356,    41,     0,  -254, -1356,
     1757     593,  -523,  -482,  -960,  -143,  5028, -1356,  -101,   576,   581,
     1758     386,   577,  1101,  1105,  1106,  1099,  1107, -1356,  -593,  -585,
     1759    4966,  -933,  -708,  -942, -1356,  -273,  -719,   379, -1356,  1404,
     1760   -1356,   457, -1092, -1356, -1356,   195, -1356,  -844, -1059,   308,
     1761   -1356, -1356, -1356, -1356,   124, -1118, -1356, -1356, -1356, -1356,
     1762   -1356, -1356,   382, -1355,    53, -1356,  -496, -1356,   558,   349,
     1763   -1356,   226, -1356,  -307, -1356, -1356, -1356,   610,  -832, -1356,
     1764   -1356,    13,  -961,   169,  2725, -1356, -1356, -1356,   -79, -1356,
     1765     189,   845,  -184,  1482,  3902, -1356, -1356,   192,   133,   657,
     1766    -251,  1620, -1356,  1796, -1356, -1356,   156,  2416, -1356,  2575,
     1767     798, -1356, -1356,  -404,  -428,  1252,  1253,   761,  1003,   302,
     1768   -1356, -1356,  1245,   764,  -253, -1356,   -24,  -132,  -469, -1356,
     1769   -1356,  -983,  -881,     4,   862,  1128,   -43, -1356,   561,  -100,
     1770    -262,  -193,  -152,   721,   826, -1356,  1071, -1356,  2692,   907,
     1771    -449,   971, -1356, -1356,   765, -1356,  -227, -1356,   -60, -1356,
     1772   -1356, -1356, -1248,   485, -1356, -1356, -1356,  1242, -1356,    45,
     1773   -1356, -1356,  -846,  -109, -1333,  -138,  3289, -1356,  1880, -1356,
     1774     969, -1356,  -161,   268,  -181,  -177,  -175,     2,   -39,   -35,
     1775     -33,   769,    30,    31,    69,  -146,  -162,  -151,  -147,  -140,
     1776    -277,  -521,  -506,  -484,  -575,  -313,  -516, -1356, -1356,  -528,
     1777    1156,  1157,  1163,  2484,  4688,  -570,  -557,  -534,  -533,  -478,
     1778   -1356,  -432,  -693,  -685,  -681,  -580,  -201,  -236, -1356, -1356,
     1779     265,   180,   -86, -1356,  3600,   232,  -625,  -376
    17761780};
    17771781
     
    17791783   positive, shift that token.  If negative, reduce the rule which
    17801784   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1781 #define YYTABLE_NINF -522
     1785#define YYTABLE_NINF -523
    17821786static const yytype_int16 yytable[] =
    17831787{
    1784       46,   111,    95,   147,   451,   438,   397,   398,   426,   148,
    1785       53,   113,   112,   399,   149,   790,   400,   401,   265,   258,
    1786      405,   711,   767,   604,    66,    67,   870,   706,   111,   111,
    1787      402,    46,   932,    95,   933,   403,   750,   934,   853,   841,
    1788      755,    53,    46,   918,    46,   717,   159,   617,  1185,   748,
    1789      511,  1091,   894,   110,    46,    66,    67,   381,   382,   845,
    1790       46,  1201,   191,    46,   846,   214,    46,   852,   224,   341,
    1791      612,    47,   819,   208,  1151,   504,   218,   217,   678,  1143,
    1792      111,   111,  1183,  1184,   406,   847,   397,   398,   210,   994,
    1793      150,   636,   408,   399,   844,   640,   400,   401,   687,   141,
    1794      405,   778,    47,   423,    46,  1398,   691,    46,   842,   200,
    1795      402,   932,    74,   933,    46,   403,   934,   151,   843,   950,
    1796      883,   883,   883,  1195,   974,   682,   684,   856,    30,   477,
    1797      885,   886,    30,   863,   289,   152,  1317,   166,  1461,   883,
    1798      104,   104,   407,    74,   147,    46,   161,   159,   904,  1134,
    1799      148,   535,   121,    46,   445,   149,  1135,  1465,    46,   201,
    1800      371,   167,    30,   977,   406,   857,   481,   483,   739,   860,
    1801      278,   104,   164,   466,   841,  1341,  -234,  -234,  1009,  1098,
    1802     1218,  1219,  1342,    46,    46,   120,   159,   482,  1014,   175,
    1803      877,  1418,  1419,    30,   880,    30,   676,  1262,   250,    46,
    1804      409,   754,   212,  1025,   409,  1318,   104,    46,  1481,   159,
    1805     1090,   161,  1461,   883,  1418,  1419,    46,   745,   140,    46,
    1806      769,   441,   957,    30,   147,  1263,   111,   535,   279,   439,
    1807      148,   150,   417,   142,   409,   149,   375,   164,   144,   259,
    1808      673,   111,   260,   842,   440,   111,  1185,  -234,  1259,    46,
    1809      111,    95,   376,   843,   212,  1465,   595,   169,   151,    53,
    1810     1465,  1420,   975,    46,    46,   487,   159,   409,   179,   841,
    1811       46,    30,   326,    66,    67,    60,   152,    46,  1037,   604,
    1812     1465,   759,   199,   711,  1429,   341,   823,  1465,   535,   845,
    1813      702,   477,   111,   854,   846,   609,  1185,   212,   665,  1507,
    1814      153,  1549,   471,  1201,   674,   883,    60,  1036,   604,   433,
    1815      617,   477,  1013,   604,  1016,   847,   760,   469,  1153,   477,
    1816       47,  1560,   673,   761,  1024,   830,   680,    46,  1564,   371,
    1817     1183,  1184,   685,   535,  1536,   434,  1538,  1343,   842,   573,
    1818      459,   861,  1191,   609,   523,   873,    46,    46,   843,   874,
    1819      535,   437,   925,  1491,   704,  1550,   856,   245,   212,   936,
    1820     1133,    74,  -290,    46,   114,   326,    74,    46,   879,  1192,
    1821     1200,   433,   108,   210,   574,  1091,   739,  1401,   652,   108,
    1822     1192,   949,  1565,    40,    41,   250,   674,   853,   -10,   104,
    1823       40,    41,  -112,  -112,    46,   530,   212,   434,   161,   108,
    1824      212,   482,  1180,  1181,    46,   489,   371,   157,  -112,   845,
    1825       40,    41,   506,   385,   846,   108,   248,   388,   870,  -517,
    1826     1185,   390,    46,   575,   164,  1040,    40,    41,    46,   386,
    1827       46,   738,  1209,   389,   584,   847,  1215,   391,   782,  1211,
    1828      585,   227,   392,   563,   564,   228,   915,   341,   232,   712,
    1829      234,   262,   739,   714,    46,  1456,   108,   243,   393,   111,
    1830     1230,  1231,  1213,  1201,   111,   713,   256,    40,    41,   715,
    1831     1201,   606,   157,   111,  -440,  1450,  1451,   712,    46,   565,
    1832      566,   175,  -112,   250,   328,   692,    46,   212,   371,  1405,
    1833       46,   585,    95,   928,    46,   788,   329,   111,   637,   111,
    1834       53,   108,   641,  -112,   210,  1120,  1149,   322,   559,   560,
    1835     1106,  1101,    40,    41,    66,    67,   338,  1117,   706,   652,
    1836      397,   398,   714,  1201,    60,   110,  -441,   399,    74,   478,
    1837      400,   401,   978,   274,  1090,   405,   111,  1258,   929,   652,
    1838     1347,   111,   652,  1037,   402,  1171,  1173,   895,    74,   403,
    1839      617,   276,   326,   326,   459,   504,    74,   459,  1018,   561,
    1840      562,    47,   830,   459,  1106,   477,   428,   906,   212,   284,
    1841      432,   766,   908,  1035,  1198,     8,     9,    10,    11,    12,
    1842       40,    41,  1198,   277,   227,   884,   884,   884,   783,   111,
    1843     1199,   766,   727,   789,   766,   330,    46,  1332,  1323,   406,
    1844      322,   454,    74,    30,   884,   331,   520,   954,    46,  1334,
    1845       46,   341,  1380,  1333,   530,   108,   530,   774,   212,   530,
    1846      875,   832,   530,   332,   876,  1335,    40,    41,   326,    46,
    1847      104,    33,   432,  1381,  1355,   494,   333,  -466,  1132,   738,
    1848      516,   471,  1357,  1358,  1359,    46,   108,   326,   137,   138,
    1849      334,   111,   830,   533,   534,   440,   528,    40,    41,   157,
    1850       46,   369,   111,    46,   111,   555,   383,   711,  -466,  1378,
    1851     -466,   896,  -291,   875,  -466,  1048,   370,  1116,   884,     8,
    1852        9,    10,    11,    12,   567,   568,  1035,   341,   241,    94,
    1853     1394,   478,   729,   586,   526,   409,  1095,    46,   730,    46,
    1854      604,   534,   897,   594,   651,  -105,   601,    30,   898,  -105,
    1855      374,   478,   111,   326,   905,   738,   907,   556,   111,   478,
    1856       94,   395,   557,   558,   227,   634,   232,   606,   108,   638,
    1857      111,   146,   338,    94,  1366,    33,  1128,   534,  1367,    40,
    1858       41,   212,   387,    46,    46,   746,  1428,   756,   210,   187,
    1859     1249,   747,    94,   757,  1253,    94,   871,    46,   577,   407,
    1860      409,   606,   210,   736,   872,    60,   424,  1349,   578,   212,
    1861      884,  1520,  1497,   673,   212,   425,   776,  1525,   409,  1497,
    1862      887,   702,   953,   958,  1055,   609,   777,   322,   322,   430,
    1863      773,   919,  1390,   959,  1251,   903,   774,   774,  1545,   461,
    1864      921,   727,    74,  1552,   448,   171,   774,   464,   762,   108,
    1865      763,   137,   236,   764,   227,   454,   770,  1002,   454,   459,
    1866       40,    41,  1015,  1003,   454,   681,   683,   499,   730,   500,
    1867      490,   830,  1546,  1499,    94,  1500,   114,   674,    46,  1175,
    1868      739,  1006,  1003,  1247,    74,   704,   237,    94,   251,   585,
    1869       46,   238,  1291,  1292,  1374,   589,   210,   409,   832,   467,
    1870      774,   494,   212,   322,   932,   494,   933,   468,  1375,   934,
    1871      774,  1008,   396,   187,   774,   528,   212,   528,  1377,  1382,
    1872      528,  1447,   322,   528,   774,   774,   108,  1444,   137,   138,
    1873     1547,   510,   506,   652,   338,   514,    94,    40,    41,  1466,
    1874      111,   652,   978,  1513,  1570,   774,   978,   978,    94,  1514,
    1875      585,    53,   289,   526,   793,   794,   795,   909,   526,   409,
    1876      739,   526,   912,    46,   409,    66,    67,   328,   409,     2,
    1877      204,     4,     5,     6,     7,   519,   727,    46,    94,   108,
    1878      531,   137,   138,   535,   415,    46,   727,  1196,   322,   569,
    1879       40,    41,   485,  1077,   250,   328,   409,   534,  1155,   828,
    1880      409,   727,   601,    46,  1167,   478,   409,   435,  1387,  1388,
    1881      212,   736,   417,   669,   409,   812,   751,   443,  1122,  1121,
    1882     1170,   752,   609,   111,  1182,     2,   204,     4,     5,     6,
    1883        7,   869,   652,    34,   570,    35,   601,   487,   328,   409,
    1884      111,   571,   878,   652,   575,   111,    36,   478,   181,   182,
    1885       39,   337,  1172,    74,   609,  -292,    94,    40,    41,  1438,
    1886     1003,  1339,     8,     9,    10,    11,    12,  1242,    36,   459,
    1887      172,   173,    39,  1444,  1445,  1137,   611,  1492,  1493,    40,
    1888       41,   104,  1235,   608,   409,   609,   527,   736,   440,    34,
    1889       30,    35,  1145,   610,   111,   766,    -3,  1145,   338,   854,
    1890      328,   609,  1446,   572,   652,   370,  -437,   111,   111,   111,
    1891      593,    53,     8,     9,    10,    11,    12,  1532,    33,  1458,
    1892      454,   800,   801,   802,   803,  1203,    67,   108,   596,   137,
    1893      138,   534,   111,   187,  1418,  1419,   160,   326,    40,    41,
    1894       30,   646,   940,   738,   940,   666,  1145,   667,   104,  1399,
    1895      494,   668,   192,  1399,   670,   215,  1077,   671,   225,  1210,
    1896     1212,  1214,  -293,    46,   798,   799,   890,  1106,    33,     8,
    1897        9,    10,    11,    12,   338,   672,   341,   993,    36,   675,
    1898      172,   173,    39,   703,   677,  -112,   695,  -112,   871,    40,
    1899       41,  -112,  1518,  1458,  1310,  1311,  1312,    30,   804,   805,
    1900      727,   727,   212,  1348,  1350,  1351,  -112,  -112,   796,   797,
    1901      577,   255,   409,    74,   718,   374,    60,   720,  -238,    94,
    1902      578,   758,   771,   611,   534,    33,   775,   779,   -12,   893,
    1903      833,   835,  1017,   837,   689,   848,   828,   160,   111,   -13,
    1904      900,   104,   892,   459,   920,   536,   537,   538,   922,   923,
    1905      372,  -414,   208,   218,   217,  1482,   927,   698,   727,   727,
    1906       46,   948,  -521,   962,   969,   652,   747,   210,   731,   539,
    1907      983,   540,  1369,   541,   542,    53,   160,   971,     2,   204,
    1908        4,     5,     6,     7,   976,   982,   984,   986,   987,    66,
    1909       67,   988,   989,   998,  1122,  1121,    36,  1010,  1011,   160,
    1910       39,  1012,   111,   111,   111,   527,   226,    40,    41,  1026,
    1911      527,   442,  1027,   527,  1028,  1029,   127,  1077,   128,   129,
    1912      130,   536,   537,   538,  1030,  1031,   828,    40,    41,   728,
    1913      454,  1032,  1043,   838,  1057,   609,  -402,   840,  -401,   611,
    1914     1092,  1442,    34,   610,    35,   539,  1558,   540,   439,   541,
    1915     1319,   935,  1102,    53,  1145,  1145,  1145,  1103,  1094,   652,
    1916      652,  1104,  1105,   440,  1109,  1110,  1111,  1203,    67,  1112,
    1917      494,  1123,   322,   935,  1113,  1119,   478,    74,    36,  1129,
    1918      774,   212,    39,   104,  1130,  1079,  1136,  1122,  1121,    40,
    1919       41,  1141,   397,   398,  1131,   992,  1144,    36,  1165,   399,
    1920     1328,    39,   400,   401,  1190,   104,   405,  1186,    40,    41,
    1921     1187,   766,  1077,  1188,   652,    42,   402,   652,   534,   372,
    1922     1189,   403,  1204,   869,   104,   145,   931,  1205,   703,  1207,
    1923      673,  1208,   727,  1216,   743,  1220,    46,    46,  1222,  1223,
    1924      727,   727,   727,    -3,   744,  1228,   111,   111,  1531,    36,
    1925     1233,   172,   173,    39,  1239,    74,    63,   115,   499,   516,
    1926       40,    41,   652,  1243,  1007,  1248,  1077,   652,  1250,  1077,
    1927      406,   917,   840,   611,  1252,   736,  1255,   212,  1256,  1260,
    1928      924,  1264,  1267,   104,   926,   111,  1269,    63,   727,  1271,
    1929     1122,  1121,  1272,  1273,   674,  1274,   372,   652,  1145,  1145,
    1930      158,  1275,  1277,   174,   454,   828,  1284,  1293,  1294,  1301,
    1931      139,  1330,  1304,    53,  1077,  1322,  1305,   104,  1307,  1077,
    1932       53,    36,   219,   181,   182,    39,  1336,  1203,    67,  1308,
    1933      147,  1316,    40,    41,  1203,    67,   148,  1483,   728,  1338,
    1934       60,   149,  1050,  1340,    46,   111,  1344,  1345,  1206,  1077,
    1935     1346,  1352,  1353,   174,   111,   736,   174,  1354,   183,   257,
    1936      652,   239,   242,  1356,  1362,   652,  1363,   840,   184,    46,
    1937       46,  1441,   159,    53,  1364,   534,  1365,  1372,  1376,   611,
    1938     1373,   213,  1383,   652,  1384,   652,  1312,  1203,    67,   652,
    1939     1395,  1392,   652,  1393,    46,  1402,   371,  1533,   240,  1405,
    1940      652,   327,   174,  1412,   652,  1413,  1541,  -403,  1416,   257,
    1941      348,  1427,  1077,  1435,  1505,    74,  1505,  1077,   478,  1431,
    1942      104,  1433,    74,   338,  1436,  1443,  1437,  1367,  1448,  1452,
    1943      935,  1453,  1454,   213,  1455,  1077,  1457,  1077,  1467,  1469,
    1944      404,  1077,  1475,   104,  1077,  1299,  1300,  1123,  1302,  1462,
    1945      104,  1505,  1077,  1505,  1306,   422,  1077,  1309,   427,   429,
    1946     1471,  1152,  1473,   158,  1477,   174,   703,  1479,  1480,  1485,
    1947     1486,  1487,  1498,   728,   703,    74,   213,  1508,  1512,  1510,
    1948      165,  1524,   170,   728,   446,   176,   177,   178,   449,   180,
    1949      450,  1516,   611,  1517,  1539,  1544,  1540,  1551,   728,   465,
    1950     1553,  1555,  1561,   104,   231,    63,  1568,   326,  1569,  1079,
    1951      479,  1050,  1221,   806,  1321,   807,   246,   247,  1100,   174,
    1952      486,   808,   463,  1519,   211,   810,   174,  1430,   429,   809,
    1953      122,   125,   126,  1571,   230,  1386,  1254,   213,  1403,  1501,
    1954     1123,     8,     9,    10,    11,    12,     8,     9,    10,    11,
     1788      47,   112,    96,   398,   148,   933,   266,   399,   149,   400,
     1789     150,   452,   176,   934,   113,   382,   383,   935,   259,   427,
     1790     791,   527,   401,   707,   406,   439,   512,   505,   712,   112,
     1791     112,   895,    47,   402,    96,   618,   853,   403,   768,   407,
     1792     975,   854,   111,    47,   404,    47,  1152,   160,   409,   871,
     1793     751,   820,   846,    48,   756,    47,  1092,  1144,   718,  1184,
     1794    1185,    47,   260,   192,    47,   261,   215,    47,   342,   225,
     1795    1091,   613,   995,   151,   152,   847,   848,   142,    31,   279,
     1796     218,   112,   112,   398,   933,    48,  1462,   399,   842,   400,
     1797    1399,   424,   934,   845,   201,  1196,   935,   779,   951,  1318,
     1798     574,  1202,   401,   843,   406,    47,   936,    31,    47,  1135,
     1799     679,   536,   153,   402,   937,    47,  1136,   403,   122,   407,
     1800    1508,   749,   482,   484,   404,   844,   408,   637,   936,   290,
     1801     688,   641,    31,    68,   857,   575,   950,   280,   692,  1099,
     1802     864,  1219,  1220,   605,   202,   148,    47,   121,   160,   149,
     1803     410,   150,   682,   684,    47,  1537,    75,  1539,   978,    47,
     1804    1462,   372,  1186,   683,   685,    68,   167,   446,  1319,    54,
     1805     114,   483,   141,   578,   438,   410,   478,   251,    31,   410,
     1806     105,   105,   517,   579,    47,    47,   467,   160,    75,    61,
     1807     168,    31,    67,  1482,   109,   534,   535,   211,  -234,  -234,
     1808      47,    54,   418,    31,   410,    41,    42,   556,    47,  1260,
     1809     160,   919,   105,    31,   151,   152,   677,    47,   746,  1008,
     1810      47,    61,   442,   842,    67,   148,   585,   112,   490,   149,
     1811    1201,   150,   586,   209,   483,   507,   219,   858,   843,   755,
     1812     527,   861,   112,   535,   674,   527,   112,   105,   527,   143,
     1813      47,   112,    96,   153,  1210,   596,   576,   760,   770,   675,
     1814     844,   488,   878,   410,    47,    47,   881,   160,    95,  -234,
     1815     777,    47,   410,   855,   145,   610,  1037,   165,    47,   535,
     1816     778,  1038,   846,   862,   342,   610,   666,   536,   740,  1342,
     1817     712,  1014,   472,   112,   703,   470,  1343,  1051,   618,  1263,
     1818      95,  1154,   813,    48,   176,   847,   848,  1184,  1185,   705,
     1819     162,   147,   536,    95,   681,  1344,  1419,  1420,   842,   154,
     1820     686,   638,   976,  1025,   824,   642,   674,  1264,    47,   188,
     1821     372,   170,    95,   843,   524,    95,   180,   536,   478,  1134,
     1822    1192,   675,   165,  1202,   200,   874,  1010,    47,    47,   875,
     1823    1419,  1420,  1216,   441,  -290,   844,  1015,   739,   478,   246,
     1824    1186,   831,   109,   857,    47,   761,   478,  1193,    47,   536,
     1825     109,  1026,   762,    41,    42,   162,   109,   327,   249,   653,
     1826    1092,    41,    42,    68,   926,   936,  1421,    41,    42,   440,
     1827     854,   886,   887,  1133,  1091,    47,  1402,  1492,   500,   605,
     1828     501,   783,   846,  -518,   880,    47,    75,   372,  1551,   905,
     1829    1186,    75,   251,   763,    95,   764,  1153,  1214,   765,    54,
     1830    1430,   771,   916,    47,  1193,   847,   848,    95,   605,    47,
     1831     105,    47,  1457,   605,  1550,  1566,  1212,  1521,   109,    61,
     1832     435,   871,    67,  1526,   479,   263,   342,  1451,  1452,    41,
     1833      42,   376,   397,   188,  1561,    47,   794,   795,   796,   876,
     1834     112,  1565,   -10,   877,  1546,   112,  1051,   377,   386,  1553,
     1835     327,  -112,  1381,   434,   112,   728,    95,   789,  1406,    47,
     1836     251,   329,   211,   958,   387,  -112,  -112,    47,    95,   372,
     1837    -441,    47,  -112,    96,  -467,    47,   740,  1041,   112,   535,
     1838     112,  -112,   435,  1202,   460,   896,  1107,   505,   979,  -442,
     1839    1202,   885,   885,   885,   707,   111,  1259,   398,    95,  1121,
     1840     653,   399,  1150,   400,  1102,  -467,   275,  -467,   909,   165,
     1841     885,  -467,   486,   277,  1186,   434,   401,   112,   618,   406,
     1842     653,   936,   112,   653,    48,   278,  1038,   402,   389,  1252,
     1843     391,   403,  1172,  1174,   407,   907,   109,   330,   404,   531,
     1844    1107,   767,   162,  1202,   390,   739,   392,    41,    42,   331,
     1845    1181,  1182,   740,    75,  1036,  1017,   607,   332,   784,  1466,
     1846     370,   767,   693,   790,   767,  1379,   393,   873,   586,  1118,
     1847     112,   140,   333,    75,  1019,  1348,    95,    47,   831,   936,
     1848     936,    75,   394,   888,   885,   334,   479,  1292,  1293,    47,
     1849     342,    47,   478,   211,   564,   565,   612,   557,   904,   884,
     1850     884,   884,   558,   559,    68,   587,   479,   410,  1231,  1232,
     1851      47,   472,  1498,   535,   479,   897,  1250,   713,   884,  1498,
     1852    1254,   739,   240,   243,    37,   876,    47,    75,    40,  1117,
     1853     566,   567,   112,   714,   955,    41,    42,   327,   327,   715,
     1854      54,    47,  1429,   112,    47,   112,   898,   335,   652,   713,
     1855     730,   105,   899,   188,   712,   716,   731,  1466,   737,   994,
     1856      61,    43,  1466,    67,   728,   929,   342,  1036,   831,   715,
     1857     384,   146,  1547,   371,  1199,  1049,   885,   959,    47,   610,
     1858      47,  1199,  1466,   375,   906,   930,   908,   960,  1333,  1466,
     1859    1200,   388,   884,   112,  1335,   507,  1096,  1324,   460,   112,
     1860     408,   460,   747,   704,  1334,   228,   535,   460,   748,   229,
     1861    1336,   112,   233,   327,   235,   109,     8,     9,    10,    11,
     1862      12,   244,  1056,  1129,    47,    47,    41,    42,   757,  1500,
     1863     285,  1501,   327,   590,   758,   410,   396,   775,    47,    95,
     1864    -291,    41,    42,   612,   441,    31,   431,     8,     9,    10,
     1865      11,    12,   954,  1382,  1350,   774,   920,   674,   531,   425,
     1866     531,   775,   775,   531,  -105,   703,   531,   521,  -105,   922,
     1867     833,   449,   675,    34,  1367,   775,    31,  1391,  1368,  1003,
     1868     705,  1016,  1356,   464,   884,  1004,  1548,   731,   426,   936,
     1869    1358,  1359,  1360,   910,   161,   410,  1248,  1447,   327,   728,
     1870     605,  -112,   586,  -112,    34,  1375,   936,  -112,   462,   728,
     1871     193,   775,   607,   216,  1459,  1376,   226,   933,   913,    47,
     1872     410,   775,  -112,  -112,   728,   934,   115,    75,    37,   935,
     1873    1176,    47,    40,   109,   465,   138,   139,   211,  1395,    41,
     1874      42,   872,   213,   109,    41,    42,   607,   831,   228,   468,
     1875    1378,   211,   560,   561,    41,    42,   775,   841,   979,   612,
     1876     479,   469,   979,   979,   491,   839,   737,   610,   511,    75,
     1877     158,  1156,    37,   410,   653,   611,    40,   562,   563,   936,
     1878     936,   112,   653,    41,    42,  1197,  1383,  1519,  1459,   290,
     1879    1183,  1448,   775,  1467,   213,   161,  1168,  1445,   410,   775,
     1880     535,  1514,   479,   515,    47,  1571,   520,  1515,   373,   744,
     1881     532,   586,  1300,  1301,  1171,  1303,   610,   536,    47,   745,
     1882     654,  1307,   570,  1078,  1310,  1173,    47,   610,   572,   257,
     1883     801,   802,   803,   804,   161,   158,  1236,   213,   410,   571,
     1884     740,   517,   737,   573,    47,   211,   932,   109,   704,   138,
     1885     139,   214,   568,   569,   537,   538,   539,   161,    41,    42,
     1886    1007,  1004,  1122,   460,   112,   251,   329,   410,   241,   443,
     1887     323,   775,  1009,   653,   418,   670,   410,  1340,   540,   339,
     1888     541,   112,   542,   543,   653,   941,   112,   941,   228,   242,
     1889     233,   338,   841,   612,   576,  1243,   329,   410,   213,  1388,
     1890    1389,   717,  -438,   214,   594,  1138,   464,   833,   597,   739,
     1891     488,   329,   410,  1439,  1004,    68,   855,   329,   610,   676,
     1892     740,   647,  1146,   728,   728,   767,   667,  1146,   668,   429,
     1893    1311,  1312,  1313,   433,   669,   112,   213,   671,    75,   750,
     1894     213,   754,  1445,  1446,   672,   653,   214,   673,   112,   112,
     1895     112,    54,   678,  1533,  1493,  1494,    37,   535,   173,   174,
     1896      40,   256,   105,   323,   455,  1400,   696,    41,    42,  1400,
     1897     721,    61,   719,   112,    67,  -238,  1146,   373,   228,  1419,
     1898    1420,   728,   728,   759,  1425,   772,  1078,   841,   776,  1211,
     1899    1213,  1215,   780,   371,   109,   433,   138,   237,   495,   612,
     1900    1349,  1351,  1352,  1107,    47,    41,    42,   214,   834,     2,
     1901     205,     4,     5,     6,     7,   342,   797,   798,  1123,   529,
     1902     836,   838,   158,   799,   800,   805,   806,   213,   849,   105,
     1903     -12,   238,  -292,   901,   -13,   893,   239,   441,  1370,     8,
     1904       9,    10,    11,    12,    37,   214,   182,   183,    40,   214,
     1905     894,   921,   923,   928,   373,    41,    42,   924,     8,     9,
     1906      10,    11,    12,   699,   949,  -415,   595,  -522,    31,   602,
     1907     748,  1483,   963,   460,    35,    68,    36,   970,   984,   112,
     1908     972,   698,   327,   410,   983,   977,   704,    31,   635,   699,
     1909     985,   700,   639,   892,   704,   339,    34,   218,    75,   987,
     1910     988,    47,   109,   989,   138,   139,   653,   990,   213,  1011,
     1911    -293,    54,   612,    41,    42,    34,   999,     8,     9,    10,
     1912      11,    12,   105,  1329,     2,   205,     4,     5,     6,     7,
     1913    1012,   479,  1013,   872,  1204,  1027,   214,    -3,  1122,  1058,
     1914    1093,   891,  1028,   112,   112,   112,    31,  1078,  1029,  1030,
     1915     323,   323,  1031,   227,   945,   728,  1032,   578,   213,   410,
     1916     948,  1080,  1033,   728,   728,   728,  1044,   579,   128,  1443,
     1917     129,   130,   131,  -403,    34,  -402,  1095,  1104,   455,    41,
     1918      42,   455,  1103,  1105,  1146,  1146,  1146,   455,  1106,    35,
     1919    1110,    36,  1111,  1559,   537,   538,   539,  1112,  1113,   115,
     1920     653,   653,  1114,  1120,     2,   205,     4,     5,     6,     7,
     1921    1130,   728,  1131,   729,   775,  1137,   211,   214,   540,   993,
     1922     541,  1132,   542,  1320,   495,  1145,   323,  1166,   495,   398,
     1923     737,  1122,  1142,   399,  1442,   400,  1189,  1187,   529,    68,
     1924     529,   767,  1078,   529,  1188,   323,   529,   460,   401,  1190,
     1925     406,  1223,   209,   219,  1191,   653,  1205,   339,   653,   402,
     1926    1206,  1208,    75,   403,   105,   407,  1209,   214,  1217,    35,
     1927     404,    36,  1221,  1224,   674,    54,  1532,    47,    47,    -3,
     1928    1229,   213,  1234,  1240,   500,  1249,   105,   112,   112,   675,
     1929     109,  1244,   138,   139,  1123,    61,  1078,  1251,    67,  1078,
     1930    1253,    41,    42,   653,  1256,   105,  1257,  1261,   653,   213,
     1931     737,   323,   441,  1265,   213,  1268,   175,    68,  1270,  1272,
     1932    1273,  1302,   829,  1274,  1207,   602,   112,   752,  1146,  1146,
     1933    1278,  1275,   753,  1276,  1122,   654,  1285,   172,   653,  1294,
     1934      75,  1295,  1061,  1323,  1078,  1305,  1306,  1308,   440,  1078,
     1935    1331,  1337,  1339,    54,   870,  1309,  1341,  1317,  1346,   602,
     1936    1345,  1347,    64,   116,   105,   879,   175,  1484,  1353,   175,
     1937    1354,   148,  1355,   479,  1357,   149,  1204,   150,  1363,  1078,
     1938     252,  1364,  1365,  1366,  1377,    47,   112,  1123,  1373,  1374,
     1939     214,  1384,  1385,  1313,    64,   112,  1393,  1394,   105,  1396,
     1940    1403,   653,   213,  1413,  1414,  1406,   653,   159,  -404,  1417,
     1941      47,    47,  1428,   160,  1432,   175,   213,  1434,   214,  1436,
     1942    1437,   339,   729,   214,   653,  1438,   653,  1534,  1444,   220,
     1943     653,  1449,  1453,   653,   654,    47,  1542,   372,  1454,  1455,
     1944    1456,   653,  1078,   455,   166,   653,   171,  1078,  1368,   177,
     1945     178,   179,    37,   181,   173,   174,    40,  1458,    37,  1463,
     1946     173,   174,    40,    41,    42,  1078,   258,  1078,   232,    41,
     1947      42,  1078,  1468,   495,  1078,  1470,   416,    68,   175,  1472,
     1948     247,   248,  1078,  1474,    68,  1080,  1078,  1476,  1478,   375,
     1949    1123,    37,  1480,   182,   183,    40,  1487,   339,  1481,   436,
     1950      75,   105,    41,    42,  1486,  1509,  1488,    75,   328,   444,
     1951     213,   214,  1511,    54,  1499,  1513,   258,   349,  1517,  1518,
     1952      54,  1540,  1525,  1545,   105,   214,  1552,  1554,   609,  1541,
     1953     610,   105,   175,   479,  1061,  1556,  1204,    68,   611,   175,
     1954     479,  1562,    37,  1204,   182,   183,    40,   405,  1569,  1570,
     1955    1222,   807,   810,    41,    42,  1018,   808,   729,   809,   829,
     1956      75,   811,   423,  1322,   212,   428,   430,   729,  1520,  1572,
     1957     159,  1431,  1404,    54,   231,  1255,  1387,  1502,   528,   698,
     1958    1392,   410,   729,  1228,   105,   694,   695,  1108,   942,   700,
     1959     723,   447,  1109,   479,  1141,   450,  1204,   451,   826,   965,
     1960    1057,     8,     9,    10,    11,    12,   466,   973,   175,   900,
     1961    1332,  1119,    64,   742,   816,   817,   212,   480,  1506,   214,
     1962    1506,   818,     0,     0,     0,   175,     0,   487,     0,   175,
     1963      31,     0,     0,     0,  1418,   430,     0,  1426,     0,     0,
     1964    1298,     0,     0,     0,     0,     0,     0,     0,     0,   829,
     1965       0,     0,   327,   455,     0,  1506,     0,  1506,    34,   212,
     1966       0,     0,     0,    37,     0,   182,   183,    40,    37,     0,
     1967     182,   183,    40,     0,    41,    42,    73,     0,   486,    41,
     1968      42,     0,  1465,     0,     0,     0,    37,  1469,   182,   183,
     1969      40,     0,   175,   495,  1124,   323,     0,    41,    42,     0,
     1970     184,     0,   213,   258,     0,  1530,   603,   410,    73,     0,
     1971     185,     0,   631,     0,     0,  1531,     0,  1491,     0,     0,
     1972     212,     0,     0,   184,     0,   636,   690,     0,     0,   636,
     1973       0,     0,   258,   185,     0,     0,     0,   601,   608,     0,
     1974       0,     0,     0,   221,     0,     0,   870,     0,     0,   632,
     1975     633,     8,     9,    10,    11,    12,     0,     0,   212,     0,
     1976     732,     0,   212,    37,     0,   182,   183,    40,     0,     0,
     1977       0,     0,     0,     0,    41,    42,     0,     0,   506,   480,
     1978      31,   729,   729,     0,     0,     0,   125,   125,   125,     0,
     1979       0,     0,     0,     0,   349,     0,     0,   528,     0,   480,
     1980     264,     0,   528,  1560,     0,   528,     0,   480,    34,  1560,
     1981     265,   214,     8,     9,    10,    11,    12,     0,     0,     0,
     1982    1560,     0,     0,     0,  1560,     0,     0,   455,   829,     0,
     1983       0,   352,     0,   724,     0,     0,   430,     0,     0,   729,
     1984     729,    31,     0,     0,     8,     9,    10,    11,    12,   212,
     1985     777,   738,   410,    64,     0,     0,     0,   125,   175,   125,
     1986     778,   430,     0,     0,     0,   430,     0,     0,     0,    34,
     1987       0,     0,     0,    31,    37,     0,   182,   183,    40,     0,
     1988       0,   213,     0,     0,   274,    41,    42,     0,     0,     0,
     1989       0,   175,     0,     0,   258,   349,     0,     0,     0,     0,
     1990       0,    34,     0,     0,     0,   448,    37,   175,   182,   183,
     1991      40,   609,     0,   610,     0,     0,     0,    41,    42,     0,
     1992       0,   611,   175,     0,     0,     0,    73,     0,     0,     0,
     1993     212,    73,     0,     0,     0,     8,     9,    10,    11,    12,
     1994     125,   819,     0,   698,     0,   410,   339,   212,   125,     0,
     1995     125,   125,     0,   700,     0,   125,     0,   125,   125,   636,
     1996     832,     0,   603,   918,    31,     0,     0,     0,     0,     0,
     1997    1124,     0,   925,   851,     0,     0,   927,   213,     0,     0,
     1998     212,  1330,     0,     8,     9,    10,    11,    12,     0,     0,
     1999     214,   603,    34,     0,     0,     0,   603,    37,     0,   182,
     2000     183,    40,   636,     0,     0,   349,   349,   349,    41,    42,
     2001       0,     0,    31,   729,     0,     0,     0,     0,     0,   175,
     2002       0,   729,   729,   729,   349,     0,   221,   125,     0,     0,
     2003       0,     0,     0,     0,  1530,     0,   410,     0,     0,     0,
     2004      34,     0,   724,     0,  1531,    37,     0,   182,   183,    40,
     2005       0,     0,     0,   480,     0,     0,    41,    42,   258,   738,
     2006       0,     0,   938,  1124,     0,     0,     0,     0,     0,   729,
     2007       0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     2008       0,     0,   264,     0,     0,     0,   214,     0,     0,     0,
     2009       0,     0,   265,    73,     0,   480,     0,     0,   349,     0,
     2010       0,    31,     0,   212,     0,     0,     0,   964,   352,     0,
     2011     430,     0,     0,    73,     0,     0,     0,     0,   952,     0,
     2012     953,    73,     0,     0,     0,     0,     0,   956,   957,    34,
     2013       0,   212,   962,     0,   258,   738,   212,     0,     0,     0,
     2014     992,     0,     0,     0,   967,     0,     0,   352,     0,   971,
     2015     544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
     2016       0,     0,     0,     0,     0,   352,  1124,    73,     0,     0,
     2017       0,   959,     0,   610,     0,  1000,     0,   724,     0,     0,
     2018       0,   960,     0,     0,   554,   175,     0,   724,     0,     0,
     2019     349,     0,   636,     0,     0,  1024,   636,   832,  1505,     0,
     2020    1505,     0,   724,     0,     0,     0,     0,     0,     0,   352,
     2021    1101,     0,  1035,     0,     0,     0,     0,     0,     0,     0,
     2022     601,     0,     0,     0,   212,     0,     0,     0,     0,     0,
     2023       0,     0,     0,     0,     0,  1505,     0,  1505,   212,     0,
     2024       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2025      18,    19,    20,    21,    22,    23,    24,    25,   506,     0,
     2026      26,    27,    28,     0,    64,   323,     0,     0,     0,    31,
     2027       0,     0,     0,     0,   352,     0,     0,  1045,  1046,  1047,
     2028    1048,     0,  1050,     0,     0,     0,   636,     0,     8,     9,
     2029      10,    11,    12,     0,     0,     0,    76,    34,  1094,     0,
     2030       0,     0,    37,     0,    38,    39,    40,     0,     0,     0,
     2031       0,     0,  1100,    41,    42,     0,     0,    31,     0,   352,
     2032     352,   352,  1116,     0,     0,     0,     0,     0,    76,     0,
     2033     430,   116,   212,     0,     0,     0,     0,     0,   352,    43,
     2034       0,   156,   125,   125,     0,    34,     0,     0,   349,    45,
     2035      37,  1115,     0,     0,    40,     0,   352,  1218,     0,     0,
     2036       0,    41,    42,   222,     0,     0,     0,    73,     0,     0,
     2037       0,     0,   125,   352,     0,   125,   125,     0,   125,     0,
     2038     125,   125,     0,   603,     0,   125,   125,    43,     0,     0,
     2039       0,  1143,     0,     0,     0,     0,   428,   146,  1151,     0,
     2040       0,   724,   724,  1155,   349,   349,     0,     0,  1159,    73,
     2041    1160,     0,   352,     0,  1162,  1163,  1164,     0,     0,  1167,
     2042       0,     0,     0,     0,  1203,     0,     0,     0,  1179,     0,
     2043       0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     2044       0,     0,     0,     0,     0,     0,  1194,  1195,     0,   352,
     2045       0,   354,     0,     0,     0,    78,     0,     0,     0,   724,
     2046     724,    31,     0,     0,   125,   636,     0,     0,     0,   125,
     2047     125,     0,     0,  1225,     0,   125,  1227,     0,     0,     0,
     2048       0,     0,   175,     0,     0,     0,     0,    78,     0,    34,
     2049       0,   352,     0,     0,    37,     0,     0,     0,    40,     0,
     2050       0,   352,     0,     0,   352,    41,    42,     0,     0,   221,
     2051       0,   352,     0,     0,  1242,     0,   352,     0,     0,     0,
     2052    1246,  1247,   223,   738,   212,     0,     0,     0,     0,     0,
     2053       0,   744,  1258,     0,     0,     0,     0,  1262,     0,     0,
     2054    1266,   745,  1267,     0,     0,  1269,    76,     0,     0,     0,
     2055       0,    76,   412,     0,     0,     0,     0,     0,  1277,   420,
     2056       0,     0,     0,     0,     0,     0,  1299,     0,     0,     0,
     2057       0,  1284,    85,  1286,  1287,  1288,  1289,     0,    73,     0,
     2058       0,     0,     0,   258,     0,     0,     0,     0,    64,  1296,
     2059       0,  1297,     0,     0,     0,   171,     0,  1386,     0,     0,
     2060       0,   724,     0,   738,    85,    55,    55,   116,     0,     0,
     2061     355,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2062       0,     0,     0,     0,  1325,  1326,     0,     0,     0,     0,
     2063       0,   412,     0,   724,     0,     0,     0,    55,     0,   224,
     2064       0,   724,   724,   724,     0,     0,   222,     0,     0,     0,
     2065       0,     0,   349,   349,     0,     0,     0,     0,   175,     0,
     2066       0,     0,   352,     0,     0,     0,  1203,     0,     0,    55,
     2067       0,     0,    55,     0,     0,  1361,  1362,     0,     0,     0,
     2068       0,     0,     0,     0,     0,  1372,     0,   584,     0,   724,
     2069       0,     0,     0,     0,     0,   588,     0,     0,   591,     0,
     2070     116,     0,     0,   212,     0,    78,     0,     0,     0,     0,
     2071      78,     0,     0,    76,     0,   352,   352,     0,   352,   352,
     2072       0,     0,     0,     0,     0,     0,     0,   362,   354,     0,
     2073       0,     0,     0,    76,     0,     0,     0,  1405,    73,     0,
     2074       0,    76,     0,     0,     0,     0,     0,     0,     0,  1409,
     2075       0,  1410,  1411,  1412,     0,     0,  1503,     0,  1507,     0,
     2076     347,   412,     0,  1416,     0,   420,     0,   354,     0,     0,
     2077       0,     0,  1427,   352,   352,     0,     0,   349,     0,     0,
     2078       0,     0,     0,     0,     0,   354,     0,    76,  1440,     0,
     2079       0,     0,     0,  1536,     0,  1538,     0,     0,     0,   212,
     2080       0,     0,     0,   116,     0,   223,     0,     0,     0,     0,
     2081       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2082       0,     0,    85,     0,     0,    55,  1203,    85,     0,   354,
     2083       0,     0,     0,  1203,     0,     0,     0,   352,  1567,     0,
     2084    1568,     0,     0,     0,  1489,  1490,     0,     0,     0,     0,
     2085     412,     0,     0,  1575,  1576,    55,     0,  1495,     0,   125,
     2086       0,     0,     0,     0,  1495,     0,     0,     0,     0,     0,
     2087       0,     0,    78,     0,     0,     0,     0,     0,     0,     0,
     2088     221,     0,     0,     0,     0,     0,  1203,   355,     0,     0,
     2089       0,     0,    78,  1555,   354,     0,     0,  1529,     0,     0,
     2090      78,  1535,    73,     0,     0,     0,     0,     0,     0,     0,
     2091       0,     0,     0,     0,     0,   352,     0,   352,     0,     0,
     2092       0,     0,   224,     0,     0,     0,   355,     0,     0,     0,
     2093    1557,     0,  1558,     0,     0,     0,     0,     0,     0,   354,
     2094     354,   354,   584,   584,   355,     0,    78,   352,     0,     0,
     2095       0,     0,     0,     0,     0,   352,   352,   352,   354,     0,
     2096    1573,  1574,     0,     0,     0,     0,   352,   352,  1577,  1578,
     2097       0,     0,     0,     0,     0,     0,   354,     0,     0,     0,
     2098      73,     0,     0,   125,     0,     0,     0,    76,   355,    85,
     2099       0,     0,     0,   354,     0,     0,     0,     0,     0,     0,
     2100       0,     0,     0,   352,   362,     0,     0,     0,     0,    85,
     2101       0,     0,     0,     0,     0,     0,     0,    85,     0,     0,
     2102       0,     0,     0,     0,     0,     0,     0,     0,     0,    76,
     2103       0,   911,   354,     0,     0,   914,     0,   347,     0,     0,
     2104       0,     0,     0,   362,     0,     0,     0,     0,     0,     0,
     2105       0,     0,     0,   355,     0,     0,     0,     0,     0,     0,
     2106       0,   362,     0,    85,     0,     0,     0,     0,   412,   354,
     2107       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2108      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2109      25,   352,     0,     0,     0,     0,    55,     0,   355,   355,
     2110     355,     0,    31,     0,     0,   362,     0,     0,     0,     0,
     2111       0,   354,     0,     0,     0,     0,     0,   355,     0,     0,
     2112       0,   354,     0,     0,   354,     0,     0,     0,     0,   222,
     2113      34,   354,     0,     0,     0,   355,   354,     0,   347,     0,
     2114      73,     0,     0,     0,     0,     0,    78,    73,     0,     0,
     2115       0,     0,   355,     0,     0,     0,     0,     0,     0,     0,
     2116       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2117     362,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2118       0,     0,     0,   584,     0,     0,     0,     0,    78,     0,
     2119       0,   355,     0,     0,     0,   123,   126,   127,    76,     0,
     2120      73,     0,     0,   347,     0,     0,     0,     0,     0,     0,
     2121       0,     0,     0,     0,     0,   362,   362,   362,     0,     0,
     2122       0,     0,     0,     0,     0,     0,     0,     0,   355,     0,
     2123       0,     0,     0,     0,   362,     0,     0,     0,     0,     0,
     2124       0,     0,     0,     0,     0,     0,     0,     0,   347,   347,
     2125     347,     0,   362,     0,     0,     0,     0,     0,     0,     0,
     2126       0,     0,     0,    85,     0,     0,   253,   347,   254,   362,
     2127     355,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2128     355,     0,   354,   355,     0,     0,     0,     0,   223,     0,
     2129     355,     0,     0,     0,     0,   355,   412,     0,     0,     0,
     2130       0,     0,     0,     0,     0,    85,     0,     0,   362,     2,
     2131     205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2132      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2133      23,    24,    25,     0,     0,   354,   354,     0,   354,   354,
     2134       0,   347,     0,     0,    31,   362,     0,     0,     0,   395,
     2135       0,     0,     0,     0,     0,     0,     0,    78,    76,   414,
     2136     415,     0,     0,     0,   419,     0,   421,   422,     0,     0,
     2137       0,     0,    34,     0,    35,  1157,    36,    37,     0,   173,
     2138     174,    40,     0,     0,     0,     0,     0,   362,    41,    42,
     2139       0,  1169,     0,   354,   354,     0,     0,   362,     0,     0,
     2140     362,     0,     0,     0,     0,   224,     0,   362,     0,     0,
     2141       0,     0,   362,     0,     8,     9,    10,    11,    12,    13,
     2142      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2143      24,    25,  -294,   347,    26,    27,    28,     0,     0,     0,
     2144     347,   355,     0,    31,     0,     0,     0,     0,     0,     0,
     2145       0,     0,     0,     0,     0,     0,     0,   354,     0,     0,
     2146       0,     0,     0,     0,     0,     0,     0,     0,  1237,     0,
     2147       0,    34,     0,     0,    85,     0,    37,     0,   336,   337,
     2148      40,     0,  -294,     0,     0,     0,     0,    41,    42,     0,
     2149       0,     0,     0,     0,   355,   355,     0,   355,   355,     0,
     2150     222,     0,     0,     0,     0,     0,     0,    55,     0,     0,
     2151       0,     0,     0,   643,     0,   338,     0,    78,     0,     0,
     2152       0,     0,    76,   634,     0,   164,     0,     0,     0,     0,
     2153       0,     0,     0,     0,     0,   354,     0,   354,     0,     0,
     2154       0,     0,     0,     0,   217,     0,     0,     0,     0,     0,
     2155       0,     0,   355,   355,     0,     0,     0,     0,   362,     0,
     2156     281,   282,     0,   283,     0,     0,     0,   354,     0,     0,
     2157       0,     0,     0,     0,    55,   354,   354,   354,     0,     0,
     2158       0,     0,     0,     0,     0,     0,   354,   354,     0,   284,
     2159     164,   347,     0,     0,     0,   285,   271,     0,     0,   286,
     2160      76,     0,   287,   288,   289,   290,    41,    42,     0,   291,
     2161     292,   362,   362,     0,   362,   362,   355,   293,     0,     0,
     2162       0,     0,     0,   354,     0,   164,     0,     0,     0,     0,
     2163       0,     0,   513,     0,    85,   368,     0,     0,     0,   374,
     2164       0,   296,   380,   298,   299,   300,   301,   347,   347,     0,
     2165       0,     0,     0,     0,     0,     0,     0,     0,     0,   223,
     2166       0,     0,     0,     0,     0,     0,     0,    55,     0,   362,
     2167     362,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2168       0,    78,     0,     0,     0,     0,     0,     0,   164,     0,
     2169       0,     0,     0,     0,   355,     0,   355,     0,     0,     0,
     2170     217,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2171       0,   354,     0,     0,     0,     0,     0,     0,   164,   461,
     2172       0,     0,     0,     0,     0,     0,   355,     0,     0,     0,
     2173       0,     0,     0,   362,   355,   355,   355,     0,     0,     0,
     2174       0,     0,   374,     0,     0,   355,   355,     0,     0,     0,
     2175     164,   821,   822,     0,     0,     0,     0,     0,     0,    78,
     2176      76,     0,     0,     0,     0,     0,     0,    76,     0,     0,
     2177       0,     0,     0,     0,   461,     0,   224,   164,     0,     0,
     2178       0,   856,   355,     0,   859,   860,     0,   863,     0,   865,
     2179     866,     0,     0,     0,   867,   868,     0,     0,    85,     0,
     2180       0,     0,     0,     0,     0,     0,     0,     0,    55,    55,
     2181       0,   362,     0,   362,     0,     0,     0,     0,     0,     0,
     2182      76,     0,     0,     0,   606,     0,     0,     0,     0,   630,
     2183       0,    55,     0,     0,     0,     0,     0,     0,     0,     0,
     2184       0,     0,     0,   362,     0,     0,   210,     0,     0,     0,
     2185      55,   362,   362,   362,     0,     0,   230,     0,   234,     0,
     2186     236,     0,   362,   362,     0,     0,     0,   245,     0,     0,
     2187     355,     0,     0,     0,     0,     0,    85,     0,   943,   944,
     2188       0,     0,     0,     0,   946,     0,     0,     0,     0,     0,
     2189       0,     0,     0,     0,     0,   347,   347,     0,   210,   362,
     2190     234,   236,   245,     0,    55,   164,   164,     0,     0,    55,
     2191       0,     0,   368,     0,     0,     0,     0,     0,     0,    78,
     2192       0,     0,     0,     0,     0,     0,    78,     0,     0,     0,
     2193       0,     0,     0,   461,     0,     0,   461,     0,     0,     0,
     2194       0,   210,   461,    55,   474,     2,   205,     4,     5,     6,
     2195       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2196      17,    18,    19,    20,    21,    22,    23,    24,    25,   741,
     2197       0,    26,    27,    28,     0,     0,     0,     0,     0,    78,
     2198      31,   164,     0,     0,     0,     0,     0,   362,     0,     0,
     2199       0,     0,   155,   461,     0,   461,     0,     0,   461,     0,
     2200     164,   461,   210,     0,   234,   236,   245,     0,    34,     0,
     2201      35,     0,    36,   368,     0,    38,    39,     0,     0,     0,
     2202     347,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2203       0,     0,     0,     0,     0,     0,    85,     0,   250,     0,
     2204     210,     0,     0,    85,   210,     0,    55,     0,   255,     0,
     2205       0,     0,     0,     0,     0,    -3,     0,     0,     0,     0,
     2206     504,     0,     0,     0,     0,     0,   164,     0,     0,    55,
     2207       0,     0,     0,     0,     0,     0,    55,     0,   368,     0,
     2208     606,     0,     0,   837,     0,     0,     0,     0,     0,     0,
     2209       0,     0,     0,     0,     0,     0,    85,     0,     0,     0,
     2210       0,     0,     0,     0,   155,     0,     0,     0,     0,   606,
     2211     210,     0,     0,     0,   606,     0,     0,     0,   385,     0,
     2212       0,     0,     0,   368,   368,   368,     0,     0,     0,    55,
     2213       0,   210,     0,     0,     0,     0,   234,   236,     0,     0,
     2214       0,   417,   368,     0,   245,     0,     0,     0,     0,     0,
     2215       0,     0,     0,     0,     0,   432,     0,     0,     0,     0,
     2216       0,     0,  1034,     0,   437,     8,     9,    10,    11,    12,
     2217       0,     0,     0,     0,   445,     0,     0,   741,     0,     0,
     2218       0,     0,     0,     0,     0,     0,     0,   210,     0,     0,
     2219       0,     0,   281,   282,    31,   283,     0,     0,   461,   471,
     2220       0,     0,     0,     0,   481,   210,     0,     0,     0,     0,
     2221     210,     0,   210,     0,     0,     0,   368,   489,   961,     0,
     2222       0,   284,    34,   499,     0,   503,     0,   285,     0,   210,
     2223       0,   286,   210,   210,   287,   288,   289,   290,    41,    42,
     2224       0,   291,   292,   533,     0,     0,     0,     0,   210,   293,
     2225       0,     0,     0,   741,     0,     0,     0,     0,     0,     0,
     2226       0,     0,   210,     0,   294,     0,   378,     0,  1233,   210,
     2227       0,     0,     0,   296,   827,   298,   299,   300,   301,     0,
     2228       0,     0,     0,     0,     0,     0,   593,     0,     0,     0,
     2229       0,   598,     0,     0,     0,     0,     0,     0,     0,     0,
     2230       0,     0,     0,     0,     0,     0,     0,     0,   368,     0,
     2231       0,     0,   630,     0,     0,   368,     0,     0,     0,   644,
     2232       0,     0,     0,   645,   646,     0,   648,     0,     0,     0,
     2233       0,     0,     0,   660,   661,     0,   662,   663,     0,   664,
     2234       0,   665,     0,     0,     0,     0,     0,  1177,     0,     0,
     2235       8,     9,    10,    11,    12,     0,     0,     0,   593,     0,
     2236       0,     0,     0,     0,     0,     0,   680,     0,     0,     0,
     2237       0,     0,     0,     0,     0,     0,     0,   281,   282,    31,
     2238     283,     0,     0,     0,     0,   210,     0,     0,     0,     0,
     2239       0,   691,  1321,     0,     0,     0,     0,     0,     0,     0,
     2240       0,     0,   697,     0,     0,     0,   284,    34,   461,     0,
     2241       0,     0,   285,   210,     0,     0,   286,     0,   210,   287,
     2242     288,   289,   290,    41,    42,   733,   291,   292,     0,     0,
     2243       0,   736,     0,     0,   293,     0,   471,     0,     0,     0,
     2244       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
     2245     164,   378,     0,     0,     0,     0,     0,     0,   296,  1178,
     2246     298,   299,   300,   301,     0,     0,   368,     0,     0,     0,
     2247       0,     0,     0,   773,     0,     0,     0,     0,     0,     0,
     2248       0,     0,     0,     0,     0,     0,     0,     0,     0,   788,
     2249       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2250       0,   606,     0,     0,     0,     0,   210,     0,     0,     0,
     2251       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2252     210,     0,   368,   368,     0,     0,   815,     0,     0,     0,
     2253       0,     0,     0,     0,     0,   825,     0,     0,     0,     0,
     2254     504,     0,   828,     0,     0,   281,   282,   835,   283,     0,
     2255       0,     0,     0,     0,     0,     0,     0,     0,   850,     0,
     2256       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2257       0,     0,     0,     0,   284,     0,     0,     0,     0,     0,
     2258     285,     0,   461,     0,   286,     0,     0,   287,   288,   289,
     2259     290,    41,    42,     0,   291,   292,     0,     0,     0,   890,
     2260       0,   210,   293,     0,     0,     0,     0,     0,     0,     0,
     2261       0,     0,     0,     0,   210,     0,     0,   294,     0,   378,
     2262       0,     0,   379,     0,     0,     0,   296,   380,   298,   299,
     2263     300,   301,     0,   210,     0,   835,     0,     0,     0,     0,
     2264       0,   741,     0,     0,     1,     2,     3,     4,     5,     6,
     2265       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2266      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2267       0,    26,    27,    28,    29,     0,     0,    30,     0,     0,
     2268      31,    32,     0,   217,     0,     0,     0,     0,     0,     0,
     2269     250,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2270     968,   969,     0,     0,     0,    33,     0,     0,    34,     0,
     2271      35,     0,    36,    37,   986,    38,    39,    40,     0,     0,
     2272     210,   741,   341,   363,    41,    42,     0,     0,     0,     0,
     2273       0,  1001,     0,  1002,     0,     0,     0,  1006,     0,     0,
     2274       0,     0,     0,     0,     0,     0,   210,     0,     0,     0,
     2275      43,     0,    44,     0,     0,     0,   413,     0,     0,     0,
     2276      45,     0,     0,   413,     0,     0,     0,     0,     0,     0,
     2277     368,   368,     0,     0,   210,     0,     0,     0,     0,   217,
     2278       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2279      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2280      26,    27,    28,  1039,     0,     0,   210,     0,     0,    31,
     2281    1040,     0,     0,     0,     0,     0,     0,   210,     0,     0,
     2282       0,     0,     0,  1042,     0,  1043,     0,     0,     0,     0,
     2283       0,     0,     0,     0,     0,   413,     0,    34,     0,  1055,
     2284       0,     0,   109,     0,    38,    39,  1059,     0,     0,     0,
     2285       0,     0,     0,    41,    42,     0,     0,     0,  1097,     0,
     2286       0,  1098,     0,     0,     0,     0,     0,     0,     0,     0,
     2287       0,     0,     0,     0,     0,     0,     0,     0,     0,   598,
     2288       0,    44,     0,     0,     0,     0,     0,     0,     0,   110,
     2289       0,   413,     0,     0,     0,   368,     0,     0,   210,   413,
     2290     589,     0,   413,   592,     0,     0,     0,     0,     0,     0,
     2291       0,     0,   363,     0,     0,     0,   622,     0,     0,     0,
     2292       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2293       0,     0,     0,     0,     0,   640,     0,     0,   341,     0,
     2294       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2295       0,     0,     0,   461,     0,   461,     0,     0,     0,     0,
     2296     281,   282,     0,   283,     0,   413,     0,     0,  1161,   413,
     2297       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2298       0,     0,     0,     0,     0,   210,     0,     0,     0,   284,
     2299     461,   321,   461,     0,     0,   649,     0,   138,   139,   286,
     2300     363,   345,   287,   650,   289,   290,    41,    42,     0,   291,
     2301     292,     0,     0,   381,   381,     0,     0,   293,     0,     0,
     2302     164,     0,     0,   413,   533,     0,     0,     0,     0,     0,
     2303       0,  1226,   294,     0,   651,     0,   652,   379,     0,     0,
     2304       0,   296,   380,   298,   299,   300,   301,     0,     0,     0,
     2305       0,     0,     0,     0,   413,     0,     0,   363,     0,     0,
     2306    1239,     0,     0,     0,     0,  1241,     0,     0,     0,     0,
     2307       0,     0,     0,  1245,     0,     0,     0,     0,     0,     0,
     2308       0,   210,     0,     0,   321,     0,     0,     0,     0,     0,
     2309       0,     0,     0,     0,     0,     0,     0,   413,     0,     0,
     2310     341,   363,     0,     0,  1271,     0,     0,     0,     0,   485,
     2311       0,     0,     0,     0,     0,     0,  1279,     0,     0,  1280,
     2312       0,  1281,     0,     0,     0,     0,     0,     0,     0,     0,
     2313       0,     0,     0,     0,     0,  1290,  1291,     0,     0,     0,
     2314       0,     0,     0,     0,     0,     0,   413,   413,     0,     0,
     2315       0,     0,     0,     0,     0,     0,     0,  1304,     0,     0,
     2316       0,     0,     0,     0,     0,   830,   363,     0,   363,     0,
     2317       0,     0,     0,     0,     0,     0,     0,   622,     0,   622,
     2318     622,     0,     0,     0,  1327,     0,   622,     0,     0,   514,
     2319       0,   516,   519,     0,     0,     0,   869,   363,     0,   522,
     2320     523,     0,   363,     0,   516,   516,     0,     0,     0,     0,
     2321       0,   363,   363,   363,     0,     0,   516,     0,     0,     0,
     2322       0,     0,     0,     0,     0,   381,     0,     0,     0,     0,
     2323     363,     0,     0,     0,     0,   413,   912,     0,     0,   413,
     2324     915,     0,     0,     0,     0,     0,   917,     0,     0,     0,
     2325       0,     0,   516,     0,     0,     0,     0,     0,     0,     0,
     2326       0,     0,     0,     0,   341,   363,   413,     0,   413,     0,
     2327       0,     0,   413,     0,     0,     0,     0,     0,     0,   281,
     2328     282,  1397,   283,  1398,     0,     0,     0,     0,   516,     0,
     2329       0,     0,     0,     0,     0,     0,  1407,     0,  1408,     0,
     2330       0,     0,     0,     0,   363,   622,     0,     0,   284,     0,
     2331       0,     0,     0,     0,   285,     0,  1415,     0,   286,     0,
     2332       0,   287,   288,   289,   290,    41,    42,   735,   291,   292,
     2333       0,     0,  1433,  1435,     0,     0,   293,   210,     0,     0,
     2334     341,   363,     0,     0,  1441,   413,   413,  1245,     0,     0,
     2335       0,   294,     0,   378,     0,     0,     0,     0,     0,   812,
     2336     296,   380,   298,   299,   300,   301,   769,     0,     0,  1464,
     2337       0,     0,     0,     0,     0,     0,     0,     0,  1471,   782,
     2338       0,  1473,     0,  1475,  1477,  1479,   769,   413,     0,   769,
     2339       0,     0,     0,     0,     0,     0,   363,     0,     0,     0,
     2340     792,   793,   830,   363,     0,     0,     0,   622,     0,   622,
     2341       0,     0,     0,     0,     0,     0,     0,     0,     0,   622,
     2342       0,     0,   814,     0,     0,  1510,     0,  1512,     0,     0,
     2343    1245,     0,   823,     0,     0,     0,     0,     0,     0,   345,
     2344       0,     0,     0,     0,   782,  1524,     0,     0,     0,     0,
     2345       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2346       0,     0,     0,     0,     0,   516,   516,   516,   516,   516,
     2347     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
     2348     516,   516,   516,     0,     0,     0,     0,     0,     0,     0,
     2349       0,     0,   830,     0,   889,     0,     0,     0,     0,     0,
     2350     413,     0,     0,   381,     0,     0,   413,     0,   516,     0,
     2351       0,     0,     0,     0,   413,     0,     0,     0,     0,     0,
     2352       0,     0,     0,     0,     0,     0,     0,   622,   622,     0,
     2353       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2354       0,     0,     0,   345,     0,     0,     0,     0,     0,     0,
     2355       0,     0,     0,     0,   363,     0,     0,     0,     0,     0,
     2356     413,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2357      17,    18,    19,    20,    21,    22,    23,    24,    25,   413,
     2358    1158,    26,    27,    28,     0,     0,     0,     0,     0,   363,
     2359      31,   453,     0,     0,     0,   413,  1170,     0,   622,   622,
     2360    1175,     0,     0,     0,     0,     0,     0,   516,     0,     0,
     2361     363,   363,     0,     0,     0,     0,     0,     0,    34,   782,
     2362       0,   991,     0,     0,     0,    38,    39,   996,     0,   516,
     2363       0,     0,     0,     0,  1005,     0,     0,     0,     0,     0,
     2364       0,     0,   516,     0,     0,     0,     0,     0,     0,     0,
     2365       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2366       0,     0,   454,     0,     0,     0,   711,     0,     0,     0,
     2367     110,   830,   413,  1238,     0,     0,     0,     0,  1022,  1023,
     2368       0,   345,     0,     0,   622,     0,     0,     0,   516,     0,
     2369       0,     0,     0,     0,     0,     0,   345,     0,     0,     0,
     2370       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2371       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2372     516,     0,     0,     0,     0,     0,     0,     0,     0,   363,
     2373       0,     0,     0,     0,     0,   516,  1053,     0,     0,     0,
     2374     381,     0,     0,  -517,     0,     0,     1,     2,     3,     4,
     2375       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2376      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2377      25,     0,     0,    26,    27,    28,    29,     0,     0,    30,
     2378       0,     0,    31,    32,     0,     0,     0,     0,     0,   341,
     2379       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2380       0,     0,     0,     0,     0,     0,     0,    33,     0,   363,
     2381      34,     0,    35,     0,    36,    37,   321,    38,    39,    40,
     2382       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
     2383       0,     0,  1139,  1140,     0,     0,     0,     0,     0,   381,
     2384       0,     0,     0,     0,     0,   996,     0,     0,  1149,     0,
     2385     769,     0,    43,     0,    44,     0,     0,     0,   363,   363,
     2386       0,     0,    45,     0,     0,     0,     0,     0,     0,     0,
     2387    1165,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2388       0,  1180,     0,     0,     0,     0,   516,     0,     0,     0,
     2389       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2390       0,     0,     0,   381,     0,  1198,     0,     0,     0,     0,
     2391       0,     0,     0,     0,     0,     0,     0,   516,     0,     0,
     2392     996,   996,     0,     0,     0,     0,     0,     0,     0,   516,
     2393       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2394       0,  1230,     0,     0,     1,     2,     3,     4,     5,     6,
     2395       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2396      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2397     516,    26,    27,    28,    29,     0,     0,    30,     0,     0,
     2398      31,    32,     0,   363,     0,     0,     0,     0,   996,     0,
     2399       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2400       0,     0,     0,     0,     0,    33,     0,   889,    34,     0,
     2401      35,     0,    36,    37,     0,    38,    39,    40,     0,     0,
     2402       0,     0,  1282,  1283,    41,    42,     0,     0,     0,     0,
     2403       0,     0,   281,   282,     0,   283,     0,     0,     0,     0,
     2404       0,     0,   516,     0,     0,     0,     0,     0,     0,     0,
     2405      43,     0,    44,     0,     0,     0,  -521,     0,     0,     0,
     2406      45,   284,     0,     0,     0,     0,     0,   285,     0,     0,
     2407       0,   286,     0,   413,   287,   288,   289,   290,    41,    42,
     2408       0,   291,   292,     0,     0,     0,   516,     0,     0,   293,
     2409       0,     0,     0,     0,     0,     0,     0,     0,   413,   413,
     2410     516,   516,     0,   996,   294,     0,   378,     0,     0,     0,
     2411       0,   781,     0,   296,   380,   298,   299,   300,   301,     0,
     2412       0,     0,     0,   413,     0,     1,     2,   205,     4,     5,
     2413       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2414      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2415       0,     0,    26,    27,    28,    29,     0,     0,    30,   281,
     2416     282,    31,  1062,  1063,  1390,  1064,   769,     0,  1065,  1066,
     2417    1067,  1068,  1069,  1070,  1071,  1072,     0,     0,     0,  1073,
     2418       0,     0,     0,  1074,  1075,     0,    33,     0,   284,    34,
     2419       0,    35,     0,    36,   649,     0,    38,    39,   286,     0,
     2420       0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
     2421       0,     0,     0,     0,     0,     0,   293,     0,     0,     0,
     2422       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2423       0,   294,     0,  1076,     0,     0,   170,     0,     0,     0,
     2424     296,   297,   298,   299,   300,   301,     0,     0,     0,     0,
     2425    1077,     0,  1450,     0,  -129,     0,     0,     0,     0,     0,
     2426       1,     2,   205,     4,     5,     6,     7,     8,     9,    10,
     2427      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2428      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2429      29,     0,     0,    30,   281,   282,    31,   283,     0,     0,
     2430       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2431     516,     0,     0,   281,   282,     0,   283,     0,     0,     0,
     2432       0,     0,     0,   284,    34,     0,    35,   516,    36,   285,
     2433       0,    38,    39,   286,  1516,     0,   287,   288,   289,   290,
     2434      41,    42,   284,   291,   292,     0,     0,     0,   285,     0,
     2435       0,   293,   286,     0,     0,   287,   288,   289,   290,    41,
     2436      42,     0,   291,   292,     0,     0,   294,     0,  1076,     0,
     2437     293,     0,     0,     0,     0,   296,   297,   298,   299,   300,
     2438     301,     0,     0,     0,     0,   294,   321,   378,     0,  -129,
     2439     993,     0,     0,     0,   296,   380,   298,   299,   300,   301,
     2440     516,   516,     1,     2,   205,     4,     5,     6,     7,     8,
     2441       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2442      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2443      27,    28,    29,     0,     0,    30,   281,   282,    31,   283,
     2444       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2445      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2446      26,    27,    28,     0,     0,   284,    34,     0,    35,    31,
     2447      36,   285,     0,    38,    39,   286,     0,     0,   287,   288,
     2448     289,   290,    41,    42,     0,   291,   292,     0,     0,     0,
     2449       0,     0,     0,   293,     0,     0,     0,    34,     0,     0,
     2450       0,     0,   109,     0,    38,    39,     0,     0,   294,     0,
     2451      44,     0,     0,    41,    42,     0,     0,   296,   297,   298,
     2452     299,   300,   301,     2,   205,     4,     5,     6,     7,     8,
     2453       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2454      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2455      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2456       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2457      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2458      25,  -294,     0,     0,     0,   284,    34,     0,    35,     0,
     2459      36,   285,    31,    38,    39,   286,     0,     0,   287,   288,
     2460     289,   290,    41,    42,     0,   291,   292,     0,     0,     0,
     2461       0,     0,     0,   293,     0,     0,     0,     0,     0,     0,
     2462      34,     0,     0,     0,     0,     0,     0,     0,   294,     0,
     2463     343,  -294,     0,     0,     0,   781,     0,   296,   344,   298,
     2464     299,   300,   301,     2,   205,     4,     5,     6,     7,     8,
     2465       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2466      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2467      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2468       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2469      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2470      25,  -295,     0,     0,     0,   284,    34,     0,    35,     0,
     2471      36,   285,    31,    38,    39,   286,     0,     0,   287,   288,
     2472     289,   290,    41,    42,     0,   291,   292,     0,     0,     0,
     2473       0,     0,     0,   293,     0,     0,     0,     0,     0,     0,
     2474      34,     0,     0,     0,     0,     0,     0,     0,   294,     0,
     2475     931,  -295,     0,     0,     0,   781,     0,   296,   344,   298,
     2476     299,   300,   301,     2,   205,     4,     5,     6,     7,     8,
     2477       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2478      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2479      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2480       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2481      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2482      26,    27,    28,     0,     0,   284,    34,     0,    35,    31,
     2483      36,   285,     0,    38,    39,   286,     0,     0,   287,   288,
     2484     289,   290,    41,    42,     0,   291,   292,     0,     0,     0,
     2485       0,     0,     0,   293,     0,     0,     0,    34,     0,     0,
     2486       0,     0,     0,     0,    38,    39,     0,     0,   294,     0,
     2487     931,     0,     0,     0,     0,   781,     0,   296,   600,   298,
     2488     299,   300,   301,     2,   205,     4,     5,     6,     7,     8,
     2489       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2490      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2491      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2492       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2493      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2494      26,    27,    28,     0,     0,   284,    34,     0,    35,    31,
     2495      36,   285,     0,    38,    39,   286,     0,     0,   287,   288,
     2496     289,   290,    41,    42,     0,   291,   292,     0,     0,     0,
     2497       0,     0,     0,   293,     0,     0,     0,    34,     0,     0,
     2498       0,     0,     0,     0,   206,    39,     0,     0,   294,     0,
     2499     343,     0,     0,     0,     0,     0,     0,   296,   344,   298,
     2500     299,   300,   301,     2,   205,     4,     5,     6,     7,     8,
     2501       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2502      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2503      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2504       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2505       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2506       0,     0,     0,     0,     0,   284,    34,     0,    35,     0,
     2507      36,   285,     0,    38,    39,   286,     0,     0,   287,   288,
     2508     289,   290,    41,    42,     0,   291,   292,     0,     0,     0,
     2509       0,     0,     0,   293,     0,     0,     0,     0,     0,     0,
     2510       0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
     2511     931,     0,     0,     0,     0,     0,     0,   296,   344,   298,
     2512     299,   300,   301,     2,   205,     4,     5,     6,     7,     8,
     2513       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2514      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2515      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2516       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2517       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2518       0,     0,     0,     0,     0,   284,    34,     0,    35,     0,
     2519      36,   285,     0,   206,    39,   286,     0,     0,   287,   288,
     2520     289,   290,    41,    42,     0,   291,   292,     0,     0,     0,
     2521       0,     0,     0,   293,     0,     0,     0,     0,     0,     0,
     2522       0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
     2523    1020,     0,     0,     0,     0,     0,     0,   296,  1021,   298,
     2524     299,   300,   301,     2,   205,     4,     5,     6,     7,     8,
     2525       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2526      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2527      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2528       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2529      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2530      26,    27,    28,     0,     0,   284,    34,     0,    35,    31,
     2531      36,   285,     0,   206,    39,   286,     0,     0,   287,   288,
     2532     289,   290,    41,    42,     0,   291,   292,     0,     0,     0,
     2533       0,     0,     0,   293,     0,     0,     0,    34,     0,     0,
     2534       0,     0,     0,     0,   206,    39,     0,     0,   294,     0,
     2535     378,     0,     0,     0,     0,     0,     0,   296,   380,   298,
     2536     299,   300,   301,   204,     2,   205,     4,     5,     6,     7,
     2537       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2538      18,    19,    20,    21,    22,    23,    24,    25,     0,   270,
     2539      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2540       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2541      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2542       0,    26,    27,    28,   492,   493,   494,    34,     0,    35,
     2543      31,    36,    37,     0,   206,    39,    40,     0,     0,     0,
     2544       0,     0,     0,    41,    42,     0,     0,     0,     0,     0,
     2545       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2546       0,     0,     0,     0,     0,    38,    39,     0,     0,    43,
     2547       0,   207,     0,     0,     0,     0,     0,     0,     0,   208,
     2548       1,     2,   205,     4,     5,     6,     7,     8,     9,    10,
     2549      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2550      21,    22,    23,    24,    25,  -294,     0,    26,    27,    28,
     2551      29,     0,     0,    30,     0,     0,    31,     0,     0,     0,
     2552       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2553       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2554       0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
     2555       0,    38,    39,     0,     0,  -294,     1,     2,   205,     4,
     2556       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2557      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2558      25,     0,     0,    26,    27,    28,    29,     0,    44,    30,
     2559       0,     0,    31,     0,     0,     0,   110,     0,     0,     0,
     2560       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2561       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2562      34,     0,    35,     0,    36,     0,     0,    38,    39,   204,
     2563       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
    19552564      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    1956       22,    23,    24,  -294,  1227,    25,    26,    27,   693,    30,
    1957      694,  1107,   941,   722,    30,   213,   211,  1056,   478,   213,
    1958     1108,  1140,   825,  1118,   899,   478,   935,   964,  1331,   741,
    1959      972,   815,     0,     0,   816,   174,   257,    33,   817,   602,
    1960        0,   252,    33,   253,  1391,   630,     0,     0,     0,    37,
    1961       38,     0,   174,  -294,     0,     0,   174,  1424,   635,   211,
    1962        0,     0,   635,     0,     0,   257,     0,     8,     9,    10,
    1963       11,    12,     0,     0,     0,     0,     0,     0,   478,   776,
    1964        0,   409,     0,  1123,   935,   935,   337,     0,     0,   777,
    1965        0,     0,     0,     0,   109,    30,     0,     0,  1417,   653,
    1966        0,  1425,     0,     0,     0,  1217,   213,     0,     0,     0,
    1967        0,     0,   479,     0,     0,  1504,     0,  1504,     0,   174,
    1968      211,     0,     0,    33,   394,     0,     0,   348,     0,     0,
    1969        0,     0,   479,     0,   413,   414,     0,   728,   728,   418,
    1970      479,   420,   421,     0,     0,     0,  1464,     0,     0,     0,
    1971        0,  1468,  1504,     0,  1504,     0,     0,     0,   211,     0,
    1972        0,     0,   211,     0,     0,   958,   723,   609,     0,   429,
    1973        0,     0,     0,     0,     0,   959,     0,     0,   505,     0,
    1974      716,  1490,   322,     0,   737,   463,    63,   213,     0,     8,
    1975        9,    10,    11,    12,   429,   728,   728,     0,   429,     0,
    1976        0,     0,     0,     0,     0,     0,     0,     8,     9,    10,
    1977       11,    12,     0,   600,   607,     0,     0,    30,   749,    36,
    1978      753,   181,   182,    39,     0,   631,   632,   257,   348,     0,
    1979       40,    41,     0,     0,     0,    30,     0,   213,     0,     0,
    1980        0,     0,     0,     0,     0,    33,     0,     0,     0,   211,
    1981       36,     0,   181,   182,    39,     0,   697,     0,   409,     0,
    1982        0,    40,    41,    33,   698,     0,   699,  1559,    36,     0,
    1983      181,   182,    39,  1559,   818,     0,     0,     0,     0,    40,
    1984       41,     0,     0,     0,  1559,   174,     0,   608,  1559,   609,
    1985        0,     0,   635,   831,   935,   602,     0,   610,     0,     0,
    1986        0,     0,     0,     0,     0,   697,   850,   409,     0,     0,
    1987        0,   935,     0,     0,     0,   699,     0,     0,   174,     0,
    1988        0,     0,     0,     0,   602,     0,     0,     0,     0,   602,
    1989      211,     0,     0,     0,   174,   635,     0,  1329,   348,   348,
    1990      348,     0,     0,     0,     0,  1385,     0,   211,     0,   174,
    1991       36,     0,   181,   182,    39,     0,     0,   348,     0,     0,
    1992      213,    40,    41,     0,     0,     0,     0,     0,     0,   728,
    1993        0,     0,   891,     0,     0,   723,     0,   728,   728,   728,
    1994      211,     0,     0,     0,   935,   935,   479,   697,   213,   409,
    1995        0,   257,   737,   213,     0,   937,     0,   699,     0,     0,
    1996        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    1997       17,    18,    19,    20,    21,    22,    23,    24,    72,     0,
    1998       25,    26,    27,     0,     0,   728,     0,     0,   479,    30,
    1999      452,   348,     0,   944,     0,     0,     0,     0,     0,   947,
    2000      963,     0,     0,   429,     0,    75,   174,     0,     0,    72,
    2001       36,     0,   181,   182,    39,     0,     0,    33,     0,     0,
    2002        0,    40,    41,     0,    37,    38,     0,   257,   737,     0,
    2003        0,     0,     0,   991,     0,     0,    75,     0,     0,     0,
    2004        0,   213,     0,     0,   220,     0,     0,  1529,     0,   409,
    2005        0,     0,     0,     0,     0,   213,     0,  1530,   485,     0,
    2006        0,   453,     0,   211,  1502,   710,  1506,     0,     0,   109,
    2007      723,   221,     0,     0,     0,     0,     0,     0,     0,     0,
    2008      723,     0,     0,   348,     0,   635,   820,   821,  1023,   635,
    2009      831,   211,     0,     0,     0,   723,   211,     0,     0,     0,
    2010        0,  1535,     0,  1537,     0,  1034,    36,     0,   181,   182,
    2011       39,     0,     0,     0,     0,     0,   855,    40,    41,   858,
    2012      859,     0,   862,     0,   864,   865,     0,     0,     0,   866,
    2013      867,     0,   351,   543,   544,   545,   546,   547,   548,   549,
    2014      550,   551,   552,   263,     0,     0,  1566,     0,  1567,   213,
    2015        0,     0,     0,   264,   951,     0,   952,    63,     0,   353,
    2016        0,  1574,  1575,   955,   956,     0,     0,   553,   961,     0,
    2017        0,     0,   174,     0,   653,     0,   411,     0,     0,   635,
    2018      966,  1060,     0,   419,   211,   970,     0,     0,     8,     9,
    2019       10,    11,    12,     0,     0,     0,     0,     0,   211,     0,
    2020        0,     0,     0,     0,     0,     0,   447,     0,     0,     0,
    2021        0,   999,     0,   942,   943,  1115,    30,     0,   505,   945,
    2022        0,     0,     0,   429,   115,     0,     0,    72,     0,     0,
    2023        0,     0,    72,     0,     0,     0,     0,     0,     0,     0,
    2024        0,   348,     0,     0,    33,     0,     0,     0,     0,    36,
    2025        0,   181,   182,    39,    75,   411,   600,     0,     0,    75,
    2026       40,    41,     0,     0,     0,     0,   124,   124,   124,     0,
    2027        0,     0,     0,   653,     0,     0,   602,     0,     0,     0,
    2028        0,     0,     0,     0,     0,     0,  1529,     0,   409,   427,
    2029        0,     0,   211,     0,   723,   723,  1530,   348,   348,     0,
    2030        0,     0,     0,     0,     8,     9,    10,    11,    12,     0,
    2031        0,   583,     0,  1044,  1045,  1046,  1047,  1202,  1049,   587,
    2032        0,     0,   590,     0,     0,     0,     0,   220,     0,     0,
    2033        0,     0,    30,     0,  1093,     0,     0,   124,     0,   124,
    2034        0,   213,     0,     0,     0,     0,     0,     0,  1099,     0,
    2035        0,     0,   723,   723,   221,     0,     0,     0,   635,     0,
    2036       33,     0,     0,     0,   273,    36,     0,   181,   182,    39,
    2037        0,     0,     0,  1060,     0,     0,    40,    41,     0,     0,
    2038        0,     0,     0,     0,     0,   411,     0,  1114,     0,   419,
    2039        0,     0,     0,     0,    72,     0,     0,     0,     0,     0,
    2040        0,     0,   183,     0,     0,     0,     0,     0,     0,   351,
    2041        0,     0,   184,     0,    72,     0,   737,     0,     0,     0,
    2042      124,    75,    72,     0,     0,     0,     0,  1142,   124,     0,
    2043      124,   124,     0,     0,  1150,   124,   353,   124,   124,  1154,
    2044        0,    75,     0,     0,  1158,     0,  1159,     0,   351,    75,
    2045     1161,  1162,  1163,     0,     0,  1166,     0,     0,     0,  1298,
    2046        0,     0,     0,     0,  1178,     0,   351,     0,    72,   174,
    2047        0,     0,     0,     0,   411,   353,   257,     0,     0,  1297,
    2048        0,    63,  1193,  1194,   211,     0,     0,     0,     8,     9,
    2049       10,    11,    12,   353,   723,    75,   737,     0,     0,     0,
    2050      115,     0,     0,     0,     0,     0,     0,   124,     0,  1224,
    2051      351,     0,  1226,     0,     0,     0,    30,     0,     0,     0,
    2052      213,     0,     0,     0,     0,     0,   723,     0,     0,     0,
    2053        0,     0,     0,     0,   723,   723,   723,   353,     0,     0,
    2054        0,     0,     0,     0,    33,   348,   348,     0,     0,    36,
    2055     1241,   181,   182,    39,     0,     0,  1245,  1246,     0,  1202,
    2056       40,    41,     0,     0,     0,     0,   583,   583,  1257,     0,
    2057        0,     0,     0,  1261,     0,   351,  1265,     0,  1266,     0,
    2058        0,  1268,   723,     0,     0,     0,   263,     0,     0,     0,
    2059        0,     0,     0,   115,  1276,     0,   264,     0,     0,     0,
    2060        0,     0,   353,  1232,     0,     0,     0,  1283,     0,  1285,
    2061     1286,  1287,  1288,     0,     0,     0,   213,     0,     0,     0,
    2062      351,   351,   351,     0,     0,  1295,     0,  1296,     0,     0,
    2063        0,   170,     0,     0,     0,     0,     0,     0,     0,   351,
    2064        0,     0,     0,     0,     0,   174,     0,   353,   353,   353,
    2065        0,     0,     0,     0,     0,   910,     0,   351,     0,   913,
    2066     1324,  1325,     0,   211,     0,     0,   353,     0,    72,     0,
    2067      348,     0,    77,     0,   351,     0,     0,     0,     0,     0,
    2068        0,     0,     0,     0,   353,     0,     0,     0,     0,     0,
    2069        0,     0,   411,     0,     0,    75,   115,     0,     0,    84,
    2070        0,   353,     0,    77,     0,    54,    54,     0,     0,     0,
    2071       72,  1360,  1361,   351,     0,     0,     0,     0,     0,  1202,
    2072        0,  1371,     0,     0,     0,     0,  1202,  1320,     0,     0,
    2073       84,     0,     0,     0,     0,     0,    54,    75,   222,     0,
    2074      353,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2075      351,     0,     0,     0,     0,     0,     0,     0,     0,   211,
    2076        0,     0,     0,     0,     0,   223,     0,     0,    54,     0,
    2077        0,    54,     0,  1404,     0,     0,     0,   353,     0,  1202,
    2078        0,     0,     0,     0,     0,  1408,  1554,  1409,  1410,  1411,
    2079        0,     0,   351,     0,     0,     0,     0,     0,     0,  1415,
    2080        0,     0,   351,     0,     0,   351,     0,   583,  1426,     0,
    2081      220,     0,   351,     0,     0,     0,     0,   351,     0,   353,
    2082        0,     0,   124,   124,  1439,     0,   354,     0,     0,   353,
    2083        0,     0,   353,     0,     0,     0,     0,   221,     0,   353,
    2084        0,     0,     0,     0,   353,     0,     0,     0,     0,     0,
    2085        0,     0,   124,   361,     0,   124,   124,     0,   124,   346,
    2086      124,   124,     0,     0,     0,   124,   124,     0,     0,     0,
    2087        0,     0,     0,     0,     0,     0,     0,     0,     0,    72,
    2088     1488,  1489,     0,     0,     0,     0,     0,     0,     0,     0,
    2089        0,     0,     0,  1494,     0,     0,     0,     0,     0,     0,
    2090     1494,     0,     0,     0,     0,     0,    75,     0,     0,     0,
     2565      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2566       0,     0,     0,     0,    44,    31,     0,     0,     0,     0,
     2567       0,     0,   110,     0,     0,     0,     0,     0,     0,     0,
    20912568       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2092      411,    77,     0,     0,    54,     0,    77,     0,     0,     0,
    2093        0,     0,     0,  1528,     0,     0,     0,  1534,     0,     0,
    2094        0,     0,     0,     0,   124,     0,     0,     0,    84,   124,
    2095      124,     0,     0,    84,    54,   124,     0,     0,     0,     0,
    2096        0,     0,     0,   351,     0,     0,  1556,     0,  1557,     0,
     2569       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2570     206,    39,     0,     2,   205,     4,     5,     6,     7,     8,
     2571       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2572      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2573      27,    28,     0,     0,     0,     0,     0,   207,    31,     0,
     2574       0,     0,     0,     0,     0,   270,     0,     0,     0,     0,
     2575       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2576       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
     2577      36,    37,     0,   206,    39,    40,     0,     0,     0,     0,
     2578       0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
     2579       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2580       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
     2581     207,     0,     0,     0,     0,     0,     0,     0,   208,     2,
     2582     205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2583      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2584      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2585       0,     0,     0,     0,    31,     0,     0,     0,     0,     8,
     2586       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2587      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2588      27,    28,    34,     0,    35,     0,    36,     0,    31,    38,
     2589      39,     0,     2,   205,     4,     5,     6,     7,     8,     9,
     2590      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2591      20,    21,    22,    23,    24,    25,    34,     0,    26,    27,
     2592      28,     0,     0,    38,    39,  -400,   687,    31,     0,     0,
     2593       0,     0,     0,     0,   634,     0,     0,     0,     0,     0,
     2594       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2595       0,     0,     0,     0,     0,    34,     0,    35,   643,    36,
     2596     338,     0,    38,    39,     0,     0,     0,     0,   110,     0,
     2597       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2598       0,     0,     0,     0,  1369,     0,     0,     0,     0,     0,
     2599       0,     0,     0,     0,     0,     0,     0,     0,     0,   687,
     2600       0,     0,     0,     0,     0,     0,     0,   634,     2,   205,
     2601       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2602      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2603      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2604       0,     0,     0,    31,     0,     0,     0,     0,     8,     9,
     2605      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2606      20,    21,    22,    23,    24,    25,  -294,     0,    26,    27,
     2607      28,    34,     0,    35,     0,    36,     0,    31,    38,    39,
     2608       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2609       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2610    1371,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2611      37,     0,   336,   337,    40,   687,  -294,     0,     0,     0,
     2612       0,    41,    42,   634,     2,   205,     4,     5,     6,     7,
     2613       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2614      18,    19,    20,    21,    22,    23,    24,    25,     0,   338,
     2615      26,    27,    28,     0,     0,     0,     0,   110,     0,    31,
     2616       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2617       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2618       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
     2619       0,    36,     0,     0,   206,    39,     0,     2,   205,     4,
     2620       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2621      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2622      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2623       0,   269,    31,     0,     0,     0,     0,     0,     0,   629,
     2624       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2625       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2626      34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
     2627       2,   205,     4,     5,     6,     7,     8,     9,    10,    11,
     2628      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2629      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2630       0,     0,     0,     0,   687,    31,     0,     0,     0,     0,
     2631       0,     0,   634,     0,     0,     0,     0,     0,     0,     0,
     2632       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2633       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2634      38,    39,     0,     2,   205,     4,     5,     6,     7,     8,
     2635       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2636      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2637      27,    28,     0,     0,     0,     0,     0,   599,    31,     0,
     2638       0,     0,     0,     0,     0,   634,     0,     0,     0,     0,
     2639       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2640       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
     2641      36,     0,     0,   206,    39,     8,     9,    10,    11,    12,
     2642      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2643      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2644       0,     0,   281,   282,    31,   283,     0,     0,     0,     0,
     2645     207,     0,     0,     0,     0,     0,     0,     0,   270,     0,
     2646       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2647       0,   284,    34,     0,     0,     0,     0,   285,     0,    38,
     2648      39,   286,     0,     0,   287,   288,   289,   290,    41,    42,
     2649       0,   291,   292,     0,     0,     0,     0,     0,     0,   293,
     2650       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2651       0,     0,     0,     0,   294,     0,   525,     0,     0,   170,
     2652       0,     0,     0,   296,   297,   298,   299,   300,   301,     8,
     2653       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2654      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2655      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2656       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2657      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2658      26,    27,    28,     0,     0,   284,    34,     0,     0,    31,
     2659       0,   285,     0,    38,    39,   286,     0,     0,   287,   288,
     2660     289,   290,    41,    42,     0,   291,   292,     0,     0,     0,
     2661       0,     0,     0,   293,     0,     0,     0,    34,     0,     0,
     2662       0,     0,    37,     0,   336,   337,    40,     0,   294,     0,
     2663     599,    -3,     0,    41,    42,     0,     0,   296,   600,   298,
     2664     299,   300,   301,     8,     9,    10,    11,    12,    13,    14,
     2665      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2666      25,   338,     0,    26,    27,    28,     0,     0,     0,   110,
     2667     281,   282,    31,   283,     8,     9,    10,    11,    12,    13,
     2668      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2669      24,    25,     0,     0,    26,    27,    28,     0,     0,   284,
     2670      34,     0,     0,    31,   453,   649,     0,    38,    39,   286,
     2671       0,     0,   287,   288,   289,   290,    41,    42,     0,   291,
     2672     292,     0,     0,     0,     0,     0,     0,   293,     0,     0,
     2673       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
     2674       0,     0,   294,   -35,   766,     0,     0,     0,     0,     0,
     2675       0,   296,   297,   298,   299,   300,   301,     8,     9,    10,
     2676      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2677      21,    22,    23,    24,    25,   454,     0,    26,    27,    28,
     2678       0,     0,     0,   110,   281,   282,    31,   283,     0,     0,
     2679       0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
     2680      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2681      23,    24,    25,   284,    34,    26,    27,    28,     0,   285,
     2682       0,    38,    39,   286,    31,     0,   287,   288,   289,   290,
     2683      41,    42,     0,   291,   292,     0,     0,     0,     0,     0,
     2684       0,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     2685       0,     0,    34,     0,     0,     0,   294,     0,   295,    38,
     2686      39,     0,     0,     0,     0,   296,   297,   298,   299,   300,
     2687     301,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2688      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2689       0,    26,    27,    28,   643,     0,   338,     0,   281,   282,
     2690      31,   283,     0,     0,   634,     0,     0,     0,     0,     8,
     2691       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2692      19,    20,    21,    22,    23,    24,    25,   284,    34,    26,
     2693      27,    28,     0,   285,     0,    38,    39,   286,    31,     0,
     2694     287,   288,   289,   290,    41,    42,     0,   291,   292,     0,
     2695       0,     0,     0,     0,     0,   293,     0,     0,     0,     0,
     2696       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
     2697     294,     0,   156,    38,    39,     0,     0,     0,     0,   296,
     2698     297,   298,   299,   300,   301,     8,     9,    10,    11,    12,
     2699      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2700      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2701     256,     0,   281,   282,    31,   283,     0,     0,   110,     0,
     2702       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2703       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2704       0,   284,    34,     0,     0,     0,     0,   285,     0,    38,
     2705      39,   286,     0,     0,   287,   288,   289,   290,    41,    42,
     2706       0,   291,   292,     0,     0,     0,     0,     0,     0,   293,
     2707       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2708       0,     0,     0,     0,   294,     0,   599,     0,     0,     0,
     2709       0,     0,     0,   296,   600,   298,   299,   300,   301,     8,
     2710       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2711      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2712      27,    28,     0,     0,     0,     0,   281,   282,    31,   283,
     2713       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2714      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2715      26,    27,    28,     0,     0,   284,    34,     0,     0,    31,
     2716       0,   285,     0,    38,    39,   286,     0,     0,   287,   288,
     2717     289,   290,    41,    42,     0,   291,   292,     0,     0,     0,
     2718       0,     0,     0,   293,     0,     0,     0,    34,     0,     0,
     2719       0,     0,    37,     0,    38,    39,    40,     0,   294,     0,
     2720     378,     0,     0,    41,    42,     0,     0,   296,   380,   298,
     2721     299,   300,   301,     0,     0,     0,     0,     0,     0,     0,
     2722       0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
     2723       0,    44,     0,     0,     0,     0,     0,     0,     0,    45,
     2724       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2725      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2726      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2727       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2728      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2729      26,    27,    28,     0,     0,     0,     0,    34,     0,    31,
     2730       0,     0,    37,     0,   206,    39,    40,     0,     0,     0,
     2731       0,     0,     0,    41,    42,     0,     0,     0,     0,     0,
     2732       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
     2733       0,     0,    37,     0,   336,   337,    40,     0,     0,    43,
     2734       0,   269,     0,    41,    42,     0,     0,     0,     0,   208,
     2735       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2736       0,     0,     0,     0,     0,     0,     0,     0,     0,   643,
     2737       0,   338,     0,     0,     0,     0,     0,     0,     0,   634,
     2738       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2739      18,    19,    20,    21,    22,    23,    24,    25,  -294,     0,
     2740      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2741       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2742      18,    19,    20,    21,    22,    23,    24,    25,  -294,     0,
     2743      26,    27,    28,     0,     0,     0,     0,    34,     0,    31,
     2744       0,     0,     0,     0,    38,    39,     0,     0,  -294,     0,
     2745       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2746       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
     2747       0,     0,     0,     0,    38,    39,     0,     0,  -294,   643,
     2748       0,   338,     0,     0,     0,     0,     0,     0,     0,   110,
     2749       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2750       0,     0,     0,     0,     0,     0,     0,     0,     0,   643,
     2751       0,   338,     0,     0,     0,     0,     0,     0,     0,   634,
     2752       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2753      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2754      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2755     453,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2756      17,    18,    19,    20,    21,    22,    23,    24,    25,  -294,
     2757       0,    26,    27,    28,     0,     0,     0,    34,     0,     0,
     2758      31,     0,     0,     0,    38,    39,     0,     0,     0,     0,
     2759       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2760       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2761       0,     0,     0,     0,     0,    38,    39,     0,     0,  -294,
     2762       0,   454,     0,     0,     0,   947,     0,     0,     0,   110,
     2763       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2764      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2765      25,     0,   338,    26,    27,    28,     0,     0,     0,     0,
     2766     110,     0,    31,   453,     8,     9,    10,    11,    12,    13,
     2767      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2768      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2769      34,     0,     0,    31,     0,     0,     0,    38,    39,     0,
    20972770       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2098       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2099      353,    25,    26,    27,     0,     0,  1572,  1573,     0,  1156,
    2100       30,   452,     0,     0,  1576,  1577,     0,     0,     0,     0,
    2101        0,     0,     0,     0,     0,  1168,   351,   351,     0,   351,
    2102      351,   222,     0,     0,     0,     0,     0,     0,    33,     0,
    2103        0,     0,     0,     0,     0,    37,    38,     0,     0,    72,
    2104        0,     0,     0,   353,   353,     0,   353,   353,   223,     8,
     2771      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2772       0,    34,    26,    27,    28,     0,     0,     0,    38,    39,
     2773       0,    31,     0,     0,   454,     0,     0,     0,  1235,     0,
     2774       0,     0,   110,     0,     0,     0,     0,     0,     0,     0,
     2775       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2776       0,     0,     0,     0,     0,   156,   206,    39,     0,     0,
     2777       0,     0,     0,   110,     0,     8,     9,    10,    11,    12,
     2778      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2779      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2780       0,     0,     0,   269,    31,     0,     0,     0,     0,     0,
     2781       0,   270,     0,     8,     9,    10,    11,    12,    13,    14,
     2782      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2783      25,     0,    34,    26,    27,    28,     0,     0,     0,    38,
     2784      39,     0,    31,     8,     9,    10,    11,    12,    13,    14,
     2785      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2786      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2787      34,     0,    31,     0,     0,     0,   256,    38,    39,     0,
     2788       0,     0,     0,     0,   634,     0,     0,     0,     0,     0,
     2789       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2790      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2791       0,     0,     0,     0,   338,     0,     0,     0,     0,     0,
     2792       0,     0,   634,     0,     0,     8,     9,    10,    11,    12,
     2793      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2794      23,    24,    25,     0,   454,    26,    27,    28,     0,     0,
     2795       0,     0,   110,     0,    31,     8,     9,    10,    11,    12,
     2796      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2797      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2798       0,     0,    34,     0,    31,     0,     0,     0,     0,   206,
     2799      39,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2800      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2801      25,     0,    34,    26,    27,    28,     0,     0,     0,    38,
     2802      39,     0,    31,     0,     0,     0,   269,     0,     0,     0,
     2803       0,     0,     0,     0,   629,     0,     0,     0,     0,     0,
     2804       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2805      34,     0,     0,     0,     0,     0,   599,    38,    39,     0,
     2806       0,     0,     0,     0,   634,     0,     8,     9,    10,    11,
     2807      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2808      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2809       0,     0,     0,     0,   338,    31,     0,     0,     0,     0,
     2810       0,     0,   110,     0,     8,     9,    10,    11,    12,    13,
     2811      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2812      24,    25,     0,    34,    26,    27,    28,     0,     0,     0,
     2813      38,    39,     0,    31,     0,     0,     2,   205,     4,     5,
     2814       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2815      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2816       0,    34,    26,    27,    28,     0,     0,    44,   206,    39,
     2817       0,    31,     0,   281,   282,   110,   283,  1063,     0,  1064,
     2818       0,     0,  1065,  1066,  1067,  1068,  1069,  1070,  1071,  1072,
     2819       0,     0,  1549,  1073,     0,     0,     0,  1074,  1075,    34,
     2820      33,    35,   284,    36,     0,     0,    38,    39,   649,     0,
     2821       0,     0,   286,   629,     0,   287,   288,   289,   290,    41,
     2822      42,     0,   291,   292,     0,     0,     0,     0,     0,     0,
     2823     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2824       0,     0,  -413,     0,     0,   294,     0,   378,     0,     0,
     2825     170,     0,     0,     0,   296,   380,   298,   299,   300,   301,
     2826       0,     0,     0,     0,  1077,     0,   281,   282,  -129,   283,
     2827    1063,     0,  1064,     0,     0,  1065,  1066,  1067,  1068,  1069,
     2828    1070,  1071,  1072,     0,     0,     0,  1073,     0,     0,     0,
     2829    1074,  1075,     0,    33,     0,   284,     0,     0,     0,     0,
     2830       0,   649,     0,     0,     0,   286,     0,     0,   287,   288,
     2831     289,   290,    41,    42,     0,   291,   292,     0,     0,     0,
     2832       0,     0,     0,   293,     0,     0,     0,     0,     0,     0,
     2833       0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
     2834     378,     0,     0,   170,     0,     0,     0,   296,   380,   298,
     2835     299,   300,   301,     0,     0,     0,     0,  1077,     0,     0,
     2836       0,  -129,     2,   205,     4,     5,     6,     7,     8,     9,
     2837      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2838      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2839      28,     0,     0,     0,     0,     0,     0,    31,     0,   281,
     2840     282,     0,   283,  1063,     0,  1064,  1419,  1420,  1065,  1066,
     2841    1067,  1068,  1069,  1070,  1071,  1072,     0,     0,  1549,  1073,
     2842       0,     0,     0,  1074,  1075,    34,    33,    35,   284,    36,
     2843       0,     0,    38,    39,   649,     0,     0,     0,   286,     0,
     2844       0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
     2845       0,     0,     0,     0,  1328,     0,   293,     0,     0,     0,
     2846       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2847       0,   294,     0,   378,     0,     0,   170,     0,     0,     0,
     2848     296,   380,   298,   299,   300,   301,     0,     0,   281,   282,
     2849    1077,   283,  1063,     0,  1064,  1419,  1420,  1065,  1066,  1067,
     2850    1068,  1069,  1070,  1071,  1072,     0,     0,     0,  1073,     0,
     2851       0,     0,  1074,  1075,     0,    33,     0,   284,     0,     0,
     2852       0,     0,     0,   649,     0,     0,     0,   286,     0,     0,
     2853     287,   288,   289,   290,    41,    42,     0,   291,   292,     0,
     2854       0,     0,     0,     0,     0,   293,     0,     0,     0,     0,
     2855       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2856     294,     0,   378,     0,     0,   170,     0,     0,     0,   296,
     2857     380,   298,   299,   300,   301,     0,     0,   281,   282,  1077,
     2858     283,  1063,     0,  1064,     0,     0,  1065,  1066,  1067,  1068,
     2859    1069,  1070,  1071,  1072,     0,     0,     0,  1073,     0,     0,
     2860       0,  1074,  1075,     0,    33,     0,   284,     0,     0,     0,
     2861       0,     0,   649,     0,     0,     0,   286,     0,     0,   287,
     2862     288,   289,   290,    41,    42,     0,   291,   292,     0,     0,
     2863       0,     0,     0,     0,   293,   281,   282,     0,   283,     0,
     2864       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
     2865       0,   378,     0,     0,   170,     0,     0,     0,   296,   380,
     2866     298,   299,   300,   301,   284,     0,     0,     0,  1077,     0,
     2867     285,     0,     0,     0,   286,     0,     0,   287,   288,   289,
     2868     290,    41,    42,     0,   291,   292,     0,     0,     0,     0,
     2869       0,     0,   293,   281,   282,     0,   283,     0,     0,     0,
     2870       0,     0,     0,     0,     0,     0,     0,   294,     0,   378,
     2871       0,     0,   281,   282,     0,   283,   296,   380,   298,   299,
     2872     300,   301,   284,     0,     0,     0,     0,     0,   285,     0,
     2873       0,     0,   286,     0,     0,   287,   288,   289,   290,    41,
     2874      42,   284,   291,   292,     0,     0,     0,   649,     0,     0,
     2875     293,   286,     0,     0,   287,   288,   289,   290,    41,    42,
     2876       0,   291,   292,     0,     0,   294,     0,   378,     0,   293,
     2877     281,   282,     0,   283,   296,   734,   298,   299,   300,   301,
     2878       0,     0,     0,     0,   294,     0,   785,     0,     0,   281,
     2879     282,     0,   283,   296,   380,   298,   299,   300,   301,   284,
     2880       0,     0,     0,     0,     0,   285,     0,     0,     0,   286,
     2881       0,     0,   287,   288,   289,   290,    41,    42,   284,   291,
     2882     292,     0,     0,     0,   285,     0,     0,   293,   286,     0,
     2883       0,   287,   288,   289,   290,    41,    42,     0,   291,   292,
     2884       0,     0,   294,     0,   378,     0,   293,   281,   282,     0,
     2885     283,   296,   827,   298,   299,   300,   301,     0,     0,     0,
     2886       0,   294,     0,     0,     0,     0,   281,   282,     0,   283,
     2887     296,   380,   298,   299,   300,   301,   284,     0,     0,     0,
     2888       0,     0,   285,     0,     0,     0,   286,     0,     0,   287,
     2889     288,   289,   290,    41,    42,   284,   291,   292,     0,     0,
     2890       0,   285,     0,     0,   293,   286,     0,     0,   287,   288,
     2891     289,   290,    41,    42,     0,   291,   292,     0,     0,   518,
     2892       0,     0,     0,   293,     0,     0,     0,     0,   296,   380,
     2893     298,   299,   300,   301,     0,     0,     0,     0,   521,     0,
     2894       0,     0,     0,     0,     0,     0,     0,   296,   380,   298,
     2895     299,   300,   301,   204,     2,   205,     4,     5,     6,     7,
     2896       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2897      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2898      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2899       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2900       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2901       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
     2902       0,    36,     0,     0,   206,    39,   474,     2,   205,     4,
     2903       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2904      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2905      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2906       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2907       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2908       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2909      34,     0,    35,     0,    36,     0,     0,    38,    39,     2,
     2910     205,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2911      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2912      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2913       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
     2914       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2915       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2916       0,     0,    34,     0,    35,     0,    36,     0,     0,   206,
     2917      39
     2918};
     2919
     2920#define yypact_value_is_default(yystate) \
     2921  ((yystate) == (-1356))
     2922
     2923#define yytable_value_is_error(yytable_value) \
     2924  YYID (0)
     2925
     2926static const yytype_int16 yycheck[] =
     2927{
     2928       0,     1,     0,   184,    43,   698,   115,   184,    43,   184,
     2929      43,   238,    55,   698,     1,   167,   168,   698,   104,   203,
     2930     543,   294,   184,   455,   185,   218,   280,   278,   456,    29,
     2931      30,   656,    32,   184,    32,   348,   611,   184,   520,   185,
     2932     759,   611,     1,    43,   184,    45,  1006,    45,   186,   629,
     2933     499,   579,   609,     0,   503,    55,   902,   999,   462,  1042,
     2934    1043,    61,   105,    61,    64,   108,    64,    67,   154,    67,
     2935     902,   348,   780,    43,    43,   609,   609,    32,    39,    51,
     2936      67,    81,    82,   264,   777,    32,  1419,   264,   609,   264,
     2937    1338,   200,   777,   609,    28,  1055,   777,   529,   723,    63,
     2938      95,  1062,   264,   609,   265,   105,   699,    39,   108,   110,
     2939     417,    82,    43,   264,   699,   115,   117,   264,   109,   265,
     2940    1475,   497,   260,   261,   264,   609,    64,   363,   721,    82,
     2941     437,   367,    39,     0,   612,   130,   721,   109,   445,   110,
     2942     618,  1074,  1075,   344,    78,   184,   146,    82,   146,   184,
     2943     111,   184,   425,   426,   154,  1510,     0,  1512,   111,   159,
     2944    1493,   159,  1043,   425,   426,    32,   107,   227,   132,     0,
     2945       1,   109,   109,   109,   217,   111,   255,   109,    39,   111,
     2946       0,     1,   283,   119,   184,   185,   246,   185,    32,     0,
     2947     131,    39,     0,  1441,    72,   296,   297,    64,    44,    45,
     2948     200,    32,   109,    39,   111,    83,    84,   308,   208,  1142,
     2949     208,   680,    32,    39,   184,   184,   409,   217,   495,   812,
     2950     220,    32,   220,   744,    32,   264,   110,   227,   271,   264,
     2951    1062,   264,   116,    64,   109,   278,    67,   613,   744,   501,
     2952     513,   617,   242,   344,   405,   518,   246,    67,   521,    11,
     2953     250,   251,   250,   184,   132,   341,   131,   511,   520,   405,
     2954     744,   109,   638,   111,   264,   265,   642,   265,     0,   115,
     2955     109,   271,   111,   109,   109,   111,   851,    45,   278,   380,
     2956     119,   851,   839,   109,   370,   111,   395,    82,   489,   110,
     2957     718,   819,   251,   293,   455,   250,   117,   890,   611,    85,
     2958      32,  1009,   575,   250,   347,   839,   839,  1290,  1291,   455,
     2959      45,    43,    82,    45,   423,  1257,    44,    45,   839,   112,
     2960     429,   364,   117,   839,   586,   368,   487,   113,   328,    61,
     2961     328,   114,    64,   839,   293,    67,   116,    82,   417,   109,
     2962      96,   487,   110,  1304,     3,   112,   815,   347,   348,   116,
     2963      44,    45,  1071,   220,     3,   839,   825,   489,   437,   116,
     2964    1241,   597,    72,   841,   364,   110,   445,   123,   368,    82,
     2965      72,   840,   117,    83,    84,   110,    72,   145,     0,   379,
     2966    1226,    83,    84,   250,   691,   978,   114,    83,    84,   220,
     2967     960,   644,   645,   978,  1226,   395,   109,    96,   129,   600,
     2968     131,   111,   959,     0,   640,   405,   250,   405,  1526,   662,
     2969    1291,   255,   109,   513,   146,   515,  1009,   119,   518,   250,
     2970     114,   521,   676,   423,   123,   959,   959,   159,   629,   429,
     2971     250,   431,  1415,   634,  1526,  1553,   132,  1496,    72,   250,
     2972     208,  1021,   250,  1502,   255,   131,   532,  1407,  1408,    83,
     2973      84,   116,   184,   185,  1546,   455,   557,   558,   559,   112,
     2974     460,  1553,   109,   116,  1523,   465,  1059,   132,   116,  1528,
     2975     238,   110,  1304,   208,   474,   471,   208,   111,   117,   479,
     2976     109,   110,   349,   736,   132,   115,   116,   487,   220,   487,
     2977     109,   491,   131,   491,    80,   495,   697,   873,   498,   600,
     2978     500,   131,   270,  1464,   239,   657,   938,   758,   762,   109,
     2979    1471,   643,   644,   645,   946,   474,  1141,   698,   250,   968,
     2980     520,   698,  1004,   698,   928,   111,   109,   113,   666,   297,
     2981     662,   117,   264,   109,  1415,   270,   698,   537,   851,   700,
     2982     540,  1134,   542,   543,   491,   109,  1116,   698,   116,  1134,
     2983     116,   698,  1030,  1031,   700,   664,    72,   110,   698,   294,
     2984     992,   520,   297,  1524,   132,   697,   132,    83,    84,   110,
     2985    1039,  1040,   773,   417,   851,   828,   344,   110,   537,  1423,
     2986     112,   540,   110,   542,   543,  1304,   116,   630,   116,   965,
     2987     590,    30,   110,   437,   830,   111,   328,   597,   834,  1192,
     2988    1193,   445,   132,   646,   736,   110,   417,  1192,  1193,   609,
     2989     696,   611,   691,   480,    90,    91,   348,   119,   661,   643,
     2990     644,   645,   124,   125,   491,   109,   437,   111,  1097,  1098,
     2991     630,   590,  1464,   734,   445,    80,  1132,   116,   662,  1471,
     2992    1136,   773,    81,    82,    72,   112,   646,   491,    76,   116,
     2993     126,   127,   652,   132,   733,    83,    84,   425,   426,   116,
     2994     491,   661,  1381,   663,   664,   665,   111,   110,   113,   116,
     2995     110,   491,   117,   405,  1102,   132,   116,  1521,   489,   780,
     2996     491,   109,  1526,   491,   680,   132,   772,   964,   924,   116,
     2997     115,   119,  1524,   109,   116,   888,   828,   109,   698,   111,
     2998     700,   116,  1546,   109,   663,   132,   665,   119,   116,  1553,
     2999     132,   109,   736,   713,   116,   758,   909,   132,   453,   719,
     3000      64,   456,   110,   455,   132,    68,   827,   462,   116,    72,
     3001     132,   731,    75,   501,    77,    72,    10,    11,    12,    13,
     3002      14,    84,   894,   970,   744,   745,    83,    84,   110,  1468,
     3003      72,  1470,   520,   109,   116,   111,   132,   116,   758,   491,
     3004       3,    83,    84,   495,   631,    39,   112,    10,    11,    12,
     3005      13,    14,   731,   132,   111,   110,   110,   938,   513,   109,
     3006     515,   116,   116,   518,   112,   946,   521,   109,   116,   110,
     3007     598,   132,   938,    67,   112,   116,    39,  1320,   116,   110,
     3008     946,   110,  1271,   242,   828,   116,  1525,   116,   109,  1402,
     3009    1279,  1280,  1281,   109,    45,   111,   110,  1402,   586,   815,
     3010    1021,   110,   116,   112,    67,   110,  1419,   116,   114,   825,
     3011      61,   116,   600,    64,  1419,   110,    67,  1530,   109,   839,
     3012     111,   116,   131,   132,   840,  1530,     1,   691,    72,  1530,
     3013    1034,   851,    76,    72,   114,    74,    75,   724,  1327,    83,
     3014      84,   629,    64,    72,    83,    84,   634,  1103,   211,   132,
     3015     110,   738,   121,   122,    83,    84,   116,   609,  1132,   611,
     3016     691,   132,  1136,  1137,   114,   109,   697,   111,   109,   733,
     3017      45,   109,    72,   111,   894,   119,    76,    88,    89,  1492,
     3018    1493,   901,   902,    83,    84,  1057,   110,  1492,  1493,    82,
     3019    1042,   110,   116,   110,   116,   146,   109,   116,   111,   116,
     3020    1021,   110,   733,   109,   924,   110,   109,   116,   159,   109,
     3021     112,   116,  1205,  1206,   109,  1208,   111,    82,   938,   119,
     3022     379,  1214,   120,   902,  1217,   109,   946,   111,   129,   104,
     3023     564,   565,   566,   567,   185,   110,   109,   159,   111,   128,
     3024    1161,  1062,   773,    94,   964,   832,   698,    72,   700,    74,
     3025      75,    64,    92,    93,    85,    86,    87,   208,    83,    84,
     3026     115,   116,   969,   718,   984,   109,   110,   111,    81,   220,
     3027     145,   116,   117,   993,   109,   110,   111,  1251,   109,   154,
     3028     111,  1001,   113,   114,  1004,   703,  1006,   705,   351,   114,
     3029     353,   111,   744,   745,   131,  1124,   110,   111,   220,    58,
     3030      59,   460,   109,   116,   109,   984,   465,   835,   112,  1161,
     3031     109,   110,   111,   115,   116,   902,   109,   110,   111,   109,
     3032    1241,   112,  1001,  1039,  1040,  1004,   110,  1006,   110,   204,
     3033      58,    59,    60,   208,   110,  1055,   258,   110,   902,   498,
     3034     262,   500,   116,   117,   110,  1065,   159,   110,  1068,  1069,
     3035    1070,   902,   112,  1505,   116,   117,    72,  1178,    74,    75,
     3036      76,   111,   902,   238,   239,  1339,   112,    83,    84,  1343,
     3037     131,   902,   116,  1093,   902,   114,  1055,   328,   441,    44,
     3038      45,  1097,  1098,   109,  1377,   112,  1065,   839,   110,  1068,
     3039    1069,  1070,   110,   109,    72,   270,    74,    75,   273,   851,
     3040    1263,  1264,  1265,  1555,  1124,    83,    84,   220,   112,     4,
     3041       5,     6,     7,     8,     9,  1221,   560,   561,   969,   294,
     3042     112,   112,   297,   562,   563,   568,   569,   349,   112,   969,
     3043     117,   109,     3,    29,   117,   117,   114,  1024,  1290,    10,
     3044      11,    12,    13,    14,    72,   258,    74,    75,    76,   262,
     3045     116,   110,   110,   114,   405,    83,    84,   112,    10,    11,
     3046      12,    13,    14,   117,   115,   110,   341,   115,    39,   344,
     3047     116,  1445,   115,   928,    69,  1062,    71,   109,   116,  1199,
     3048     110,   109,   970,   111,   110,   132,   938,    39,   363,   117,
     3049     110,   119,   367,   652,   946,   370,    67,  1204,  1062,   117,
     3050     110,  1221,    72,   110,    74,    75,  1226,   110,   430,   110,
     3051       3,  1062,   964,    83,    84,    67,   116,    10,    11,    12,
     3052      13,    14,  1062,  1239,     4,     5,     6,     7,     8,     9,
     3053     110,  1062,   110,  1021,  1062,   110,   349,   132,  1245,   115,
     3054      29,   111,   110,  1263,  1264,  1265,    39,  1226,   110,   110,
     3055     425,   426,   110,    33,   713,  1271,   110,   109,   480,   111,
     3056     719,   902,   110,  1279,  1280,  1281,   110,   119,    72,  1398,
     3057      74,    75,    76,   110,    67,   110,   131,   110,   453,    83,
     3058      84,   456,   112,   110,  1263,  1264,  1265,   462,   110,    69,
     3059     115,    71,   110,  1540,    85,    86,    87,   116,   112,   474,
     3060    1320,  1321,   112,   110,     4,     5,     6,     7,     8,     9,
     3061     110,  1327,   110,   471,   116,   116,  1203,   430,   109,   114,
     3062     111,   117,   113,   114,   499,   112,   501,   110,   503,  1530,
     3063    1161,  1338,   116,  1530,  1397,  1530,   110,   116,   513,  1226,
     3064     515,  1320,  1321,   518,   116,   520,   521,  1102,  1530,   110,
     3065    1531,   117,  1203,  1204,   112,  1375,   109,   532,  1378,  1530,
     3066     109,   109,  1226,  1530,  1204,  1531,   109,   480,   109,    69,
     3067    1530,    71,   112,   132,  1555,  1226,  1505,  1397,  1398,   115,
     3068     110,   603,   110,   110,   129,   114,  1226,  1407,  1408,  1555,
     3069      72,   115,    74,    75,  1245,  1226,  1375,   112,  1226,  1378,
     3070     132,    83,    84,  1423,   110,  1245,   116,   112,  1428,   631,
     3071    1241,   586,  1299,   116,   636,   112,    55,  1304,   110,   110,
     3072     110,    47,   597,   112,  1065,   600,  1446,   109,  1407,  1408,
     3073     110,   112,   114,   112,  1441,   894,   112,    53,  1458,   112,
     3074    1304,   112,   901,   115,  1423,   132,   132,   132,  1299,  1428,
     3075     110,   115,   117,  1304,   629,   132,   110,   132,   115,   634,
     3076     112,   112,     0,     1,  1304,   640,   105,  1446,   112,   108,
     3077     112,  1530,   112,  1304,   112,  1530,  1304,  1530,   112,  1458,
     3078      96,   112,   110,   110,   109,  1505,  1506,  1338,   112,   112,
     3079     603,   109,   109,    60,    32,  1515,   110,   110,  1338,   114,
     3080     132,  1521,   724,   112,   112,   117,  1526,    45,   110,   112,
     3081    1530,  1531,   110,  1531,    96,   154,   738,    96,   631,   109,
     3082     109,   696,   680,   636,  1544,   132,  1546,  1506,   115,    67,
     3083    1550,   112,   110,  1553,   993,  1555,  1515,  1555,   110,   110,
     3084     110,  1561,  1521,   718,    51,  1565,    53,  1526,   116,    56,
     3085      57,    58,    72,    60,    74,    75,    76,    42,    72,   117,
     3086      74,    75,    76,    83,    84,  1544,   104,  1546,    75,    83,
     3087      84,  1550,   132,   748,  1553,   132,   192,  1464,   217,   110,
     3088      87,    88,  1561,   110,  1471,  1226,  1565,    96,    96,   109,
     3089    1441,    72,   132,    74,    75,    76,   132,   772,   110,   215,
     3090    1464,  1441,    83,    84,   110,   110,   117,  1471,   146,   225,
     3091     832,   724,   110,  1464,   132,   115,   154,   155,   112,   112,
     3092    1471,   109,   132,   115,  1464,   738,   115,   110,   109,   132,
     3093     111,  1471,   271,  1464,  1093,   110,  1464,  1524,   119,   278,
     3094    1471,   132,    72,  1471,    74,    75,    76,   185,   110,   110,
     3095    1077,   570,   573,    83,    84,   830,   571,   815,   572,   834,
     3096    1524,   574,   200,  1226,    64,   203,   204,   825,  1493,  1565,
     3097     208,  1383,  1343,  1524,    74,  1137,  1314,  1471,   294,   109,
     3098    1321,   111,   840,  1093,  1524,   453,   453,   946,   705,   119,
     3099     465,   229,   948,  1524,   993,   233,  1524,   235,   590,   748,
     3100     894,    10,    11,    12,    13,    14,   244,   758,   347,   658,
     3101    1245,   966,   250,   491,   578,   578,   116,   255,  1473,   832,
     3102    1475,   578,    -1,    -1,    -1,   364,    -1,   265,    -1,   368,
     3103      39,    -1,    -1,    -1,  1375,   273,    -1,  1378,    -1,    -1,
     3104    1199,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   924,
     3105      -1,    -1,  1540,   928,    -1,  1510,    -1,  1512,    67,   159,
     3106      -1,    -1,    -1,    72,    -1,    74,    75,    76,    72,    -1,
     3107      74,    75,    76,    -1,    83,    84,     0,    -1,  1530,    83,
     3108      84,    -1,  1423,    -1,    -1,    -1,    72,  1428,    74,    75,
     3109      76,    -1,   431,   968,   969,   970,    -1,    83,    84,    -1,
     3110     109,    -1,  1024,   341,    -1,   109,   344,   111,    32,    -1,
     3111     119,    -1,   350,    -1,    -1,   119,    -1,  1458,    -1,    -1,
     3112     220,    -1,    -1,   109,    -1,   363,   442,    -1,    -1,   367,
     3113      -1,    -1,   370,   119,    -1,    -1,    -1,   344,   345,    -1,
     3114      -1,    -1,    -1,    67,    -1,    -1,  1021,    -1,    -1,   356,
     3115     357,    10,    11,    12,    13,    14,    -1,    -1,   258,    -1,
     3116     476,    -1,   262,    72,    -1,    74,    75,    76,    -1,    -1,
     3117      -1,    -1,    -1,    -1,    83,    84,    -1,    -1,   278,   417,
     3118      39,  1039,  1040,    -1,    -1,    -1,    26,    27,    28,    -1,
     3119      -1,    -1,    -1,    -1,   432,    -1,    -1,   513,    -1,   437,
     3120     109,    -1,   518,  1544,    -1,   521,    -1,   445,    67,  1550,
     3121     119,  1024,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     3122    1561,    -1,    -1,    -1,  1565,    -1,    -1,  1102,  1103,    -1,
     3123      -1,   155,    -1,   471,    -1,    -1,   474,    -1,    -1,  1097,
     3124    1098,    39,    -1,    -1,    10,    11,    12,    13,    14,   349,
     3125     109,   489,   111,   491,    -1,    -1,    -1,    97,   597,    99,
     3126     119,   499,    -1,    -1,    -1,   503,    -1,    -1,    -1,    67,
     3127      -1,    -1,    -1,    39,    72,    -1,    74,    75,    76,    -1,
     3128      -1,  1203,    -1,    -1,   124,    83,    84,    -1,    -1,    -1,
     3129      -1,   630,    -1,    -1,   532,   533,    -1,    -1,    -1,    -1,
     3130      -1,    67,    -1,    -1,    -1,   229,    72,   646,    74,    75,
     3131      76,   109,    -1,   111,    -1,    -1,    -1,    83,    84,    -1,
     3132      -1,   119,   661,    -1,    -1,    -1,   250,    -1,    -1,    -1,
     3133     430,   255,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3134     180,   579,    -1,   109,    -1,   111,  1221,   447,   188,    -1,
     3135     190,   191,    -1,   119,    -1,   195,    -1,   197,   198,   597,
     3136     598,    -1,   600,   679,    39,    -1,    -1,    -1,    -1,    -1,
     3137    1245,    -1,   688,   611,    -1,    -1,   692,  1299,    -1,    -1,
     3138     480,  1239,    -1,    10,    11,    12,    13,    14,    -1,    -1,
     3139    1203,   629,    67,    -1,    -1,    -1,   634,    72,    -1,    74,
     3140      75,    76,   640,    -1,    -1,   643,   644,   645,    83,    84,
     3141      -1,    -1,    39,  1271,    -1,    -1,    -1,    -1,    -1,   758,
     3142      -1,  1279,  1280,  1281,   662,    -1,   350,   267,    -1,    -1,
     3143      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3144      67,    -1,   680,    -1,   119,    72,    -1,    74,    75,    76,
     3145      -1,    -1,    -1,   691,    -1,    -1,    83,    84,   696,   697,
     3146      -1,    -1,   700,  1338,    -1,    -1,    -1,    -1,    -1,  1327,
     3147      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     3148      -1,    -1,   109,    -1,    -1,    -1,  1299,    -1,    -1,    -1,
     3149      -1,    -1,   119,   417,    -1,   733,    -1,    -1,   736,    -1,
     3150      -1,    39,    -1,   603,    -1,    -1,    -1,   745,   432,    -1,
     3151     748,    -1,    -1,   437,    -1,    -1,    -1,    -1,   725,    -1,
     3152     727,   445,    -1,    -1,    -1,    -1,    -1,   734,   735,    67,
     3153      -1,   631,   739,    -1,   772,   773,   636,    -1,    -1,    -1,
     3154     778,    -1,    -1,    -1,   751,    -1,    -1,   471,    -1,   756,
     3155      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
     3156      -1,    -1,    -1,    -1,    -1,   489,  1441,   491,    -1,    -1,
     3157      -1,   109,    -1,   111,    -1,   782,    -1,   815,    -1,    -1,
     3158      -1,   119,    -1,    -1,   131,   924,    -1,   825,    -1,    -1,
     3159     828,    -1,   830,    -1,    -1,   833,   834,   835,  1473,    -1,
     3160    1475,    -1,   840,    -1,    -1,    -1,    -1,    -1,    -1,   533,
     3161     926,    -1,   850,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3162     827,    -1,    -1,    -1,   724,    -1,    -1,    -1,    -1,    -1,
     3163      -1,    -1,    -1,    -1,    -1,  1510,    -1,  1512,   738,    -1,
     3164      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3165      20,    21,    22,    23,    24,    25,    26,    27,   758,    -1,
     3166      30,    31,    32,    -1,   902,  1540,    -1,    -1,    -1,    39,
     3167      -1,    -1,    -1,    -1,   598,    -1,    -1,   884,   885,   886,
     3168     887,    -1,   889,    -1,    -1,    -1,   924,    -1,    10,    11,
     3169      12,    13,    14,    -1,    -1,    -1,     0,    67,   905,    -1,
     3170      -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
     3171      -1,    -1,   919,    83,    84,    -1,    -1,    39,    -1,   643,
     3172     644,   645,   960,    -1,    -1,    -1,    -1,    -1,    32,    -1,
     3173     968,   969,   832,    -1,    -1,    -1,    -1,    -1,   662,   109,
     3174      -1,   111,   582,   583,    -1,    67,    -1,    -1,   986,   119,
     3175      72,   958,    -1,    -1,    76,    -1,   680,  1073,    -1,    -1,
     3176      -1,    83,    84,    67,    -1,    -1,    -1,   691,    -1,    -1,
     3177      -1,    -1,   612,   697,    -1,   615,   616,    -1,   618,    -1,
     3178     620,   621,    -1,  1021,    -1,   625,   626,   109,    -1,    -1,
     3179      -1,   998,    -1,    -1,    -1,    -1,  1034,   119,  1005,    -1,
     3180      -1,  1039,  1040,  1010,  1042,  1043,    -1,    -1,  1015,   733,
     3181    1017,    -1,   736,    -1,  1021,  1022,  1023,    -1,    -1,  1026,
     3182      -1,    -1,    -1,    -1,  1062,    -1,    -1,    -1,  1035,    -1,
     3183      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     3184      -1,    -1,    -1,    -1,    -1,    -1,  1053,  1054,    -1,   773,
     3185      -1,   155,    -1,    -1,    -1,     0,    -1,    -1,    -1,  1097,
     3186    1098,    39,    -1,    -1,   704,  1103,    -1,    -1,    -1,   709,
     3187     710,    -1,    -1,  1080,    -1,   715,  1083,    -1,    -1,    -1,
     3188      -1,    -1,  1221,    -1,    -1,    -1,    -1,    32,    -1,    67,
     3189      -1,   815,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     3190      -1,   825,    -1,    -1,   828,    83,    84,    -1,    -1,   833,
     3191      -1,   835,    -1,    -1,  1121,    -1,   840,    -1,    -1,    -1,
     3192    1127,  1128,    67,  1161,  1024,    -1,    -1,    -1,    -1,    -1,
     3193      -1,   109,  1139,    -1,    -1,    -1,    -1,  1144,    -1,    -1,
     3194    1147,   119,  1149,    -1,    -1,  1152,   250,    -1,    -1,    -1,
     3195      -1,   255,   188,    -1,    -1,    -1,    -1,    -1,  1165,   195,
     3196      -1,    -1,    -1,    -1,    -1,    -1,  1204,    -1,    -1,    -1,
     3197      -1,  1178,     0,  1180,  1181,  1182,  1183,    -1,   902,    -1,
     3198      -1,    -1,    -1,  1221,    -1,    -1,    -1,    -1,  1226,  1196,
     3199      -1,  1198,    -1,    -1,    -1,  1202,    -1,  1313,    -1,    -1,
     3200      -1,  1239,    -1,  1241,    32,     0,     1,  1245,    -1,    -1,
     3201     155,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3202      -1,    -1,    -1,    -1,  1231,  1232,    -1,    -1,    -1,    -1,
     3203      -1,   267,    -1,  1271,    -1,    -1,    -1,    32,    -1,    67,
     3204      -1,  1279,  1280,  1281,    -1,    -1,   350,    -1,    -1,    -1,
     3205      -1,    -1,  1290,  1291,    -1,    -1,    -1,    -1,  1397,    -1,
     3206      -1,    -1,   986,    -1,    -1,    -1,  1304,    -1,    -1,    64,
     3207      -1,    -1,    67,    -1,    -1,  1282,  1283,    -1,    -1,    -1,
     3208      -1,    -1,    -1,    -1,    -1,  1292,    -1,   323,    -1,  1327,
     3209      -1,    -1,    -1,    -1,    -1,   331,    -1,    -1,   334,    -1,
     3210    1338,    -1,    -1,  1203,    -1,   250,    -1,    -1,    -1,    -1,
     3211     255,    -1,    -1,   417,    -1,  1039,  1040,    -1,  1042,  1043,
     3212      -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,   432,    -1,
     3213      -1,    -1,    -1,   437,    -1,    -1,    -1,  1344,  1062,    -1,
     3214      -1,   445,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1356,
     3215      -1,  1358,  1359,  1360,    -1,    -1,  1472,    -1,  1474,    -1,
     3216     155,   397,    -1,  1370,    -1,   401,    -1,   471,    -1,    -1,
     3217      -1,    -1,  1379,  1097,  1098,    -1,    -1,  1415,    -1,    -1,
     3218      -1,    -1,    -1,    -1,    -1,   489,    -1,   491,  1395,    -1,
     3219      -1,    -1,    -1,  1509,    -1,  1511,    -1,    -1,    -1,  1299,
     3220      -1,    -1,    -1,  1441,    -1,   350,    -1,    -1,    -1,    -1,
     3221      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3222      -1,    -1,   250,    -1,    -1,   220,  1464,   255,    -1,   533,
     3223      -1,    -1,    -1,  1471,    -1,    -1,    -1,  1161,  1554,    -1,
     3224    1556,    -1,    -1,    -1,  1451,  1452,    -1,    -1,    -1,    -1,
     3225     486,    -1,    -1,  1569,  1570,   250,    -1,  1464,    -1,  1099,
     3226      -1,    -1,    -1,    -1,  1471,    -1,    -1,    -1,    -1,    -1,
     3227      -1,    -1,   417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3228    1204,    -1,    -1,    -1,    -1,    -1,  1524,   432,    -1,    -1,
     3229      -1,    -1,   437,  1531,   598,    -1,    -1,  1504,    -1,    -1,
     3230     445,  1508,  1226,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3231      -1,    -1,    -1,    -1,    -1,  1239,    -1,  1241,    -1,    -1,
     3232      -1,    -1,   350,    -1,    -1,    -1,   471,    -1,    -1,    -1,
     3233    1537,    -1,  1539,    -1,    -1,    -1,    -1,    -1,    -1,   643,
     3234     644,   645,   578,   579,   489,    -1,   491,  1271,    -1,    -1,
     3235      -1,    -1,    -1,    -1,    -1,  1279,  1280,  1281,   662,    -1,
     3236    1567,  1568,    -1,    -1,    -1,    -1,  1290,  1291,  1575,  1576,
     3237      -1,    -1,    -1,    -1,    -1,    -1,   680,    -1,    -1,    -1,
     3238    1304,    -1,    -1,  1223,    -1,    -1,    -1,   691,   533,   417,
     3239      -1,    -1,    -1,   697,    -1,    -1,    -1,    -1,    -1,    -1,
     3240      -1,    -1,    -1,  1327,   432,    -1,    -1,    -1,    -1,   437,
     3241      -1,    -1,    -1,    -1,    -1,    -1,    -1,   445,    -1,    -1,
     3242      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   733,
     3243      -1,   667,   736,    -1,    -1,   671,    -1,   432,    -1,    -1,
     3244      -1,    -1,    -1,   471,    -1,    -1,    -1,    -1,    -1,    -1,
     3245      -1,    -1,    -1,   598,    -1,    -1,    -1,    -1,    -1,    -1,
     3246      -1,   489,    -1,   491,    -1,    -1,    -1,    -1,   704,   773,
     3247      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3248      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3249      27,  1415,    -1,    -1,    -1,    -1,   491,    -1,   643,   644,
     3250     645,    -1,    39,    -1,    -1,   533,    -1,    -1,    -1,    -1,
     3251      -1,   815,    -1,    -1,    -1,    -1,    -1,   662,    -1,    -1,
     3252      -1,   825,    -1,    -1,   828,    -1,    -1,    -1,    -1,   833,
     3253      67,   835,    -1,    -1,    -1,   680,   840,    -1,   533,    -1,
     3254    1464,    -1,    -1,    -1,    -1,    -1,   691,  1471,    -1,    -1,
     3255      -1,    -1,   697,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3256      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3257     598,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3258      -1,    -1,    -1,   819,    -1,    -1,    -1,    -1,   733,    -1,
     3259      -1,   736,    -1,    -1,    -1,    26,    27,    28,   902,    -1,
     3260    1524,    -1,    -1,   598,    -1,    -1,    -1,    -1,    -1,    -1,
     3261      -1,    -1,    -1,    -1,    -1,   643,   644,   645,    -1,    -1,
     3262      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   773,    -1,
     3263      -1,    -1,    -1,    -1,   662,    -1,    -1,    -1,    -1,    -1,
     3264      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   643,   644,
     3265     645,    -1,   680,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3266      -1,    -1,    -1,   691,    -1,    -1,    97,   662,    99,   697,
     3267     815,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3268     825,    -1,   986,   828,    -1,    -1,    -1,    -1,   833,    -1,
     3269     835,    -1,    -1,    -1,    -1,   840,   932,    -1,    -1,    -1,
     3270      -1,    -1,    -1,    -1,    -1,   733,    -1,    -1,   736,     4,
     3271       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3272      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3273      25,    26,    27,    -1,    -1,  1039,  1040,    -1,  1042,  1043,
     3274      -1,   736,    -1,    -1,    39,   773,    -1,    -1,    -1,   180,
     3275      -1,    -1,    -1,    -1,    -1,    -1,    -1,   902,  1062,   190,
     3276     191,    -1,    -1,    -1,   195,    -1,   197,   198,    -1,    -1,
     3277      -1,    -1,    67,    -1,    69,  1011,    71,    72,    -1,    74,
     3278      75,    76,    -1,    -1,    -1,    -1,    -1,   815,    83,    84,
     3279      -1,  1027,    -1,  1097,  1098,    -1,    -1,   825,    -1,    -1,
     3280     828,    -1,    -1,    -1,    -1,   833,    -1,   835,    -1,    -1,
     3281      -1,    -1,   840,    -1,    10,    11,    12,    13,    14,    15,
     3282      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3283      26,    27,    28,   828,    30,    31,    32,    -1,    -1,    -1,
     3284     835,   986,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3285      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1161,    -1,    -1,
     3286      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1104,    -1,
     3287      -1,    67,    -1,    -1,   902,    -1,    72,    -1,    74,    75,
     3288      76,    -1,    78,    -1,    -1,    -1,    -1,    83,    84,    -1,
     3289      -1,    -1,    -1,    -1,  1039,  1040,    -1,  1042,  1043,    -1,
     3290    1204,    -1,    -1,    -1,    -1,    -1,    -1,   902,    -1,    -1,
     3291      -1,    -1,    -1,   109,    -1,   111,    -1,  1062,    -1,    -1,
     3292      -1,    -1,  1226,   119,    -1,    45,    -1,    -1,    -1,    -1,
     3293      -1,    -1,    -1,    -1,    -1,  1239,    -1,  1241,    -1,    -1,
     3294      -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,
     3295      -1,    -1,  1097,  1098,    -1,    -1,    -1,    -1,   986,    -1,
     3296      37,    38,    -1,    40,    -1,    -1,    -1,  1271,    -1,    -1,
     3297      -1,    -1,    -1,    -1,   969,  1279,  1280,  1281,    -1,    -1,
     3298      -1,    -1,    -1,    -1,    -1,    -1,  1290,  1291,    -1,    66,
     3299     110,   986,    -1,    -1,    -1,    72,   116,    -1,    -1,    76,
     3300    1304,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3301      87,  1039,  1040,    -1,  1042,  1043,  1161,    94,    -1,    -1,
     3302      -1,    -1,    -1,  1327,    -1,   145,    -1,    -1,    -1,    -1,
     3303      -1,    -1,   109,    -1,  1062,   155,    -1,    -1,    -1,   159,
     3304      -1,   118,   119,   120,   121,   122,   123,  1042,  1043,    -1,
     3305      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1204,
     3306      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1062,    -1,  1097,
     3307    1098,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3308      -1,  1226,    -1,    -1,    -1,    -1,    -1,    -1,   208,    -1,
     3309      -1,    -1,    -1,    -1,  1239,    -1,  1241,    -1,    -1,    -1,
     3310     220,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3311      -1,  1415,    -1,    -1,    -1,    -1,    -1,    -1,   238,   239,
     3312      -1,    -1,    -1,    -1,    -1,    -1,  1271,    -1,    -1,    -1,
     3313      -1,    -1,    -1,  1161,  1279,  1280,  1281,    -1,    -1,    -1,
     3314      -1,    -1,   262,    -1,    -1,  1290,  1291,    -1,    -1,    -1,
     3315     270,   582,   583,    -1,    -1,    -1,    -1,    -1,    -1,  1304,
     3316    1464,    -1,    -1,    -1,    -1,    -1,    -1,  1471,    -1,    -1,
     3317      -1,    -1,    -1,    -1,   294,    -1,  1204,   297,    -1,    -1,
     3318      -1,   612,  1327,    -1,   615,   616,    -1,   618,    -1,   620,
     3319     621,    -1,    -1,    -1,   625,   626,    -1,    -1,  1226,    -1,
     3320      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1203,  1204,
     3321      -1,  1239,    -1,  1241,    -1,    -1,    -1,    -1,    -1,    -1,
     3322    1524,    -1,    -1,    -1,   344,    -1,    -1,    -1,    -1,   349,
     3323      -1,  1226,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3324      -1,    -1,    -1,  1271,    -1,    -1,    64,    -1,    -1,    -1,
     3325    1245,  1279,  1280,  1281,    -1,    -1,    74,    -1,    76,    -1,
     3326      78,    -1,  1290,  1291,    -1,    -1,    -1,    85,    -1,    -1,
     3327    1415,    -1,    -1,    -1,    -1,    -1,  1304,    -1,   709,   710,
     3328      -1,    -1,    -1,    -1,   715,    -1,    -1,    -1,    -1,    -1,
     3329      -1,    -1,    -1,    -1,    -1,  1290,  1291,    -1,   116,  1327,
     3330     118,   119,   120,    -1,  1299,   425,   426,    -1,    -1,  1304,
     3331      -1,    -1,   432,    -1,    -1,    -1,    -1,    -1,    -1,  1464,
     3332      -1,    -1,    -1,    -1,    -1,    -1,  1471,    -1,    -1,    -1,
     3333      -1,    -1,    -1,   453,    -1,    -1,   456,    -1,    -1,    -1,
     3334      -1,   159,   462,  1338,     3,     4,     5,     6,     7,     8,
    21053335       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2106       19,    20,    21,    22,    23,    24,    75,     0,    25,    26,
    2107       27,     0,   453,     0,   351,   351,   946,    30,     0,     0,
    2108      109,     0,     0,     0,     0,     0,     0,     0,    77,     0,
    2109        0,     0,  1236,     0,     0,     0,     0,     0,     0,     0,
    2110        0,   353,   353,   354,     0,    33,     0,     0,    77,     0,
    2111       36,     0,    37,    38,    39,    84,    77,     0,     0,     0,
    2112        0,    40,    41,     0,     0,     0,     0,     0,     0,     0,
    2113      361,     0,     0,     0,     0,    84,   346,     0,   351,     0,
    2114        0,     0,   354,    84,     0,     0,     0,    42,     0,   155,
    2115        0,     0,     0,     0,     0,     0,     0,    44,     0,     0,
    2116      354,     0,    77,     0,     0,   353,     0,     0,     0,   361,
    2117        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2118        0,   220,     0,     0,     0,     0,     0,   361,     0,    84,
    2119        0,     0,     0,     0,     0,    54,     0,     0,     0,     0,
    2120        0,     0,     0,    72,   354,     0,     0,     0,   221,     0,
    2121        0,     0,     0,     0,     0,     0,   351,     0,   351,     0,
    2122        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2123       75,   361,     0,     0,     0,     0,     0,   346,     0,     0,
    2124        0,     0,     0,   353,     0,   353,     0,     0,   351,     0,
    2125        0,     0,     0,     0,     0,     0,   351,   351,   351,     0,
    2126        0,     0,     0,     0,     0,     0,     0,   351,   351,   354,
    2127        0,     0,     0,     0,     0,   353,     0,     0,     0,     0,
    2128        0,    72,     0,   353,   353,   353,     0,     0,     0,     0,
    2129        0,     0,     0,     0,   353,   353,   361,     0,     0,     0,
    2130        0,     0,   346,     0,   351,     0,     0,     0,    75,     0,
    2131        0,     0,     0,     0,   354,   354,   354,     0,     0,     0,
    2132        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2133        0,   353,     0,   354,     0,     0,     0,     0,     0,   124,
    2134        0,   361,   361,   361,     0,     0,     0,   346,   346,   346,
    2135        0,   354,     0,     0,     0,     0,     0,     0,     0,     0,
    2136      361,     0,    77,     0,     0,     0,   346,     0,   354,     0,
    2137        0,     0,     0,     0,     0,     0,     0,     0,   361,  1033,
    2138        0,     0,     8,     9,    10,    11,    12,     0,     0,    84,
    2139        0,     0,   351,     0,     0,   361,     0,     0,     0,     0,
    2140        0,     0,     0,     0,    77,     0,     0,   354,   280,   281,
    2141       30,   282,     0,     0,     0,     0,     0,     0,     0,   353,
    2142        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2143        0,    84,     0,     0,   361,     0,     0,   283,    33,     0,
    2144      346,    72,     0,   284,   354,     0,     0,   285,    72,     0,
    2145      286,   287,   288,   289,    40,    41,     0,   290,   291,     0,
    2146        0,     0,     0,   124,     0,   292,     0,     0,    75,     0,
    2147        0,   361,     0,     0,     0,    75,     0,     0,     0,     0,
    2148      293,     0,   377,     0,     0,     0,   354,     0,     0,   295,
    2149      826,   297,   298,   299,   300,     0,   354,     0,     0,   354,
    2150        0,    72,     0,     0,   222,     0,   354,     0,     0,     0,
    2151        0,   354,     0,   361,     0,     0,     0,     0,     0,     0,
    2152        0,     0,     0,   361,     0,     0,   361,     0,    75,     0,
    2153        0,   223,   346,   361,     0,     0,     0,     0,   361,   346,
    2154        0,     0,     0,     0,     0,  -516,     0,     0,     1,     2,
     3336      19,    20,    21,    22,    23,    24,    25,    26,    27,   489,
     3337      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,  1524,
     3338      39,   501,    -1,    -1,    -1,    -1,    -1,  1415,    -1,    -1,
     3339      -1,    -1,    44,   513,    -1,   515,    -1,    -1,   518,    -1,
     3340     520,   521,   220,    -1,   222,   223,   224,    -1,    67,    -1,
     3341      69,    -1,    71,   533,    -1,    74,    75,    -1,    -1,    -1,
     3342    1415,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3343      -1,    -1,    -1,    -1,    -1,    -1,  1464,    -1,    90,    -1,
     3344     258,    -1,    -1,  1471,   262,    -1,  1441,    -1,   100,    -1,
     3345      -1,    -1,    -1,    -1,    -1,   114,    -1,    -1,    -1,    -1,
     3346     278,    -1,    -1,    -1,    -1,    -1,   586,    -1,    -1,  1464,
     3347      -1,    -1,    -1,    -1,    -1,    -1,  1471,    -1,   598,    -1,
     3348     600,    -1,    -1,   603,    -1,    -1,    -1,    -1,    -1,    -1,
     3349      -1,    -1,    -1,    -1,    -1,    -1,  1524,    -1,    -1,    -1,
     3350      -1,    -1,    -1,    -1,   156,    -1,    -1,    -1,    -1,   629,
     3351     328,    -1,    -1,    -1,   634,    -1,    -1,    -1,   170,    -1,
     3352      -1,    -1,    -1,   643,   644,   645,    -1,    -1,    -1,  1524,
     3353      -1,   349,    -1,    -1,    -1,    -1,   354,   355,    -1,    -1,
     3354      -1,   193,   662,    -1,   362,    -1,    -1,    -1,    -1,    -1,
     3355      -1,    -1,    -1,    -1,    -1,   207,    -1,    -1,    -1,    -1,
     3356      -1,    -1,     7,    -1,   216,    10,    11,    12,    13,    14,
     3357      -1,    -1,    -1,    -1,   226,    -1,    -1,   697,    -1,    -1,
     3358      -1,    -1,    -1,    -1,    -1,    -1,    -1,   405,    -1,    -1,
     3359      -1,    -1,    37,    38,    39,    40,    -1,    -1,   718,   251,
     3360      -1,    -1,    -1,    -1,   256,   423,    -1,    -1,    -1,    -1,
     3361     428,    -1,   430,    -1,    -1,    -1,   736,   269,   738,    -1,
     3362      -1,    66,    67,   275,    -1,   277,    -1,    72,    -1,   447,
     3363      -1,    76,   450,   451,    79,    80,    81,    82,    83,    84,
     3364      -1,    86,    87,   295,    -1,    -1,    -1,    -1,   466,    94,
     3365      -1,    -1,    -1,   773,    -1,    -1,    -1,    -1,    -1,    -1,
     3366      -1,    -1,   480,    -1,   109,    -1,   111,    -1,  1099,   487,
     3367      -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
     3368      -1,    -1,    -1,    -1,    -1,    -1,   338,    -1,    -1,    -1,
     3369      -1,   343,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3370      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   828,    -1,
     3371      -1,    -1,   832,    -1,    -1,   835,    -1,    -1,    -1,   371,
     3372      -1,    -1,    -1,   375,   376,    -1,   378,    -1,    -1,    -1,
     3373      -1,    -1,    -1,   385,   386,    -1,   388,   389,    -1,   391,
     3374      -1,   393,    -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,
     3375      10,    11,    12,    13,    14,    -1,    -1,    -1,   410,    -1,
     3376      -1,    -1,    -1,    -1,    -1,    -1,   418,    -1,    -1,    -1,
     3377      -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    39,
     3378      40,    -1,    -1,    -1,    -1,   603,    -1,    -1,    -1,    -1,
     3379      -1,   443,  1223,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3380      -1,    -1,   454,    -1,    -1,    -1,    66,    67,   928,    -1,
     3381      -1,    -1,    72,   631,    -1,    -1,    76,    -1,   636,    79,
     3382      80,    81,    82,    83,    84,   477,    86,    87,    -1,    -1,
     3383      -1,   483,    -1,    -1,    94,    -1,   488,    -1,    -1,    -1,
     3384      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3385     970,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,
     3386     120,   121,   122,   123,    -1,    -1,   986,    -1,    -1,    -1,
     3387      -1,    -1,    -1,   525,    -1,    -1,    -1,    -1,    -1,    -1,
     3388      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   541,
     3389      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3390      -1,  1021,    -1,    -1,    -1,    -1,   724,    -1,    -1,    -1,
     3391      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3392     738,    -1,  1042,  1043,    -1,    -1,   578,    -1,    -1,    -1,
     3393      -1,    -1,    -1,    -1,    -1,   587,    -1,    -1,    -1,    -1,
     3394     758,    -1,   594,    -1,    -1,    37,    38,   599,    40,    -1,
     3395      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   610,    -1,
     3396      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3397      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
     3398      72,    -1,  1102,    -1,    76,    -1,    -1,    79,    80,    81,
     3399      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,   651,
     3400      -1,   819,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3401      -1,    -1,    -1,    -1,   832,    -1,    -1,   109,    -1,   111,
     3402      -1,    -1,   114,    -1,    -1,    -1,   118,   119,   120,   121,
     3403     122,   123,    -1,   851,    -1,   687,    -1,    -1,    -1,    -1,
     3404      -1,  1161,    -1,    -1,     3,     4,     5,     6,     7,     8,
     3405       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3406      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3407      -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
     3408      39,    40,    -1,  1203,    -1,    -1,    -1,    -1,    -1,    -1,
     3409     742,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3410     752,   753,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,
     3411      69,    -1,    71,    72,   766,    74,    75,    76,    -1,    -1,
     3412     938,  1241,   154,   155,    83,    84,    -1,    -1,    -1,    -1,
     3413      -1,   783,    -1,   785,    -1,    -1,    -1,   789,    -1,    -1,
     3414      -1,    -1,    -1,    -1,    -1,    -1,   964,    -1,    -1,    -1,
     3415     109,    -1,   111,    -1,    -1,    -1,   188,    -1,    -1,    -1,
     3416     119,    -1,    -1,   195,    -1,    -1,    -1,    -1,    -1,    -1,
     3417    1290,  1291,    -1,    -1,   992,    -1,    -1,    -1,    -1,  1299,
     3418      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3419      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3420      30,    31,    32,   855,    -1,    -1,  1024,    -1,    -1,    39,
     3421     862,    -1,    -1,    -1,    -1,    -1,    -1,  1035,    -1,    -1,
     3422      -1,    -1,    -1,   875,    -1,   877,    -1,    -1,    -1,    -1,
     3423      -1,    -1,    -1,    -1,    -1,   267,    -1,    67,    -1,   891,
     3424      -1,    -1,    72,    -1,    74,    75,   898,    -1,    -1,    -1,
     3425      -1,    -1,    -1,    83,    84,    -1,    -1,    -1,   910,    -1,
     3426      -1,   913,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3427      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   931,
     3428      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,
     3429      -1,   323,    -1,    -1,    -1,  1415,    -1,    -1,  1116,   331,
     3430     332,    -1,   334,   335,    -1,    -1,    -1,    -1,    -1,    -1,
     3431      -1,    -1,   344,    -1,    -1,    -1,   348,    -1,    -1,    -1,
     3432      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3433      -1,    -1,    -1,    -1,    -1,   367,    -1,    -1,   370,    -1,
     3434      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3435      -1,    -1,    -1,  1473,    -1,  1475,    -1,    -1,    -1,    -1,
     3436      37,    38,    -1,    40,    -1,   397,    -1,    -1,  1020,   401,
     3437      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3438      -1,    -1,    -1,    -1,    -1,  1203,    -1,    -1,    -1,    66,
     3439    1510,   145,  1512,    -1,    -1,    72,    -1,    74,    75,    76,
     3440     432,   155,    79,    80,    81,    82,    83,    84,    -1,    86,
     3441      87,    -1,    -1,   167,   168,    -1,    -1,    94,    -1,    -1,
     3442    1540,    -1,    -1,   455,  1076,    -1,    -1,    -1,    -1,    -1,
     3443      -1,  1083,   109,    -1,   111,    -1,   113,   114,    -1,    -1,
     3444      -1,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
     3445      -1,    -1,    -1,    -1,   486,    -1,    -1,   489,    -1,    -1,
     3446    1112,    -1,    -1,    -1,    -1,  1117,    -1,    -1,    -1,    -1,
     3447      -1,    -1,    -1,  1125,    -1,    -1,    -1,    -1,    -1,    -1,
     3448      -1,  1299,    -1,    -1,   238,    -1,    -1,    -1,    -1,    -1,
     3449      -1,    -1,    -1,    -1,    -1,    -1,    -1,   529,    -1,    -1,
     3450     532,   533,    -1,    -1,  1156,    -1,    -1,    -1,    -1,   263,
     3451      -1,    -1,    -1,    -1,    -1,    -1,  1168,    -1,    -1,  1171,
     3452      -1,  1173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3453      -1,    -1,    -1,    -1,    -1,  1187,  1188,    -1,    -1,    -1,
     3454      -1,    -1,    -1,    -1,    -1,    -1,   578,   579,    -1,    -1,
     3455      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1209,    -1,    -1,
     3456      -1,    -1,    -1,    -1,    -1,   597,   598,    -1,   600,    -1,
     3457      -1,    -1,    -1,    -1,    -1,    -1,    -1,   609,    -1,   611,
     3458     612,    -1,    -1,    -1,  1236,    -1,   618,    -1,    -1,   281,
     3459      -1,   283,   284,    -1,    -1,    -1,   628,   629,    -1,   291,
     3460     292,    -1,   634,    -1,   296,   297,    -1,    -1,    -1,    -1,
     3461      -1,   643,   644,   645,    -1,    -1,   308,    -1,    -1,    -1,
     3462      -1,    -1,    -1,    -1,    -1,   379,    -1,    -1,    -1,    -1,
     3463     662,    -1,    -1,    -1,    -1,   667,   668,    -1,    -1,   671,
     3464     672,    -1,    -1,    -1,    -1,    -1,   678,    -1,    -1,    -1,
     3465      -1,    -1,   344,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3466      -1,    -1,    -1,    -1,   696,   697,   698,    -1,   700,    -1,
     3467      -1,    -1,   704,    -1,    -1,    -1,    -1,    -1,    -1,    37,
     3468      38,  1333,    40,  1335,    -1,    -1,    -1,    -1,   380,    -1,
     3469      -1,    -1,    -1,    -1,    -1,    -1,  1348,    -1,  1350,    -1,
     3470      -1,    -1,    -1,    -1,   736,   737,    -1,    -1,    66,    -1,
     3471      -1,    -1,    -1,    -1,    72,    -1,  1368,    -1,    76,    -1,
     3472      -1,    79,    80,    81,    82,    83,    84,   481,    86,    87,
     3473      -1,    -1,  1384,  1385,    -1,    -1,    94,  1555,    -1,    -1,
     3474     772,   773,    -1,    -1,  1396,   777,   778,  1399,    -1,    -1,
     3475      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3476     118,   119,   120,   121,   122,   123,   520,    -1,    -1,  1421,
     3477      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1430,   533,
     3478      -1,  1433,    -1,  1435,  1436,  1437,   540,   819,    -1,   543,
     3479      -1,    -1,    -1,    -1,    -1,    -1,   828,    -1,    -1,    -1,
     3480     554,   555,   834,   835,    -1,    -1,    -1,   839,    -1,   841,
     3481      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   851,
     3482      -1,    -1,   576,    -1,    -1,  1477,    -1,  1479,    -1,    -1,
     3483    1482,    -1,   586,    -1,    -1,    -1,    -1,    -1,    -1,   593,
     3484      -1,    -1,    -1,    -1,   598,  1497,    -1,    -1,    -1,    -1,
     3485      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3486      -1,    -1,    -1,    -1,    -1,   557,   558,   559,   560,   561,
     3487     562,   563,   564,   565,   566,   567,   568,   569,   570,   571,
     3488     572,   573,   574,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3489      -1,    -1,   924,    -1,   648,    -1,    -1,    -1,    -1,    -1,
     3490     932,    -1,    -1,   657,    -1,    -1,   938,    -1,   600,    -1,
     3491      -1,    -1,    -1,    -1,   946,    -1,    -1,    -1,    -1,    -1,
     3492      -1,    -1,    -1,    -1,    -1,    -1,    -1,   959,   960,    -1,
     3493      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3494      -1,    -1,    -1,   697,    -1,    -1,    -1,    -1,    -1,    -1,
     3495      -1,    -1,    -1,    -1,   986,    -1,    -1,    -1,    -1,    -1,
     3496     992,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3497      19,    20,    21,    22,    23,    24,    25,    26,    27,  1011,
     3498    1012,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,  1021,
     3499      39,    40,    -1,    -1,    -1,  1027,  1028,    -1,  1030,  1031,
     3500    1032,    -1,    -1,    -1,    -1,    -1,    -1,   699,    -1,    -1,
     3501    1042,  1043,    -1,    -1,    -1,    -1,    -1,    -1,    67,   773,
     3502      -1,   775,    -1,    -1,    -1,    74,    75,   781,    -1,   721,
     3503      -1,    -1,    -1,    -1,   788,    -1,    -1,    -1,    -1,    -1,
     3504      -1,    -1,   734,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3505      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3506      -1,    -1,   111,    -1,    -1,    -1,   115,    -1,    -1,    -1,
     3507     119,  1103,  1104,  1105,    -1,    -1,    -1,    -1,   832,   833,
     3508      -1,   835,    -1,    -1,  1116,    -1,    -1,    -1,   780,    -1,
     3509      -1,    -1,    -1,    -1,    -1,    -1,   850,    -1,    -1,    -1,
     3510      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3511      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3512     812,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1161,
     3513      -1,    -1,    -1,    -1,    -1,   827,   890,    -1,    -1,    -1,
     3514     894,    -1,    -1,     0,    -1,    -1,     3,     4,     5,     6,
     3515       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3516      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3517      27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,
     3518      -1,    -1,    39,    40,    -1,    -1,    -1,    -1,    -1,  1221,
     3519      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3520      -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,  1241,
     3521      67,    -1,    69,    -1,    71,    72,   970,    74,    75,    76,
     3522      -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
     3523      -1,    -1,   986,   987,    -1,    -1,    -1,    -1,    -1,   993,
     3524      -1,    -1,    -1,    -1,    -1,   999,    -1,    -1,  1002,    -1,
     3525    1004,    -1,   109,    -1,   111,    -1,    -1,    -1,  1290,  1291,
     3526      -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3527    1024,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3528      -1,  1035,    -1,    -1,    -1,    -1,   978,    -1,    -1,    -1,
     3529      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3530      -1,    -1,    -1,  1057,    -1,  1059,    -1,    -1,    -1,    -1,
     3531      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1009,    -1,    -1,
     3532    1074,  1075,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1021,
     3533      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3534      -1,  1095,    -1,    -1,     3,     4,     5,     6,     7,     8,
     3535       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3536      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3537    1062,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
     3538      39,    40,    -1,  1415,    -1,    -1,    -1,    -1,  1142,    -1,
     3539      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3540      -1,    -1,    -1,    -1,    -1,    64,    -1,  1161,    67,    -1,
     3541      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
     3542      -1,    -1,  1176,  1177,    83,    84,    -1,    -1,    -1,    -1,
     3543      -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
     3544      -1,    -1,  1134,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3545     109,    -1,   111,    -1,    -1,    -1,   115,    -1,    -1,    -1,
     3546     119,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     3547      -1,    76,    -1,  1505,    79,    80,    81,    82,    83,    84,
     3548      -1,    86,    87,    -1,    -1,    -1,  1178,    -1,    -1,    94,
     3549      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1530,  1531,
     3550    1192,  1193,    -1,  1257,   109,    -1,   111,    -1,    -1,    -1,
     3551      -1,   116,    -1,   118,   119,   120,   121,   122,   123,    -1,
     3552      -1,    -1,    -1,  1555,    -1,     3,     4,     5,     6,     7,
     3553       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3554      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3555      -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    37,
     3556      38,    39,    40,    41,  1318,    43,  1320,    -1,    46,    47,
     3557      48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    57,
     3558      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,    67,
     3559      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
     3560      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3561      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
     3562      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3563      -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,
     3564     118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
     3565     128,    -1,  1406,    -1,   132,    -1,    -1,    -1,    -1,    -1,
    21553566       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    21563567      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2157       23,    24,     0,    77,    25,    26,    27,    28,     0,     0,
    2158       29,     0,     0,    30,    31,     0,     0,     0,     0,     8,
    2159        9,    10,    11,    12,     0,     8,     9,    10,    11,    12,
    2160       84,     0,     0,     0,     0,     0,    54,     0,    32,     0,
    2161        0,    33,   163,    34,     0,    35,    36,    30,    37,    38,
    2162       39,     0,     0,    30,     0,     0,     0,    40,    41,     0,
    2163        0,   216,     0,     0,     0,     0,     0,     0,     0,     0,
    2164        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2165       36,    33,     0,    42,    39,    43,    36,   354,     0,     0,
    2166       39,    40,    41,    44,     0,     0,     0,    40,    41,     0,
    2167        0,     0,     0,    54,     0,     0,     0,   163,     0,     0,
    2168        0,     0,     0,   270,   361,     0,     0,    42,     0,     0,
    2169      346,     0,     0,   743,     0,     0,     0,   145,     0,     0,
    2170        0,     0,     0,   744,     0,     0,     0,     0,     0,     0,
    2171      354,   354,   163,   354,   354,     0,     0,     0,     0,     0,
    2172        0,     0,   367,     0,     0,     0,   373,     0,     0,     0,
    2173        0,     0,     0,    77,     0,     0,     0,   361,   361,     0,
    2174      361,   361,     0,     0,     0,     0,   346,   346,     0,     0,
    2175        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2176       84,     0,     0,     0,     0,     0,    54,     0,   354,   354,
    2177        0,     0,     0,     0,     0,   163,     0,     0,     0,     0,
    2178        0,     0,     0,     0,     0,     0,     0,   216,     0,     0,
    2179        0,     0,     0,     0,     0,   361,   361,     0,     0,     0,
    2180        0,   280,   281,     0,   282,   163,   460,     8,     9,    10,
     3568      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3569      33,    -1,    -1,    36,    37,    38,    39,    40,    -1,    -1,
     3570      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3571    1402,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
     3572      -1,    -1,    -1,    66,    67,    -1,    69,  1419,    71,    72,
     3573      -1,    74,    75,    76,  1488,    -1,    79,    80,    81,    82,
     3574      83,    84,    66,    86,    87,    -1,    -1,    -1,    72,    -1,
     3575      -1,    94,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3576      84,    -1,    86,    87,    -1,    -1,   109,    -1,   111,    -1,
     3577      94,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
     3578     123,    -1,    -1,    -1,    -1,   109,  1540,   111,    -1,   132,
     3579     114,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
     3580    1492,  1493,     3,     4,     5,     6,     7,     8,     9,    10,
    21813581      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2182       21,    22,    23,    24,     0,     0,    25,    26,    27,   373,
    2183      283,     0,   354,     0,     0,    30,   284,   163,     0,     0,
    2184      285,     0,     0,   286,   287,   288,   289,    40,    41,     0,
    2185      290,   291,     0,     0,     0,     0,     0,     0,   292,   361,
    2186        0,   460,     0,    33,   163,     0,     0,     0,     0,     0,
    2187      205,    38,     0,   512,     0,   222,     0,     0,     0,     0,
    2188        0,     0,   295,   379,   297,   298,   299,   300,     0,     0,
    2189        0,     0,     0,     0,     0,     0,     0,    77,     0,     0,
    2190        0,     0,   223,     0,     0,     0,     0,    54,    54,     0,
    2191      354,   605,   354,     0,     0,   269,   629,     0,     0,     0,
    2192        0,     0,     0,     0,    84,     0,     0,     0,     0,     0,
    2193       54,     0,     0,     0,     0,     0,     0,   361,     0,   361,
    2194        0,     0,   354,     0,     0,     0,     0,     0,     0,    54,
    2195      354,   354,   354,     0,     0,     0,     0,     0,     0,     0,
    2196        0,   354,   354,     0,     0,     0,     0,     0,     0,   361,
    2197        0,     0,     0,     0,     0,    77,     0,   361,   361,   361,
    2198        0,     0,     0,     0,     0,     0,     0,     0,   361,   361,
    2199        0,     0,   163,   163,   346,   346,     0,     0,   354,   367,
    2200        0,     0,    84,    54,     0,     0,     0,     0,    54,     0,
    2201        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2202      460,     0,     0,   460,     0,   361,     0,     0,     0,   460,
    2203        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2204        0,     0,    54,     0,     0,     0,     0,     0,     0,     0,
    2205        0,     0,     0,     0,     0,     0,   740,     0,     0,     0,
    2206      209,     0,     0,     0,     0,     0,     0,     0,   163,     0,
    2207      229,     0,   233,     0,   235,     0,     0,     0,     0,     0,
    2208      460,   244,   460,     0,     0,   460,   354,   163,   460,     0,
    2209        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2210      367,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2211        0,     0,   209,   361,   233,   235,   244,     0,     0,   346,
    2212        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2213        0,     0,     0,     0,     0,    77,     0,   154,     0,     0,
    2214        0,     0,    77,     0,     0,    54,     0,     0,     0,     0,
    2215        0,     0,     0,   163,     0,   209,     0,     0,     0,     0,
    2216        0,     0,    84,     0,     0,   367,     0,   605,    54,    84,
    2217      836,     0,     0,     0,     0,    54,     0,     0,     0,     0,
    2218        0,     0,     0,   249,     0,     0,     0,     0,     0,     0,
    2219        0,     0,     0,   254,     0,    77,   605,     0,     0,     0,
    2220        0,   605,     0,     0,     0,     0,     0,     0,     0,     0,
    2221      367,   367,   367,     0,     0,     0,   209,     0,   233,   235,
    2222      244,     0,    84,     0,     0,     0,     0,     0,    54,   367,
    2223        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2224       17,    18,    19,    20,    21,    22,    23,    24,  -294,   154,
    2225       25,    26,    27,     0,   209,     0,     0,     0,   209,    30,
    2226        0,     0,     0,   384,   740,     0,     0,     0,     0,     0,
    2227        0,     0,     0,     0,   503,     0,     0,     0,     0,     0,
    2228        0,     0,     0,     0,     0,   460,   416,    33,     0,     0,
    2229        0,     0,     0,     0,    37,    38,     0,     0,  -294,     0,
    2230      431,     0,     0,   367,     0,   960,     0,     0,     0,   436,
    2231        0,     0,     0,     0,     0,     0,     0,     0,     0,   444,
    2232        0,     0,     0,     0,   209,     0,     0,     0,     0,   642,
    2233        0,   337,   280,   281,     0,   282,     0,     0,     0,   109,
    2234      740,     0,     0,     0,   470,   209,     0,     0,     0,   480,
    2235      233,   235,     0,     0,     0,     0,     0,     0,   244,     0,
    2236        0,   283,   488,     0,     0,     0,     0,   284,   498,     0,
    2237      502,   285,     0,     0,   286,   287,   288,   289,    40,    41,
    2238        0,   290,   291,     0,     0,     0,     0,     0,   532,   292,
    2239        0,     0,     0,     0,     0,   367,     0,     0,     0,   629,
    2240        0,   209,   367,     0,   293,     0,   377,     0,     0,   378,
    2241        0,     0,     0,   295,   379,   297,   298,   299,   300,   209,
    2242        0,     0,     0,     0,   209,     0,   209,     0,     0,     0,
    2243        0,   592,     0,     0,     0,     0,   597,     0,     0,     0,
    2244        0,     0,     0,   209,     0,     0,   209,   209,     0,     0,
    2245        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2246        0,     0,   209,     0,   643,     0,     0,     0,   644,   645,
    2247        0,   647,     0,     0,     0,     0,   209,     0,   659,   660,
    2248        0,   661,   662,   209,   663,     0,   664,     0,     0,     0,
    2249        0,     0,     0,  1176,     0,   460,     8,     9,    10,    11,
    2250       12,     0,     0,   592,     0,     0,     0,     0,     0,     0,
    2251        0,   679,     0,     0,     0,     0,     0,     0,     0,     0,
    2252        0,     0,   280,   281,    30,   282,     0,     0,     0,     0,
    2253        0,     0,     0,     0,     0,     0,   690,   163,     0,     0,
    2254        0,     0,     0,     0,     0,     0,     0,   696,     0,     0,
    2255        0,   283,    33,   367,     0,     0,     0,   284,     0,     0,
    2256        0,   285,     0,     0,   286,   287,   288,   289,    40,    41,
    2257      732,   290,   291,     0,     0,     0,   735,     0,     0,   292,
    2258        0,   470,     0,     0,     0,     0,     0,     0,   605,     0,
    2259        0,     0,     0,     0,   293,     0,   377,     0,     0,   209,
    2260        0,     0,     0,   295,  1177,   297,   298,   299,   300,   367,
    2261      367,     0,     0,     0,     0,     0,     0,     0,   772,     0,
    2262        0,     0,     0,     0,     0,     0,     0,   209,   513,     0,
    2263      515,   518,   209,     0,   787,     0,     0,     0,   521,   522,
    2264        0,     0,     0,   515,   515,     0,     0,     0,     0,     0,
    2265        0,     0,     0,     0,     0,   515,     0,     0,     0,     0,
    2266        0,     0,     0,     0,     0,   280,   281,     0,   282,   460,
    2267        0,   814,     0,     0,     0,     0,     0,     0,     0,     0,
    2268      824,     0,     0,     0,     0,     0,     0,   827,     0,     0,
    2269        0,   515,   834,     0,   283,     0,     0,     0,     0,     0,
    2270      284,     0,     0,   849,   285,     0,     0,   286,   287,   288,
    2271      289,    40,    41,     0,   290,   291,     0,     0,     0,     0,
    2272      209,     0,   292,     0,     0,     0,     0,   515,   740,     0,
    2273        0,     0,     0,     0,   209,     0,     0,   293,     0,   377,
    2274        0,     0,     0,     0,   889,   811,   295,   379,   297,   298,
    2275      299,   300,     0,     0,   503,     0,     0,     0,     0,     0,
    2276        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2277      216,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2278      834,     0,     0,     0,     0,     8,     9,    10,    11,    12,
     3582      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3583      31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
     3584      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3585      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3586      30,    31,    32,    -1,    -1,    66,    67,    -1,    69,    39,
     3587      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3588      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3589      -1,    -1,    -1,    94,    -1,    -1,    -1,    67,    -1,    -1,
     3590      -1,    -1,    72,    -1,    74,    75,    -1,    -1,   109,    -1,
     3591     111,    -1,    -1,    83,    84,    -1,    -1,   118,   119,   120,
     3592     121,   122,   123,     4,     5,     6,     7,     8,     9,    10,
     3593      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3594      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3595      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3596      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3597      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3598      27,    28,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
     3599      71,    72,    39,    74,    75,    76,    -1,    -1,    79,    80,
     3600      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3601      -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
     3602      67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3603     111,    78,    -1,    -1,    -1,   116,    -1,   118,   119,   120,
     3604     121,   122,   123,     4,     5,     6,     7,     8,     9,    10,
     3605      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3606      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3607      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3608      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3609      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3610      27,    28,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
     3611      71,    72,    39,    74,    75,    76,    -1,    -1,    79,    80,
     3612      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3613      -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
     3614      67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3615     111,    78,    -1,    -1,    -1,   116,    -1,   118,   119,   120,
     3616     121,   122,   123,     4,     5,     6,     7,     8,     9,    10,
     3617      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3618      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3619      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3620      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3621      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3622      30,    31,    32,    -1,    -1,    66,    67,    -1,    69,    39,
     3623      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3624      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3625      -1,    -1,    -1,    94,    -1,    -1,    -1,    67,    -1,    -1,
     3626      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,    -1,
     3627     111,    -1,    -1,    -1,    -1,   116,    -1,   118,   119,   120,
     3628     121,   122,   123,     4,     5,     6,     7,     8,     9,    10,
     3629      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3630      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3631      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3632      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3633      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3634      30,    31,    32,    -1,    -1,    66,    67,    -1,    69,    39,
     3635      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3636      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3637      -1,    -1,    -1,    94,    -1,    -1,    -1,    67,    -1,    -1,
     3638      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,    -1,
     3639     111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,
     3640     121,   122,   123,     4,     5,     6,     7,     8,     9,    10,
     3641      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3642      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3643      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3644      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3645      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3646      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
     3647      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3648      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3649      -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
     3650      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3651     111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,
     3652     121,   122,   123,     4,     5,     6,     7,     8,     9,    10,
     3653      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3654      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3655      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3656      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3657      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3658      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
     3659      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3660      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3661      -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
     3662      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3663     111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,
     3664     121,   122,   123,     4,     5,     6,     7,     8,     9,    10,
     3665      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3666      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3667      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3668      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3669      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3670      30,    31,    32,    -1,    -1,    66,    67,    -1,    69,    39,
     3671      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3672      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3673      -1,    -1,    -1,    94,    -1,    -1,    -1,    67,    -1,    -1,
     3674      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,    -1,
     3675     111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,
     3676     121,   122,   123,     3,     4,     5,     6,     7,     8,     9,
     3677      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3678      20,    21,    22,    23,    24,    25,    26,    27,    -1,   119,
     3679      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3680      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3681      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3682      -1,    30,    31,    32,    33,    34,    35,    67,    -1,    69,
     3683      39,    71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
     3684      -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,
     3685      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3686      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
     3687      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,
     3688       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    22793689      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2280       23,    24,  -294,     0,    25,    26,    27,     0,   740,     0,
    2281        0,     0,     0,    30,     0,   209,     0,     0,     0,     0,
    2282        0,     0,     0,     0,     0,     0,     0,     0,   209,     0,
    2283        0,     0,     0,     0,     0,   249,     0,     0,     0,     0,
    2284        0,    33,     0,     0,     0,   967,   968,   209,    37,    38,
    2285        0,     0,  -294,     0,     0,     0,     0,   367,   367,   985,
    2286        0,     0,     0,     0,     0,     0,   216,     0,     0,     0,
    2287        0,     0,     0,     0,     0,     0,  1000,     0,  1001,     0,
    2288        0,     0,  1005,   642,     0,   337,     0,     0,     0,     0,
    2289        0,     0,     0,   633,     0,     0,     0,     0,     0,     0,
    2290        0,     0,     0,     0,   515,   515,   515,   515,   515,   515,
    2291      515,   515,   515,   515,   515,   515,   515,   515,   515,   515,
    2292      515,   515,     0,     0,     0,     0,     0,     0,     0,     0,
    2293      280,   281,     0,   282,   209,     0,     0,     0,     0,     0,
    2294        0,     0,     0,     0,     0,     0,     0,   515,  1038,     0,
    2295        0,     0,     0,     0,     0,  1039,     0,     0,     0,   283,
    2296      209,     0,     0,     0,     0,   284,     0,     0,  1041,   285,
    2297     1042,     0,   286,   287,   288,   289,    40,    41,     0,   290,
    2298      291,     0,   367,     0,  1054,     0,     0,   292,   209,     0,
    2299        0,  1058,     0,     0,     0,     0,     0,     0,     0,     0,
    2300        0,     0,   293,  1096,   377,     0,  1097,     0,     0,   780,
    2301        0,   295,   379,   297,   298,   299,   300,     0,     0,     0,
    2302      209,     0,     0,     0,   597,     0,     0,     0,     0,     0,
    2303        0,   209,     0,     0,     0,     0,     0,     0,     0,     0,
    2304      460,     0,   460,     0,     0,     0,   515,     0,     8,     9,
    2305       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2306       20,    21,    22,    23,    24,  -294,     0,     0,   515,     0,
    2307        0,     0,     0,     0,     0,     0,    30,   460,     0,   460,
    2308        0,   515,     8,     9,    10,    11,    12,    13,    14,    15,
    2309       16,    17,    18,    19,    20,    21,    22,    23,    24,  -294,
    2310        0,    25,    26,    27,    33,     0,     0,   163,     0,     0,
    2311       30,     0,   209,  1160,     0,  -294,     0,     0,     0,   340,
    2312      362,     0,     0,     0,     0,     0,     0,   515,     0,     0,
    2313        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2314        0,     0,     0,    36,     0,   335,   336,    39,     0,  -294,
    2315        0,     0,     0,   412,    40,    41,     0,     0,     0,   515,
    2316      412,     0,     0,     0,     0,     0,     0,     0,     0,   532,
    2317        0,     0,     0,     0,   515,     0,  1225,     0,     0,     0,
    2318      642,     0,   337,     0,     0,     0,     0,     0,     0,     0,
    2319      633,   280,   281,     0,   282,     0,     0,     0,     0,   209,
    2320        0,     0,     0,     0,     0,  1238,     0,     0,     0,     0,
    2321     1240,     0,     0,     0,     0,     0,     0,     0,  1244,     0,
    2322      283,     0,     0,     0,     0,     0,   648,     0,   137,   138,
    2323      285,     0,   412,   286,   649,   288,   289,    40,    41,     0,
    2324      290,   291,     0,     0,     0,     0,     0,     0,   292,  1270,
    2325        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2326        0,  1278,     0,   293,  1279,   650,  1280,   651,   378,     0,
    2327        0,     0,   295,   379,   297,   298,   299,   300,     0,     0,
    2328     1289,  1290,     0,     0,     0,     0,     0,     0,   412,     0,
    2329        0,     0,     0,     0,     0,   209,   412,   588,     0,   412,
    2330      591,     0,  1303,     0,     0,     0,     0,     0,     0,   362,
    2331        0,     0,     0,   621,     0,     0,     0,     0,     0,     0,
    2332        0,     0,     0,     0,     0,   515,     0,     0,     0,  1326,
    2333      320,     0,   639,     0,     0,   340,     0,     0,     0,     0,
    2334      344,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2335        0,     0,   380,   380,     0,     0,   515,     0,     0,     0,
    2336        0,     0,   412,     0,     0,     0,   412,     0,   515,     2,
    2337      204,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2338       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2339       23,    24,     0,     0,    25,    26,    27,   362,     0,     0,
    2340        0,     0,     0,    30,     0,     0,     0,     0,     0,   515,
    2341        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2342      412,     0,     0,   320,     0,     0,  1396,     0,  1397,     0,
    2343        0,    33,     0,    34,     0,    35,     0,     0,    37,    38,
    2344        0,  1406,     0,  1407,     0,     0,     0,     0,   484,     0,
    2345        0,   412,     0,     0,   362,     0,     0,     0,     0,     0,
    2346        0,  1414,     0,     0,     0,     0,     0,     0,     0,     0,
    2347        0,     0,     0,     0,  -399,   686,     0,  1432,  1434,     0,
    2348        0,   515,     0,   633,     0,     0,     0,     0,     0,  1440,
    2349        0,     0,  1244,     0,   412,     0,     0,   340,   362,     0,
    2350        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2351        0,     0,     0,     0,  1463,     0,     0,     0,     0,     0,
    2352        0,     0,     0,  1470,     0,   515,  1472,     0,  1474,  1476,
    2353     1478,     0,     0,     0,     0,     0,     0,     0,     0,   515,
    2354      515,     0,     0,   412,   412,     0,     0,     0,     0,     0,
    2355        0,   209,     0,     0,     0,     0,     0,     0,     0,     0,
    2356        0,     0,   829,   362,   380,   362,     0,     0,     0,     0,
    2357     1509,     0,  1511,     0,   621,  1244,   621,   621,     0,     0,
    2358        0,     0,     0,   621,     0,     0,     0,     0,     0,     0,
    2359     1523,     0,     0,   868,   362,     0,     0,     0,     0,   362,
    2360        0,     0,     0,     0,     0,     0,     0,     0,   362,   362,
    2361      362,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2362        0,     0,     0,     0,     0,     0,     0,   362,     0,     0,
    2363        0,     0,   412,   911,     0,     0,   412,   914,     0,     0,
    2364        0,     0,     0,   916,     0,     0,     0,     0,     0,     0,
    2365        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2366        0,   340,   362,   412,     0,   412,   734,     0,     0,   412,
    2367        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2368       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2369       25,    26,    27,     0,     0,     0,     0,     0,     0,    30,
    2370        0,   362,   621,     0,     0,   768,     0,     0,     0,     0,
    2371        0,     0,     0,     0,     0,     0,     0,     0,   781,     0,
    2372        0,     0,     0,     0,     0,   768,     0,    33,   768,     0,
    2373        0,     0,     0,     0,   205,    38,     0,   340,   362,   791,
    2374      792,     0,   412,   412,     0,     0,     0,     0,     0,   515,
    2375        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2376        0,   813,     0,     0,     0,     0,   515,     0,     0,     0,
    2377        0,   822,     0,     0,     0,     0,     0,     0,   344,   628,
    2378        0,     0,     0,   781,   412,     0,     0,     0,     0,     0,
    2379        0,     0,     0,   362,     0,     0,     0,     0,     0,   829,
    2380      362,     0,     0,     0,   621,     0,   621,     0,     0,     0,
    2381        0,     0,     0,     0,     0,     0,   621,     0,     0,     0,
    2382        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2383        0,     0,     0,   888,     0,     0,     0,     0,     0,   515,
    2384      515,     0,   380,     0,     0,     0,     0,     0,     0,     1,
    2385        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    2386       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2387       22,    23,    24,     0,     0,    25,    26,    27,    28,     0,
    2388        0,    29,   344,     0,    30,    31,     0,     0,     0,   829,
    2389        0,     0,     0,     0,     0,     0,     0,   412,   280,   281,
    2390        0,   282,     0,   412,     0,     0,     0,     0,     0,    32,
    2391        0,   412,    33,     0,    34,     0,    35,    36,     0,    37,
    2392       38,    39,     0,     0,   621,   621,     0,   283,    40,    41,
    2393        0,     0,     0,   284,     0,     0,     0,   285,     0,     0,
    2394      286,   287,   288,   289,    40,    41,     0,   290,   291,     0,
    2395        0,   362,     0,     0,    42,   292,    43,   412,   781,     0,
    2396      990,     0,     0,     0,    44,     0,   995,     0,     0,     0,
    2397      293,     0,   377,  1004,     0,   992,   412,  1157,     0,   295,
    2398      379,   297,   298,   299,   300,     0,   362,     0,     0,     0,
    2399        0,     0,   412,  1169,     0,   621,   621,  1174,     0,     0,
    2400        0,     0,     0,     0,     0,     0,     0,   362,   362,     0,
    2401        0,     0,     0,     0,     0,     0,     0,  1021,  1022,     0,
    2402      344,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2403        0,     0,     0,     0,     0,   344,     0,     0,     0,     0,
    2404        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2405        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2406        0,     0,     0,     0,     0,     0,     0,     0,   829,   412,
    2407     1237,     0,     0,     0,     0,  1052,     0,     0,     0,   380,
    2408        0,   621,     0,     0,     0,     0,     1,     2,   204,     4,
     3690      23,    24,    25,    26,    27,    28,    -1,    30,    31,    32,
     3691      33,    -1,    -1,    36,    -1,    -1,    39,    -1,    -1,    -1,
     3692      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3693      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3694      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
     3695      -1,    74,    75,    -1,    -1,    78,     3,     4,     5,     6,
     3696       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3697      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3698      27,    -1,    -1,    30,    31,    32,    33,    -1,   111,    36,
     3699      -1,    -1,    39,    -1,    -1,    -1,   119,    -1,    -1,    -1,
     3700      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3701      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3702      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     3,
     3703       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3704      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3705      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3706      -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,
     3707      -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3708      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3709      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
     3710      74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
     3711      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3712      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3713      31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,
     3714      -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,
     3715      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3716      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
     3717      71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
     3718      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
     3719      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3720      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3721     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,     4,
    24093722       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    24103723      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2411        0,     0,    25,    26,    27,    28,     0,     0,    29,   280,
    2412      281,    30,  1061,  1062,     0,  1063,   362,     0,  1064,  1065,
    2413     1066,  1067,  1068,  1069,  1070,  1071,     0,     0,     0,  1072,
    2414        0,     0,     0,  1073,  1074,     0,    32,     0,   283,    33,
    2415        0,    34,     0,    35,   648,   320,    37,    38,   285,     0,
    2416        0,   286,   287,   288,   289,    40,    41,     0,   290,   291,
    2417        0,  1138,  1139,     0,     0,     0,   292,     0,   380,     0,
    2418        0,     0,   280,   281,   995,   282,   340,  1148,     0,   768,
    2419        0,   293,     0,  1075,     0,     0,   169,     0,     0,     0,
    2420      295,   296,   297,   298,   299,   300,   362,     0,     0,  1164,
    2421     1076,   283,     0,     0,  -129,     0,     0,   284,     0,     0,
    2422     1179,   285,     0,     0,   286,   287,   288,   289,    40,    41,
    2423        0,   290,   291,     0,     0,     0,     0,     0,     0,   292,
    2424        0,     0,   380,     0,  1197,     0,     0,     0,     0,     0,
    2425        0,     0,     0,     0,   293,   362,   362,     0,     0,   995,
    2426      995,     0,     0,   295,   379,   297,   298,   299,   300,     0,
    2427        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2428     1229,     0,     0,     0,     0,     0,     0,     0,     1,     2,
    2429      204,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3724      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3725      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    10,
     3726      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3727      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3728      31,    32,    67,    -1,    69,    -1,    71,    -1,    39,    74,
     3729      75,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
     3730      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3731      22,    23,    24,    25,    26,    27,    67,    -1,    30,    31,
     3732      32,    -1,    -1,    74,    75,   110,   111,    39,    -1,    -1,
     3733      -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,
     3734      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3735      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,   109,    71,
     3736     111,    -1,    74,    75,    -1,    -1,    -1,    -1,   119,    -1,
     3737      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3738      -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,    -1,    -1,
     3739      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3740      -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,     4,     5,
     3741       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3742      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3743      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3744      -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    10,    11,
     3745      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3746      22,    23,    24,    25,    26,    27,    28,    -1,    30,    31,
     3747      32,    67,    -1,    69,    -1,    71,    -1,    39,    74,    75,
     3748      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3749      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3750      96,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3751      72,    -1,    74,    75,    76,   111,    78,    -1,    -1,    -1,
     3752      -1,    83,    84,   119,     4,     5,     6,     7,     8,     9,
     3753      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3754      20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
     3755      30,    31,    32,    -1,    -1,    -1,    -1,   119,    -1,    39,
     3756      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3757      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3758      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     3759      -1,    71,    -1,    -1,    74,    75,    -1,     4,     5,     6,
     3760       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3761      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3762      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3763      -1,   111,    39,    -1,    -1,    -1,    -1,    -1,    -1,   119,
     3764      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3765      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3766      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
     3767       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3768      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3769      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3770      -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,
     3771      -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3772      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3773      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
     3774      74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
     3775      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3776      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3777      31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,
     3778      -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,
     3779      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3780      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
     3781      71,    -1,    -1,    74,    75,    10,    11,    12,    13,    14,
     3782      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3783      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3784      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3785     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,
     3786      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3787      -1,    66,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3788      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3789      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3790      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3791      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
     3792      -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    10,
     3793      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3794      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3795      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3796      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3797      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3798      30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
     3799      -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3800      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3801      -1,    -1,    -1,    94,    -1,    -1,    -1,    67,    -1,    -1,
     3802      -1,    -1,    72,    -1,    74,    75,    76,    -1,   109,    -1,
     3803     111,   112,    -1,    83,    84,    -1,    -1,   118,   119,   120,
     3804     121,   122,   123,    10,    11,    12,    13,    14,    15,    16,
     3805      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3806      27,   111,    -1,    30,    31,    32,    -1,    -1,    -1,   119,
     3807      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
     3808      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3809      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
     3810      67,    -1,    -1,    39,    40,    72,    -1,    74,    75,    76,
     3811      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3812      87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     3813      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     3814      -1,    -1,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,
     3815      -1,   118,   119,   120,   121,   122,   123,    10,    11,    12,
    24303816      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2431       23,    24,     0,     0,    25,    26,    27,    28,     0,     0,
    2432       29,   280,   281,    30,   282,     0,     0,   995,     0,     0,
    2433        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2434      280,   281,     0,   282,     0,     0,   888,     0,     0,     0,
    2435      283,    33,     0,    34,     0,    35,   284,     0,    37,    38,
    2436      285,  1281,  1282,   286,   287,   288,   289,    40,    41,   283,
    2437      290,   291,     0,     0,     0,   284,     0,     0,   292,   285,
    2438      362,     0,   286,   287,   288,   289,    40,    41,     0,   290,
    2439      291,     0,     0,   293,     0,  1075,     0,   292,     0,     0,
    2440        0,     0,   295,   296,   297,   298,   299,   300,     0,     0,
    2441        0,     0,   293,     0,   377,     0,  -129,     0,     0,     0,
    2442        0,   295,   379,   297,   298,   299,   300,     0,     0,     0,
    2443        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2444        0,     0,   995,     0,     0,     0,     1,     2,   204,     4,
     3817      23,    24,    25,    26,    27,   111,    -1,    30,    31,    32,
     3818      -1,    -1,    -1,   119,    37,    38,    39,    40,    -1,    -1,
     3819      -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3820      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3821      25,    26,    27,    66,    67,    30,    31,    32,    -1,    72,
     3822      -1,    74,    75,    76,    39,    -1,    79,    80,    81,    82,
     3823      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3824      -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3825      -1,    -1,    67,    -1,    -1,    -1,   109,    -1,   111,    74,
     3826      75,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
     3827     123,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3828      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3829      -1,    30,    31,    32,   109,    -1,   111,    -1,    37,    38,
     3830      39,    40,    -1,    -1,   119,    -1,    -1,    -1,    -1,    10,
     3831      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3832      21,    22,    23,    24,    25,    26,    27,    66,    67,    30,
     3833      31,    32,    -1,    72,    -1,    74,    75,    76,    39,    -1,
     3834      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3835      -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,
     3836      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
     3837     109,    -1,   111,    74,    75,    -1,    -1,    -1,    -1,   118,
     3838     119,   120,   121,   122,   123,    10,    11,    12,    13,    14,
     3839      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3840      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3841     111,    -1,    37,    38,    39,    40,    -1,    -1,   119,    -1,
     3842      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3843      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3844      -1,    66,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3845      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3846      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3847      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3848      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3849      -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    10,
     3850      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3851      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3852      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3853      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3854      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3855      30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
     3856      -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3857      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3858      -1,    -1,    -1,    94,    -1,    -1,    -1,    67,    -1,    -1,
     3859      -1,    -1,    72,    -1,    74,    75,    76,    -1,   109,    -1,
     3860     111,    -1,    -1,    83,    84,    -1,    -1,   118,   119,   120,
     3861     121,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3862      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3863      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,
     3864      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3865      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3866      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3867      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3868      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3869      30,    31,    32,    -1,    -1,    -1,    -1,    67,    -1,    39,
     3870      -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
     3871      -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,
     3872      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3873      -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,   109,
     3874      -1,   111,    -1,    83,    84,    -1,    -1,    -1,    -1,   119,
     3875      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3876      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3877      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,
     3878      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3879      20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
     3880      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3881      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3882      20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
     3883      30,    31,    32,    -1,    -1,    -1,    -1,    67,    -1,    39,
     3884      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    78,    -1,
     3885      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3886      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3887      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    78,   109,
     3888      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,
     3889      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3890      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3891      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,
     3892      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3893      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3894      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3895      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3896      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3897      -1,    30,    31,    32,    -1,    -1,    -1,    67,    -1,    -1,
     3898      39,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
     3899      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3900      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3901      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    78,
     3902      -1,   111,    -1,    -1,    -1,   115,    -1,    -1,    -1,   119,
     3903      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3904      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3905      27,    -1,   111,    30,    31,    32,    -1,    -1,    -1,    -1,
     3906     119,    -1,    39,    40,    10,    11,    12,    13,    14,    15,
     3907      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3908      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3909      67,    -1,    -1,    39,    -1,    -1,    -1,    74,    75,    -1,
     3910      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3911      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3912      -1,    67,    30,    31,    32,    -1,    -1,    -1,    74,    75,
     3913      -1,    39,    -1,    -1,   111,    -1,    -1,    -1,   115,    -1,
     3914      -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3915      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3916      -1,    -1,    -1,    -1,    -1,   111,    74,    75,    -1,    -1,
     3917      -1,    -1,    -1,   119,    -1,    10,    11,    12,    13,    14,
     3918      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3919      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3920      -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,    -1,
     3921      -1,   119,    -1,    10,    11,    12,    13,    14,    15,    16,
     3922      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3923      27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,    74,
     3924      75,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
     3925      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3926      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3927      67,    -1,    39,    -1,    -1,    -1,   111,    74,    75,    -1,
     3928      -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,
     3929      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3930      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     3931      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3932      -1,    -1,   119,    -1,    -1,    10,    11,    12,    13,    14,
     3933      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3934      25,    26,    27,    -1,   111,    30,    31,    32,    -1,    -1,
     3935      -1,    -1,   119,    -1,    39,    10,    11,    12,    13,    14,
     3936      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3937      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3938      -1,    -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,
     3939      75,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3940      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3941      27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,    74,
     3942      75,    -1,    39,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3943      -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,
     3944      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3945      67,    -1,    -1,    -1,    -1,    -1,   111,    74,    75,    -1,
     3946      -1,    -1,    -1,    -1,   119,    -1,    10,    11,    12,    13,
     3947      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3948      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3949      -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,
     3950      -1,    -1,   119,    -1,    10,    11,    12,    13,    14,    15,
     3951      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3952      26,    27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,
     3953      74,    75,    -1,    39,    -1,    -1,     4,     5,     6,     7,
     3954       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3955      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3956      -1,    67,    30,    31,    32,    -1,    -1,   111,    74,    75,
     3957      -1,    39,    -1,    37,    38,   119,    40,    41,    -1,    43,
     3958      -1,    -1,    46,    47,    48,    49,    50,    51,    52,    53,
     3959      -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,    67,
     3960      64,    69,    66,    71,    -1,    -1,    74,    75,    72,    -1,
     3961      -1,    -1,    76,   119,    -1,    79,    80,    81,    82,    83,
     3962      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3963      94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3964      -1,    -1,   110,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3965     114,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
     3966      -1,    -1,    -1,    -1,   128,    -1,    37,    38,   132,    40,
     3967      41,    -1,    43,    -1,    -1,    46,    47,    48,    49,    50,
     3968      51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,
     3969      61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,
     3970      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
     3971      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3972      -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
     3973      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3974     111,    -1,    -1,   114,    -1,    -1,    -1,   118,   119,   120,
     3975     121,   122,   123,    -1,    -1,    -1,    -1,   128,    -1,    -1,
     3976      -1,   132,     4,     5,     6,     7,     8,     9,    10,    11,
     3977      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3978      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3979      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    37,
     3980      38,    -1,    40,    41,    -1,    43,    44,    45,    46,    47,
     3981      48,    49,    50,    51,    52,    53,    -1,    -1,    56,    57,
     3982      -1,    -1,    -1,    61,    62,    67,    64,    69,    66,    71,
     3983      -1,    -1,    74,    75,    72,    -1,    -1,    -1,    76,    -1,
     3984      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3985      -1,    -1,    -1,    -1,    96,    -1,    94,    -1,    -1,    -1,
     3986      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3987      -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,
     3988     118,   119,   120,   121,   122,   123,    -1,    -1,    37,    38,
     3989     128,    40,    41,    -1,    43,    44,    45,    46,    47,    48,
     3990      49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
     3991      -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
     3992      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
     3993      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3994      -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,
     3995      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3996     109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,
     3997     119,   120,   121,   122,   123,    -1,    -1,    37,    38,   128,
     3998      40,    41,    -1,    43,    -1,    -1,    46,    47,    48,    49,
     3999      50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
     4000      -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
     4001      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     4002      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     4003      -1,    -1,    -1,    -1,    94,    37,    38,    -1,    40,    -1,
     4004      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     4005      -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,   119,
     4006     120,   121,   122,   123,    66,    -1,    -1,    -1,   128,    -1,
     4007      72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
     4008      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
     4009      -1,    -1,    94,    37,    38,    -1,    40,    -1,    -1,    -1,
     4010      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     4011      -1,    -1,    37,    38,    -1,    40,   118,   119,   120,   121,
     4012     122,   123,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     4013      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     4014      84,    66,    86,    87,    -1,    -1,    -1,    72,    -1,    -1,
     4015      94,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     4016      -1,    86,    87,    -1,    -1,   109,    -1,   111,    -1,    94,
     4017      37,    38,    -1,    40,   118,   119,   120,   121,   122,   123,
     4018      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    37,
     4019      38,    -1,    40,   118,   119,   120,   121,   122,   123,    66,
     4020      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     4021      -1,    -1,    79,    80,    81,    82,    83,    84,    66,    86,
     4022      87,    -1,    -1,    -1,    72,    -1,    -1,    94,    76,    -1,
     4023      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     4024      -1,    -1,   109,    -1,   111,    -1,    94,    37,    38,    -1,
     4025      40,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
     4026      -1,   109,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,
     4027     118,   119,   120,   121,   122,   123,    66,    -1,    -1,    -1,
     4028      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     4029      80,    81,    82,    83,    84,    66,    86,    87,    -1,    -1,
     4030      -1,    72,    -1,    -1,    94,    76,    -1,    -1,    79,    80,
     4031      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,   109,
     4032      -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,   118,   119,
     4033     120,   121,   122,   123,    -1,    -1,    -1,    -1,   109,    -1,
     4034      -1,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,
     4035     121,   122,   123,     3,     4,     5,     6,     7,     8,     9,
     4036      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     4037      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     4038      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     4039      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4040      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4041      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     4042      -1,    71,    -1,    -1,    74,    75,     3,     4,     5,     6,
     4043       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     4044      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4045      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4046      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4047      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4048      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4049      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     4,
    24454050       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    24464051      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2447      412,     0,    25,    26,    27,    28,     0,     0,    29,   280,
    2448      281,    30,   282,     0,     0,     0,     0,     0,     0,     0,
    2449        0,     0,     0,     0,     0,   412,   412,     0,     0,     0,
    2450        0,     0,     0,  1389,     0,   768,     0,     0,   283,    33,
    2451        0,    34,     0,    35,   284,     0,    37,    38,   285,     0,
    2452      412,   286,   287,   288,   289,    40,    41,     0,   290,   291,
    2453        0,     0,     0,     0,     0,     0,   292,     0,     0,     0,
    2454        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2455        0,   293,     0,    43,     0,     0,     0,     0,     0,     0,
    2456      295,   296,   297,   298,   299,   300,     0,     0,     2,   204,
    2457        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2458       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2459       24,  1449,     0,    25,    26,    27,     0,     0,     0,     0,
    2460      280,   281,    30,   282,     0,     8,     9,    10,    11,    12,
    2461       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2462       23,    24,     0,     0,    25,    26,    27,     0,     0,   283,
    2463       33,     0,    34,    30,    35,   284,     0,    37,    38,   285,
    2464        0,     0,   286,   287,   288,   289,    40,    41,     0,   290,
    2465      291,     0,     0,     0,     0,     0,     0,   292,     0,     0,
    2466        0,    33,     0,     0,     0,     0,   108,     0,    37,    38,
    2467        0,     0,   293,  1515,   342,     0,     0,    40,    41,   780,
    2468        0,   295,   343,   297,   298,   299,   300,     2,   204,     4,
    2469        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2470       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2471        0,     0,    25,    26,    27,     0,     0,     0,     0,   280,
    2472      281,    30,   282,     0,     0,   320,     0,     8,     9,    10,
    2473       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2474       21,    22,    23,    24,  -295,     0,     0,     0,   283,    33,
    2475        0,    34,     0,    35,   284,    30,    37,    38,   285,     0,
    2476        0,   286,   287,   288,   289,    40,    41,     0,   290,   291,
    2477        0,     0,     0,     0,     0,     0,   292,     0,     0,     0,
    2478        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2479        0,   293,     0,   930,  -295,     0,     0,     0,   780,     0,
    2480      295,   343,   297,   298,   299,   300,     2,   204,     4,     5,
    2481        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2482       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2483        0,    25,    26,    27,     0,     0,     0,     0,   280,   281,
    2484       30,   282,     0,     8,     9,    10,    11,    12,    13,    14,
    2485       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2486        0,     0,    25,    26,    27,     0,     0,   283,    33,     0,
    2487       34,    30,    35,   284,     0,    37,    38,   285,     0,     0,
    2488      286,   287,   288,   289,    40,    41,     0,   290,   291,     0,
    2489        0,     0,     0,     0,     0,   292,     0,     0,     0,    33,
    2490        0,     0,     0,     0,     0,     0,    37,    38,     0,     0,
    2491      293,     0,   930,     0,     0,     0,     0,   780,     0,   295,
    2492      599,   297,   298,   299,   300,     2,   204,     4,     5,     6,
    2493        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2494       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2495       25,    26,    27,     0,     0,     0,     0,   280,   281,    30,
    2496      282,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2497       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2498        0,    25,    26,    27,     0,     0,   283,    33,     0,    34,
    2499       30,    35,   284,     0,    37,    38,   285,     0,     0,   286,
    2500      287,   288,   289,    40,    41,     0,   290,   291,     0,     0,
    2501        0,     0,     0,     0,   292,     0,     0,     0,    33,     0,
    2502        0,     0,     0,     0,     0,   205,    38,     0,     0,   293,
    2503        0,   342,     0,     0,     0,     0,     0,     0,   295,   343,
    2504      297,   298,   299,   300,     2,   204,     4,     5,     6,     7,
    2505        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2506       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2507       26,    27,     0,     0,     0,     0,   280,   281,    30,   282,
    2508        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2509       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2510        0,     0,     0,     0,     0,   283,    33,     0,    34,    30,
    2511       35,   284,     0,    37,    38,   285,     0,     0,   286,   287,
    2512      288,   289,    40,    41,     0,   290,   291,     0,     0,     0,
    2513        0,     0,     0,   292,     0,     0,     0,    33,     0,     0,
    2514        0,     0,     0,     0,     0,     0,     0,     0,   293,     0,
    2515      930,     0,     0,     0,     0,     0,     0,   295,   343,   297,
    2516      298,   299,   300,     2,   204,     4,     5,     6,     7,     8,
    2517        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2518       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2519       27,     0,     0,     0,     0,   280,   281,    30,   282,     0,
    2520        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2521        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2522        0,     0,     0,     0,   283,    33,     0,    34,     0,    35,
    2523      284,     0,   205,    38,   285,     0,     0,   286,   287,   288,
    2524      289,    40,    41,     0,   290,   291,     0,     0,     0,     0,
    2525        0,     0,   292,     0,     0,     0,     0,     0,     0,     0,
    2526        0,     0,     0,     0,     0,     0,     0,   293,     0,  1019,
    2527        0,     0,     0,     0,     0,     0,   295,  1020,   297,   298,
    2528      299,   300,     2,   204,     4,     5,     6,     7,     8,     9,
    2529       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2530       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2531        0,     0,     0,     0,   280,   281,    30,   282,     0,     0,
    2532        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2533        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2534        0,     0,     0,   283,    33,     0,    34,     0,    35,   284,
    2535        0,   205,    38,   285,     0,     0,   286,   287,   288,   289,
    2536       40,    41,     0,   290,   291,     0,     0,     0,     0,     0,
    2537        0,   292,     0,     0,     0,     0,     0,     0,     0,     0,
    2538        0,     0,     0,     0,     0,     0,   293,     0,   377,     0,
    2539        0,     0,     0,     0,     0,   295,   379,   297,   298,   299,
    2540      300,     1,     2,     3,     4,     5,     6,     7,     8,     9,
    2541       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2542       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2543       28,     0,     0,    29,     0,     0,    30,    31,     0,     0,
    2544        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2545        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2546        0,    32,     0,     0,    33,     0,    34,     0,    35,    36,
    2547        0,    37,    38,    39,     0,     0,     0,     0,     0,     0,
    2548       40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
    2549        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2550        0,     0,     0,     0,     0,     0,    42,     0,    43,     0,
    2551        0,     0,  -520,     0,     0,     0,    44,   203,     2,   204,
    2552        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2553       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2554       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2555        0,     0,    30,     8,     9,    10,    11,    12,    13,    14,
    2556       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2557        0,     0,    25,    26,    27,   491,   492,   493,     0,     0,
    2558       33,    30,    34,     0,    35,    36,     0,   205,    38,    39,
    2559        0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
    2560        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2561        0,     0,     0,     0,     0,     0,    37,    38,     0,     0,
    2562        0,     0,    42,     0,   206,     0,     0,     0,     0,     0,
    2563        0,     0,   207,     1,     2,   204,     4,     5,     6,     7,
    2564        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2565       18,    19,    20,    21,    22,    23,    24,  -294,     0,    25,
    2566       26,    27,    28,     0,     0,    29,     0,     0,    30,     0,
    2567        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2568        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2569        0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    2570       35,     0,     0,    37,    38,     0,     0,  -294,     0,     1,
    2571        2,   204,     4,     5,     6,     7,     8,     9,    10,    11,
    2572       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2573       22,    23,    24,     0,     0,    25,    26,    27,    28,     0,
    2574       43,    29,     0,     0,    30,     0,     0,     0,   109,     0,
    2575        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2576        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2577        0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
    2578       38,     0,   203,     2,   204,     4,     5,     6,     7,     8,
    2579        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2580       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2581       27,     0,     0,     0,     0,     0,    43,    30,     0,     0,
    2582        0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    2583        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2584        0,     0,     0,     0,     0,    33,     0,    34,     0,    35,
    2585        0,     0,   205,    38,     2,   204,     4,     5,     6,     7,
    2586        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2587       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2588       26,    27,     0,     0,     0,     0,     0,     0,    30,   206,
    2589        0,     0,     0,     0,     0,     0,     0,   269,     0,     0,
    2590        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2591        0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    2592       35,    36,     0,   205,    38,    39,     0,     0,     0,     0,
    2593        0,     0,    40,    41,     0,     0,     8,     9,    10,    11,
    2594       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2595       22,    23,    24,     0,     0,    25,    26,    27,    42,     0,
    2596      206,     0,     0,     0,    30,     0,     0,     0,   207,     2,
    2597      204,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2598       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2599       23,    24,    33,     0,    25,    26,    27,    36,     0,    37,
    2600       38,    39,     0,    30,     0,     0,     0,     0,    40,    41,
    2601        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2602        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2603        0,    33,     0,    34,    42,    35,    43,     0,    37,    38,
    2604        0,     0,     0,     0,    44,     0,     0,     0,     0,     0,
    2605        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2606     1368,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2607        0,     0,     0,     0,     0,   686,     0,     0,     0,     0,
    2608        0,     0,     0,   633,     2,   204,     4,     5,     6,     7,
    2609        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2610       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2611       26,    27,     0,     0,     0,     0,     0,     0,    30,     0,
    2612        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2613       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2614        0,     0,    25,    26,    27,     0,    33,     0,    34,     0,
    2615       35,    30,     0,    37,    38,     0,     0,     0,     0,     0,
    2616        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2617        0,     0,     0,     0,     0,  1370,     0,     0,     0,    33,
    2618        0,     0,     0,     0,    36,     0,   335,   336,    39,     0,
    2619      686,     0,     0,     0,     0,    40,    41,     0,   633,     2,
    2620      204,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2621       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2622       23,    24,     0,   337,    25,    26,    27,     0,     0,     0,
    2623        0,   109,     0,    30,     0,     0,     0,     0,     0,     0,
    2624        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2625        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2626        0,    33,     0,    34,     0,    35,     0,     0,   205,    38,
    2627        2,   204,     4,     5,     6,     7,     8,     9,    10,    11,
    2628       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2629       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2630        0,     0,     0,     0,    30,   268,     0,     0,     0,     0,
    2631        0,     0,     0,   628,     0,     0,     0,     0,     0,     0,
    2632        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2633        0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
    2634       38,     2,   204,     4,     5,     6,     7,     8,     9,    10,
    2635       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2636       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2637        0,     0,     0,     0,     0,    30,   686,     0,     0,     0,
    2638        0,     0,     0,     0,   633,     0,     0,     0,     0,     0,
    2639        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2640        0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
    2641       37,    38,     2,   204,     4,     5,     6,     7,     8,     9,
    2642       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2643       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2644        0,     0,     0,     0,     0,     0,    30,   598,     0,     0,
    2645        0,     0,     0,     0,     0,   633,     0,     0,     0,     0,
    2646        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2647        0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
    2648        0,   205,    38,     8,     9,    10,    11,    12,    13,    14,
    2649       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2650        0,     0,    25,    26,    27,     0,     0,     0,     0,   280,
    2651      281,    30,   282,     0,     0,     0,     0,     0,   206,     0,
    2652        0,     0,     0,     0,     0,     0,   269,     0,     0,     0,
    2653        0,     0,     0,     0,     0,     0,     0,     0,   283,    33,
    2654        0,     0,     0,     0,   284,     0,    37,    38,   285,     0,
    2655        0,   286,   287,   288,   289,    40,    41,     0,   290,   291,
    2656        0,     0,     0,     0,     0,     0,   292,     0,     0,     0,
    2657        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2658        0,   293,     0,   524,     0,     0,   169,     0,     0,     0,
    2659      295,   296,   297,   298,   299,   300,     8,     9,    10,    11,
    2660       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2661       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2662        0,     0,   280,   281,    30,   282,     8,     9,    10,    11,
    2663       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2664       22,    23,    24,  -294,     0,    25,    26,    27,     0,     0,
    2665        0,   283,    33,     0,    30,     0,     0,   284,     0,    37,
    2666       38,   285,     0,     0,   286,   287,   288,   289,    40,    41,
    2667        0,   290,   291,     0,     0,     0,     0,     0,     0,   292,
    2668        0,     0,    33,     0,     0,     0,     0,    36,     0,   335,
    2669      336,    39,     0,  -294,   293,     0,   598,    -3,    40,    41,
    2670        0,     0,     0,   295,   599,   297,   298,   299,   300,     8,
    2671        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2672       19,    20,    21,    22,    23,    24,   337,     0,    25,    26,
    2673       27,     0,     0,     0,   109,   280,   281,    30,   282,     8,
    2674        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2675       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2676       27,     0,     0,     0,   283,    33,     0,    30,     0,     0,
    2677      648,     0,    37,    38,   285,     0,     0,   286,   287,   288,
    2678      289,    40,    41,     0,   290,   291,     0,     0,     0,     0,
    2679        0,     0,   292,     0,     0,    33,     0,     0,     0,     0,
    2680      108,     0,    37,    38,     0,     0,     0,   293,   -35,   765,
    2681        0,    40,    41,     0,     0,     0,   295,   296,   297,   298,
    2682      299,   300,     8,     9,    10,    11,    12,    13,    14,    15,
    2683       16,    17,    18,    19,    20,    21,    22,    23,    24,    43,
    2684        0,    25,    26,    27,     0,     0,     0,   109,   280,   281,
    2685       30,   282,     8,     9,    10,    11,    12,    13,    14,    15,
    2686       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2687        0,    25,    26,    27,     0,     0,     0,   283,    33,     0,
    2688       30,   452,     0,   284,     0,    37,    38,   285,     0,     0,
    2689      286,   287,   288,   289,    40,    41,     0,   290,   291,     0,
    2690        0,     0,     0,     0,     0,   292,     0,     0,    33,     0,
    2691        0,     0,     0,     0,     0,    37,    38,     0,     0,     0,
    2692      293,     0,   294,     0,     0,     0,     0,     0,     0,   295,
    2693      296,   297,   298,   299,   300,     8,     9,    10,    11,    12,
    2694       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2695       23,    24,   453,     0,    25,    26,    27,     0,     0,     0,
    2696      109,   280,   281,    30,   282,     0,     0,     0,     0,     0,
    2697        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2698       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2699      283,    33,    25,    26,    27,     0,   284,     0,    37,    38,
    2700      285,    30,     0,   286,   287,   288,   289,    40,    41,     0,
    2701      290,   291,     0,     0,     0,     0,     0,     0,   292,     0,
    2702        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2703        0,     0,     0,   293,     0,   155,    37,    38,     0,     0,
    2704        0,     0,   295,   296,   297,   298,   299,   300,     8,     9,
    2705       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2706       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2707        0,   642,     0,   337,   280,   281,    30,   282,     0,     0,
    2708        0,   109,     0,     0,     0,     0,     8,     9,    10,    11,
    2709       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2710       22,    23,    24,   283,    33,    25,    26,    27,     0,   284,
    2711        0,    37,    38,   285,    30,     0,   286,   287,   288,   289,
    2712       40,    41,     0,   290,   291,     0,     0,     0,     0,     0,
    2713        0,   292,     0,     0,     0,     0,     0,     0,     0,     0,
    2714        0,     0,    33,     0,     0,     0,   293,     0,   598,    37,
    2715       38,     0,     0,     0,     0,   295,   599,   297,   298,   299,
    2716      300,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2717       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2718       25,    26,    27,     0,   642,     0,   337,   280,   281,    30,
    2719      282,     0,     0,     0,   633,     0,     0,     0,     0,     8,
    2720        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2721       19,    20,    21,    22,    23,    24,   283,    33,    25,    26,
    2722       27,     0,   284,     0,    37,    38,   285,    30,   452,   286,
    2723      287,   288,   289,    40,    41,     0,   290,   291,     0,     0,
    2724        0,     0,     0,     0,   292,     0,     0,     0,     0,     0,
    2725        0,     0,     0,     0,     0,    33,     0,     0,     0,   293,
    2726        0,   377,    37,    38,     0,     0,     0,     0,   295,   379,
    2727      297,   298,   299,   300,   473,     2,   204,     4,     5,     6,
    2728        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2729       17,    18,    19,    20,    21,    22,    23,    24,     0,   453,
    2730       25,    26,    27,  1234,     0,     0,     0,   109,     0,    30,
    2731        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2732       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2733       26,    27,     0,     0,     0,     0,     0,    33,    30,    34,
    2734        0,    35,     0,     0,    37,    38,     0,     0,     8,     9,
    2735       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2736       20,    21,    22,    23,    24,     0,    33,    25,    26,    27,
    2737        0,    36,     0,   205,    38,    39,    30,     0,     0,     0,
    2738        0,     0,    40,    41,    -3,     0,     8,     9,    10,    11,
    2739       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2740       22,    23,    24,     0,    33,    25,    26,    27,    42,    36,
    2741      268,   335,   336,    39,    30,     0,     0,     0,   207,     0,
    2742       40,    41,     0,     0,     8,     9,    10,    11,    12,    13,
    2743       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2744       24,     0,    33,    25,    26,    27,   642,     0,   337,    37,
    2745       38,     0,    30,     0,     0,     0,   633,     8,     9,    10,
    2746       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2747       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2748       33,     0,     0,     0,     0,    30,   255,    37,    38,     0,
    2749        0,     0,     0,     0,   109,     8,     9,    10,    11,    12,
    2750       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2751       23,    24,     0,    33,    25,    26,    27,     0,     0,     0,
    2752      205,    38,     0,    30,   155,     0,     0,     0,     0,     0,
    2753        0,     0,   109,     8,     9,    10,    11,    12,    13,    14,
    2754       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2755        0,    33,    25,    26,    27,     0,     0,   268,    37,    38,
    2756        0,    30,     0,     0,     0,   269,     8,     9,    10,    11,
    2757       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2758       22,    23,    24,     0,     0,    25,    26,    27,     0,    33,
    2759        0,     0,     0,     0,    30,   255,    37,    38,     0,     0,
    2760        0,     0,     0,   633,     8,     9,    10,    11,    12,    13,
    2761       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2762       24,     0,    33,    25,    26,    27,     0,     0,     0,    37,
    2763       38,     0,    30,   337,     0,     0,     0,     0,     0,     0,
    2764        0,   633,     8,     9,    10,    11,    12,    13,    14,    15,
    2765       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2766       33,    25,    26,    27,     0,     0,   453,   205,    38,     0,
    2767       30,     0,     0,     0,   109,     8,     9,    10,    11,    12,
    2768       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2769       23,    24,     0,     0,    25,    26,    27,     0,    33,     0,
    2770        0,     0,     0,    30,   268,    37,    38,     0,     0,     0,
    2771        0,     0,   628,     8,     9,    10,    11,    12,    13,    14,
    2772       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2773        0,    33,    25,    26,    27,     0,     0,     0,    37,    38,
    2774        0,    30,   598,     0,     0,     0,     0,     0,     0,     0,
    2775      633,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2776        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2777        0,     0,     0,     0,     0,   337,    37,    38,     0,     0,
    2778        0,     0,     0,   109,     2,   204,     4,     5,     6,     7,
    2779        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2780       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2781       26,    27,     0,    43,     0,     0,     0,     0,    30,     0,
    2782        0,   109,     0,     0,     0,     0,     0,     0,     0,     0,
    2783        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2784        0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    2785       35,     0,     0,    37,    38,   280,   281,     0,   282,  1062,
    2786        0,  1063,     0,     0,  1064,  1065,  1066,  1067,  1068,  1069,
    2787     1070,  1071,     0,     0,  1548,  1072,     0,     0,     0,  1073,
    2788     1074,     0,    32,     0,   283,     0,     0,     0,     0,  -412,
    2789      648,     0,     0,     0,   285,     0,     0,   286,   287,   288,
    2790      289,    40,    41,     0,   290,   291,     0,     0,     0,     0,
    2791        0,     0,   292,     0,     0,     0,     0,     0,     0,     0,
    2792        0,     0,     0,     0,     0,     0,     0,   293,     0,   377,
    2793        0,     0,   169,     0,     0,     0,   295,   379,   297,   298,
    2794      299,   300,     0,     0,     0,     0,  1076,     0,   280,   281,
    2795     -129,   282,  1062,     0,  1063,     0,     0,  1064,  1065,  1066,
    2796     1067,  1068,  1069,  1070,  1071,     0,     0,     0,  1072,     0,
    2797        0,     0,  1073,  1074,     0,    32,     0,   283,     0,     0,
    2798        0,     0,     0,   648,     0,     0,     0,   285,     0,     0,
    2799      286,   287,   288,   289,    40,    41,     0,   290,   291,     0,
    2800        0,     0,     0,     0,     0,   292,     0,     0,     0,     0,
    2801        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2802      293,     0,   377,     0,     0,   169,     0,     0,     0,   295,
    2803      379,   297,   298,   299,   300,     0,     0,     0,     0,  1076,
    2804        0,   280,   281,  -129,   282,  1062,     0,  1063,  1418,  1419,
    2805     1064,  1065,  1066,  1067,  1068,  1069,  1070,  1071,     0,     0,
    2806     1548,  1072,     0,     0,     0,  1073,  1074,     0,    32,     0,
    2807      283,     0,     0,     0,     0,     0,   648,     0,     0,     0,
    2808      285,     0,     0,   286,   287,   288,   289,    40,    41,     0,
    2809      290,   291,     0,     0,     0,     0,     0,     0,   292,     0,
    2810        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2811        0,     0,     0,   293,     0,   377,     0,     0,   169,     0,
    2812        0,     0,   295,   379,   297,   298,   299,   300,     0,     0,
    2813      280,   281,  1076,   282,  1062,     0,  1063,  1418,  1419,  1064,
    2814     1065,  1066,  1067,  1068,  1069,  1070,  1071,     0,     0,     0,
    2815     1072,     0,     0,     0,  1073,  1074,     0,    32,     0,   283,
    2816        0,     0,     0,     0,     0,   648,     0,     0,     0,   285,
    2817        0,     0,   286,   287,   288,   289,    40,    41,     0,   290,
    2818      291,     0,     0,     0,     0,     0,     0,   292,     0,     0,
    2819        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2820        0,     0,   293,     0,   377,     0,     0,   169,     0,     0,
    2821        0,   295,   379,   297,   298,   299,   300,     0,     0,   280,
    2822      281,  1076,   282,  1062,     0,  1063,     0,     0,  1064,  1065,
    2823     1066,  1067,  1068,  1069,  1070,  1071,     0,     0,     0,  1072,
    2824        0,     0,     0,  1073,  1074,     0,    32,     0,   283,     0,
    2825        0,     0,     0,     0,   648,     0,     0,     0,   285,     0,
    2826        0,   286,   287,   288,   289,    40,    41,     0,   290,   291,
    2827        0,     0,     0,     0,     0,     0,   292,     0,     0,     0,
    2828        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2829        0,   293,     0,   377,     0,     0,   169,     0,     0,     0,
    2830      295,   379,   297,   298,   299,   300,     0,     0,     0,     0,
    2831     1076,     2,   204,     4,     5,     6,     7,     8,     9,    10,
    2832       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2833       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2834        0,     0,     0,     0,     0,    30,     0,   280,   281,     0,
    2835      282,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2836        0,     0,     0,     0,     0,     0,   280,   281,     0,   282,
    2837        0,     0,     0,    33,     0,    34,   283,    35,     0,     0,
    2838       37,    38,   284,     0,     0,     0,   285,     0,     0,   286,
    2839      287,   288,   289,    40,    41,   283,   290,   291,     0,     0,
    2840        0,   648,  1327,     0,   292,   285,     0,     0,   286,   287,
    2841      288,   289,    40,    41,     0,   290,   291,     0,     0,   293,
    2842        0,   377,     0,   292,   280,   281,     0,   282,   295,   733,
    2843      297,   298,   299,   300,     0,     0,     0,     0,   293,     0,
    2844      784,     0,     0,   280,   281,     0,   282,   295,   379,   297,
    2845      298,   299,   300,   283,     0,     0,     0,     0,     0,   284,
    2846        0,     0,     0,   285,     0,     0,   286,   287,   288,   289,
    2847       40,    41,   283,   290,   291,     0,     0,     0,   284,     0,
    2848        0,   292,   285,     0,     0,   286,   287,   288,   289,    40,
    2849       41,     0,   290,   291,     0,     0,   293,     0,   377,     0,
    2850      292,   280,   281,     0,   282,   295,   826,   297,   298,   299,
    2851      300,     0,     0,     0,     0,   517,     0,     0,     0,     0,
    2852        0,     0,     0,     0,   295,   379,   297,   298,   299,   300,
    2853      283,     0,     0,     0,     0,     0,   284,     0,     0,     0,
    2854      285,     0,     0,   286,   287,   288,   289,    40,    41,     0,
    2855      290,   291,     0,     0,     0,     0,     0,     0,   292,     0,
    2856        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2857        0,     0,     0,   520,     0,     0,     0,     0,     0,     0,
    2858        0,     0,   295,   379,   297,   298,   299,   300,     2,   204,
    2859        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2860       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2861       24,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2862        0,     0,    30,     0,     0,     0,     0,     0,     0,     0,
    2863        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2864        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2865       33,     0,    34,     0,    35,    36,     0,   172,   173,    39,
    2866        0,     0,     0,     0,     0,     0,    40,    41,   203,     2,
    2867      204,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2868       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2869       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2870        0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
    2871        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2872        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2873        0,    33,     0,    34,     0,    35,     0,     0,   205,    38,
    2874      473,     2,   204,     4,     5,     6,     7,     8,     9,    10,
    2875       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2876       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2877        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2878        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2879        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2880        0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
    2881       37,    38,     2,   204,     4,     5,     6,     7,     8,     9,
    2882       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2883       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2884        0,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2885        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2886        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2887        0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
    2888        0,   205,    38
    2889 };
    2890 
    2891 #define yypact_value_is_default(yystate) \
    2892   ((yystate) == (-1281))
    2893 
    2894 #define yytable_value_is_error(yytable_value) \
    2895   YYID (0)
    2896 
    2897 static const yytype_int16 yycheck[] =
    2898 {
    2899        0,     1,     0,    42,   237,   217,   183,   183,   202,    42,
    2900        0,     1,     1,   183,    42,   542,   183,   183,   114,   103,
    2901      184,   455,   519,   343,     0,     0,   628,   454,    28,    29,
    2902      183,    31,   697,    31,   697,   183,   498,   697,   610,   608,
    2903      502,    31,    42,   679,    44,   461,    44,   347,  1042,   496,
    2904      279,   901,   655,     1,    54,    31,    31,   166,   167,   608,
    2905       60,  1061,    60,    63,   608,    63,    66,   610,    66,   153,
    2906      347,     0,   578,    63,  1005,   277,    66,    66,   416,   998,
    2907       80,    81,  1041,  1042,   184,   608,   263,   263,    63,   779,
    2908       42,   362,   185,   263,   608,   366,   263,   263,   436,    31,
    2909      264,   528,    31,   199,   104,  1337,   444,   107,   608,    27,
    2910      263,   776,     0,   776,   114,   263,   776,    42,   608,   722,
    2911      642,   643,   644,  1054,   758,   424,   425,   611,    38,   254,
    2912      643,   644,    38,   617,    81,    42,    62,   106,  1418,   661,
    2913        0,     1,    63,    31,   183,   145,    44,   145,   661,   109,
    2914      183,    81,   108,   153,   226,   183,   116,  1422,   158,    77,
    2915      158,   130,    38,   110,   264,   612,   259,   260,   488,   616,
    2916       50,    31,    44,   245,   743,   109,    43,    44,   814,   109,
    2917     1073,  1074,   116,   183,   184,    81,   184,   108,   824,    54,
    2918      637,    43,    44,    38,   641,    38,   408,    84,   108,   199,
    2919      110,   500,    63,   839,   110,   131,    66,   207,  1440,   207,
    2920      901,   109,  1492,   735,    43,    44,   216,   494,   108,   219,
    2921      519,   219,   735,    38,   263,   112,   226,    81,   108,   219,
    2922      263,   183,   108,    11,   110,   263,   115,   109,   108,   104,
    2923      404,   241,   107,   743,   219,   245,  1240,   114,  1141,   249,
    2924      250,   249,   131,   743,   115,  1520,   340,   113,   183,   249,
    2925     1525,   113,   116,   263,   264,   108,   264,   110,   115,   838,
    2926      270,    38,   144,   249,   249,     0,   183,   277,   850,   599,
    2927     1545,   510,     3,   717,   113,   369,   585,  1552,    81,   838,
    2928      454,   416,   292,   108,   838,   110,  1290,   158,   394,  1474,
    2929      111,  1525,   250,  1303,   404,   827,    31,   850,   628,   207,
    2930      610,   436,   818,   633,   827,   838,   109,   249,  1008,   444,
    2931      249,  1545,   486,   116,   838,   596,   422,   327,  1552,   327,
    2932     1289,  1290,   428,    81,  1509,   207,  1511,  1256,   838,    94,
    2933      238,   108,    95,   110,   292,   111,   346,   347,   838,   115,
    2934       81,   216,   690,    95,   454,  1525,   840,   115,   219,   698,
    2935      108,   249,     3,   363,     1,   237,   254,   367,   639,   122,
    2936     1061,   269,    71,   348,   129,  1225,   696,   108,   378,    71,
    2937      122,   720,  1552,    82,    83,   108,   486,   959,   108,   249,
    2938       82,    83,   114,   115,   394,   293,   257,   269,   296,    71,
    2939      261,   108,  1038,  1039,   404,   270,   404,    44,   130,   958,
    2940       82,    83,   277,   115,   958,    71,     0,   115,  1020,     0,
    2941     1414,   115,   422,   130,   296,   872,    82,    83,   428,   131,
    2942      430,   488,   131,   131,   109,   958,  1070,   131,   110,   131,
    2943      115,    67,   115,    89,    90,    71,   675,   531,    74,   115,
    2944       76,   130,   772,   115,   454,  1414,    71,    83,   131,   459,
    2945     1096,  1097,   118,  1463,   464,   131,   103,    82,    83,   131,
    2946     1470,   343,   109,   473,   108,  1406,  1407,   115,   478,   125,
    2947      126,   346,   109,   108,   109,   109,   486,   348,   486,   116,
    2948      490,   115,   490,   131,   494,   110,   109,   497,   363,   499,
    2949      490,    71,   367,   130,   479,   967,  1003,   144,   120,   121,
    2950      937,   927,    82,    83,   490,   490,   153,   964,   945,   519,
    2951      697,   697,   115,  1523,   249,   473,   108,   697,   416,   254,
    2952      697,   697,   761,   108,  1225,   699,   536,  1140,   131,   539,
    2953      110,   541,   542,  1115,   697,  1029,  1030,   656,   436,   697,
    2954      850,   108,   424,   425,   452,   757,   444,   455,   829,    87,
    2955       88,   490,   833,   461,   991,   690,   203,   663,   429,    71,
    2956      207,   519,   665,   850,   115,    10,    11,    12,    13,    14,
    2957       82,    83,   115,   108,   210,   642,   643,   644,   536,   589,
    2958      131,   539,   470,   541,   542,   109,   596,   115,   131,   699,
    2959      237,   238,   490,    38,   661,   109,   108,   732,   608,   115,
    2960      610,   695,  1303,   131,   512,    71,   514,   115,   479,   517,
    2961      111,   597,   520,   109,   115,   131,    82,    83,   500,   629,
    2962      490,    66,   269,   131,  1270,   272,   109,    79,   977,   696,
    2963      282,   589,  1278,  1279,  1280,   645,    71,   519,    73,    74,
    2964      109,   651,   923,   295,   296,   630,   293,    82,    83,   296,
    2965      660,   111,   662,   663,   664,   307,   114,  1101,   110,  1303,
    2966      112,    79,     3,   111,   116,   887,   108,   115,   735,    10,
    2967       11,    12,    13,    14,    91,    92,   963,   771,   113,     0,
    2968     1326,   416,   109,   108,   293,   110,   908,   697,   115,   699,
    2969     1020,   343,   110,   340,   112,   111,   343,    38,   116,   115,
    2970      108,   436,   712,   585,   662,   772,   664,   118,   718,   444,
    2971       31,   131,   123,   124,   350,   362,   352,   599,    71,   366,
    2972      730,    42,   369,    44,   111,    66,   969,   379,   115,    82,
    2973       83,   602,   108,   743,   744,   109,  1380,   109,   723,    60,
    2974     1131,   115,    63,   115,  1135,    66,   628,   757,   108,    63,
    2975      110,   633,   737,   488,   629,   490,   108,   110,   118,   630,
    2976      827,  1495,  1463,   937,   635,   108,   108,  1501,   110,  1470,
    2977      645,   945,   730,   108,   893,   110,   118,   424,   425,   111,
    2978      109,   109,  1319,   118,  1133,   660,   115,   115,  1522,   113,
    2979      109,   679,   690,  1527,   131,    52,   115,   113,   512,    71,
    2980      514,    73,    74,   517,   440,   452,   520,   109,   455,   717,
    2981       82,    83,   109,   115,   461,   424,   425,   128,   115,   130,
    2982      113,  1102,  1523,  1467,   145,  1469,   473,   937,   838,  1033,
    2983     1160,   114,   115,   109,   732,   945,   108,   158,    95,   115,
    2984      850,   113,  1191,  1192,   109,   108,   831,   110,   834,   131,
    2985      115,   498,   723,   500,  1529,   502,  1529,   131,   109,  1529,
    2986      115,   116,   183,   184,   115,   512,   737,   514,   109,   109,
    2987      517,   109,   519,   520,   115,   115,    71,   115,    73,    74,
    2988     1524,   108,   757,   893,   531,   108,   207,    82,    83,   109,
    2989      900,   901,  1131,   109,   109,   115,  1135,  1136,   219,   115,
    2990      115,   901,    81,   512,   556,   557,   558,   108,   517,   110,
    2991     1240,   520,   108,   923,   110,   901,   901,   109,   110,     4,
    2992        5,     6,     7,     8,     9,   108,   814,   937,   249,    71,
    2993      111,    73,    74,    81,   191,   945,   824,  1056,   585,   119,
    2994       82,    83,   263,   901,   108,   109,   110,   599,   108,   596,
    2995      110,   839,   599,   963,   108,   690,   110,   214,    57,    58,
    2996      831,   696,   108,   109,   110,   574,   108,   224,   968,   968,
    2997      108,   113,   110,   983,  1041,     4,     5,     6,     7,     8,
    2998        9,   628,   992,    68,   127,    70,   633,   108,   109,   110,
    2999     1000,   128,   639,  1003,   130,  1005,    71,   732,    73,    74,
    3000       75,   110,   108,   901,   110,     3,   327,    82,    83,   114,
    3001      115,  1250,    10,    11,    12,    13,    14,  1123,    71,   927,
    3002       73,    74,    75,   115,   116,   983,   347,   115,   116,    82,
    3003       83,   901,   108,   108,   110,   110,   293,   772,  1023,    68,
    3004       38,    70,  1000,   118,  1054,  1003,   131,  1005,   695,   108,
    3005      109,   110,  1401,    93,  1064,   108,   108,  1067,  1068,  1069,
    3006      108,  1061,    10,    11,    12,    13,    14,  1504,    66,  1418,
    3007      717,   563,   564,   565,   566,  1061,  1061,    71,   111,    73,
    3008       74,   733,  1092,   404,    43,    44,    44,   969,    82,    83,
    3009       38,   111,   702,  1160,   704,   109,  1054,   109,   968,  1338,
    3010      747,   109,    60,  1342,   109,    63,  1064,   109,    66,  1067,
    3011     1068,  1069,     3,  1123,   561,   562,   110,  1554,    66,    10,
    3012       11,    12,    13,    14,   771,   109,  1220,   779,    71,   108,
    3013       73,    74,    75,   454,   111,   109,   111,   111,  1020,    82,
    3014       83,   115,  1491,  1492,    57,    58,    59,    38,   567,   568,
    3015     1038,  1039,  1023,  1262,  1263,  1264,   130,   131,   559,   560,
    3016      108,   110,   110,  1061,   115,   108,   901,   130,   113,   490,
    3017      118,   108,   111,   494,   826,    66,   109,   109,   116,   115,
    3018      111,   111,   829,   111,   441,   111,   833,   145,  1198,   116,
    3019       28,  1061,   116,  1101,   109,    84,    85,    86,   109,   111,
    3020      158,   109,  1202,  1203,  1203,  1444,   113,   116,  1096,  1097,
    3021     1220,   114,   114,   114,   108,  1225,   115,  1202,   475,   108,
    3022      115,   110,  1289,   112,   113,  1225,   184,   109,     4,     5,
    3023        6,     7,     8,     9,   131,   109,   109,   116,   109,  1225,
    3024     1225,   109,   109,   115,  1244,  1244,    71,   109,   109,   207,
    3025       75,   109,  1262,  1263,  1264,   512,    32,    82,    83,   109,
    3026      517,   219,   109,   520,   109,   109,    71,  1225,    73,    74,
    3027       75,    84,    85,    86,   109,   109,   923,    82,    83,   470,
    3028      927,   109,   109,   108,   114,   110,   109,   608,   109,   610,
    3029       28,  1397,    68,   118,    70,   108,  1539,   110,  1298,   112,
    3030      113,   698,   111,  1303,  1262,  1263,  1264,   109,   130,  1319,
    3031     1320,   109,   109,  1298,   114,   109,   115,  1303,  1303,   111,
    3032      967,   968,   969,   720,   111,   109,  1061,  1225,    71,   109,
    3033      115,  1202,    75,  1203,   109,   901,   115,  1337,  1337,    82,
    3034       83,   115,  1529,  1529,   116,   113,   111,    71,   109,  1529,
    3035     1238,    75,  1529,  1529,   111,  1225,  1530,   115,    82,    83,
    3036      115,  1319,  1320,   109,  1374,   108,  1529,  1377,  1020,   327,
    3037      109,  1529,   108,  1020,  1244,   118,   697,   108,   699,   108,
    3038     1554,   108,  1270,   108,   108,   111,  1396,  1397,   116,   131,
    3039     1278,  1279,  1280,   114,   118,   109,  1406,  1407,  1504,    71,
    3040      109,    73,    74,    75,   109,  1303,     0,     1,   128,  1061,
    3041       82,    83,  1422,   114,   811,   113,  1374,  1427,   111,  1377,
    3042     1530,   678,   743,   744,   131,  1160,   109,  1298,   115,   111,
    3043      687,   115,   111,  1303,   691,  1445,   109,    31,  1326,   109,
    3044     1440,  1440,   109,   111,  1554,   111,   404,  1457,  1406,  1407,
    3045       44,   111,   109,    54,  1101,  1102,   111,   111,   111,    46,
    3046       29,   109,   131,  1463,  1422,   114,   131,  1337,   131,  1427,
    3047     1470,    71,    66,    73,    74,    75,   114,  1463,  1463,   131,
    3048     1529,   131,    82,    83,  1470,  1470,  1529,  1445,   679,   116,
    3049     1225,  1529,   889,   109,  1504,  1505,   111,   114,  1064,  1457,
    3050      111,   111,   111,   104,  1514,  1240,   107,   111,   108,   103,
    3051     1520,    80,    81,   111,   111,  1525,   111,   838,   118,  1529,
    3052     1530,  1396,  1530,  1523,   109,  1177,   109,   111,   108,   850,
    3053      111,    63,   108,  1543,   108,  1545,    59,  1523,  1523,  1549,
    3054      113,   109,  1552,   109,  1554,   131,  1554,  1505,    80,   116,
    3055     1560,   145,   153,   111,  1564,   111,  1514,   109,   111,   153,
    3056      154,   109,  1520,   108,  1472,  1463,  1474,  1525,  1303,    95,
    3057     1440,    95,  1470,  1220,   108,   114,   131,   115,   111,   109,
    3058      977,   109,   109,   115,   109,  1543,    41,  1545,   131,   131,
    3059      184,  1549,    95,  1463,  1552,  1204,  1205,  1244,  1207,   116,
    3060     1470,  1509,  1560,  1511,  1213,   199,  1564,  1216,   202,   203,
    3061      109,  1008,   109,   207,    95,   216,   937,   131,   109,   109,
    3062      131,   116,   131,   814,   945,  1523,   158,   109,   114,   109,
    3063       50,   131,    52,   824,   228,    55,    56,    57,   232,    59,
    3064      234,   111,   963,   111,   108,   114,   131,   114,   839,   243,
    3065      109,   109,   131,  1523,    74,   249,   109,  1539,   109,  1225,
    3066      254,  1058,  1076,   569,  1225,   570,    86,    87,   925,   270,
    3067      264,   571,   241,  1492,    63,   573,   277,  1382,   272,   572,
    3068       25,    26,    27,  1564,    73,  1313,  1136,   219,  1342,  1470,
    3069     1337,    10,    11,    12,    13,    14,    10,    11,    12,    13,
    3070       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3071       24,    25,    26,    27,  1092,    29,    30,    31,   452,    38,
    3072      452,   945,   704,   464,    38,   257,   115,   893,  1463,   261,
    3073      947,   992,   589,   965,   657,  1470,  1133,   747,  1244,   490,
    3074      757,   577,    -1,    -1,   577,   346,   340,    66,   577,   343,
    3075       -1,    96,    66,    98,  1320,   349,    -1,    -1,    -1,    73,
    3076       74,    -1,   363,    77,    -1,    -1,   367,  1376,   362,   158,
    3077       -1,    -1,   366,    -1,    -1,   369,    -1,    10,    11,    12,
    3078       13,    14,    -1,    -1,    -1,    -1,    -1,    -1,  1523,   108,
    3079       -1,   110,    -1,  1440,  1191,  1192,   110,    -1,    -1,   118,
    3080       -1,    -1,    -1,    -1,   118,    38,    -1,    -1,  1374,   378,
    3081       -1,  1377,    -1,    -1,    -1,  1072,   348,    -1,    -1,    -1,
    3082       -1,    -1,   416,    -1,    -1,  1472,    -1,  1474,    -1,   430,
    3083      219,    -1,    -1,    66,   179,    -1,    -1,   431,    -1,    -1,
    3084       -1,    -1,   436,    -1,   189,   190,    -1,  1038,  1039,   194,
    3085      444,   196,   197,    -1,    -1,    -1,  1422,    -1,    -1,    -1,
    3086       -1,  1427,  1509,    -1,  1511,    -1,    -1,    -1,   257,    -1,
    3087       -1,    -1,   261,    -1,    -1,   108,   470,   110,    -1,   473,
    3088       -1,    -1,    -1,    -1,    -1,   118,    -1,    -1,   277,    -1,
    3089      459,  1457,  1539,    -1,   488,   464,   490,   429,    -1,    10,
    3090       11,    12,    13,    14,   498,  1096,  1097,    -1,   502,    -1,
    3091       -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
    3092       13,    14,    -1,   343,   344,    -1,    -1,    38,   497,    71,
    3093      499,    73,    74,    75,    -1,   355,   356,   531,   532,    -1,
    3094       82,    83,    -1,    -1,    -1,    38,    -1,   479,    -1,    -1,
    3095       -1,    -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,   348,
    3096       71,    -1,    73,    74,    75,    -1,   108,    -1,   110,    -1,
    3097       -1,    82,    83,    66,   116,    -1,   118,  1543,    71,    -1,
    3098       73,    74,    75,  1549,   578,    -1,    -1,    -1,    -1,    82,
    3099       83,    -1,    -1,    -1,  1560,   596,    -1,   108,  1564,   110,
    3100       -1,    -1,   596,   597,  1401,   599,    -1,   118,    -1,    -1,
    3101       -1,    -1,    -1,    -1,    -1,   108,   610,   110,    -1,    -1,
    3102       -1,  1418,    -1,    -1,    -1,   118,    -1,    -1,   629,    -1,
    3103       -1,    -1,    -1,    -1,   628,    -1,    -1,    -1,    -1,   633,
    3104      429,    -1,    -1,    -1,   645,   639,    -1,  1238,   642,   643,
    3105      644,    -1,    -1,    -1,    -1,  1312,    -1,   446,    -1,   660,
    3106       71,    -1,    73,    74,    75,    -1,    -1,   661,    -1,    -1,
    3107      602,    82,    83,    -1,    -1,    -1,    -1,    -1,    -1,  1270,
    3108       -1,    -1,   651,    -1,    -1,   679,    -1,  1278,  1279,  1280,
    3109      479,    -1,    -1,    -1,  1491,  1492,   690,   108,   630,   110,
    3110       -1,   695,   696,   635,    -1,   699,    -1,   118,    -1,    -1,
    3111       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3112       19,    20,    21,    22,    23,    24,    25,    26,     0,    -1,
    3113       29,    30,    31,    -1,    -1,  1326,    -1,    -1,   732,    38,
    3114       39,   735,    -1,   712,    -1,    -1,    -1,    -1,    -1,   718,
    3115      744,    -1,    -1,   747,    -1,     0,   757,    -1,    -1,    31,
    3116       71,    -1,    73,    74,    75,    -1,    -1,    66,    -1,    -1,
    3117       -1,    82,    83,    -1,    73,    74,    -1,   771,   772,    -1,
    3118       -1,    -1,    -1,   777,    -1,    -1,    31,    -1,    -1,    -1,
    3119       -1,   723,    -1,    -1,    66,    -1,    -1,   108,    -1,   110,
    3120       -1,    -1,    -1,    -1,    -1,   737,    -1,   118,  1529,    -1,
    3121       -1,   110,    -1,   602,  1471,   114,  1473,    -1,    -1,   118,
    3122      814,    66,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3123      824,    -1,    -1,   827,    -1,   829,   581,   582,   832,   833,
    3124      834,   630,    -1,    -1,    -1,   839,   635,    -1,    -1,    -1,
    3125       -1,  1508,    -1,  1510,    -1,   849,    71,    -1,    73,    74,
    3126       75,    -1,    -1,    -1,    -1,    -1,   611,    82,    83,   614,
    3127      615,    -1,   617,    -1,   619,   620,    -1,    -1,    -1,   624,
    3128      625,    -1,   154,    96,    97,    98,    99,   100,   101,   102,
    3129      103,   104,   105,   108,    -1,    -1,  1553,    -1,  1555,   831,
    3130       -1,    -1,    -1,   118,   724,    -1,   726,   901,    -1,   154,
    3131       -1,  1568,  1569,   733,   734,    -1,    -1,   130,   738,    -1,
    3132       -1,    -1,   923,    -1,   893,    -1,   187,    -1,    -1,   923,
    3133      750,   900,    -1,   194,   723,   755,    -1,    -1,    10,    11,
    3134       12,    13,    14,    -1,    -1,    -1,    -1,    -1,   737,    -1,
    3135       -1,    -1,    -1,    -1,    -1,    -1,   228,    -1,    -1,    -1,
    3136       -1,   781,    -1,   708,   709,   959,    38,    -1,   757,   714,
    3137       -1,    -1,    -1,   967,   968,    -1,    -1,   249,    -1,    -1,
    3138       -1,    -1,   254,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3139       -1,   985,    -1,    -1,    66,    -1,    -1,    -1,    -1,    71,
    3140       -1,    73,    74,    75,   249,   266,   826,    -1,    -1,   254,
    3141       82,    83,    -1,    -1,    -1,    -1,    25,    26,    27,    -1,
    3142       -1,    -1,    -1,   992,    -1,    -1,  1020,    -1,    -1,    -1,
    3143       -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,   110,  1033,
    3144       -1,    -1,   831,    -1,  1038,  1039,   118,  1041,  1042,    -1,
    3145       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,
    3146       -1,   322,    -1,   883,   884,   885,   886,  1061,   888,   330,
    3147       -1,    -1,   333,    -1,    -1,    -1,    -1,   349,    -1,    -1,
    3148       -1,    -1,    38,    -1,   904,    -1,    -1,    96,    -1,    98,
    3149       -1,  1023,    -1,    -1,    -1,    -1,    -1,    -1,   918,    -1,
    3150       -1,    -1,  1096,  1097,   349,    -1,    -1,    -1,  1102,    -1,
    3151       66,    -1,    -1,    -1,   123,    71,    -1,    73,    74,    75,
    3152       -1,    -1,    -1,  1092,    -1,    -1,    82,    83,    -1,    -1,
    3153       -1,    -1,    -1,    -1,    -1,   396,    -1,   957,    -1,   400,
    3154       -1,    -1,    -1,    -1,   416,    -1,    -1,    -1,    -1,    -1,
    3155       -1,    -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,   431,
    3156       -1,    -1,   118,    -1,   436,    -1,  1160,    -1,    -1,    -1,
    3157      179,   416,   444,    -1,    -1,    -1,    -1,   997,   187,    -1,
    3158      189,   190,    -1,    -1,  1004,   194,   431,   196,   197,  1009,
    3159       -1,   436,    -1,    -1,  1014,    -1,  1016,    -1,   470,   444,
    3160     1020,  1021,  1022,    -1,    -1,  1025,    -1,    -1,    -1,  1203,
    3161       -1,    -1,    -1,    -1,  1034,    -1,   488,    -1,   490,  1220,
    3162       -1,    -1,    -1,    -1,   485,   470,  1220,    -1,    -1,  1198,
    3163       -1,  1225,  1052,  1053,  1023,    -1,    -1,    -1,    10,    11,
    3164       12,    13,    14,   488,  1238,   490,  1240,    -1,    -1,    -1,
    3165     1244,    -1,    -1,    -1,    -1,    -1,    -1,   266,    -1,  1079,
    3166      532,    -1,  1082,    -1,    -1,    -1,    38,    -1,    -1,    -1,
    3167     1202,    -1,    -1,    -1,    -1,    -1,  1270,    -1,    -1,    -1,
    3168       -1,    -1,    -1,    -1,  1278,  1279,  1280,   532,    -1,    -1,
    3169       -1,    -1,    -1,    -1,    66,  1289,  1290,    -1,    -1,    71,
    3170     1120,    73,    74,    75,    -1,    -1,  1126,  1127,    -1,  1303,
    3171       82,    83,    -1,    -1,    -1,    -1,   577,   578,  1138,    -1,
    3172       -1,    -1,    -1,  1143,    -1,   597,  1146,    -1,  1148,    -1,
    3173       -1,  1151,  1326,    -1,    -1,    -1,   108,    -1,    -1,    -1,
    3174       -1,    -1,    -1,  1337,  1164,    -1,   118,    -1,    -1,    -1,
    3175       -1,    -1,   597,  1098,    -1,    -1,    -1,  1177,    -1,  1179,
    3176     1180,  1181,  1182,    -1,    -1,    -1,  1298,    -1,    -1,    -1,
    3177      642,   643,   644,    -1,    -1,  1195,    -1,  1197,    -1,    -1,
    3178       -1,  1201,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   661,
    3179       -1,    -1,    -1,    -1,    -1,  1396,    -1,   642,   643,   644,
    3180       -1,    -1,    -1,    -1,    -1,   666,    -1,   679,    -1,   670,
    3181     1230,  1231,    -1,  1202,    -1,    -1,   661,    -1,   690,    -1,
    3182     1414,    -1,     0,    -1,   696,    -1,    -1,    -1,    -1,    -1,
    3183       -1,    -1,    -1,    -1,   679,    -1,    -1,    -1,    -1,    -1,
    3184       -1,    -1,   703,    -1,    -1,   690,  1440,    -1,    -1,     0,
    3185       -1,   696,    -1,    31,    -1,     0,     1,    -1,    -1,    -1,
    3186      732,  1281,  1282,   735,    -1,    -1,    -1,    -1,    -1,  1463,
    3187       -1,  1291,    -1,    -1,    -1,    -1,  1470,  1222,    -1,    -1,
    3188       31,    -1,    -1,    -1,    -1,    -1,    31,   732,    66,    -1,
    3189      735,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3190      772,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1298,
    3191       -1,    -1,    -1,    -1,    -1,    66,    -1,    -1,    63,    -1,
    3192       -1,    66,    -1,  1343,    -1,    -1,    -1,   772,    -1,  1523,
    3193       -1,    -1,    -1,    -1,    -1,  1355,  1530,  1357,  1358,  1359,
    3194       -1,    -1,   814,    -1,    -1,    -1,    -1,    -1,    -1,  1369,
    3195       -1,    -1,   824,    -1,    -1,   827,    -1,   818,  1378,    -1,
    3196      832,    -1,   834,    -1,    -1,    -1,    -1,   839,    -1,   814,
    3197       -1,    -1,   581,   582,  1394,    -1,   154,    -1,    -1,   824,
    3198       -1,    -1,   827,    -1,    -1,    -1,    -1,   832,    -1,   834,
    3199       -1,    -1,    -1,    -1,   839,    -1,    -1,    -1,    -1,    -1,
    3200       -1,    -1,   611,   154,    -1,   614,   615,    -1,   617,   154,
    3201      619,   620,    -1,    -1,    -1,   624,   625,    -1,    -1,    -1,
    3202       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   901,
    3203     1450,  1451,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3204       -1,    -1,    -1,  1463,    -1,    -1,    -1,    -1,    -1,    -1,
    3205     1470,    -1,    -1,    -1,    -1,    -1,   901,    -1,    -1,    -1,
    3206       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3207      931,   249,    -1,    -1,   219,    -1,   254,    -1,    -1,    -1,
    3208       -1,    -1,    -1,  1503,    -1,    -1,    -1,  1507,    -1,    -1,
    3209       -1,    -1,    -1,    -1,   703,    -1,    -1,    -1,   249,   708,
    3210      709,    -1,    -1,   254,   249,   714,    -1,    -1,    -1,    -1,
    3211       -1,    -1,    -1,   985,    -1,    -1,  1536,    -1,  1538,    -1,
    3212       -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3213       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3214      985,    29,    30,    31,    -1,    -1,  1566,  1567,    -1,  1010,
    3215       38,    39,    -1,    -1,  1574,  1575,    -1,    -1,    -1,    -1,
    3216       -1,    -1,    -1,    -1,    -1,  1026,  1038,  1039,    -1,  1041,
    3217     1042,   349,    -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,
    3218       -1,    -1,    -1,    -1,    -1,    73,    74,    -1,    -1,  1061,
    3219       -1,    -1,    -1,  1038,  1039,    -1,  1041,  1042,   349,    10,
    3220       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3221       21,    22,    23,    24,    25,    26,  1061,    -1,    29,    30,
    3222       31,    -1,   110,    -1,  1096,  1097,   114,    38,    -1,    -1,
    3223      118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   416,    -1,
    3224       -1,    -1,  1103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3225       -1,  1096,  1097,   431,    -1,    66,    -1,    -1,   436,    -1,
    3226       71,    -1,    73,    74,    75,   416,   444,    -1,    -1,    -1,
    3227       -1,    82,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3228      431,    -1,    -1,    -1,    -1,   436,   431,    -1,  1160,    -1,
    3229       -1,    -1,   470,   444,    -1,    -1,    -1,   108,    -1,   110,
    3230       -1,    -1,    -1,    -1,    -1,    -1,    -1,   118,    -1,    -1,
    3231      488,    -1,   490,    -1,    -1,  1160,    -1,    -1,    -1,   470,
    3232       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3233       -1,  1203,    -1,    -1,    -1,    -1,    -1,   488,    -1,   490,
    3234       -1,    -1,    -1,    -1,    -1,   490,    -1,    -1,    -1,    -1,
    3235       -1,    -1,    -1,  1225,   532,    -1,    -1,    -1,  1203,    -1,
    3236       -1,    -1,    -1,    -1,    -1,    -1,  1238,    -1,  1240,    -1,
    3237       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3238     1225,   532,    -1,    -1,    -1,    -1,    -1,   532,    -1,    -1,
    3239       -1,    -1,    -1,  1238,    -1,  1240,    -1,    -1,  1270,    -1,
    3240       -1,    -1,    -1,    -1,    -1,    -1,  1278,  1279,  1280,    -1,
    3241       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1289,  1290,   597,
    3242       -1,    -1,    -1,    -1,    -1,  1270,    -1,    -1,    -1,    -1,
    3243       -1,  1303,    -1,  1278,  1279,  1280,    -1,    -1,    -1,    -1,
    3244       -1,    -1,    -1,    -1,  1289,  1290,   597,    -1,    -1,    -1,
    3245       -1,    -1,   597,    -1,  1326,    -1,    -1,    -1,  1303,    -1,
    3246       -1,    -1,    -1,    -1,   642,   643,   644,    -1,    -1,    -1,
    3247       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3248       -1,  1326,    -1,   661,    -1,    -1,    -1,    -1,    -1,  1098,
    3249       -1,   642,   643,   644,    -1,    -1,    -1,   642,   643,   644,
    3250       -1,   679,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3251      661,    -1,   690,    -1,    -1,    -1,   661,    -1,   696,    -1,
    3252       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   679,     7,
    3253       -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,   690,
    3254       -1,    -1,  1414,    -1,    -1,   696,    -1,    -1,    -1,    -1,
    3255       -1,    -1,    -1,    -1,   732,    -1,    -1,   735,    36,    37,
    3256       38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1414,
    3257       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3258       -1,   732,    -1,    -1,   735,    -1,    -1,    65,    66,    -1,
    3259      735,  1463,    -1,    71,   772,    -1,    -1,    75,  1470,    -1,
    3260       78,    79,    80,    81,    82,    83,    -1,    85,    86,    -1,
    3261       -1,    -1,    -1,  1222,    -1,    93,    -1,    -1,  1463,    -1,
    3262       -1,   772,    -1,    -1,    -1,  1470,    -1,    -1,    -1,    -1,
    3263      108,    -1,   110,    -1,    -1,    -1,   814,    -1,    -1,   117,
    3264      118,   119,   120,   121,   122,    -1,   824,    -1,    -1,   827,
    3265       -1,  1523,    -1,    -1,   832,    -1,   834,    -1,    -1,    -1,
    3266       -1,   839,    -1,   814,    -1,    -1,    -1,    -1,    -1,    -1,
    3267       -1,    -1,    -1,   824,    -1,    -1,   827,    -1,  1523,    -1,
    3268       -1,   832,   827,   834,    -1,    -1,    -1,    -1,   839,   834,
    3269       -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,     3,     4,
    3270        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3271       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3272       25,    26,    -1,   901,    29,    30,    31,    32,    -1,    -1,
    3273       35,    -1,    -1,    38,    39,    -1,    -1,    -1,    -1,    10,
    3274       11,    12,    13,    14,    -1,    10,    11,    12,    13,    14,
    3275      901,    -1,    -1,    -1,    -1,    -1,   901,    -1,    63,    -1,
    3276       -1,    66,    44,    68,    -1,    70,    71,    38,    73,    74,
    3277       75,    -1,    -1,    38,    -1,    -1,    -1,    82,    83,    -1,
    3278       -1,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3279       -1,    -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,
    3280       71,    66,    -1,   108,    75,   110,    71,   985,    -1,    -1,
    3281       75,    82,    83,   118,    -1,    -1,    -1,    82,    83,    -1,
    3282       -1,    -1,    -1,   968,    -1,    -1,    -1,   109,    -1,    -1,
    3283       -1,    -1,    -1,   115,   985,    -1,    -1,   108,    -1,    -1,
    3284      985,    -1,    -1,   108,    -1,    -1,    -1,   118,    -1,    -1,
    3285       -1,    -1,    -1,   118,    -1,    -1,    -1,    -1,    -1,    -1,
    3286     1038,  1039,   144,  1041,  1042,    -1,    -1,    -1,    -1,    -1,
    3287       -1,    -1,   154,    -1,    -1,    -1,   158,    -1,    -1,    -1,
    3288       -1,    -1,    -1,  1061,    -1,    -1,    -1,  1038,  1039,    -1,
    3289     1041,  1042,    -1,    -1,    -1,    -1,  1041,  1042,    -1,    -1,
    3290       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3291     1061,    -1,    -1,    -1,    -1,    -1,  1061,    -1,  1096,  1097,
    3292       -1,    -1,    -1,    -1,    -1,   207,    -1,    -1,    -1,    -1,
    3293       -1,    -1,    -1,    -1,    -1,    -1,    -1,   219,    -1,    -1,
    3294       -1,    -1,    -1,    -1,    -1,  1096,  1097,    -1,    -1,    -1,
    3295       -1,    36,    37,    -1,    39,   237,   238,    10,    11,    12,
    3296       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3297       23,    24,    25,    26,    -1,    -1,    29,    30,    31,   261,
    3298       65,    -1,  1160,    -1,    -1,    38,    71,   269,    -1,    -1,
    3299       75,    -1,    -1,    78,    79,    80,    81,    82,    83,    -1,
    3300       85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,  1160,
    3301       -1,   293,    -1,    66,   296,    -1,    -1,    -1,    -1,    -1,
    3302       73,    74,    -1,   108,    -1,  1203,    -1,    -1,    -1,    -1,
    3303       -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3304       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1225,    -1,    -1,
    3305       -1,    -1,  1203,    -1,    -1,    -1,    -1,  1202,  1203,    -1,
    3306     1238,   343,  1240,    -1,    -1,   118,   348,    -1,    -1,    -1,
    3307       -1,    -1,    -1,    -1,  1225,    -1,    -1,    -1,    -1,    -1,
    3308     1225,    -1,    -1,    -1,    -1,    -1,    -1,  1238,    -1,  1240,
    3309       -1,    -1,  1270,    -1,    -1,    -1,    -1,    -1,    -1,  1244,
    3310     1278,  1279,  1280,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3311       -1,  1289,  1290,    -1,    -1,    -1,    -1,    -1,    -1,  1270,
    3312       -1,    -1,    -1,    -1,    -1,  1303,    -1,  1278,  1279,  1280,
    3313       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1289,  1290,
    3314       -1,    -1,   424,   425,  1289,  1290,    -1,    -1,  1326,   431,
    3315       -1,    -1,  1303,  1298,    -1,    -1,    -1,    -1,  1303,    -1,
    3316       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3317      452,    -1,    -1,   455,    -1,  1326,    -1,    -1,    -1,   461,
    3318       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3319       -1,    -1,  1337,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3320       -1,    -1,    -1,    -1,    -1,    -1,   488,    -1,    -1,    -1,
    3321       63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   500,    -1,
    3322       73,    -1,    75,    -1,    77,    -1,    -1,    -1,    -1,    -1,
    3323      512,    84,   514,    -1,    -1,   517,  1414,   519,   520,    -1,
    3324       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3325      532,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3326       -1,    -1,   115,  1414,   117,   118,   119,    -1,    -1,  1414,
    3327       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3328       -1,    -1,    -1,    -1,    -1,  1463,    -1,    43,    -1,    -1,
    3329       -1,    -1,  1470,    -1,    -1,  1440,    -1,    -1,    -1,    -1,
    3330       -1,    -1,    -1,   585,    -1,   158,    -1,    -1,    -1,    -1,
    3331       -1,    -1,  1463,    -1,    -1,   597,    -1,   599,  1463,  1470,
    3332      602,    -1,    -1,    -1,    -1,  1470,    -1,    -1,    -1,    -1,
    3333       -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,
    3334       -1,    -1,    -1,    99,    -1,  1523,   628,    -1,    -1,    -1,
    3335       -1,   633,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3336      642,   643,   644,    -1,    -1,    -1,   219,    -1,   221,   222,
    3337      223,    -1,  1523,    -1,    -1,    -1,    -1,    -1,  1523,   661,
    3338       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3339       19,    20,    21,    22,    23,    24,    25,    26,    27,   155,
    3340       29,    30,    31,    -1,   257,    -1,    -1,    -1,   261,    38,
    3341       -1,    -1,    -1,   169,   696,    -1,    -1,    -1,    -1,    -1,
    3342       -1,    -1,    -1,    -1,   277,    -1,    -1,    -1,    -1,    -1,
    3343       -1,    -1,    -1,    -1,    -1,   717,   192,    66,    -1,    -1,
    3344       -1,    -1,    -1,    -1,    73,    74,    -1,    -1,    77,    -1,
    3345      206,    -1,    -1,   735,    -1,   737,    -1,    -1,    -1,   215,
    3346       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   225,
    3347       -1,    -1,    -1,    -1,   327,    -1,    -1,    -1,    -1,   108,
    3348       -1,   110,    36,    37,    -1,    39,    -1,    -1,    -1,   118,
    3349      772,    -1,    -1,    -1,   250,   348,    -1,    -1,    -1,   255,
    3350      353,   354,    -1,    -1,    -1,    -1,    -1,    -1,   361,    -1,
    3351       -1,    65,   268,    -1,    -1,    -1,    -1,    71,   274,    -1,
    3352      276,    75,    -1,    -1,    78,    79,    80,    81,    82,    83,
    3353       -1,    85,    86,    -1,    -1,    -1,    -1,    -1,   294,    93,
    3354       -1,    -1,    -1,    -1,    -1,   827,    -1,    -1,    -1,   831,
    3355       -1,   404,   834,    -1,   108,    -1,   110,    -1,    -1,   113,
    3356       -1,    -1,    -1,   117,   118,   119,   120,   121,   122,   422,
    3357       -1,    -1,    -1,    -1,   427,    -1,   429,    -1,    -1,    -1,
    3358       -1,   337,    -1,    -1,    -1,    -1,   342,    -1,    -1,    -1,
    3359       -1,    -1,    -1,   446,    -1,    -1,   449,   450,    -1,    -1,
    3360       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3361       -1,    -1,   465,    -1,   370,    -1,    -1,    -1,   374,   375,
    3362       -1,   377,    -1,    -1,    -1,    -1,   479,    -1,   384,   385,
    3363       -1,   387,   388,   486,   390,    -1,   392,    -1,    -1,    -1,
    3364       -1,    -1,    -1,     7,    -1,   927,    10,    11,    12,    13,
    3365       14,    -1,    -1,   409,    -1,    -1,    -1,    -1,    -1,    -1,
    3366       -1,   417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3367       -1,    -1,    36,    37,    38,    39,    -1,    -1,    -1,    -1,
    3368       -1,    -1,    -1,    -1,    -1,    -1,   442,   969,    -1,    -1,
    3369       -1,    -1,    -1,    -1,    -1,    -1,    -1,   453,    -1,    -1,
    3370       -1,    65,    66,   985,    -1,    -1,    -1,    71,    -1,    -1,
    3371       -1,    75,    -1,    -1,    78,    79,    80,    81,    82,    83,
    3372      476,    85,    86,    -1,    -1,    -1,   482,    -1,    -1,    93,
    3373       -1,   487,    -1,    -1,    -1,    -1,    -1,    -1,  1020,    -1,
    3374       -1,    -1,    -1,    -1,   108,    -1,   110,    -1,    -1,   602,
    3375       -1,    -1,    -1,   117,   118,   119,   120,   121,   122,  1041,
    3376     1042,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   524,    -1,
    3377       -1,    -1,    -1,    -1,    -1,    -1,    -1,   630,   280,    -1,
    3378      282,   283,   635,    -1,   540,    -1,    -1,    -1,   290,   291,
    3379       -1,    -1,    -1,   295,   296,    -1,    -1,    -1,    -1,    -1,
    3380       -1,    -1,    -1,    -1,    -1,   307,    -1,    -1,    -1,    -1,
    3381       -1,    -1,    -1,    -1,    -1,    36,    37,    -1,    39,  1101,
    3382       -1,   577,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3383      586,    -1,    -1,    -1,    -1,    -1,    -1,   593,    -1,    -1,
    3384       -1,   343,   598,    -1,    65,    -1,    -1,    -1,    -1,    -1,
    3385       71,    -1,    -1,   609,    75,    -1,    -1,    78,    79,    80,
    3386       81,    82,    83,    -1,    85,    86,    -1,    -1,    -1,    -1,
    3387      723,    -1,    93,    -1,    -1,    -1,    -1,   379,  1160,    -1,
    3388       -1,    -1,    -1,    -1,   737,    -1,    -1,   108,    -1,   110,
    3389       -1,    -1,    -1,    -1,   650,   116,   117,   118,   119,   120,
    3390      121,   122,    -1,    -1,   757,    -1,    -1,    -1,    -1,    -1,
    3391       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3392     1202,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3393      686,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3394       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3395       25,    26,    27,    -1,    29,    30,    31,    -1,  1240,    -1,
    3396       -1,    -1,    -1,    38,    -1,   818,    -1,    -1,    -1,    -1,
    3397       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   831,    -1,
    3398       -1,    -1,    -1,    -1,    -1,   741,    -1,    -1,    -1,    -1,
    3399       -1,    66,    -1,    -1,    -1,   751,   752,   850,    73,    74,
    3400       -1,    -1,    77,    -1,    -1,    -1,    -1,  1289,  1290,   765,
    3401       -1,    -1,    -1,    -1,    -1,    -1,  1298,    -1,    -1,    -1,
    3402       -1,    -1,    -1,    -1,    -1,    -1,   782,    -1,   784,    -1,
    3403       -1,    -1,   788,   108,    -1,   110,    -1,    -1,    -1,    -1,
    3404       -1,    -1,    -1,   118,    -1,    -1,    -1,    -1,    -1,    -1,
    3405       -1,    -1,    -1,    -1,   556,   557,   558,   559,   560,   561,
    3406      562,   563,   564,   565,   566,   567,   568,   569,   570,   571,
    3407      572,   573,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3408       36,    37,    -1,    39,   937,    -1,    -1,    -1,    -1,    -1,
    3409       -1,    -1,    -1,    -1,    -1,    -1,    -1,   599,   854,    -1,
    3410       -1,    -1,    -1,    -1,    -1,   861,    -1,    -1,    -1,    65,
    3411      963,    -1,    -1,    -1,    -1,    71,    -1,    -1,   874,    75,
    3412      876,    -1,    78,    79,    80,    81,    82,    83,    -1,    85,
    3413       86,    -1,  1414,    -1,   890,    -1,    -1,    93,   991,    -1,
    3414       -1,   897,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3415       -1,    -1,   108,   909,   110,    -1,   912,    -1,    -1,   115,
    3416       -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
    3417     1023,    -1,    -1,    -1,   930,    -1,    -1,    -1,    -1,    -1,
    3418       -1,  1034,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3419     1472,    -1,  1474,    -1,    -1,    -1,   698,    -1,    10,    11,
    3420       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3421       22,    23,    24,    25,    26,    27,    -1,    -1,   720,    -1,
    3422       -1,    -1,    -1,    -1,    -1,    -1,    38,  1509,    -1,  1511,
    3423       -1,   733,    10,    11,    12,    13,    14,    15,    16,    17,
    3424       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3425       -1,    29,    30,    31,    66,    -1,    -1,  1539,    -1,    -1,
    3426       38,    -1,  1115,  1019,    -1,    77,    -1,    -1,    -1,   153,
    3427      154,    -1,    -1,    -1,    -1,    -1,    -1,   779,    -1,    -1,
    3428       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,
    3429       -1,    -1,    -1,    71,    -1,    73,    74,    75,    -1,    77,
    3430       -1,    -1,    -1,   187,    82,    83,    -1,    -1,    -1,   811,
    3431      194,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1075,
    3432       -1,    -1,    -1,    -1,   826,    -1,  1082,    -1,    -1,    -1,
    3433      108,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3434      118,    36,    37,    -1,    39,    -1,    -1,    -1,    -1,  1202,
    3435       -1,    -1,    -1,    -1,    -1,  1111,    -1,    -1,    -1,    -1,
    3436     1116,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1124,    -1,
    3437       65,    -1,    -1,    -1,    -1,    -1,    71,    -1,    73,    74,
    3438       75,    -1,   266,    78,    79,    80,    81,    82,    83,    -1,
    3439       85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,  1155,
    3440       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3441       -1,  1167,    -1,   108,  1170,   110,  1172,   112,   113,    -1,
    3442       -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3443     1186,  1187,    -1,    -1,    -1,    -1,    -1,    -1,   322,    -1,
    3444       -1,    -1,    -1,    -1,    -1,  1298,   330,   331,    -1,   333,
    3445      334,    -1,  1208,    -1,    -1,    -1,    -1,    -1,    -1,   343,
    3446       -1,    -1,    -1,   347,    -1,    -1,    -1,    -1,    -1,    -1,
    3447       -1,    -1,    -1,    -1,    -1,   977,    -1,    -1,    -1,  1235,
    3448      144,    -1,   366,    -1,    -1,   369,    -1,    -1,    -1,    -1,
    3449      154,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3450       -1,    -1,   166,   167,    -1,    -1,  1008,    -1,    -1,    -1,
    3451       -1,    -1,   396,    -1,    -1,    -1,   400,    -1,  1020,     4,
    3452        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3453       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3454       25,    26,    -1,    -1,    29,    30,    31,   431,    -1,    -1,
    3455       -1,    -1,    -1,    38,    -1,    -1,    -1,    -1,    -1,  1061,
    3456       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3457      454,    -1,    -1,   237,    -1,    -1,  1332,    -1,  1334,    -1,
    3458       -1,    66,    -1,    68,    -1,    70,    -1,    -1,    73,    74,
    3459       -1,  1347,    -1,  1349,    -1,    -1,    -1,    -1,   262,    -1,
    3460       -1,   485,    -1,    -1,   488,    -1,    -1,    -1,    -1,    -1,
    3461       -1,  1367,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3462       -1,    -1,    -1,    -1,   109,   110,    -1,  1383,  1384,    -1,
    3463       -1,  1133,    -1,   118,    -1,    -1,    -1,    -1,    -1,  1395,
    3464       -1,    -1,  1398,    -1,   528,    -1,    -1,   531,   532,    -1,
    3465       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3466       -1,    -1,    -1,    -1,  1420,    -1,    -1,    -1,    -1,    -1,
    3467       -1,    -1,    -1,  1429,    -1,  1177,  1432,    -1,  1434,  1435,
    3468     1436,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1191,
    3469     1192,    -1,    -1,   577,   578,    -1,    -1,    -1,    -1,    -1,
    3470       -1,  1554,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3471       -1,    -1,   596,   597,   378,   599,    -1,    -1,    -1,    -1,
    3472     1476,    -1,  1478,    -1,   608,  1481,   610,   611,    -1,    -1,
    3473       -1,    -1,    -1,   617,    -1,    -1,    -1,    -1,    -1,    -1,
    3474     1496,    -1,    -1,   627,   628,    -1,    -1,    -1,    -1,   633,
    3475       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   642,   643,
    3476      644,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3477       -1,    -1,    -1,    -1,    -1,    -1,    -1,   661,    -1,    -1,
    3478       -1,    -1,   666,   667,    -1,    -1,   670,   671,    -1,    -1,
    3479       -1,    -1,    -1,   677,    -1,    -1,    -1,    -1,    -1,    -1,
    3480       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3481       -1,   695,   696,   697,    -1,   699,   480,    -1,    -1,   703,
    3482       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3483       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3484       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    38,
    3485       -1,   735,   736,    -1,    -1,   519,    -1,    -1,    -1,    -1,
    3486       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   532,    -1,
    3487       -1,    -1,    -1,    -1,    -1,   539,    -1,    66,   542,    -1,
    3488       -1,    -1,    -1,    -1,    73,    74,    -1,   771,   772,   553,
    3489      554,    -1,   776,   777,    -1,    -1,    -1,    -1,    -1,  1401,
    3490       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3491       -1,   575,    -1,    -1,    -1,    -1,  1418,    -1,    -1,    -1,
    3492       -1,   585,    -1,    -1,    -1,    -1,    -1,    -1,   592,   118,
    3493       -1,    -1,    -1,   597,   818,    -1,    -1,    -1,    -1,    -1,
    3494       -1,    -1,    -1,   827,    -1,    -1,    -1,    -1,    -1,   833,
    3495      834,    -1,    -1,    -1,   838,    -1,   840,    -1,    -1,    -1,
    3496       -1,    -1,    -1,    -1,    -1,    -1,   850,    -1,    -1,    -1,
    3497       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3498       -1,    -1,    -1,   647,    -1,    -1,    -1,    -1,    -1,  1491,
    3499     1492,    -1,   656,    -1,    -1,    -1,    -1,    -1,    -1,     3,
    3500        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3501       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3502       24,    25,    26,    -1,    -1,    29,    30,    31,    32,    -1,
    3503       -1,    35,   696,    -1,    38,    39,    -1,    -1,    -1,   923,
    3504       -1,    -1,    -1,    -1,    -1,    -1,    -1,   931,    36,    37,
    3505       -1,    39,    -1,   937,    -1,    -1,    -1,    -1,    -1,    63,
    3506       -1,   945,    66,    -1,    68,    -1,    70,    71,    -1,    73,
    3507       74,    75,    -1,    -1,   958,   959,    -1,    65,    82,    83,
    3508       -1,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,    -1,
    3509       78,    79,    80,    81,    82,    83,    -1,    85,    86,    -1,
    3510       -1,   985,    -1,    -1,   108,    93,   110,   991,   772,    -1,
    3511      774,    -1,    -1,    -1,   118,    -1,   780,    -1,    -1,    -1,
    3512      108,    -1,   110,   787,    -1,   113,  1010,  1011,    -1,   117,
    3513      118,   119,   120,   121,   122,    -1,  1020,    -1,    -1,    -1,
    3514       -1,    -1,  1026,  1027,    -1,  1029,  1030,  1031,    -1,    -1,
    3515       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1041,  1042,    -1,
    3516       -1,    -1,    -1,    -1,    -1,    -1,    -1,   831,   832,    -1,
    3517      834,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3518       -1,    -1,    -1,    -1,    -1,   849,    -1,    -1,    -1,    -1,
     4052      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     4053      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
    35194054      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35204055      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3521       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1102,  1103,
    3522     1104,    -1,    -1,    -1,    -1,   889,    -1,    -1,    -1,   893,
    3523       -1,  1115,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
    3524        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3525       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3526       -1,    -1,    29,    30,    31,    32,    -1,    -1,    35,    36,
    3527       37,    38,    39,    40,    -1,    42,  1160,    -1,    45,    46,
    3528       47,    48,    49,    50,    51,    52,    -1,    -1,    -1,    56,
    3529       -1,    -1,    -1,    60,    61,    -1,    63,    -1,    65,    66,
    3530       -1,    68,    -1,    70,    71,   969,    73,    74,    75,    -1,
    3531       -1,    78,    79,    80,    81,    82,    83,    -1,    85,    86,
    3532       -1,   985,   986,    -1,    -1,    -1,    93,    -1,   992,    -1,
    3533       -1,    -1,    36,    37,   998,    39,  1220,  1001,    -1,  1003,
    3534       -1,   108,    -1,   110,    -1,    -1,   113,    -1,    -1,    -1,
    3535      117,   118,   119,   120,   121,   122,  1240,    -1,    -1,  1023,
    3536      127,    65,    -1,    -1,   131,    -1,    -1,    71,    -1,    -1,
    3537     1034,    75,    -1,    -1,    78,    79,    80,    81,    82,    83,
    3538       -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,
    3539       -1,    -1,  1056,    -1,  1058,    -1,    -1,    -1,    -1,    -1,
    3540       -1,    -1,    -1,    -1,   108,  1289,  1290,    -1,    -1,  1073,
    3541     1074,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
    3542       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3543     1094,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
    3544        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3545       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3546       25,    26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,
    3547       35,    36,    37,    38,    39,    -1,    -1,  1141,    -1,    -1,
    3548       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3549       36,    37,    -1,    39,    -1,    -1,  1160,    -1,    -1,    -1,
    3550       65,    66,    -1,    68,    -1,    70,    71,    -1,    73,    74,
    3551       75,  1175,  1176,    78,    79,    80,    81,    82,    83,    65,
    3552       85,    86,    -1,    -1,    -1,    71,    -1,    -1,    93,    75,
    3553     1414,    -1,    78,    79,    80,    81,    82,    83,    -1,    85,
    3554       86,    -1,    -1,   108,    -1,   110,    -1,    93,    -1,    -1,
    3555       -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3556       -1,    -1,   108,    -1,   110,    -1,   131,    -1,    -1,    -1,
    3557       -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
    3558       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3559       -1,    -1,  1256,    -1,    -1,    -1,     3,     4,     5,     6,
    3560        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3561       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3562     1504,    -1,    29,    30,    31,    32,    -1,    -1,    35,    36,
    3563       37,    38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3564       -1,    -1,    -1,    -1,    -1,  1529,  1530,    -1,    -1,    -1,
    3565       -1,    -1,    -1,  1317,    -1,  1319,    -1,    -1,    65,    66,
    3566       -1,    68,    -1,    70,    71,    -1,    73,    74,    75,    -1,
    3567     1554,    78,    79,    80,    81,    82,    83,    -1,    85,    86,
    3568       -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
    3569       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3570       -1,   108,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
    3571      117,   118,   119,   120,   121,   122,    -1,    -1,     4,     5,
    3572        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3573       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3574       26,  1405,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3575       36,    37,    38,    39,    -1,    10,    11,    12,    13,    14,
    3576       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3577       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    65,
    3578       66,    -1,    68,    38,    70,    71,    -1,    73,    74,    75,
    3579       -1,    -1,    78,    79,    80,    81,    82,    83,    -1,    85,
    3580       86,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,
    3581       -1,    66,    -1,    -1,    -1,    -1,    71,    -1,    73,    74,
    3582       -1,    -1,   108,  1487,   110,    -1,    -1,    82,    83,   115,
    3583       -1,   117,   118,   119,   120,   121,   122,     4,     5,     6,
    3584        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3585       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3586       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
    3587       37,    38,    39,    -1,    -1,  1539,    -1,    10,    11,    12,
    3588       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3589       23,    24,    25,    26,    27,    -1,    -1,    -1,    65,    66,
    3590       -1,    68,    -1,    70,    71,    38,    73,    74,    75,    -1,
    3591       -1,    78,    79,    80,    81,    82,    83,    -1,    85,    86,
    3592       -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
    3593       -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,    -1,
    3594       -1,   108,    -1,   110,    77,    -1,    -1,    -1,   115,    -1,
    3595      117,   118,   119,   120,   121,   122,     4,     5,     6,     7,
    3596        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3597       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3598       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,
    3599       38,    39,    -1,    10,    11,    12,    13,    14,    15,    16,
    3600       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3601       -1,    -1,    29,    30,    31,    -1,    -1,    65,    66,    -1,
    3602       68,    38,    70,    71,    -1,    73,    74,    75,    -1,    -1,
    3603       78,    79,    80,    81,    82,    83,    -1,    85,    86,    -1,
    3604       -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,    66,
    3605       -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    -1,    -1,
    3606      108,    -1,   110,    -1,    -1,    -1,    -1,   115,    -1,   117,
    3607      118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
    3608        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3609       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3610       29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
    3611       39,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3612       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3613       -1,    29,    30,    31,    -1,    -1,    65,    66,    -1,    68,
    3614       38,    70,    71,    -1,    73,    74,    75,    -1,    -1,    78,
    3615       79,    80,    81,    82,    83,    -1,    85,    86,    -1,    -1,
    3616       -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,    66,    -1,
    3617       -1,    -1,    -1,    -1,    -1,    73,    74,    -1,    -1,   108,
    3618       -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,   117,   118,
    3619      119,   120,   121,   122,     4,     5,     6,     7,     8,     9,
    3620       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3621       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3622       30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,    39,
    3623       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3624       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3625       -1,    -1,    -1,    -1,    -1,    65,    66,    -1,    68,    38,
    3626       70,    71,    -1,    73,    74,    75,    -1,    -1,    78,    79,
    3627       80,    81,    82,    83,    -1,    85,    86,    -1,    -1,    -1,
    3628       -1,    -1,    -1,    93,    -1,    -1,    -1,    66,    -1,    -1,
    3629       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,
    3630      110,    -1,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
    3631      120,   121,   122,     4,     5,     6,     7,     8,     9,    10,
    3632       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3633       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3634       31,    -1,    -1,    -1,    -1,    36,    37,    38,    39,    -1,
    3635       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3636       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3637       -1,    -1,    -1,    -1,    65,    66,    -1,    68,    -1,    70,
    3638       71,    -1,    73,    74,    75,    -1,    -1,    78,    79,    80,
    3639       81,    82,    83,    -1,    85,    86,    -1,    -1,    -1,    -1,
    3640       -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3641       -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,   110,
    3642       -1,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
    3643      121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
    3644       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3645       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3646       -1,    -1,    -1,    -1,    36,    37,    38,    39,    -1,    -1,
    3647       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3648       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3649       -1,    -1,    -1,    65,    66,    -1,    68,    -1,    70,    71,
    3650       -1,    73,    74,    75,    -1,    -1,    78,    79,    80,    81,
    3651       82,    83,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,
    3652       -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3653       -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,   110,    -1,
    3654       -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,
    3655      122,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3656       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3657       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3658       32,    -1,    -1,    35,    -1,    -1,    38,    39,    -1,    -1,
    3659       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3660       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3661       -1,    63,    -1,    -1,    66,    -1,    68,    -1,    70,    71,
    3662       -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
    3663       82,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3664       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3665       -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,   110,    -1,
    3666       -1,    -1,   114,    -1,    -1,    -1,   118,     3,     4,     5,
    3667        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3668       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3669       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3670       -1,    -1,    38,    10,    11,    12,    13,    14,    15,    16,
    3671       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3672       -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
    3673       66,    38,    68,    -1,    70,    71,    -1,    73,    74,    75,
    3674       -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    -1,    -1,
    3675       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
    3676       -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    -1,    -1,
    3677       -1,    -1,   108,    -1,   110,    -1,    -1,    -1,    -1,    -1,
    3678       -1,    -1,   118,     3,     4,     5,     6,     7,     8,     9,
    3679       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3680       20,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
    3681       30,    31,    32,    -1,    -1,    35,    -1,    -1,    38,    -1,
    3682       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3683       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3684       -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,    68,    -1,
    3685       70,    -1,    -1,    73,    74,    -1,    -1,    77,    -1,     3,
    3686        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3687       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3688       24,    25,    26,    -1,    -1,    29,    30,    31,    32,    -1,
    3689      110,    35,    -1,    -1,    38,    -1,    -1,    -1,   118,    -1,
    3690       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3691       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3692       -1,    -1,    66,    -1,    68,    -1,    70,    -1,    -1,    73,
    3693       74,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3694       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3695       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3696       31,    -1,    -1,    -1,    -1,    -1,   110,    38,    -1,    -1,
    3697       -1,    -1,    -1,    -1,   118,    -1,    -1,    -1,    -1,    -1,
    3698       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3699       -1,    -1,    -1,    -1,    -1,    66,    -1,    68,    -1,    70,
    3700       -1,    -1,    73,    74,     4,     5,     6,     7,     8,     9,
    3701       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3702       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3703       30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    38,   110,
    3704       -1,    -1,    -1,    -1,    -1,    -1,    -1,   118,    -1,    -1,
    3705       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3706       -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,    68,    -1,
    3707       70,    71,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
    3708       -1,    -1,    82,    83,    -1,    -1,    10,    11,    12,    13,
    3709       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3710       24,    25,    26,    -1,    -1,    29,    30,    31,   108,    -1,
    3711      110,    -1,    -1,    -1,    38,    -1,    -1,    -1,   118,     4,
    3712        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3713       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3714       25,    26,    66,    -1,    29,    30,    31,    71,    -1,    73,
    3715       74,    75,    -1,    38,    -1,    -1,    -1,    -1,    82,    83,
    3716       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3717       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3718       -1,    66,    -1,    68,   108,    70,   110,    -1,    73,    74,
    3719       -1,    -1,    -1,    -1,   118,    -1,    -1,    -1,    -1,    -1,
    3720       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3721       95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3722       -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,
    3723       -1,    -1,    -1,   118,     4,     5,     6,     7,     8,     9,
    3724       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3725       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3726       30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,
    3727       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3728       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3729       -1,    -1,    29,    30,    31,    -1,    66,    -1,    68,    -1,
    3730       70,    38,    -1,    73,    74,    -1,    -1,    -1,    -1,    -1,
    3731       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3732       -1,    -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,    66,
    3733       -1,    -1,    -1,    -1,    71,    -1,    73,    74,    75,    -1,
    3734      110,    -1,    -1,    -1,    -1,    82,    83,    -1,   118,     4,
    3735        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3736       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3737       25,    26,    -1,   110,    29,    30,    31,    -1,    -1,    -1,
    3738       -1,   118,    -1,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    3739       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3740       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3741       -1,    66,    -1,    68,    -1,    70,    -1,    -1,    73,    74,
    3742        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3743       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3744       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3745       -1,    -1,    -1,    -1,    38,   110,    -1,    -1,    -1,    -1,
    3746       -1,    -1,    -1,   118,    -1,    -1,    -1,    -1,    -1,    -1,
    3747       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3748       -1,    -1,    66,    -1,    68,    -1,    70,    -1,    -1,    73,
    3749       74,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3750       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3751       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3752       -1,    -1,    -1,    -1,    -1,    38,   110,    -1,    -1,    -1,
    3753       -1,    -1,    -1,    -1,   118,    -1,    -1,    -1,    -1,    -1,
    3754       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3755       -1,    -1,    -1,    66,    -1,    68,    -1,    70,    -1,    -1,
    3756       73,    74,     4,     5,     6,     7,     8,     9,    10,    11,
    3757       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3758       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3759       -1,    -1,    -1,    -1,    -1,    -1,    38,   110,    -1,    -1,
    3760       -1,    -1,    -1,    -1,    -1,   118,    -1,    -1,    -1,    -1,
    3761       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3762       -1,    -1,    -1,    -1,    66,    -1,    68,    -1,    70,    -1,
    3763       -1,    73,    74,    10,    11,    12,    13,    14,    15,    16,
    3764       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3765       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
    3766       37,    38,    39,    -1,    -1,    -1,    -1,    -1,   110,    -1,
    3767       -1,    -1,    -1,    -1,    -1,    -1,   118,    -1,    -1,    -1,
    3768       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    66,
    3769       -1,    -1,    -1,    -1,    71,    -1,    73,    74,    75,    -1,
    3770       -1,    78,    79,    80,    81,    82,    83,    -1,    85,    86,
    3771       -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
    3772       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3773       -1,   108,    -1,   110,    -1,    -1,   113,    -1,    -1,    -1,
    3774      117,   118,   119,   120,   121,   122,    10,    11,    12,    13,
    3775       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3776       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3777       -1,    -1,    36,    37,    38,    39,    10,    11,    12,    13,
    3778       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3779       24,    25,    26,    27,    -1,    29,    30,    31,    -1,    -1,
    3780       -1,    65,    66,    -1,    38,    -1,    -1,    71,    -1,    73,
    3781       74,    75,    -1,    -1,    78,    79,    80,    81,    82,    83,
    3782       -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,
    3783       -1,    -1,    66,    -1,    -1,    -1,    -1,    71,    -1,    73,
    3784       74,    75,    -1,    77,   108,    -1,   110,   111,    82,    83,
    3785       -1,    -1,    -1,   117,   118,   119,   120,   121,   122,    10,
    3786       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3787       21,    22,    23,    24,    25,    26,   110,    -1,    29,    30,
    3788       31,    -1,    -1,    -1,   118,    36,    37,    38,    39,    10,
    3789       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3790       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3791       31,    -1,    -1,    -1,    65,    66,    -1,    38,    -1,    -1,
    3792       71,    -1,    73,    74,    75,    -1,    -1,    78,    79,    80,
    3793       81,    82,    83,    -1,    85,    86,    -1,    -1,    -1,    -1,
    3794       -1,    -1,    93,    -1,    -1,    66,    -1,    -1,    -1,    -1,
    3795       71,    -1,    73,    74,    -1,    -1,    -1,   108,   109,   110,
    3796       -1,    82,    83,    -1,    -1,    -1,   117,   118,   119,   120,
    3797      121,   122,    10,    11,    12,    13,    14,    15,    16,    17,
    3798       18,    19,    20,    21,    22,    23,    24,    25,    26,   110,
    3799       -1,    29,    30,    31,    -1,    -1,    -1,   118,    36,    37,
    3800       38,    39,    10,    11,    12,    13,    14,    15,    16,    17,
    3801       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3802       -1,    29,    30,    31,    -1,    -1,    -1,    65,    66,    -1,
    3803       38,    39,    -1,    71,    -1,    73,    74,    75,    -1,    -1,
    3804       78,    79,    80,    81,    82,    83,    -1,    85,    86,    -1,
    3805       -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    66,    -1,
    3806       -1,    -1,    -1,    -1,    -1,    73,    74,    -1,    -1,    -1,
    3807      108,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,   117,
    3808      118,   119,   120,   121,   122,    10,    11,    12,    13,    14,
    3809       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3810       25,    26,   110,    -1,    29,    30,    31,    -1,    -1,    -1,
    3811      118,    36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,
    3812       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3813       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3814       65,    66,    29,    30,    31,    -1,    71,    -1,    73,    74,
    3815       75,    38,    -1,    78,    79,    80,    81,    82,    83,    -1,
    3816       85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,
    3817       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
    3818       -1,    -1,    -1,   108,    -1,   110,    73,    74,    -1,    -1,
    3819       -1,    -1,   117,   118,   119,   120,   121,   122,    10,    11,
    3820       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3821       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3822       -1,   108,    -1,   110,    36,    37,    38,    39,    -1,    -1,
    3823       -1,   118,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3824       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3825       24,    25,    26,    65,    66,    29,    30,    31,    -1,    71,
    3826       -1,    73,    74,    75,    38,    -1,    78,    79,    80,    81,
    3827       82,    83,    -1,    85,    86,    -1,    -1,    -1,    -1,    -1,
    3828       -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3829       -1,    -1,    66,    -1,    -1,    -1,   108,    -1,   110,    73,
    3830       74,    -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,
    3831      122,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3832       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3833       29,    30,    31,    -1,   108,    -1,   110,    36,    37,    38,
    3834       39,    -1,    -1,    -1,   118,    -1,    -1,    -1,    -1,    10,
    3835       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3836       21,    22,    23,    24,    25,    26,    65,    66,    29,    30,
    3837       31,    -1,    71,    -1,    73,    74,    75,    38,    39,    78,
    3838       79,    80,    81,    82,    83,    -1,    85,    86,    -1,    -1,
    3839       -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
    3840       -1,    -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,   108,
    3841       -1,   110,    73,    74,    -1,    -1,    -1,    -1,   117,   118,
    3842      119,   120,   121,   122,     3,     4,     5,     6,     7,     8,
    3843        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3844       19,    20,    21,    22,    23,    24,    25,    26,    -1,   110,
    3845       29,    30,    31,   114,    -1,    -1,    -1,   118,    -1,    38,
    3846       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3847       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3848       30,    31,    -1,    -1,    -1,    -1,    -1,    66,    38,    68,
    3849       -1,    70,    -1,    -1,    73,    74,    -1,    -1,    10,    11,
    3850       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3851       22,    23,    24,    25,    26,    -1,    66,    29,    30,    31,
    3852       -1,    71,    -1,    73,    74,    75,    38,    -1,    -1,    -1,
    3853       -1,    -1,    82,    83,   113,    -1,    10,    11,    12,    13,
    3854       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3855       24,    25,    26,    -1,    66,    29,    30,    31,   108,    71,
    3856      110,    73,    74,    75,    38,    -1,    -1,    -1,   118,    -1,
    3857       82,    83,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3858       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3859       26,    -1,    66,    29,    30,    31,   108,    -1,   110,    73,
    3860       74,    -1,    38,    -1,    -1,    -1,   118,    10,    11,    12,
    3861       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3862       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3863       66,    -1,    -1,    -1,    -1,    38,   110,    73,    74,    -1,
    3864       -1,    -1,    -1,    -1,   118,    10,    11,    12,    13,    14,
    3865       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3866       25,    26,    -1,    66,    29,    30,    31,    -1,    -1,    -1,
    3867       73,    74,    -1,    38,   110,    -1,    -1,    -1,    -1,    -1,
    3868       -1,    -1,   118,    10,    11,    12,    13,    14,    15,    16,
    3869       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3870       -1,    66,    29,    30,    31,    -1,    -1,   110,    73,    74,
    3871       -1,    38,    -1,    -1,    -1,   118,    10,    11,    12,    13,
    3872       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3873       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    66,
    3874       -1,    -1,    -1,    -1,    38,   110,    73,    74,    -1,    -1,
    3875       -1,    -1,    -1,   118,    10,    11,    12,    13,    14,    15,
    3876       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3877       26,    -1,    66,    29,    30,    31,    -1,    -1,    -1,    73,
    3878       74,    -1,    38,   110,    -1,    -1,    -1,    -1,    -1,    -1,
    3879       -1,   118,    10,    11,    12,    13,    14,    15,    16,    17,
    3880       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3881       66,    29,    30,    31,    -1,    -1,   110,    73,    74,    -1,
    3882       38,    -1,    -1,    -1,   118,    10,    11,    12,    13,    14,
    3883       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3884       25,    26,    -1,    -1,    29,    30,    31,    -1,    66,    -1,
    3885       -1,    -1,    -1,    38,   110,    73,    74,    -1,    -1,    -1,
    3886       -1,    -1,   118,    10,    11,    12,    13,    14,    15,    16,
    3887       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3888       -1,    66,    29,    30,    31,    -1,    -1,    -1,    73,    74,
    3889       -1,    38,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3890      118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3891       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
    3892       -1,    -1,    -1,    -1,    -1,   110,    73,    74,    -1,    -1,
    3893       -1,    -1,    -1,   118,     4,     5,     6,     7,     8,     9,
    3894       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3895       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3896       30,    31,    -1,   110,    -1,    -1,    -1,    -1,    38,    -1,
    3897       -1,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3898       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3899       -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,    68,    -1,
    3900       70,    -1,    -1,    73,    74,    36,    37,    -1,    39,    40,
    3901       -1,    42,    -1,    -1,    45,    46,    47,    48,    49,    50,
    3902       51,    52,    -1,    -1,    55,    56,    -1,    -1,    -1,    60,
    3903       61,    -1,    63,    -1,    65,    -1,    -1,    -1,    -1,   109,
    3904       71,    -1,    -1,    -1,    75,    -1,    -1,    78,    79,    80,
    3905       81,    82,    83,    -1,    85,    86,    -1,    -1,    -1,    -1,
    3906       -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3907       -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,   110,
    3908       -1,    -1,   113,    -1,    -1,    -1,   117,   118,   119,   120,
    3909      121,   122,    -1,    -1,    -1,    -1,   127,    -1,    36,    37,
    3910      131,    39,    40,    -1,    42,    -1,    -1,    45,    46,    47,
    3911       48,    49,    50,    51,    52,    -1,    -1,    -1,    56,    -1,
    3912       -1,    -1,    60,    61,    -1,    63,    -1,    65,    -1,    -1,
    3913       -1,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,    -1,
    3914       78,    79,    80,    81,    82,    83,    -1,    85,    86,    -1,
    3915       -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,
    3916       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3917      108,    -1,   110,    -1,    -1,   113,    -1,    -1,    -1,   117,
    3918      118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,   127,
    3919       -1,    36,    37,   131,    39,    40,    -1,    42,    43,    44,
    3920       45,    46,    47,    48,    49,    50,    51,    52,    -1,    -1,
    3921       55,    56,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,
    3922       65,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
    3923       75,    -1,    -1,    78,    79,    80,    81,    82,    83,    -1,
    3924       85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,
    3925       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3926       -1,    -1,    -1,   108,    -1,   110,    -1,    -1,   113,    -1,
    3927       -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3928       36,    37,   127,    39,    40,    -1,    42,    43,    44,    45,
    3929       46,    47,    48,    49,    50,    51,    52,    -1,    -1,    -1,
    3930       56,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,    65,
    3931       -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    75,
    3932       -1,    -1,    78,    79,    80,    81,    82,    83,    -1,    85,
    3933       86,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,
    3934       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3935       -1,    -1,   108,    -1,   110,    -1,    -1,   113,    -1,    -1,
    3936       -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    36,
    3937       37,   127,    39,    40,    -1,    42,    -1,    -1,    45,    46,
    3938       47,    48,    49,    50,    51,    52,    -1,    -1,    -1,    56,
    3939       -1,    -1,    -1,    60,    61,    -1,    63,    -1,    65,    -1,
    3940       -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,
    3941       -1,    78,    79,    80,    81,    82,    83,    -1,    85,    86,
    3942       -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
    3943       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3944       -1,   108,    -1,   110,    -1,    -1,   113,    -1,    -1,    -1,
    3945      117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
    3946      127,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3947       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3948       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3949       -1,    -1,    -1,    -1,    -1,    38,    -1,    36,    37,    -1,
    3950       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3951       -1,    -1,    -1,    -1,    -1,    -1,    36,    37,    -1,    39,
    3952       -1,    -1,    -1,    66,    -1,    68,    65,    70,    -1,    -1,
    3953       73,    74,    71,    -1,    -1,    -1,    75,    -1,    -1,    78,
    3954       79,    80,    81,    82,    83,    65,    85,    86,    -1,    -1,
    3955       -1,    71,    95,    -1,    93,    75,    -1,    -1,    78,    79,
    3956       80,    81,    82,    83,    -1,    85,    86,    -1,    -1,   108,
    3957       -1,   110,    -1,    93,    36,    37,    -1,    39,   117,   118,
    3958      119,   120,   121,   122,    -1,    -1,    -1,    -1,   108,    -1,
    3959      110,    -1,    -1,    36,    37,    -1,    39,   117,   118,   119,
    3960      120,   121,   122,    65,    -1,    -1,    -1,    -1,    -1,    71,
    3961       -1,    -1,    -1,    75,    -1,    -1,    78,    79,    80,    81,
    3962       82,    83,    65,    85,    86,    -1,    -1,    -1,    71,    -1,
    3963       -1,    93,    75,    -1,    -1,    78,    79,    80,    81,    82,
    3964       83,    -1,    85,    86,    -1,    -1,   108,    -1,   110,    -1,
    3965       93,    36,    37,    -1,    39,   117,   118,   119,   120,   121,
    3966      122,    -1,    -1,    -1,    -1,   108,    -1,    -1,    -1,    -1,
    3967       -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
    3968       65,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
    3969       75,    -1,    -1,    78,    79,    80,    81,    82,    83,    -1,
    3970       85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,
    3971       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3972       -1,    -1,    -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,
    3973       -1,    -1,   117,   118,   119,   120,   121,   122,     4,     5,
    3974        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3975       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3976       26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3977       -1,    -1,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3978       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3979       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3980       66,    -1,    68,    -1,    70,    71,    -1,    73,    74,    75,
    3981       -1,    -1,    -1,    -1,    -1,    -1,    82,    83,     3,     4,
    3982        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3983       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3984       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3985       -1,    -1,    -1,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    3986       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3987       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3988       -1,    66,    -1,    68,    -1,    70,    -1,    -1,    73,    74,
    3989        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3990       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3991       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3992       -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,    -1,
    3993       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3994       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3995       -1,    -1,    -1,    66,    -1,    68,    -1,    70,    -1,    -1,
    3996       73,    74,     4,     5,     6,     7,     8,     9,    10,    11,
    3997       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3998       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3999       -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,
    4000       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4001       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4002       -1,    -1,    -1,    -1,    66,    -1,    68,    -1,    70,    -1,
    4003       -1,    73,    74
     4056      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     4057      75
    40044058};
    40054059
     
    40104064       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    40114065      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4012       22,    23,    24,    25,    26,    29,    30,    31,    32,    35,
    4013       38,    39,    63,    66,    68,    70,    71,    73,    74,    75,
    4014       82,    83,   108,   110,   118,   136,   139,   196,   210,   211,
     4066      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
     4067      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
     4068      76,    83,    84,   109,   111,   119,   137,   140,   197,   211,
    40154069     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
    4016      222,   223,   224,   225,   226,   227,   229,   230,   231,   232,
    4017      233,   234,   235,   236,   238,   239,   240,   241,   242,   243,
    4018      244,   252,   253,   279,   280,   281,   289,   292,   298,   299,
    4019      301,   303,   304,   310,   315,   319,   320,   321,   322,   323,
    4020      324,   325,   326,   346,   363,   364,   365,   366,    71,   118,
    4021      138,   139,   213,   215,   223,   225,   235,   239,   241,   280,
    4022       81,   108,   308,   309,   310,   308,   308,    71,    73,    74,
    4023       75,   137,   138,   269,   270,   290,   291,    73,    74,   270,
    4024      108,   301,    11,   197,   108,   118,   315,   320,   321,   322,
    4025      324,   325,   326,   111,   133,   110,   216,   223,   225,   319,
    4026      323,   362,   363,   366,   367,   134,   106,   130,   273,   113,
    4027      134,   171,    73,    74,   136,   268,   134,   134,   134,   115,
    4028      134,    73,    74,   108,   118,   305,   314,   315,   316,   317,
    4029      318,   319,   323,   327,   328,   329,   330,   331,   337,     3,
    4030       27,    77,   237,     3,     5,    73,   110,   118,   215,   226,
    4031      230,   233,   242,   281,   319,   323,   366,   213,   215,   225,
    4032      235,   239,   241,   280,   319,   323,    32,   231,   231,   226,
    4033      233,   134,   231,   226,   231,   226,    74,   108,   113,   270,
    4034      281,   113,   270,   231,   226,   115,   134,   134,     0,   133,
    4035      108,   171,   308,   308,   133,   110,   223,   225,   364,   268,
    4036      268,   225,   130,   108,   118,   305,   315,   319,   110,   118,
    4037      366,   302,   228,   310,   108,   286,   108,   108,    50,   108,
    4038       36,    37,    39,    65,    71,    75,    78,    79,    80,    81,
    4039       85,    86,    93,   108,   110,   117,   118,   119,   120,   121,
    4040      122,   135,   139,   140,   141,   142,   147,   148,   149,   150,
     4070     222,   223,   224,   225,   226,   227,   228,   230,   231,   232,
     4071     233,   234,   235,   236,   237,   239,   240,   241,   242,   243,
     4072     244,   245,   253,   254,   280,   281,   282,   290,   293,   299,
     4073     300,   302,   304,   305,   311,   316,   320,   321,   322,   323,
     4074     324,   325,   326,   327,   347,   364,   365,   366,   367,    72,
     4075     119,   139,   140,   214,   216,   224,   226,   236,   240,   242,
     4076     281,    82,   109,   309,   310,   311,   309,   309,    72,    74,
     4077      75,    76,   138,   139,   270,   271,   291,   292,    74,    75,
     4078     271,   109,   302,    11,   198,   109,   119,   316,   321,   322,
     4079     323,   325,   326,   327,   112,   134,   111,   217,   224,   226,
     4080     320,   324,   363,   364,   367,   368,   135,   107,   131,   274,
     4081     114,   135,   172,    74,    75,   137,   269,   135,   135,   135,
     4082     116,   135,    74,    75,   109,   119,   306,   315,   316,   317,
     4083     318,   319,   320,   324,   328,   329,   330,   331,   332,   338,
     4084       3,    28,    78,   238,     3,     5,    74,   111,   119,   216,
     4085     227,   231,   234,   243,   282,   320,   324,   367,   214,   216,
     4086     226,   236,   240,   242,   281,   320,   324,    33,   232,   232,
     4087     227,   234,   135,   232,   227,   232,   227,    75,   109,   114,
     4088     271,   282,   114,   271,   232,   227,   116,   135,   135,     0,
     4089     134,   109,   172,   309,   309,   134,   111,   224,   226,   365,
     4090     269,   269,   226,   131,   109,   119,   306,   316,   320,   111,
     4091     119,   367,   303,   229,   311,   109,   287,   109,   109,    51,
     4092     109,    37,    38,    40,    66,    72,    76,    79,    80,    81,
     4093      82,    86,    87,    94,   109,   111,   118,   119,   120,   121,
     4094     122,   123,   136,   140,   141,   142,   143,   148,   149,   150,
    40414095     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
    4042      162,   164,   223,   272,   288,   362,   367,   225,   109,   109,
    4043      109,   109,   109,   109,   109,    73,    74,   110,   223,   268,
    4044      346,   364,   110,   118,   162,   215,   216,   222,   225,   229,
    4045      230,   235,   238,   239,   241,   258,   259,   263,   264,   265,
    4046      266,   280,   346,   358,   359,   360,   361,   366,   367,   111,
    4047      108,   319,   323,   366,   108,   115,   131,   110,   113,   118,
    4048      162,   274,   274,   114,   133,   115,   131,   108,   115,   131,
    4049      115,   131,   115,   131,   308,   131,   315,   316,   317,   318,
    4050      328,   329,   330,   331,   225,   314,   327,    63,   307,   110,
    4051      308,   345,   346,   308,   308,   171,   133,   108,   308,   345,
    4052      308,   308,   225,   305,   108,   108,   224,   225,   223,   225,
    4053      111,   133,   223,   362,   367,   171,   133,   268,   273,   215,
    4054      230,   319,   323,   171,   133,   290,   225,   235,   131,   225,
    4055      225,   288,    39,   110,   223,   245,   246,   247,   248,   362,
    4056      366,   113,   254,   270,   113,   225,   290,   131,   131,   301,
    4057      133,   138,   267,     3,   134,   205,   206,   220,   222,   225,
    4058      133,   307,   108,   307,   162,   315,   225,   108,   133,   268,
    4059      113,    32,    33,    34,   223,   282,   283,   285,   133,   128,
    4060      130,   287,   133,   226,   232,   233,   268,   311,   312,   313,
    4061      108,   140,   108,   147,   108,   147,   149,   108,   147,   108,
    4062      108,   147,   147,   138,   110,   162,   167,   171,   223,   271,
    4063      362,   111,   133,   149,   149,    81,    84,    85,    86,   108,
    4064      110,   112,   113,    96,    97,    98,    99,   100,   101,   102,
    4065      103,   104,   105,   130,   166,   149,   118,   123,   124,   120,
    4066      121,    87,    88,    89,    90,   125,   126,    91,    92,   119,
    4067      127,   128,    93,    94,   129,   130,   369,   108,   118,   341,
    4068      342,   343,   344,   345,   109,   115,   108,   345,   346,   108,
    4069      345,   346,   133,   108,   223,   364,   111,   133,   110,   118,
    4070      134,   223,   225,   357,   358,   366,   367,   134,   108,   110,
    4071      118,   315,   332,   333,   334,   335,   336,   337,   338,   339,
    4072      340,   346,   347,   348,   349,   350,   351,   352,   118,   366,
    4073      225,   134,   134,   118,   223,   225,   359,   268,   223,   346,
    4074      359,   268,   108,   133,   133,   133,   111,   133,    71,    79,
    4075      110,   112,   139,   270,   274,   275,   276,   277,   278,   133,
    4076      133,   133,   133,   133,   133,   305,   109,   109,   109,   109,
    4077      109,   109,   109,   314,   327,   108,   273,   111,   205,   133,
    4078      305,   167,   272,   167,   272,   305,   110,   205,   307,   171,
    4079      133,   205,   109,   247,   248,   111,   133,   108,   116,   118,
    4080      249,   251,   314,   315,   327,   345,   353,   354,   355,   356,
    4081      114,   246,   115,   131,   115,   131,   270,   245,   115,   368,
    4082      130,   255,   254,   225,   260,   261,   262,   265,   266,   109,
    4083      115,   171,   133,   118,   162,   133,   222,   225,   259,   358,
    4084      366,   299,   300,   108,   118,   332,   109,   115,   369,   270,
    4085      282,   108,   113,   270,   272,   282,   109,   115,   108,   140,
    4086      109,   116,   271,   271,   271,   110,   138,   144,   162,   272,
    4087      271,   111,   133,   109,   115,   109,   108,   118,   353,   109,
    4088      115,   162,   110,   138,   110,   143,   144,   133,   110,   138,
    4089      143,   162,   162,   149,   149,   149,   150,   150,   151,   151,
    4090      152,   152,   152,   152,   153,   153,   154,   155,   156,   157,
    4091      158,   116,   167,   162,   133,   342,   343,   344,   225,   341,
    4092      308,   308,   162,   272,   133,   267,   118,   133,   223,   346,
    4093      359,   225,   229,   111,   133,   111,   366,   111,   108,   133,
    4094      315,   333,   334,   335,   338,   348,   349,   350,   111,   133,
    4095      225,   332,   336,   347,   108,   308,   351,   369,   308,   308,
    4096      369,   108,   308,   351,   308,   308,   308,   308,   346,   223,
    4097      357,   367,   268,   111,   115,   111,   115,   369,   223,   359,
    4098      369,   256,   257,   258,   259,   256,   256,   268,   162,   133,
    4099      110,   270,   116,   115,   368,   274,    79,   110,   116,   278,
    4100       28,   207,   208,   268,   256,   138,   305,   138,   307,   108,
    4101      345,   346,   108,   345,   346,   140,   346,   171,   260,   109,
    4102      109,   109,   109,   111,   171,   205,   171,   113,   131,   131,
    4103      110,   315,   354,   355,   356,   160,   161,   225,   353,   250,
    4104      251,   250,   308,   308,   270,   308,   114,   270,   114,   161,
    4105      368,   134,   134,   138,   220,   134,   134,   256,   108,   118,
    4106      366,   134,   114,   225,   283,   284,   134,   133,   133,   108,
    4107      134,   109,   312,   167,   168,   116,   131,   110,   140,   198,
    4108      199,   200,   109,   115,   109,   133,   116,   109,   109,   109,
    4109      162,   225,   113,   149,   164,   162,   163,   165,   115,   134,
    4110      133,   133,   109,   115,   162,   133,   114,   160,   116,   260,
    4111      109,   109,   109,   341,   260,   109,   256,   223,   359,   110,
    4112      118,   162,   162,   225,   338,   260,   109,   109,   109,   109,
    4113      109,   109,   109,     7,   225,   332,   336,   347,   133,   133,
    4114      369,   133,   133,   109,   134,   134,   134,   134,   273,   134,
    4115      160,   161,   162,   306,   133,   274,   276,   114,   133,   209,
    4116      270,    39,    40,    42,    45,    46,    47,    48,    49,    50,
    4117       51,    52,    56,    60,    61,   110,   127,   138,   168,   169,
    4118      170,   171,   172,   173,   175,   176,   188,   190,   191,   196,
    4119      210,   304,    28,   134,   130,   273,   133,   133,   109,   134,
    4120      171,   245,   111,   109,   109,   109,   353,   249,   255,   114,
    4121      109,   115,   111,   111,   134,   225,   115,   369,   286,   109,
    4122      282,   213,   215,   223,   294,   295,   296,   297,   288,   109,
    4123      109,   116,   161,   108,   109,   116,   115,   138,   162,   162,
    4124      275,   115,   134,   165,   111,   138,   145,   146,   162,   144,
    4125      134,   145,   160,   164,   134,   108,   345,   346,   134,   134,
    4126      133,   134,   134,   134,   162,   109,   134,   108,   345,   346,
    4127      108,   351,   108,   351,   346,   224,     7,   118,   134,   162,
    4128      260,   260,   259,   263,   263,   264,   115,   115,   109,   109,
    4129      111,    95,   122,   134,   134,   145,   274,   162,   115,   131,
    4130      210,   214,   225,   229,   108,   108,   169,   108,   108,   131,
    4131      138,   131,   138,   118,   138,   168,   108,   171,   163,   163,
    4132      111,   142,   116,   131,   134,   133,   134,   209,   109,   162,
    4133      260,   260,   308,   109,   114,   108,   345,   346,   133,   109,
    4134      133,   134,   305,   114,   133,   134,   134,   109,   113,   198,
    4135      111,   161,   131,   198,   200,   109,   115,   134,   368,   163,
    4136      111,   134,    84,   112,   115,   134,   134,   111,   134,   109,
    4137      133,   109,   109,   111,   111,   111,   134,   109,   133,   133,
    4138      133,   162,   162,   134,   111,   134,   134,   134,   134,   133,
    4139      133,   161,   161,   111,   111,   134,   134,   270,   225,   167,
    4140      167,    46,   167,   133,   131,   131,   167,   131,   131,   167,
    4141       57,    58,    59,   192,   193,   194,   131,    62,   131,   113,
    4142      308,   173,   114,   131,   134,   134,   133,    95,   265,   266,
    4143      109,   295,   115,   131,   115,   131,   114,   293,   116,   140,
    4144      109,   109,   116,   165,   111,   114,   111,   110,   146,   110,
    4145      146,   146,   111,   111,   111,   260,   111,   260,   260,   260,
    4146      134,   134,   111,   111,   109,   109,   111,   115,    95,   259,
    4147       95,   134,   111,   111,   109,   109,   108,   109,   168,   189,
    4148      210,   131,   109,   108,   108,   171,   194,    57,    58,   162,
    4149      143,   169,   109,   109,   260,   113,   133,   133,   294,   140,
    4150      201,   108,   131,   201,   134,   116,   133,   133,   134,   134,
    4151      134,   134,   111,   111,   133,   134,   111,   169,    43,    44,
    4152      113,   179,   180,   181,   167,   169,   134,   109,   168,   113,
    4153      181,    95,   133,    95,   133,   108,   108,   131,   114,   134,
    4154      133,   268,   305,   114,   115,   116,   161,   109,   111,   162,
    4155      145,   145,   109,   109,   109,   109,   263,    41,   161,   177,
    4156      178,   306,   116,   133,   169,   179,   109,   131,   169,   131,
    4157      133,   109,   133,   109,   133,    95,   133,    95,   133,   131,
    4158      109,   294,   140,   138,   202,   109,   131,   116,   134,   134,
    4159      169,    95,   115,   116,   134,   203,   204,   210,   131,   168,
    4160      168,   203,   171,   195,   223,   362,   171,   195,   109,   133,
    4161      109,   133,   114,   109,   115,   162,   111,   111,   161,   177,
    4162      180,   182,   183,   133,   131,   180,   184,   185,   134,   108,
    4163      118,   305,   353,   138,   134,   171,   195,   171,   195,   108,
    4164      131,   138,   169,   174,   114,   180,   210,   168,    55,   174,
    4165      187,   114,   180,   109,   225,   109,   134,   134,   288,   169,
    4166      174,   131,   186,   187,   174,   187,   171,   171,   109,   109,
    4167      109,   186,   134,   134,   171,   171,   134,   134
     4096     161,   163,   165,   224,   273,   289,   363,   368,   226,   110,
     4097     110,   110,   110,   110,   110,   110,    74,    75,   111,   224,
     4098     269,   347,   365,   111,   119,   163,   216,   217,   223,   226,
     4099     230,   231,   236,   239,   240,   242,   259,   260,   264,   265,
     4100     266,   267,   281,   347,   359,   360,   361,   362,   367,   368,
     4101     112,   109,   320,   324,   367,   109,   116,   132,   111,   114,
     4102     119,   163,   275,   275,   115,   134,   116,   132,   109,   116,
     4103     132,   116,   132,   116,   132,   309,   132,   316,   317,   318,
     4104     319,   329,   330,   331,   332,   226,   315,   328,    64,   308,
     4105     111,   309,   346,   347,   309,   309,   172,   134,   109,   309,
     4106     346,   309,   309,   226,   306,   109,   109,   225,   226,   224,
     4107     226,   112,   134,   224,   363,   368,   172,   134,   269,   274,
     4108     216,   231,   320,   324,   172,   134,   291,   226,   236,   132,
     4109     226,   226,   289,    40,   111,   224,   246,   247,   248,   249,
     4110     363,   367,   114,   255,   271,   114,   226,   291,   132,   132,
     4111     302,   134,   139,   268,     3,   135,   206,   207,   221,   223,
     4112     226,   134,   308,   109,   308,   163,   316,   226,   109,   134,
     4113     269,   114,    33,    34,    35,   224,   283,   284,   286,   134,
     4114     129,   131,   288,   134,   227,   233,   234,   269,   312,   313,
     4115     314,   109,   141,   109,   148,   109,   148,   150,   109,   148,
     4116     109,   109,   148,   148,   139,   111,   163,   168,   172,   224,
     4117     272,   363,   112,   134,   150,   150,    82,    85,    86,    87,
     4118     109,   111,   113,   114,    97,    98,    99,   100,   101,   102,
     4119     103,   104,   105,   106,   131,   167,   150,   119,   124,   125,
     4120     121,   122,    88,    89,    90,    91,   126,   127,    92,    93,
     4121     120,   128,   129,    94,    95,   130,   131,   370,   109,   119,
     4122     342,   343,   344,   345,   346,   110,   116,   109,   346,   347,
     4123     109,   346,   347,   134,   109,   224,   365,   112,   134,   111,
     4124     119,   135,   224,   226,   358,   359,   367,   368,   135,   109,
     4125     111,   119,   316,   333,   334,   335,   336,   337,   338,   339,
     4126     340,   341,   347,   348,   349,   350,   351,   352,   353,   119,
     4127     367,   226,   135,   135,   119,   224,   226,   360,   269,   224,
     4128     347,   360,   269,   109,   134,   134,   134,   112,   134,    72,
     4129      80,   111,   113,   140,   271,   275,   276,   277,   278,   279,
     4130     134,   134,   134,   134,   134,   134,   306,   110,   110,   110,
     4131     110,   110,   110,   110,   315,   328,   109,   274,   112,   206,
     4132     134,   306,   168,   273,   168,   273,   306,   111,   206,   308,
     4133     172,   134,   206,   110,   248,   249,   112,   134,   109,   117,
     4134     119,   250,   252,   315,   316,   328,   346,   354,   355,   356,
     4135     357,   115,   247,   116,   132,   116,   132,   271,   246,   116,
     4136     369,   131,   256,   255,   226,   261,   262,   263,   266,   267,
     4137     110,   116,   172,   134,   119,   163,   134,   223,   226,   260,
     4138     359,   367,   300,   301,   109,   119,   333,   110,   116,   370,
     4139     271,   283,   109,   114,   271,   273,   283,   110,   116,   109,
     4140     141,   110,   117,   272,   272,   272,   111,   139,   145,   163,
     4141     273,   272,   112,   134,   110,   116,   110,   109,   119,   354,
     4142     110,   116,   163,   111,   139,   111,   144,   145,   134,   111,
     4143     139,   144,   163,   163,   150,   150,   150,   151,   151,   152,
     4144     152,   153,   153,   153,   153,   154,   154,   155,   156,   157,
     4145     158,   159,   117,   168,   163,   134,   343,   344,   345,   226,
     4146     342,   309,   309,   163,   273,   134,   268,   119,   134,   224,
     4147     347,   360,   226,   230,   112,   134,   112,   367,   112,   109,
     4148     134,   316,   334,   335,   336,   339,   349,   350,   351,   112,
     4149     134,   226,   333,   337,   348,   109,   309,   352,   370,   309,
     4150     309,   370,   109,   309,   352,   309,   309,   309,   309,   347,
     4151     224,   358,   368,   269,   112,   116,   112,   116,   370,   224,
     4152     360,   370,   257,   258,   259,   260,   257,   257,   269,   163,
     4153     134,   111,   271,   117,   116,   369,   275,    80,   111,   117,
     4154     279,    29,   208,   209,   269,   257,   139,   306,   139,   308,
     4155     109,   346,   347,   109,   346,   347,   141,   347,   172,   261,
     4156     110,   110,   110,   110,   112,   172,   206,   172,   114,   132,
     4157     132,   111,   316,   355,   356,   357,   161,   162,   226,   354,
     4158     251,   252,   251,   309,   309,   271,   309,   115,   271,   115,
     4159     162,   369,   135,   135,   139,   221,   135,   135,   257,   109,
     4160     119,   367,   135,   115,   226,   284,   285,   135,   134,   134,
     4161     109,   135,   110,   313,   168,   169,   117,   132,   111,   141,
     4162     199,   200,   201,   110,   116,   110,   134,   117,   110,   110,
     4163     110,   163,   226,   114,   150,   165,   163,   164,   166,   116,
     4164     135,   134,   134,   110,   116,   163,   134,   115,   161,   117,
     4165     261,   110,   110,   110,   342,   261,   110,   257,   224,   360,
     4166     111,   119,   163,   163,   226,   339,   261,   110,   110,   110,
     4167     110,   110,   110,   110,     7,   226,   333,   337,   348,   134,
     4168     134,   370,   134,   134,   110,   135,   135,   135,   135,   274,
     4169     135,   161,   162,   163,   307,   134,   275,   277,   115,   134,
     4170     210,   271,    40,    41,    43,    46,    47,    48,    49,    50,
     4171      51,    52,    53,    57,    61,    62,   111,   128,   139,   169,
     4172     170,   171,   172,   173,   174,   176,   177,   189,   191,   192,
     4173     197,   211,   305,    29,   135,   131,   274,   134,   134,   110,
     4174     135,   172,   246,   112,   110,   110,   110,   354,   250,   256,
     4175     115,   110,   116,   112,   112,   135,   226,   116,   370,   287,
     4176     110,   283,   214,   216,   224,   295,   296,   297,   298,   289,
     4177     110,   110,   117,   162,   109,   110,   117,   116,   139,   163,
     4178     163,   276,   116,   135,   166,   112,   139,   146,   147,   163,
     4179     145,   135,   146,   161,   165,   135,   109,   346,   347,   135,
     4180     135,   134,   135,   135,   135,   163,   110,   135,   109,   346,
     4181     347,   109,   352,   109,   352,   347,   225,     7,   119,   135,
     4182     163,   261,   261,   260,   264,   264,   265,   116,   116,   110,
     4183     110,   112,    96,   123,   135,   135,   146,   275,   163,   116,
     4184     132,   211,   215,   226,   230,   109,   109,   170,   109,   109,
     4185     132,   139,   132,   139,   119,   139,   169,   109,   172,   164,
     4186     164,   112,   143,   117,   132,   135,   134,   135,   210,   110,
     4187     163,   261,   261,   309,   110,   115,   109,   346,   347,   134,
     4188     110,   134,   135,   306,   115,   134,   135,   135,   110,   114,
     4189     199,   112,   162,   132,   199,   201,   110,   116,   135,   369,
     4190     164,   112,   135,    85,   113,   116,   135,   135,   112,   135,
     4191     110,   134,   110,   110,   112,   112,   112,   135,   110,   134,
     4192     134,   134,   163,   163,   135,   112,   135,   135,   135,   135,
     4193     134,   134,   162,   162,   112,   112,   135,   135,   271,   226,
     4194     168,   168,    47,   168,   134,   132,   132,   168,   132,   132,
     4195     168,    58,    59,    60,   193,   194,   195,   132,    63,   132,
     4196     114,   309,   174,   115,   132,   135,   135,   134,    96,   266,
     4197     267,   110,   296,   116,   132,   116,   132,   115,   294,   117,
     4198     141,   110,   110,   117,   166,   112,   115,   112,   111,   147,
     4199     111,   147,   147,   112,   112,   112,   261,   112,   261,   261,
     4200     261,   135,   135,   112,   112,   110,   110,   112,   116,    96,
     4201     260,    96,   135,   112,   112,   110,   110,   109,   110,   169,
     4202     190,   211,   132,   110,   109,   109,   172,   195,    58,    59,
     4203     163,   144,   170,   110,   110,   261,   114,   134,   134,   295,
     4204     141,   202,   109,   132,   202,   135,   117,   134,   134,   135,
     4205     135,   135,   135,   112,   112,   134,   135,   112,   170,    44,
     4206      45,   114,   180,   181,   182,   168,   170,   135,   110,   169,
     4207     114,   182,    96,   134,    96,   134,   109,   109,   132,   115,
     4208     135,   134,   269,   306,   115,   116,   117,   162,   110,   112,
     4209     163,   146,   146,   110,   110,   110,   110,   264,    42,   162,
     4210     178,   179,   307,   117,   134,   170,   180,   110,   132,   170,
     4211     132,   134,   110,   134,   110,   134,    96,   134,    96,   134,
     4212     132,   110,   295,   141,   139,   203,   110,   132,   117,   135,
     4213     135,   170,    96,   116,   117,   135,   204,   205,   211,   132,
     4214     169,   169,   204,   172,   196,   224,   363,   172,   196,   110,
     4215     134,   110,   134,   115,   110,   116,   163,   112,   112,   162,
     4216     178,   181,   183,   184,   134,   132,   181,   185,   186,   135,
     4217     109,   119,   306,   354,   139,   135,   172,   196,   172,   196,
     4218     109,   132,   139,   170,   175,   115,   181,   211,   169,    56,
     4219     175,   188,   115,   181,   110,   226,   110,   135,   135,   289,
     4220     170,   175,   132,   187,   188,   175,   188,   172,   172,   110,
     4221     110,   110,   187,   135,   135,   172,   172,   135,   135
    41684222};
    41694223
     
    50025056
    50035057/* Line 1806 of yacc.c  */
    5004 #line 290 "parser.yy"
     5058#line 292 "parser.yy"
    50055059    {
    50065060                        typedefTable.enterScope();
     
    50115065
    50125066/* Line 1806 of yacc.c  */
    5013 #line 296 "parser.yy"
     5067#line 298 "parser.yy"
    50145068    {
    50155069                        typedefTable.leaveScope();
     
    50205074
    50215075/* Line 1806 of yacc.c  */
    5022 #line 305 "parser.yy"
     5076#line 307 "parser.yy"
    50235077    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    50245078    break;
     
    50275081
    50285082/* Line 1806 of yacc.c  */
    5029 #line 306 "parser.yy"
     5083#line 308 "parser.yy"
    50305084    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    50315085    break;
     
    50345088
    50355089/* Line 1806 of yacc.c  */
    5036 #line 307 "parser.yy"
     5090#line 309 "parser.yy"
    50375091    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    50385092    break;
     
    50415095
    50425096/* Line 1806 of yacc.c  */
    5043 #line 332 "parser.yy"
     5097#line 334 "parser.yy"
    50445098    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
    50455099    break;
     
    50485102
    50495103/* Line 1806 of yacc.c  */
    5050 #line 333 "parser.yy"
     5104#line 335 "parser.yy"
    50515105    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    50525106    break;
    50535107
    50545108  case 18:
    5055 
    5056 /* Line 1806 of yacc.c  */
    5057 #line 340 "parser.yy"
    5058     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    5059     break;
    5060 
    5061   case 19:
    50625109
    50635110/* Line 1806 of yacc.c  */
     
    50665113    break;
    50675114
     5115  case 19:
     5116
     5117/* Line 1806 of yacc.c  */
     5118#line 344 "parser.yy"
     5119    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5120    break;
     5121
    50685122  case 20:
    50695123
    50705124/* Line 1806 of yacc.c  */
    5071 #line 344 "parser.yy"
     5125#line 346 "parser.yy"
    50725126    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    50735127    break;
     
    50765130
    50775131/* Line 1806 of yacc.c  */
    5078 #line 346 "parser.yy"
     5132#line 348 "parser.yy"
    50795133    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    50805134    break;
     
    50835137
    50845138/* Line 1806 of yacc.c  */
    5085 #line 356 "parser.yy"
     5139#line 358 "parser.yy"
    50865140    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
    50875141    break;
     
    50905144
    50915145/* Line 1806 of yacc.c  */
    5092 #line 358 "parser.yy"
     5146#line 360 "parser.yy"
    50935147    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
    50945148    break;
     
    50975151
    50985152/* Line 1806 of yacc.c  */
    5099 #line 362 "parser.yy"
     5153#line 364 "parser.yy"
    51005154    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    51015155    break;
     
    51045158
    51055159/* Line 1806 of yacc.c  */
    5106 #line 365 "parser.yy"
     5160#line 367 "parser.yy"
    51075161    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    51085162    break;
     
    51115165
    51125166/* Line 1806 of yacc.c  */
    5113 #line 368 "parser.yy"
     5167#line 370 "parser.yy"
    51145168    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
    51155169    break;
     
    51185172
    51195173/* Line 1806 of yacc.c  */
    5120 #line 370 "parser.yy"
     5174#line 372 "parser.yy"
    51215175    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
    51225176    break;
     
    51255179
    51265180/* Line 1806 of yacc.c  */
    5127 #line 372 "parser.yy"
     5181#line 374 "parser.yy"
    51285182    { (yyval.en) = 0; }
    51295183    break;
     
    51325186
    51335187/* Line 1806 of yacc.c  */
    5134 #line 374 "parser.yy"
     5188#line 376 "parser.yy"
    51355189    {
    51365190                        Token fn; fn.str = new std::string( "?{}" ); // location undefined
     
    51425196
    51435197/* Line 1806 of yacc.c  */
    5144 #line 383 "parser.yy"
     5198#line 385 "parser.yy"
    51455199    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    51465200    break;
     
    51495203
    51505204/* Line 1806 of yacc.c  */
    5151 #line 388 "parser.yy"
     5205#line 390 "parser.yy"
    51525206    { (yyval.en) = 0; }
    51535207    break;
     
    51565210
    51575211/* Line 1806 of yacc.c  */
    5158 #line 391 "parser.yy"
     5212#line 393 "parser.yy"
    51595213    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
    51605214    break;
     
    51635217
    51645218/* Line 1806 of yacc.c  */
    5165 #line 396 "parser.yy"
     5219#line 398 "parser.yy"
    51665220    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
    51675221    break;
     
    51705224
    51715225/* Line 1806 of yacc.c  */
    5172 #line 398 "parser.yy"
     5226#line 400 "parser.yy"
    51735227    { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
    51745228    break;
     
    51775231
    51785232/* Line 1806 of yacc.c  */
    5179 #line 403 "parser.yy"
     5233#line 405 "parser.yy"
    51805234    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    51815235    break;
     
    51845238
    51855239/* Line 1806 of yacc.c  */
    5186 #line 408 "parser.yy"
     5240#line 410 "parser.yy"
    51875241    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    51885242    break;
     
    51915245
    51925246/* Line 1806 of yacc.c  */
    5193 #line 412 "parser.yy"
     5247#line 414 "parser.yy"
    51945248    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    51955249    break;
     
    51985252
    51995253/* Line 1806 of yacc.c  */
    5200 #line 414 "parser.yy"
     5254#line 416 "parser.yy"
    52015255    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    52025256    break;
     
    52055259
    52065260/* Line 1806 of yacc.c  */
    5207 #line 416 "parser.yy"
     5261#line 418 "parser.yy"
    52085262    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    52095263    break;
     
    52125266
    52135267/* Line 1806 of yacc.c  */
    5214 #line 418 "parser.yy"
     5268#line 420 "parser.yy"
    52155269    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    52165270    break;
    52175271
    52185272  case 48:
    5219 
    5220 /* Line 1806 of yacc.c  */
    5221 #line 426 "parser.yy"
    5222     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5223     break;
    5224 
    5225   case 49:
    52265273
    52275274/* Line 1806 of yacc.c  */
     
    52305277    break;
    52315278
     5279  case 49:
     5280
     5281/* Line 1806 of yacc.c  */
     5282#line 430 "parser.yy"
     5283    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     5284    break;
     5285
    52325286  case 50:
    52335287
    52345288/* Line 1806 of yacc.c  */
    5235 #line 430 "parser.yy"
     5289#line 432 "parser.yy"
    52365290    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
    52375291    break;
     
    52405294
    52415295/* Line 1806 of yacc.c  */
    5242 #line 432 "parser.yy"
     5296#line 434 "parser.yy"
    52435297    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
    52445298    break;
     
    52475301
    52485302/* Line 1806 of yacc.c  */
    5249 #line 434 "parser.yy"
     5303#line 436 "parser.yy"
    52505304    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    52515305    break;
     
    52545308
    52555309/* Line 1806 of yacc.c  */
    5256 #line 436 "parser.yy"
     5310#line 438 "parser.yy"
    52575311    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    52585312    break;
     
    52615315
    52625316/* Line 1806 of yacc.c  */
    5263 #line 438 "parser.yy"
     5317#line 440 "parser.yy"
    52645318    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
    52655319    break;
     
    52685322
    52695323/* Line 1806 of yacc.c  */
    5270 #line 440 "parser.yy"
     5324#line 442 "parser.yy"
    52715325    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
    52725326    break;
     
    52755329
    52765330/* Line 1806 of yacc.c  */
    5277 #line 446 "parser.yy"
     5331#line 448 "parser.yy"
    52785332    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
    52795333    break;
     
    52825336
    52835337/* Line 1806 of yacc.c  */
    5284 #line 448 "parser.yy"
     5338#line 450 "parser.yy"
    52855339    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    52865340    break;
     
    52895343
    52905344/* Line 1806 of yacc.c  */
    5291 #line 450 "parser.yy"
     5345#line 452 "parser.yy"
    52925346    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) )); }
    52935347    break;
     
    52965350
    52975351/* Line 1806 of yacc.c  */
    5298 #line 452 "parser.yy"
     5352#line 454 "parser.yy"
    52995353    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
    53005354    break;
     
    53035357
    53045358/* Line 1806 of yacc.c  */
    5305 #line 454 "parser.yy"
     5359#line 456 "parser.yy"
    53065360    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    53075361    break;
     
    53105364
    53115365/* Line 1806 of yacc.c  */
    5312 #line 456 "parser.yy"
     5366#line 458 "parser.yy"
    53135367    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
    53145368    break;
     
    53175371
    53185372/* Line 1806 of yacc.c  */
    5319 #line 458 "parser.yy"
     5373#line 460 "parser.yy"
    53205374    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
    53215375    break;
     
    53245378
    53255379/* Line 1806 of yacc.c  */
    5326 #line 460 "parser.yy"
     5380#line 462 "parser.yy"
    53275381    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); }
    53285382    break;
     
    53315385
    53325386/* Line 1806 of yacc.c  */
    5333 #line 462 "parser.yy"
     5387#line 464 "parser.yy"
    53345388    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); }
    53355389    break;
     
    53385392
    53395393/* Line 1806 of yacc.c  */
    5340 #line 466 "parser.yy"
     5394#line 468 "parser.yy"
    53415395    { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
    53425396    break;
     
    53455399
    53465400/* Line 1806 of yacc.c  */
    5347 #line 467 "parser.yy"
     5401#line 469 "parser.yy"
    53485402    { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    53495403    break;
     
    53525406
    53535407/* Line 1806 of yacc.c  */
    5354 #line 468 "parser.yy"
     5408#line 470 "parser.yy"
    53555409    { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    53565410    break;
     
    53595413
    53605414/* Line 1806 of yacc.c  */
    5361 #line 469 "parser.yy"
     5415#line 471 "parser.yy"
    53625416    { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
    53635417    break;
    53645418
    53655419  case 70:
    5366 
    5367 /* Line 1806 of yacc.c  */
    5368 #line 475 "parser.yy"
    5369     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    5370     break;
    5371 
    5372   case 71:
    53735420
    53745421/* Line 1806 of yacc.c  */
     
    53775424    break;
    53785425
     5426  case 71:
     5427
     5428/* Line 1806 of yacc.c  */
     5429#line 479 "parser.yy"
     5430    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
     5431    break;
     5432
    53795433  case 73:
    53805434
    53815435/* Line 1806 of yacc.c  */
    5382 #line 483 "parser.yy"
     5436#line 485 "parser.yy"
    53835437    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    53845438    break;
     
    53875441
    53885442/* Line 1806 of yacc.c  */
    5389 #line 485 "parser.yy"
     5443#line 487 "parser.yy"
    53905444    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    53915445    break;
     
    53945448
    53955449/* Line 1806 of yacc.c  */
    5396 #line 487 "parser.yy"
     5450#line 489 "parser.yy"
    53975451    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    53985452    break;
     
    54015455
    54025456/* Line 1806 of yacc.c  */
    5403 #line 493 "parser.yy"
     5457#line 495 "parser.yy"
    54045458    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54055459    break;
     
    54085462
    54095463/* Line 1806 of yacc.c  */
    5410 #line 495 "parser.yy"
     5464#line 497 "parser.yy"
    54115465    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54125466    break;
     
    54155469
    54165470/* Line 1806 of yacc.c  */
    5417 #line 501 "parser.yy"
     5471#line 503 "parser.yy"
    54185472    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54195473    break;
     
    54225476
    54235477/* Line 1806 of yacc.c  */
    5424 #line 503 "parser.yy"
     5478#line 505 "parser.yy"
    54255479    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54265480    break;
     
    54295483
    54305484/* Line 1806 of yacc.c  */
    5431 #line 509 "parser.yy"
     5485#line 511 "parser.yy"
    54325486    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54335487    break;
     
    54365490
    54375491/* Line 1806 of yacc.c  */
    5438 #line 511 "parser.yy"
     5492#line 513 "parser.yy"
    54395493    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54405494    break;
     
    54435497
    54445498/* Line 1806 of yacc.c  */
    5445 #line 513 "parser.yy"
     5499#line 515 "parser.yy"
    54465500    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54475501    break;
     
    54505504
    54515505/* Line 1806 of yacc.c  */
    5452 #line 515 "parser.yy"
     5506#line 517 "parser.yy"
    54535507    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54545508    break;
     
    54575511
    54585512/* Line 1806 of yacc.c  */
    5459 #line 521 "parser.yy"
     5513#line 523 "parser.yy"
    54605514    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54615515    break;
     
    54645518
    54655519/* Line 1806 of yacc.c  */
    5466 #line 523 "parser.yy"
     5520#line 525 "parser.yy"
    54675521    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54685522    break;
     
    54715525
    54725526/* Line 1806 of yacc.c  */
    5473 #line 529 "parser.yy"
     5527#line 531 "parser.yy"
    54745528    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54755529    break;
     
    54785532
    54795533/* Line 1806 of yacc.c  */
    5480 #line 535 "parser.yy"
     5534#line 537 "parser.yy"
    54815535    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54825536    break;
     
    54855539
    54865540/* Line 1806 of yacc.c  */
    5487 #line 541 "parser.yy"
     5541#line 543 "parser.yy"
    54885542    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54895543    break;
     
    54925546
    54935547/* Line 1806 of yacc.c  */
    5494 #line 547 "parser.yy"
     5548#line 549 "parser.yy"
    54955549    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54965550    break;
     
    54995553
    55005554/* Line 1806 of yacc.c  */
    5501 #line 553 "parser.yy"
     5555#line 555 "parser.yy"
    55025556    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55035557    break;
     
    55065560
    55075561/* Line 1806 of yacc.c  */
    5508 #line 559 "parser.yy"
     5562#line 561 "parser.yy"
    55095563    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    55105564    break;
     
    55135567
    55145568/* Line 1806 of yacc.c  */
    5515 #line 561 "parser.yy"
     5569#line 563 "parser.yy"
    55165570    { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    55175571    break;
     
    55205574
    55215575/* Line 1806 of yacc.c  */
    5522 #line 563 "parser.yy"
     5576#line 565 "parser.yy"
    55235577    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    55245578    break;
     
    55275581
    55285582/* Line 1806 of yacc.c  */
    5529 #line 574 "parser.yy"
     5583#line 576 "parser.yy"
    55305584    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55315585    break;
     
    55345588
    55355589/* Line 1806 of yacc.c  */
    5536 #line 576 "parser.yy"
     5590#line 578 "parser.yy"
    55375591    { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55385592    break;
     
    55415595
    55425596/* Line 1806 of yacc.c  */
    5543 #line 578 "parser.yy"
     5597#line 580 "parser.yy"
    55445598    { (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) ); }
    55455599    break;
     
    55485602
    55495603/* Line 1806 of yacc.c  */
    5550 #line 583 "parser.yy"
     5604#line 585 "parser.yy"
    55515605    { (yyval.en) = new NullExprNode; }
    55525606    break;
     
    55555609
    55565610/* Line 1806 of yacc.c  */
    5557 #line 591 "parser.yy"
     5611#line 593 "parser.yy"
    55585612    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    55595613    break;
     
    55625616
    55635617/* Line 1806 of yacc.c  */
    5564 #line 593 "parser.yy"
     5618#line 595 "parser.yy"
    55655619    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
    55665620    break;
     
    55695623
    55705624/* Line 1806 of yacc.c  */
    5571 #line 595 "parser.yy"
     5625#line 597 "parser.yy"
    55725626    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    55735627    break;
     
    55765630
    55775631/* Line 1806 of yacc.c  */
    5578 #line 597 "parser.yy"
     5632#line 599 "parser.yy"
    55795633    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    55805634    break;
     
    55835637
    55845638/* Line 1806 of yacc.c  */
    5585 #line 603 "parser.yy"
     5639#line 605 "parser.yy"
    55865640    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    55875641    break;
     
    55905644
    55915645/* Line 1806 of yacc.c  */
    5592 #line 607 "parser.yy"
     5646#line 609 "parser.yy"
    55935647    { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    55945648    break;
     
    55975651
    55985652/* Line 1806 of yacc.c  */
    5599 #line 608 "parser.yy"
     5653#line 610 "parser.yy"
    56005654    { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
    56015655    break;
     
    56045658
    56055659/* Line 1806 of yacc.c  */
    5606 #line 609 "parser.yy"
     5660#line 611 "parser.yy"
    56075661    { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
    56085662    break;
     
    56115665
    56125666/* Line 1806 of yacc.c  */
    5613 #line 610 "parser.yy"
     5667#line 612 "parser.yy"
    56145668    { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
    56155669    break;
     
    56185672
    56195673/* Line 1806 of yacc.c  */
    5620 #line 611 "parser.yy"
     5674#line 613 "parser.yy"
    56215675    { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
    56225676    break;
     
    56255679
    56265680/* Line 1806 of yacc.c  */
    5627 #line 612 "parser.yy"
     5681#line 614 "parser.yy"
    56285682    { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
    56295683    break;
     
    56325686
    56335687/* Line 1806 of yacc.c  */
    5634 #line 613 "parser.yy"
     5688#line 615 "parser.yy"
    56355689    { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
    56365690    break;
     
    56395693
    56405694/* Line 1806 of yacc.c  */
    5641 #line 614 "parser.yy"
     5695#line 616 "parser.yy"
    56425696    { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
    56435697    break;
     
    56465700
    56475701/* Line 1806 of yacc.c  */
    5648 #line 615 "parser.yy"
     5702#line 617 "parser.yy"
    56495703    { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
    56505704    break;
     
    56535707
    56545708/* Line 1806 of yacc.c  */
    5655 #line 616 "parser.yy"
     5709#line 618 "parser.yy"
    56565710    { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
    56575711    break;
     
    56605714
    56615715/* Line 1806 of yacc.c  */
    5662 #line 622 "parser.yy"
     5716#line 624 "parser.yy"
    56635717    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56645718    break;
     
    56675721
    56685722/* Line 1806 of yacc.c  */
    5669 #line 627 "parser.yy"
     5723#line 629 "parser.yy"
    56705724    { (yyval.en) = 0; }
    56715725    break;
     
    56745728
    56755729/* Line 1806 of yacc.c  */
    5676 #line 636 "parser.yy"
     5730#line 638 "parser.yy"
    56775731    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56785732    break;
     
    56815735
    56825736/* Line 1806 of yacc.c  */
    5683 #line 643 "parser.yy"
     5737#line 645 "parser.yy"
    56845738    {
    56855739                        Token fn; fn.str = new std::string( "^?{}" ); // location undefined
     
    56925746
    56935747/* Line 1806 of yacc.c  */
    5694 #line 652 "parser.yy"
     5748#line 654 "parser.yy"
    56955749    {
    56965750                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    57015755
    57025756/* Line 1806 of yacc.c  */
    5703 #line 659 "parser.yy"
     5757#line 661 "parser.yy"
    57045758    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    57055759    break;
     
    57085762
    57095763/* Line 1806 of yacc.c  */
    5710 #line 666 "parser.yy"
     5764#line 668 "parser.yy"
    57115765    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    57125766    break;
     
    57155769
    57165770/* Line 1806 of yacc.c  */
    5717 #line 672 "parser.yy"
     5771#line 674 "parser.yy"
    57185772    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    57195773    break;
     
    57225776
    57235777/* Line 1806 of yacc.c  */
    5724 #line 677 "parser.yy"
     5778#line 679 "parser.yy"
    57255779    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57265780    break;
     
    57295783
    57305784/* Line 1806 of yacc.c  */
    5731 #line 679 "parser.yy"
     5785#line 681 "parser.yy"
    57325786    { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
    57335787    break;
     
    57365790
    57375791/* Line 1806 of yacc.c  */
    5738 #line 681 "parser.yy"
     5792#line 683 "parser.yy"
    57395793    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57405794    break;
     
    57435797
    57445798/* Line 1806 of yacc.c  */
    5745 #line 688 "parser.yy"
     5799#line 690 "parser.yy"
    57465800    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57475801    break;
     
    57505804
    57515805/* Line 1806 of yacc.c  */
    5752 #line 693 "parser.yy"
     5806#line 695 "parser.yy"
    57535807    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    57545808    break;
     
    57575811
    57585812/* Line 1806 of yacc.c  */
    5759 #line 699 "parser.yy"
     5813#line 701 "parser.yy"
    57605814    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57615815    break;
     
    57645818
    57655819/* Line 1806 of yacc.c  */
    5766 #line 701 "parser.yy"
     5820#line 703 "parser.yy"
    57675821    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    57685822    break;
     
    57715825
    57725826/* Line 1806 of yacc.c  */
    5773 #line 703 "parser.yy"
     5827#line 705 "parser.yy"
    57745828    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57755829    break;
     
    57785832
    57795833/* Line 1806 of yacc.c  */
    5780 #line 705 "parser.yy"
     5834#line 707 "parser.yy"
    57815835    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
    57825836    break;
     
    57855839
    57865840/* Line 1806 of yacc.c  */
    5787 #line 710 "parser.yy"
     5841#line 712 "parser.yy"
    57885842    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57895843    break;
     
    57925846
    57935847/* Line 1806 of yacc.c  */
    5794 #line 712 "parser.yy"
     5848#line 714 "parser.yy"
    57955849    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
    57965850    break;
     
    57995853
    58005854/* Line 1806 of yacc.c  */
    5801 #line 719 "parser.yy"
     5855#line 721 "parser.yy"
    58025856    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    58035857    break;
     
    58065860
    58075861/* Line 1806 of yacc.c  */
    5808 #line 721 "parser.yy"
     5862#line 723 "parser.yy"
    58095863    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    58105864    break;
     
    58135867
    58145868/* Line 1806 of yacc.c  */
    5815 #line 728 "parser.yy"
     5869#line 730 "parser.yy"
    58165870    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
    58175871    break;
     
    58205874
    58215875/* Line 1806 of yacc.c  */
    5822 #line 732 "parser.yy"
     5876#line 734 "parser.yy"
    58235877    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
    58245878    break;
     
    58275881
    58285882/* Line 1806 of yacc.c  */
    5829 #line 733 "parser.yy"
     5883#line 735 "parser.yy"
    58305884    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    58315885    break;
     
    58345888
    58355889/* Line 1806 of yacc.c  */
    5836 #line 739 "parser.yy"
     5890#line 741 "parser.yy"
    58375891    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    58385892    break;
     
    58415895
    58425896/* Line 1806 of yacc.c  */
    5843 #line 743 "parser.yy"
     5897#line 745 "parser.yy"
    58445898    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58455899    break;
     
    58485902
    58495903/* Line 1806 of yacc.c  */
    5850 #line 748 "parser.yy"
     5904#line 750 "parser.yy"
    58515905    { (yyval.sn) = 0; }
    58525906    break;
     
    58555909
    58565910/* Line 1806 of yacc.c  */
    5857 #line 754 "parser.yy"
     5911#line 756 "parser.yy"
    58585912    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58595913    break;
     
    58625916
    58635917/* Line 1806 of yacc.c  */
    5864 #line 756 "parser.yy"
     5918#line 758 "parser.yy"
    58655919    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58665920    break;
     
    58695923
    58705924/* Line 1806 of yacc.c  */
    5871 #line 761 "parser.yy"
     5925#line 763 "parser.yy"
    58725926    { (yyval.sn) = 0; }
    58735927    break;
     
    58765930
    58775931/* Line 1806 of yacc.c  */
    5878 #line 767 "parser.yy"
     5932#line 769 "parser.yy"
    58795933    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58805934    break;
     
    58835937
    58845938/* Line 1806 of yacc.c  */
    5885 #line 769 "parser.yy"
     5939#line 771 "parser.yy"
    58865940    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
    58875941    break;
     
    58905944
    58915945/* Line 1806 of yacc.c  */
    5892 #line 771 "parser.yy"
     5946#line 773 "parser.yy"
    58935947    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58945948    break;
     
    58975951
    58985952/* Line 1806 of yacc.c  */
    5899 #line 773 "parser.yy"
     5953#line 775 "parser.yy"
    59005954    { (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) ))))); }
    59015955    break;
     
    59045958
    59055959/* Line 1806 of yacc.c  */
    5906 #line 778 "parser.yy"
     5960#line 780 "parser.yy"
    59075961    { (yyval.sn) = 0; }
    59085962    break;
     
    59115965
    59125966/* Line 1806 of yacc.c  */
    5913 #line 783 "parser.yy"
     5967#line 785 "parser.yy"
    59145968    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    59155969    break;
     
    59185972
    59195973/* Line 1806 of yacc.c  */
    5920 #line 784 "parser.yy"
     5974#line 786 "parser.yy"
    59215975    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    59225976    break;
     
    59255979
    59265980/* Line 1806 of yacc.c  */
    5927 #line 789 "parser.yy"
     5981#line 791 "parser.yy"
    59285982    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    59295983    break;
     
    59325986
    59335987/* Line 1806 of yacc.c  */
    5934 #line 791 "parser.yy"
     5988#line 793 "parser.yy"
    59355989    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    59365990    break;
     
    59395993
    59405994/* Line 1806 of yacc.c  */
    5941 #line 793 "parser.yy"
     5995#line 795 "parser.yy"
    59425996    { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    59435997    break;
     
    59466000
    59476001/* Line 1806 of yacc.c  */
    5948 #line 798 "parser.yy"
     6002#line 800 "parser.yy"
    59496003    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59506004    break;
     
    59536007
    59546008/* Line 1806 of yacc.c  */
    5955 #line 800 "parser.yy"
     6009#line 802 "parser.yy"
    59566010    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59576011    break;
     
    59606014
    59616015/* Line 1806 of yacc.c  */
    5962 #line 805 "parser.yy"
     6016#line 807 "parser.yy"
    59636017    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    59646018    break;
     
    59676021
    59686022/* Line 1806 of yacc.c  */
    5969 #line 809 "parser.yy"
     6023#line 811 "parser.yy"
    59706024    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    59716025    break;
     
    59746028
    59756029/* Line 1806 of yacc.c  */
    5976 #line 812 "parser.yy"
     6030#line 814 "parser.yy"
    59776031    { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
    59786032    break;
     
    59816035
    59826036/* Line 1806 of yacc.c  */
    5983 #line 816 "parser.yy"
     6037#line 818 "parser.yy"
    59846038    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    59856039    break;
     
    59886042
    59896043/* Line 1806 of yacc.c  */
    5990 #line 819 "parser.yy"
     6044#line 821 "parser.yy"
    59916045    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
    59926046    break;
     
    59956049
    59966050/* Line 1806 of yacc.c  */
    5997 #line 823 "parser.yy"
     6051#line 825 "parser.yy"
    59986052    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    59996053    break;
     
    60026056
    60036057/* Line 1806 of yacc.c  */
    6004 #line 825 "parser.yy"
     6058#line 827 "parser.yy"
    60056059    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    60066060    break;
     
    60096063
    60106064/* Line 1806 of yacc.c  */
    6011 #line 827 "parser.yy"
     6065#line 829 "parser.yy"
    60126066    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    60136067    break;
     
    60166070
    60176071/* Line 1806 of yacc.c  */
    6018 #line 831 "parser.yy"
     6072#line 833 "parser.yy"
    60196073    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    60206074    break;
     
    60236077
    60246078/* Line 1806 of yacc.c  */
    6025 #line 833 "parser.yy"
     6079#line 835 "parser.yy"
    60266080    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
    60276081    break;
    60286082
    60296083  case 197:
    6030 
    6031 /* Line 1806 of yacc.c  */
    6032 #line 840 "parser.yy"
    6033     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    6034     break;
    6035 
    6036   case 198:
    60376084
    60386085/* Line 1806 of yacc.c  */
     
    60416088    break;
    60426089
     6090  case 198:
     6091
     6092/* Line 1806 of yacc.c  */
     6093#line 844 "parser.yy"
     6094    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     6095    break;
     6096
    60436097  case 199:
    60446098
    60456099/* Line 1806 of yacc.c  */
    6046 #line 844 "parser.yy"
     6100#line 846 "parser.yy"
    60476101    {
    60486102                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    60546108
    60556109/* Line 1806 of yacc.c  */
    6056 #line 855 "parser.yy"
     6110#line 857 "parser.yy"
    60576111    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    60586112    break;
     
    60616115
    60626116/* Line 1806 of yacc.c  */
    6063 #line 857 "parser.yy"
     6117#line 859 "parser.yy"
    60646118    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    60656119    break;
     
    60686122
    60696123/* Line 1806 of yacc.c  */
    6070 #line 859 "parser.yy"
     6124#line 861 "parser.yy"
    60716125    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    60726126    break;
     
    60756129
    60766130/* Line 1806 of yacc.c  */
    6077 #line 861 "parser.yy"
     6131#line 863 "parser.yy"
    60786132    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    60796133    break;
     
    60826136
    60836137/* Line 1806 of yacc.c  */
    6084 #line 866 "parser.yy"
     6138#line 868 "parser.yy"
    60856139    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    60866140    break;
     
    60896143
    60906144/* Line 1806 of yacc.c  */
    6091 #line 868 "parser.yy"
     6145#line 870 "parser.yy"
    60926146    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    60936147    break;
     
    60966150
    60976151/* Line 1806 of yacc.c  */
    6098 #line 870 "parser.yy"
     6152#line 872 "parser.yy"
    60996153    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    61006154    break;
     
    61036157
    61046158/* Line 1806 of yacc.c  */
    6105 #line 872 "parser.yy"
     6159#line 874 "parser.yy"
    61066160    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    61076161    break;
     
    61106164
    61116165/* Line 1806 of yacc.c  */
    6112 #line 877 "parser.yy"
     6166#line 879 "parser.yy"
    61136167    {
    61146168                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    61206174
    61216175/* Line 1806 of yacc.c  */
    6122 #line 891 "parser.yy"
     6176#line 893 "parser.yy"
    61236177    {
    61246178                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61306184
    61316185/* Line 1806 of yacc.c  */
    6132 #line 896 "parser.yy"
     6186#line 898 "parser.yy"
    61336187    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61346188    break;
     
    61376191
    61386192/* Line 1806 of yacc.c  */
    6139 #line 898 "parser.yy"
     6193#line 900 "parser.yy"
    61406194    {
    61416195                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61476201
    61486202/* Line 1806 of yacc.c  */
    6149 #line 907 "parser.yy"
     6203#line 909 "parser.yy"
    61506204    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    61516205    break;
     
    61546208
    61556209/* Line 1806 of yacc.c  */
    6156 #line 909 "parser.yy"
     6210#line 911 "parser.yy"
    61576211    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    61586212    break;
     
    61616215
    61626216/* Line 1806 of yacc.c  */
    6163 #line 911 "parser.yy"
     6217#line 913 "parser.yy"
    61646218    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    61656219    break;
     
    61686222
    61696223/* Line 1806 of yacc.c  */
    6170 #line 913 "parser.yy"
     6224#line 915 "parser.yy"
    61716225    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); }
    61726226    break;
     
    61756229
    61766230/* Line 1806 of yacc.c  */
    6177 #line 915 "parser.yy"
     6231#line 917 "parser.yy"
    61786232    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }
    61796233    break;
     
    61826236
    61836237/* Line 1806 of yacc.c  */
    6184 #line 920 "parser.yy"
     6238#line 922 "parser.yy"
    61856239    { (yyval.flag) = false; }
    61866240    break;
     
    61896243
    61906244/* Line 1806 of yacc.c  */
    6191 #line 922 "parser.yy"
     6245#line 924 "parser.yy"
    61926246    { (yyval.flag) = true; }
    61936247    break;
     
    61966250
    61976251/* Line 1806 of yacc.c  */
    6198 #line 927 "parser.yy"
     6252#line 929 "parser.yy"
    61996253    { (yyval.en) = 0; }
    62006254    break;
     
    62036257
    62046258/* Line 1806 of yacc.c  */
    6205 #line 934 "parser.yy"
     6259#line 936 "parser.yy"
    62066260    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    62076261    break;
     
    62106264
    62116265/* Line 1806 of yacc.c  */
    6212 #line 939 "parser.yy"
     6266#line 941 "parser.yy"
    62136267    { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
    62146268    break;
     
    62176271
    62186272/* Line 1806 of yacc.c  */
    6219 #line 941 "parser.yy"
     6273#line 943 "parser.yy"
    62206274    { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
    62216275    break;
     
    62246278
    62256279/* Line 1806 of yacc.c  */
    6226 #line 946 "parser.yy"
     6280#line 948 "parser.yy"
    62276281    { (yyval.constant) = 0; }
    62286282    break;
     
    62316285
    62326286/* Line 1806 of yacc.c  */
    6233 #line 948 "parser.yy"
     6287#line 950 "parser.yy"
    62346288    { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
    62356289    break;
     
    62386292
    62396293/* Line 1806 of yacc.c  */
    6240 #line 950 "parser.yy"
     6294#line 952 "parser.yy"
    62416295    { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
    62426296    break;
     
    62456299
    62466300/* Line 1806 of yacc.c  */
    6247 #line 955 "parser.yy"
     6301#line 957 "parser.yy"
    62486302    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    62496303    break;
     
    62526306
    62536307/* Line 1806 of yacc.c  */
    6254 #line 957 "parser.yy"
     6308#line 959 "parser.yy"
    62556309    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    62566310    break;
     
    62596313
    62606314/* Line 1806 of yacc.c  */
    6261 #line 964 "parser.yy"
     6315#line 966 "parser.yy"
    62626316    { (yyval.decl) = 0; }
    62636317    break;
     
    62666320
    62676321/* Line 1806 of yacc.c  */
    6268 #line 971 "parser.yy"
     6322#line 973 "parser.yy"
    62696323    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62706324    break;
     
    62736327
    62746328/* Line 1806 of yacc.c  */
    6275 #line 976 "parser.yy"
     6329#line 978 "parser.yy"
    62766330    { (yyval.decl) = 0; }
    62776331    break;
     
    62806334
    62816335/* Line 1806 of yacc.c  */
    6282 #line 983 "parser.yy"
     6336#line 985 "parser.yy"
    62836337    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62846338    break;
     
    62876341
    62886342/* Line 1806 of yacc.c  */
    6289 #line 997 "parser.yy"
     6343#line 999 "parser.yy"
    62906344    {}
    62916345    break;
     
    62946348
    62956349/* Line 1806 of yacc.c  */
    6296 #line 998 "parser.yy"
     6350#line 1000 "parser.yy"
    62976351    {}
    62986352    break;
     
    63016355
    63026356/* Line 1806 of yacc.c  */
    6303 #line 1027 "parser.yy"
     6357#line 1029 "parser.yy"
    63046358    {
    63056359                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6306                         (yyval.decl) = (yyvsp[(1) - (2)].decl);
     6360                        (yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );
    63076361                }
    63086362    break;
     
    63116365
    63126366/* Line 1806 of yacc.c  */
    6313 #line 1034 "parser.yy"
     6367#line 1036 "parser.yy"
    63146368    {
    63156369                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6316                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) );
     6370                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;
    63176371                }
    63186372    break;
     
    63216375
    63226376/* Line 1806 of yacc.c  */
    6323 #line 1039 "parser.yy"
     6377#line 1041 "parser.yy"
    63246378    {
    63256379                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
    6326                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) ) );
     6380                        (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) );
    63276381                }
    63286382    break;
     
    63316385
    63326386/* Line 1806 of yacc.c  */
    6333 #line 1049 "parser.yy"
     6387#line 1051 "parser.yy"
    63346388    {
    63356389                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63416395
    63426396/* Line 1806 of yacc.c  */
    6343 #line 1054 "parser.yy"
     6397#line 1056 "parser.yy"
    63446398    {
    63456399                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63516405
    63526406/* Line 1806 of yacc.c  */
    6353 #line 1059 "parser.yy"
     6407#line 1061 "parser.yy"
    63546408    {
    63556409                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63616415
    63626416/* Line 1806 of yacc.c  */
    6363 #line 1067 "parser.yy"
     6417#line 1069 "parser.yy"
    63646418    {
    63656419                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63716425
    63726426/* Line 1806 of yacc.c  */
    6373 #line 1072 "parser.yy"
     6427#line 1074 "parser.yy"
    63746428    {
    63756429                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63816435
    63826436/* Line 1806 of yacc.c  */
    6383 #line 1077 "parser.yy"
     6437#line 1079 "parser.yy"
    63846438    {
    63856439                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63916445
    63926446/* Line 1806 of yacc.c  */
    6393 #line 1082 "parser.yy"
     6447#line 1084 "parser.yy"
    63946448    {
    63956449                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64016455
    64026456/* Line 1806 of yacc.c  */
    6403 #line 1087 "parser.yy"
     6457#line 1089 "parser.yy"
    64046458    {
    64056459                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64116465
    64126466/* Line 1806 of yacc.c  */
    6413 #line 1095 "parser.yy"
     6467#line 1097 "parser.yy"
    64146468    {
    64156469                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    64206474
    64216475/* Line 1806 of yacc.c  */
    6422 #line 1118 "parser.yy"
     6476#line 1120 "parser.yy"
    64236477    {
    64246478                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64296483
    64306484/* Line 1806 of yacc.c  */
    6431 #line 1122 "parser.yy"
     6485#line 1124 "parser.yy"
    64326486    {
    64336487                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64386492
    64396493/* Line 1806 of yacc.c  */
    6440 #line 1129 "parser.yy"
     6494#line 1131 "parser.yy"
    64416495    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64426496    break;
     
    64456499
    64466500/* Line 1806 of yacc.c  */
    6447 #line 1133 "parser.yy"
     6501#line 1135 "parser.yy"
    64486502    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64496503    break;
     
    64526506
    64536507/* Line 1806 of yacc.c  */
    6454 #line 1138 "parser.yy"
     6508#line 1140 "parser.yy"
    64556509    {
    64566510                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64626516
    64636517/* Line 1806 of yacc.c  */
    6464 #line 1143 "parser.yy"
     6518#line 1145 "parser.yy"
    64656519    {
    64666520                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64726526
    64736527/* Line 1806 of yacc.c  */
    6474 #line 1148 "parser.yy"
     6528#line 1150 "parser.yy"
    64756529    {
    64766530                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64826536
    64836537/* Line 1806 of yacc.c  */
    6484 #line 1159 "parser.yy"
     6538#line 1161 "parser.yy"
    64856539    {
    64866540                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64926546
    64936547/* Line 1806 of yacc.c  */
    6494 #line 1164 "parser.yy"
     6548#line 1166 "parser.yy"
    64956549    {
    64966550                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65026556
    65036557/* Line 1806 of yacc.c  */
    6504 #line 1169 "parser.yy"
     6558#line 1171 "parser.yy"
    65056559    {
    65066560                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65126566
    65136567/* Line 1806 of yacc.c  */
    6514 #line 1174 "parser.yy"
     6568#line 1176 "parser.yy"
    65156569    {
    65166570                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65226576
    65236577/* Line 1806 of yacc.c  */
    6524 #line 1179 "parser.yy"
     6578#line 1181 "parser.yy"
    65256579    {
    65266580                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65326586
    65336587/* Line 1806 of yacc.c  */
    6534 #line 1188 "parser.yy"
     6588#line 1190 "parser.yy"
    65356589    {
    65366590                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65426596
    65436597/* Line 1806 of yacc.c  */
    6544 #line 1193 "parser.yy"
     6598#line 1195 "parser.yy"
    65456599    {
    65466600                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65526606
    65536607/* Line 1806 of yacc.c  */
    6554 #line 1210 "parser.yy"
     6608#line 1212 "parser.yy"
    65556609    {
    65566610                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65626616
    65636617/* Line 1806 of yacc.c  */
    6564 #line 1215 "parser.yy"
     6618#line 1217 "parser.yy"
    65656619    {
    65666620                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65726626
    65736627/* Line 1806 of yacc.c  */
    6574 #line 1237 "parser.yy"
     6628#line 1239 "parser.yy"
    65756629    { (yyval.decl) = 0; }
    65766630    break;
     
    65796633
    65806634/* Line 1806 of yacc.c  */
    6581 #line 1249 "parser.yy"
     6635#line 1251 "parser.yy"
    65826636    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65836637    break;
     
    65866640
    65876641/* Line 1806 of yacc.c  */
    6588 #line 1260 "parser.yy"
     6642#line 1262 "parser.yy"
    65896643    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    65906644    break;
     
    65936647
    65946648/* Line 1806 of yacc.c  */
    6595 #line 1262 "parser.yy"
     6649#line 1264 "parser.yy"
    65966650    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    65976651    break;
     
    66006654
    66016655/* Line 1806 of yacc.c  */
    6602 #line 1264 "parser.yy"
     6656#line 1266 "parser.yy"
    66036657    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66046658    break;
     
    66076661
    66086662/* Line 1806 of yacc.c  */
    6609 #line 1266 "parser.yy"
     6663#line 1268 "parser.yy"
    66106664    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    66116665    break;
     
    66146668
    66156669/* Line 1806 of yacc.c  */
    6616 #line 1268 "parser.yy"
     6670#line 1270 "parser.yy"
    66176671    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    66186672    break;
     
    66216675
    66226676/* Line 1806 of yacc.c  */
    6623 #line 1270 "parser.yy"
     6677#line 1272 "parser.yy"
    66246678    {
    66256679                        typedefTable.enterScope();
     
    66306684
    66316685/* Line 1806 of yacc.c  */
    6632 #line 1274 "parser.yy"
     6686#line 1276 "parser.yy"
    66336687    {
    66346688                        typedefTable.leaveScope();
     
    66406694
    66416695/* Line 1806 of yacc.c  */
    6642 #line 1283 "parser.yy"
     6696#line 1285 "parser.yy"
    66436697    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66446698    break;
     
    66476701
    66486702/* Line 1806 of yacc.c  */
    6649 #line 1285 "parser.yy"
     6703#line 1287 "parser.yy"
    66506704    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66516705    break;
     
    66546708
    66556709/* Line 1806 of yacc.c  */
    6656 #line 1296 "parser.yy"
     6710#line 1298 "parser.yy"
    66576711    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66586712    break;
     
    66616715
    66626716/* Line 1806 of yacc.c  */
    6663 #line 1305 "parser.yy"
     6717#line 1307 "parser.yy"
    66646718    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    66656719    break;
     
    66686722
    66696723/* Line 1806 of yacc.c  */
    6670 #line 1307 "parser.yy"
     6724#line 1309 "parser.yy"
    66716725    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    66726726    break;
     
    66756729
    66766730/* Line 1806 of yacc.c  */
    6677 #line 1309 "parser.yy"
     6731#line 1311 "parser.yy"
    66786732    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    66796733    break;
     
    66826736
    66836737/* Line 1806 of yacc.c  */
    6684 #line 1311 "parser.yy"
     6738#line 1313 "parser.yy"
    66856739    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66866740    break;
     
    66896743
    66906744/* Line 1806 of yacc.c  */
    6691 #line 1313 "parser.yy"
     6745#line 1315 "parser.yy"
    66926746    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    66936747    break;
     
    66966750
    66976751/* Line 1806 of yacc.c  */
    6698 #line 1315 "parser.yy"
     6752#line 1317 "parser.yy"
    66996753    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    67006754    break;
     
    67036757
    67046758/* Line 1806 of yacc.c  */
    6705 #line 1317 "parser.yy"
     6759#line 1319 "parser.yy"
    67066760    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    67076761    break;
     
    67106764
    67116765/* Line 1806 of yacc.c  */
    6712 #line 1319 "parser.yy"
     6766#line 1321 "parser.yy"
    67136767    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    67146768    break;
     
    67176771
    67186772/* Line 1806 of yacc.c  */
    6719 #line 1324 "parser.yy"
     6773#line 1326 "parser.yy"
    67206774    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    67216775    break;
     
    67246778
    67256779/* Line 1806 of yacc.c  */
    6726 #line 1326 "parser.yy"
     6780#line 1328 "parser.yy"
    67276781    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    67286782    break;
     
    67316785
    67326786/* Line 1806 of yacc.c  */
    6733 #line 1328 "parser.yy"
     6787#line 1330 "parser.yy"
    67346788    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    67356789    break;
     
    67386792
    67396793/* Line 1806 of yacc.c  */
    6740 #line 1330 "parser.yy"
     6794#line 1332 "parser.yy"
    67416795    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    67426796    break;
     
    67456799
    67466800/* Line 1806 of yacc.c  */
    6747 #line 1332 "parser.yy"
     6801#line 1334 "parser.yy"
    67486802    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    67496803    break;
     
    67526806
    67536807/* Line 1806 of yacc.c  */
    6754 #line 1334 "parser.yy"
     6808#line 1336 "parser.yy"
    67556809    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    67566810    break;
     
    67596813
    67606814/* Line 1806 of yacc.c  */
    6761 #line 1336 "parser.yy"
     6815#line 1338 "parser.yy"
    67626816    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    67636817    break;
     
    67666820
    67676821/* Line 1806 of yacc.c  */
    6768 #line 1338 "parser.yy"
     6822#line 1340 "parser.yy"
    67696823    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    67706824    break;
     
    67736827
    67746828/* Line 1806 of yacc.c  */
    6775 #line 1340 "parser.yy"
     6829#line 1342 "parser.yy"
    67766830    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    67776831    break;
     
    67806834
    67816835/* Line 1806 of yacc.c  */
    6782 #line 1342 "parser.yy"
     6836#line 1344 "parser.yy"
    67836837    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    67846838    break;
     
    67876841
    67886842/* Line 1806 of yacc.c  */
    6789 #line 1344 "parser.yy"
     6843#line 1346 "parser.yy"
    67906844    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    67916845    break;
     
    67946848
    67956849/* Line 1806 of yacc.c  */
    6796 #line 1346 "parser.yy"
     6850#line 1348 "parser.yy"
    67976851    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    67986852    break;
    67996853
    6800   case 334:
    6801 
    6802 /* Line 1806 of yacc.c  */
    6803 #line 1353 "parser.yy"
     6854  case 333:
     6855
     6856/* Line 1806 of yacc.c  */
     6857#line 1350 "parser.yy"
     6858    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     6859    break;
     6860
     6861  case 335:
     6862
     6863/* Line 1806 of yacc.c  */
     6864#line 1357 "parser.yy"
    68046865    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68056866    break;
    68066867
    6807   case 335:
    6808 
    6809 /* Line 1806 of yacc.c  */
    6810 #line 1355 "parser.yy"
     6868  case 336:
     6869
     6870/* Line 1806 of yacc.c  */
     6871#line 1359 "parser.yy"
    68116872    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68126873    break;
    68136874
    6814   case 336:
    6815 
    6816 /* Line 1806 of yacc.c  */
    6817 #line 1357 "parser.yy"
     6875  case 337:
     6876
     6877/* Line 1806 of yacc.c  */
     6878#line 1361 "parser.yy"
    68186879    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68196880    break;
    68206881
    6821   case 337:
    6822 
    6823 /* Line 1806 of yacc.c  */
    6824 #line 1359 "parser.yy"
     6882  case 338:
     6883
     6884/* Line 1806 of yacc.c  */
     6885#line 1363 "parser.yy"
    68256886    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    68266887    break;
    68276888
    6828   case 339:
    6829 
    6830 /* Line 1806 of yacc.c  */
    6831 #line 1365 "parser.yy"
     6889  case 340:
     6890
     6891/* Line 1806 of yacc.c  */
     6892#line 1369 "parser.yy"
    68326893    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68336894    break;
    68346895
    6835   case 341:
    6836 
    6837 /* Line 1806 of yacc.c  */
    6838 #line 1372 "parser.yy"
     6896  case 342:
     6897
     6898/* Line 1806 of yacc.c  */
     6899#line 1376 "parser.yy"
    68396900    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68406901    break;
    68416902
    6842   case 342:
    6843 
    6844 /* Line 1806 of yacc.c  */
    6845 #line 1374 "parser.yy"
     6903  case 343:
     6904
     6905/* Line 1806 of yacc.c  */
     6906#line 1378 "parser.yy"
    68466907    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68476908    break;
    68486909
    6849   case 343:
    6850 
    6851 /* Line 1806 of yacc.c  */
    6852 #line 1376 "parser.yy"
     6910  case 344:
     6911
     6912/* Line 1806 of yacc.c  */
     6913#line 1380 "parser.yy"
    68536914    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    68546915    break;
    68556916
    6856   case 344:
    6857 
    6858 /* Line 1806 of yacc.c  */
    6859 #line 1381 "parser.yy"
     6917  case 345:
     6918
     6919/* Line 1806 of yacc.c  */
     6920#line 1385 "parser.yy"
    68606921    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    68616922    break;
    68626923
    6863   case 345:
    6864 
    6865 /* Line 1806 of yacc.c  */
    6866 #line 1383 "parser.yy"
     6924  case 346:
     6925
     6926/* Line 1806 of yacc.c  */
     6927#line 1387 "parser.yy"
    68676928    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    68686929    break;
    68696930
    6870   case 346:
    6871 
    6872 /* Line 1806 of yacc.c  */
    6873 #line 1385 "parser.yy"
     6931  case 347:
     6932
     6933/* Line 1806 of yacc.c  */
     6934#line 1389 "parser.yy"
    68746935    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    68756936    break;
    68766937
    6877   case 347:
    6878 
    6879 /* Line 1806 of yacc.c  */
    6880 #line 1387 "parser.yy"
     6938  case 348:
     6939
     6940/* Line 1806 of yacc.c  */
     6941#line 1391 "parser.yy"
    68816942    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    68826943    break;
    68836944
    6884   case 349:
    6885 
    6886 /* Line 1806 of yacc.c  */
    6887 #line 1393 "parser.yy"
     6945  case 350:
     6946
     6947/* Line 1806 of yacc.c  */
     6948#line 1397 "parser.yy"
    68886949    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68896950    break;
    68906951
    6891   case 350:
    6892 
    6893 /* Line 1806 of yacc.c  */
    6894 #line 1395 "parser.yy"
     6952  case 351:
     6953
     6954/* Line 1806 of yacc.c  */
     6955#line 1399 "parser.yy"
    68956956    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68966957    break;
    68976958
    6898   case 351:
    6899 
    6900 /* Line 1806 of yacc.c  */
    6901 #line 1397 "parser.yy"
     6959  case 352:
     6960
     6961/* Line 1806 of yacc.c  */
     6962#line 1401 "parser.yy"
    69026963    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69036964    break;
    69046965
    6905   case 353:
    6906 
    6907 /* Line 1806 of yacc.c  */
    6908 #line 1403 "parser.yy"
     6966  case 354:
     6967
     6968/* Line 1806 of yacc.c  */
     6969#line 1407 "parser.yy"
    69096970    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69106971    break;
    69116972
    6912   case 354:
    6913 
    6914 /* Line 1806 of yacc.c  */
    6915 #line 1405 "parser.yy"
     6973  case 355:
     6974
     6975/* Line 1806 of yacc.c  */
     6976#line 1409 "parser.yy"
    69166977    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69176978    break;
    69186979
    6919   case 356:
    6920 
    6921 /* Line 1806 of yacc.c  */
    6922 #line 1411 "parser.yy"
     6980  case 357:
     6981
     6982/* Line 1806 of yacc.c  */
     6983#line 1415 "parser.yy"
    69236984    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69246985    break;
    69256986
    6926   case 357:
    6927 
    6928 /* Line 1806 of yacc.c  */
    6929 #line 1413 "parser.yy"
     6987  case 358:
     6988
     6989/* Line 1806 of yacc.c  */
     6990#line 1417 "parser.yy"
    69306991    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69316992    break;
    69326993
    6933   case 358:
    6934 
    6935 /* Line 1806 of yacc.c  */
    6936 #line 1415 "parser.yy"
     6994  case 359:
     6995
     6996/* Line 1806 of yacc.c  */
     6997#line 1419 "parser.yy"
    69376998    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69386999    break;
    69397000
    6940   case 359:
    6941 
    6942 /* Line 1806 of yacc.c  */
    6943 #line 1420 "parser.yy"
     7001  case 360:
     7002
     7003/* Line 1806 of yacc.c  */
     7004#line 1424 "parser.yy"
    69447005    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    69457006    break;
    69467007
    6947   case 360:
    6948 
    6949 /* Line 1806 of yacc.c  */
    6950 #line 1422 "parser.yy"
     7008  case 361:
     7009
     7010/* Line 1806 of yacc.c  */
     7011#line 1426 "parser.yy"
    69517012    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69527013    break;
    69537014
    6954   case 361:
    6955 
    6956 /* Line 1806 of yacc.c  */
    6957 #line 1424 "parser.yy"
     7015  case 362:
     7016
     7017/* Line 1806 of yacc.c  */
     7018#line 1428 "parser.yy"
    69587019    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69597020    break;
    69607021
    6961   case 364:
    6962 
    6963 /* Line 1806 of yacc.c  */
    6964 #line 1434 "parser.yy"
     7022  case 365:
     7023
     7024/* Line 1806 of yacc.c  */
     7025#line 1438 "parser.yy"
    69657026    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
    69667027    break;
    69677028
    6968   case 365:
    6969 
    6970 /* Line 1806 of yacc.c  */
    6971 #line 1436 "parser.yy"
     7029  case 366:
     7030
     7031/* Line 1806 of yacc.c  */
     7032#line 1440 "parser.yy"
    69727033    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); }
    69737034    break;
    69747035
    6975   case 366:
    6976 
    6977 /* Line 1806 of yacc.c  */
    6978 #line 1438 "parser.yy"
     7036  case 367:
     7037
     7038/* Line 1806 of yacc.c  */
     7039#line 1442 "parser.yy"
    69797040    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); }
    69807041    break;
    69817042
    6982   case 367:
    6983 
    6984 /* Line 1806 of yacc.c  */
    6985 #line 1440 "parser.yy"
     7043  case 368:
     7044
     7045/* Line 1806 of yacc.c  */
     7046#line 1444 "parser.yy"
    69867047    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
    69877048    break;
    69887049
    6989   case 368:
    6990 
    6991 /* Line 1806 of yacc.c  */
    6992 #line 1442 "parser.yy"
     7050  case 369:
     7051
     7052/* Line 1806 of yacc.c  */
     7053#line 1446 "parser.yy"
    69937054    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    69947055    break;
    69957056
    6996   case 369:
    6997 
    6998 /* Line 1806 of yacc.c  */
    6999 #line 1447 "parser.yy"
     7057  case 370:
     7058
     7059/* Line 1806 of yacc.c  */
     7060#line 1451 "parser.yy"
    70007061    { (yyval.aggKey) = DeclarationNode::Struct; }
    70017062    break;
    70027063
    7003   case 370:
    7004 
    7005 /* Line 1806 of yacc.c  */
    7006 #line 1449 "parser.yy"
     7064  case 371:
     7065
     7066/* Line 1806 of yacc.c  */
     7067#line 1453 "parser.yy"
    70077068    { (yyval.aggKey) = DeclarationNode::Union; }
    70087069    break;
    70097070
    7010   case 371:
    7011 
    7012 /* Line 1806 of yacc.c  */
    7013 #line 1454 "parser.yy"
     7071  case 372:
     7072
     7073/* Line 1806 of yacc.c  */
     7074#line 1458 "parser.yy"
    70147075    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    70157076    break;
    70167077
    7017   case 372:
    7018 
    7019 /* Line 1806 of yacc.c  */
    7020 #line 1456 "parser.yy"
     7078  case 373:
     7079
     7080/* Line 1806 of yacc.c  */
     7081#line 1460 "parser.yy"
    70217082    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    70227083    break;
    70237084
    7024   case 374:
    7025 
    7026 /* Line 1806 of yacc.c  */
    7027 #line 1462 "parser.yy"
     7085  case 375:
     7086
     7087/* Line 1806 of yacc.c  */
     7088#line 1466 "parser.yy"
    70287089    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    70297090    break;
    70307091
    7031   case 376:
    7032 
    7033 /* Line 1806 of yacc.c  */
    7034 #line 1465 "parser.yy"
     7092  case 377:
     7093
     7094/* Line 1806 of yacc.c  */
     7095#line 1469 "parser.yy"
    70357096    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    70367097    break;
    70377098
    7038   case 378:
    7039 
    7040 /* Line 1806 of yacc.c  */
    7041 #line 1471 "parser.yy"
     7099  case 379:
     7100
     7101/* Line 1806 of yacc.c  */
     7102#line 1475 "parser.yy"
    70427103    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    70437104    break;
    70447105
    7045   case 379:
    7046 
    7047 /* Line 1806 of yacc.c  */
    7048 #line 1473 "parser.yy"
     7106  case 380:
     7107
     7108/* Line 1806 of yacc.c  */
     7109#line 1477 "parser.yy"
    70497110    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    70507111    break;
    70517112
    7052   case 380:
    7053 
    7054 /* Line 1806 of yacc.c  */
    7055 #line 1475 "parser.yy"
     7113  case 381:
     7114
     7115/* Line 1806 of yacc.c  */
     7116#line 1479 "parser.yy"
    70567117    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    70577118    break;
    70587119
    7059   case 381:
    7060 
    7061 /* Line 1806 of yacc.c  */
    7062 #line 1480 "parser.yy"
     7120  case 382:
     7121
     7122/* Line 1806 of yacc.c  */
     7123#line 1484 "parser.yy"
    70637124    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70647125    break;
    70657126
    7066   case 382:
    7067 
    7068 /* Line 1806 of yacc.c  */
    7069 #line 1482 "parser.yy"
     7127  case 383:
     7128
     7129/* Line 1806 of yacc.c  */
     7130#line 1486 "parser.yy"
    70707131    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    70717132    break;
    70727133
    7073   case 383:
    7074 
    7075 /* Line 1806 of yacc.c  */
    7076 #line 1487 "parser.yy"
     7134  case 384:
     7135
     7136/* Line 1806 of yacc.c  */
     7137#line 1491 "parser.yy"
    70777138    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    70787139    break;
    70797140
    7080   case 384:
    7081 
    7082 /* Line 1806 of yacc.c  */
    7083 #line 1489 "parser.yy"
     7141  case 385:
     7142
     7143/* Line 1806 of yacc.c  */
     7144#line 1493 "parser.yy"
    70847145    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    70857146    break;
    70867147
    7087   case 385:
    7088 
    7089 /* Line 1806 of yacc.c  */
    7090 #line 1492 "parser.yy"
     7148  case 386:
     7149
     7150/* Line 1806 of yacc.c  */
     7151#line 1496 "parser.yy"
    70917152    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    70927153    break;
    70937154
    7094   case 386:
    7095 
    7096 /* Line 1806 of yacc.c  */
    7097 #line 1495 "parser.yy"
     7155  case 387:
     7156
     7157/* Line 1806 of yacc.c  */
     7158#line 1499 "parser.yy"
    70987159    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    70997160    break;
    71007161
    7101   case 388:
    7102 
    7103 /* Line 1806 of yacc.c  */
    7104 #line 1501 "parser.yy"
     7162  case 389:
     7163
     7164/* Line 1806 of yacc.c  */
     7165#line 1505 "parser.yy"
    71057166    { (yyval.en) = 0; }
    71067167    break;
    71077168
    7108   case 389:
    7109 
    7110 /* Line 1806 of yacc.c  */
    7111 #line 1503 "parser.yy"
     7169  case 390:
     7170
     7171/* Line 1806 of yacc.c  */
     7172#line 1507 "parser.yy"
    71127173    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71137174    break;
    71147175
    7115   case 390:
    7116 
    7117 /* Line 1806 of yacc.c  */
    7118 #line 1508 "parser.yy"
     7176  case 391:
     7177
     7178/* Line 1806 of yacc.c  */
     7179#line 1512 "parser.yy"
    71197180    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71207181    break;
    71217182
    7122   case 392:
    7123 
    7124 /* Line 1806 of yacc.c  */
    7125 #line 1517 "parser.yy"
     7183  case 393:
     7184
     7185/* Line 1806 of yacc.c  */
     7186#line 1521 "parser.yy"
    71267187    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    71277188    break;
    71287189
    7129   case 393:
    7130 
    7131 /* Line 1806 of yacc.c  */
    7132 #line 1519 "parser.yy"
     7190  case 394:
     7191
     7192/* Line 1806 of yacc.c  */
     7193#line 1523 "parser.yy"
    71337194    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
    71347195    break;
    71357196
    7136   case 394:
    7137 
    7138 /* Line 1806 of yacc.c  */
    7139 #line 1521 "parser.yy"
     7197  case 395:
     7198
     7199/* Line 1806 of yacc.c  */
     7200#line 1525 "parser.yy"
    71407201    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
    71417202    break;
    71427203
    7143   case 395:
    7144 
    7145 /* Line 1806 of yacc.c  */
    7146 #line 1526 "parser.yy"
     7204  case 396:
     7205
     7206/* Line 1806 of yacc.c  */
     7207#line 1530 "parser.yy"
    71477208    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    71487209    break;
    71497210
    7150   case 396:
    7151 
    7152 /* Line 1806 of yacc.c  */
    7153 #line 1528 "parser.yy"
     7211  case 397:
     7212
     7213/* Line 1806 of yacc.c  */
     7214#line 1532 "parser.yy"
    71547215    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71557216    break;
    71567217
    7157   case 397:
    7158 
    7159 /* Line 1806 of yacc.c  */
    7160 #line 1533 "parser.yy"
     7218  case 398:
     7219
     7220/* Line 1806 of yacc.c  */
     7221#line 1537 "parser.yy"
    71617222    { (yyval.en) = 0; }
    71627223    break;
    71637224
    7164   case 398:
    7165 
    7166 /* Line 1806 of yacc.c  */
    7167 #line 1535 "parser.yy"
     7225  case 399:
     7226
     7227/* Line 1806 of yacc.c  */
     7228#line 1539 "parser.yy"
    71687229    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71697230    break;
    71707231
    7171   case 399:
    7172 
    7173 /* Line 1806 of yacc.c  */
    7174 #line 1542 "parser.yy"
     7232  case 400:
     7233
     7234/* Line 1806 of yacc.c  */
     7235#line 1546 "parser.yy"
    71757236    { (yyval.decl) = 0; }
    71767237    break;
    71777238
    7178   case 403:
    7179 
    7180 /* Line 1806 of yacc.c  */
    7181 #line 1550 "parser.yy"
     7239  case 404:
     7240
     7241/* Line 1806 of yacc.c  */
     7242#line 1554 "parser.yy"
    71827243    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71837244    break;
    71847245
    7185   case 404:
    7186 
    7187 /* Line 1806 of yacc.c  */
    7188 #line 1552 "parser.yy"
     7246  case 405:
     7247
     7248/* Line 1806 of yacc.c  */
     7249#line 1556 "parser.yy"
    71897250    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71907251    break;
    71917252
    7192   case 405:
    7193 
    7194 /* Line 1806 of yacc.c  */
    7195 #line 1554 "parser.yy"
     7253  case 406:
     7254
     7255/* Line 1806 of yacc.c  */
     7256#line 1558 "parser.yy"
    71967257    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71977258    break;
    71987259
    7199   case 407:
    7200 
    7201 /* Line 1806 of yacc.c  */
    7202 #line 1562 "parser.yy"
     7260  case 408:
     7261
     7262/* Line 1806 of yacc.c  */
     7263#line 1566 "parser.yy"
    72037264    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72047265    break;
    72057266
    7206   case 408:
    7207 
    7208 /* Line 1806 of yacc.c  */
    7209 #line 1564 "parser.yy"
     7267  case 409:
     7268
     7269/* Line 1806 of yacc.c  */
     7270#line 1568 "parser.yy"
    72107271    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72117272    break;
    72127273
    7213   case 409:
    7214 
    7215 /* Line 1806 of yacc.c  */
    7216 #line 1566 "parser.yy"
     7274  case 410:
     7275
     7276/* Line 1806 of yacc.c  */
     7277#line 1570 "parser.yy"
    72177278    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    72187279    break;
    72197280
    7220   case 411:
    7221 
    7222 /* Line 1806 of yacc.c  */
    7223 #line 1572 "parser.yy"
     7281  case 412:
     7282
     7283/* Line 1806 of yacc.c  */
     7284#line 1576 "parser.yy"
    72247285    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72257286    break;
    72267287
    7227   case 412:
    7228 
    7229 /* Line 1806 of yacc.c  */
    7230 #line 1577 "parser.yy"
     7288  case 413:
     7289
     7290/* Line 1806 of yacc.c  */
     7291#line 1581 "parser.yy"
    72317292    { (yyval.decl) = 0; }
    72327293    break;
    72337294
    7234   case 415:
    7235 
    7236 /* Line 1806 of yacc.c  */
    7237 #line 1584 "parser.yy"
     7295  case 416:
     7296
     7297/* Line 1806 of yacc.c  */
     7298#line 1588 "parser.yy"
    72387299    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72397300    break;
    72407301
    7241   case 418:
    7242 
    7243 /* Line 1806 of yacc.c  */
    7244 #line 1591 "parser.yy"
     7302  case 419:
     7303
     7304/* Line 1806 of yacc.c  */
     7305#line 1595 "parser.yy"
    72457306    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72467307    break;
    72477308
    7248   case 419:
    7249 
    7250 /* Line 1806 of yacc.c  */
    7251 #line 1593 "parser.yy"
     7309  case 420:
     7310
     7311/* Line 1806 of yacc.c  */
     7312#line 1597 "parser.yy"
    72527313    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72537314    break;
    72547315
    7255   case 421:
    7256 
    7257 /* Line 1806 of yacc.c  */
    7258 #line 1602 "parser.yy"
     7316  case 422:
     7317
     7318/* Line 1806 of yacc.c  */
     7319#line 1606 "parser.yy"
    72597320    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72607321    break;
    72617322
    7262   case 422:
    7263 
    7264 /* Line 1806 of yacc.c  */
    7265 #line 1605 "parser.yy"
     7323  case 423:
     7324
     7325/* Line 1806 of yacc.c  */
     7326#line 1609 "parser.yy"
    72667327    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72677328    break;
    72687329
    7269   case 423:
    7270 
    7271 /* Line 1806 of yacc.c  */
    7272 #line 1607 "parser.yy"
     7330  case 424:
     7331
     7332/* Line 1806 of yacc.c  */
     7333#line 1611 "parser.yy"
    72737334    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    72747335    break;
    72757336
    7276   case 428:
    7277 
    7278 /* Line 1806 of yacc.c  */
    7279 #line 1617 "parser.yy"
     7337  case 429:
     7338
     7339/* Line 1806 of yacc.c  */
     7340#line 1621 "parser.yy"
    72807341    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    72817342    break;
    72827343
    7283   case 430:
    7284 
    7285 /* Line 1806 of yacc.c  */
    7286 #line 1623 "parser.yy"
     7344  case 431:
     7345
     7346/* Line 1806 of yacc.c  */
     7347#line 1627 "parser.yy"
    72877348    {
    72887349                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    72917352    break;
    72927353
    7293   case 431:
    7294 
    7295 /* Line 1806 of yacc.c  */
    7296 #line 1628 "parser.yy"
     7354  case 432:
     7355
     7356/* Line 1806 of yacc.c  */
     7357#line 1632 "parser.yy"
    72977358    {
    72987359                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73017362    break;
    73027363
    7303   case 433:
    7304 
    7305 /* Line 1806 of yacc.c  */
    7306 #line 1637 "parser.yy"
     7364  case 434:
     7365
     7366/* Line 1806 of yacc.c  */
     7367#line 1641 "parser.yy"
    73077368    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73087369    break;
    73097370
    7310   case 434:
    7311 
    7312 /* Line 1806 of yacc.c  */
    7313 #line 1646 "parser.yy"
     7371  case 435:
     7372
     7373/* Line 1806 of yacc.c  */
     7374#line 1650 "parser.yy"
    73147375    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    73157376    break;
    73167377
    7317   case 435:
    7318 
    7319 /* Line 1806 of yacc.c  */
    7320 #line 1648 "parser.yy"
     7378  case 436:
     7379
     7380/* Line 1806 of yacc.c  */
     7381#line 1652 "parser.yy"
    73217382    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    73227383    break;
    73237384
    7324   case 447:
    7325 
    7326 /* Line 1806 of yacc.c  */
    7327 #line 1673 "parser.yy"
     7385  case 448:
     7386
     7387/* Line 1806 of yacc.c  */
     7388#line 1677 "parser.yy"
    73287389    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73297390    break;
    73307391
    7331   case 451:
    7332 
    7333 /* Line 1806 of yacc.c  */
    7334 #line 1681 "parser.yy"
     7392  case 452:
     7393
     7394/* Line 1806 of yacc.c  */
     7395#line 1685 "parser.yy"
    73357396    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73367397    break;
    73377398
    7338   case 452:
    7339 
    7340 /* Line 1806 of yacc.c  */
    7341 #line 1686 "parser.yy"
     7399  case 453:
     7400
     7401/* Line 1806 of yacc.c  */
     7402#line 1690 "parser.yy"
    73427403    { (yyval.in) = 0; }
    73437404    break;
    73447405
    7345   case 453:
    7346 
    7347 /* Line 1806 of yacc.c  */
    7348 #line 1688 "parser.yy"
     7406  case 454:
     7407
     7408/* Line 1806 of yacc.c  */
     7409#line 1692 "parser.yy"
    73497410    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    73507411    break;
    73517412
    7352   case 454:
    7353 
    7354 /* Line 1806 of yacc.c  */
    7355 #line 1684 "parser.yy"
     7413  case 455:
     7414
     7415/* Line 1806 of yacc.c  */
     7416#line 1694 "parser.yy"
    73567417    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    73577418    break;
    73587419
    7359   case 455:
    7360 
    7361 /* Line 1806 of yacc.c  */
    7362 #line 1694 "parser.yy"
     7420  case 456:
     7421
     7422/* Line 1806 of yacc.c  */
     7423#line 1698 "parser.yy"
    73637424    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    73647425    break;
    73657426
    7366   case 456:
    7367 
    7368 /* Line 1806 of yacc.c  */
    7369 #line 1695 "parser.yy"
     7427  case 457:
     7428
     7429/* Line 1806 of yacc.c  */
     7430#line 1699 "parser.yy"
    73707431    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    73717432    break;
    73727433
    7373   case 457:
    7374 
    7375 /* Line 1806 of yacc.c  */
    7376 #line 1700 "parser.yy"
     7434  case 458:
     7435
     7436/* Line 1806 of yacc.c  */
     7437#line 1704 "parser.yy"
    73777438    { (yyval.in) = 0; }
    73787439    break;
    73797440
    7380   case 459:
    7381 
    7382 /* Line 1806 of yacc.c  */
    7383 #line 1702 "parser.yy"
     7441  case 460:
     7442
     7443/* Line 1806 of yacc.c  */
     7444#line 1706 "parser.yy"
    73847445    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    73857446    break;
    73867447
    7387   case 460:
    7388 
    7389 /* Line 1806 of yacc.c  */
    7390 #line 1703 "parser.yy"
     7448  case 461:
     7449
     7450/* Line 1806 of yacc.c  */
     7451#line 1707 "parser.yy"
    73917452    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    73927453    break;
    73937454
    7394   case 461:
    7395 
    7396 /* Line 1806 of yacc.c  */
    7397 #line 1705 "parser.yy"
     7455  case 462:
     7456
     7457/* Line 1806 of yacc.c  */
     7458#line 1709 "parser.yy"
    73987459    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    73997460    break;
    74007461
    7401   case 463:
    7402 
    7403 /* Line 1806 of yacc.c  */
    7404 #line 1721 "parser.yy"
     7462  case 464:
     7463
     7464/* Line 1806 of yacc.c  */
     7465#line 1725 "parser.yy"
    74057466    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    74067467    break;
    74077468
    7408   case 465:
    7409 
    7410 /* Line 1806 of yacc.c  */
    7411 #line 1727 "parser.yy"
     7469  case 466:
     7470
     7471/* Line 1806 of yacc.c  */
     7472#line 1731 "parser.yy"
    74127473    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    74137474    break;
    74147475
    7415   case 466:
    7416 
    7417 /* Line 1806 of yacc.c  */
    7418 #line 1735 "parser.yy"
     7476  case 467:
     7477
     7478/* Line 1806 of yacc.c  */
     7479#line 1739 "parser.yy"
    74197480    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
    74207481    break;
    74217482
    7422   case 467:
    7423 
    7424 /* Line 1806 of yacc.c  */
    7425 #line 1737 "parser.yy"
     7483  case 468:
     7484
     7485/* Line 1806 of yacc.c  */
     7486#line 1741 "parser.yy"
    74267487    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
    74277488    break;
    74287489
    7429   case 468:
    7430 
    7431 /* Line 1806 of yacc.c  */
    7432 #line 1740 "parser.yy"
     7490  case 469:
     7491
     7492/* Line 1806 of yacc.c  */
     7493#line 1744 "parser.yy"
    74337494    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    74347495    break;
    74357496
    7436   case 469:
    7437 
    7438 /* Line 1806 of yacc.c  */
    7439 #line 1742 "parser.yy"
     7497  case 470:
     7498
     7499/* Line 1806 of yacc.c  */
     7500#line 1746 "parser.yy"
    74407501    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    74417502    break;
    74427503
    7443   case 470:
    7444 
    7445 /* Line 1806 of yacc.c  */
    7446 #line 1744 "parser.yy"
     7504  case 471:
     7505
     7506/* Line 1806 of yacc.c  */
     7507#line 1748 "parser.yy"
    74477508    { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
    74487509    break;
    74497510
    7450   case 471:
    7451 
    7452 /* Line 1806 of yacc.c  */
    7453 #line 1746 "parser.yy"
     7511  case 472:
     7512
     7513/* Line 1806 of yacc.c  */
     7514#line 1750 "parser.yy"
    74547515    { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
    74557516    break;
    74567517
    7457   case 473:
    7458 
    7459 /* Line 1806 of yacc.c  */
    7460 #line 1770 "parser.yy"
     7518  case 474:
     7519
     7520/* Line 1806 of yacc.c  */
     7521#line 1774 "parser.yy"
    74617522    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74627523    break;
    74637524
    7464   case 474:
    7465 
    7466 /* Line 1806 of yacc.c  */
    7467 #line 1772 "parser.yy"
     7525  case 475:
     7526
     7527/* Line 1806 of yacc.c  */
     7528#line 1776 "parser.yy"
    74687529    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74697530    break;
    74707531
    7471   case 475:
    7472 
    7473 /* Line 1806 of yacc.c  */
    7474 #line 1774 "parser.yy"
     7532  case 476:
     7533
     7534/* Line 1806 of yacc.c  */
     7535#line 1778 "parser.yy"
    74757536    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    74767537    break;
    74777538
    7478   case 477:
    7479 
    7480 /* Line 1806 of yacc.c  */
    7481 #line 1780 "parser.yy"
     7539  case 478:
     7540
     7541/* Line 1806 of yacc.c  */
     7542#line 1784 "parser.yy"
    74827543    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74837544    break;
    74847545
    7485   case 478:
    7486 
    7487 /* Line 1806 of yacc.c  */
    7488 #line 1782 "parser.yy"
     7546  case 479:
     7547
     7548/* Line 1806 of yacc.c  */
     7549#line 1786 "parser.yy"
    74897550    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74907551    break;
    74917552
    7492   case 479:
    7493 
    7494 /* Line 1806 of yacc.c  */
    7495 #line 1787 "parser.yy"
     7553  case 480:
     7554
     7555/* Line 1806 of yacc.c  */
     7556#line 1791 "parser.yy"
    74967557    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    74977558    break;
    74987559
    7499   case 481:
    7500 
    7501 /* Line 1806 of yacc.c  */
    7502 #line 1793 "parser.yy"
     7560  case 482:
     7561
     7562/* Line 1806 of yacc.c  */
     7563#line 1797 "parser.yy"
    75037564    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    75047565    break;
    75057566
    7506   case 482:
    7507 
    7508 /* Line 1806 of yacc.c  */
    7509 #line 1798 "parser.yy"
     7567  case 483:
     7568
     7569/* Line 1806 of yacc.c  */
     7570#line 1802 "parser.yy"
    75107571    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    75117572    break;
    75127573
    7513   case 483:
    7514 
    7515 /* Line 1806 of yacc.c  */
    7516 #line 1800 "parser.yy"
     7574  case 484:
     7575
     7576/* Line 1806 of yacc.c  */
     7577#line 1804 "parser.yy"
    75177578    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75187579    break;
    75197580
    7520   case 485:
    7521 
    7522 /* Line 1806 of yacc.c  */
    7523 #line 1806 "parser.yy"
     7581  case 486:
     7582
     7583/* Line 1806 of yacc.c  */
     7584#line 1810 "parser.yy"
    75247585    { (yyval.tclass) = DeclarationNode::Type; }
    75257586    break;
    75267587
    7527   case 486:
    7528 
    7529 /* Line 1806 of yacc.c  */
    7530 #line 1808 "parser.yy"
     7588  case 487:
     7589
     7590/* Line 1806 of yacc.c  */
     7591#line 1812 "parser.yy"
    75317592    { (yyval.tclass) = DeclarationNode::Ftype; }
    75327593    break;
    75337594
    7534   case 487:
    7535 
    7536 /* Line 1806 of yacc.c  */
    7537 #line 1810 "parser.yy"
     7595  case 488:
     7596
     7597/* Line 1806 of yacc.c  */
     7598#line 1814 "parser.yy"
    75387599    { (yyval.tclass) = DeclarationNode::Dtype; }
    75397600    break;
    75407601
    7541   case 488:
    7542 
    7543 /* Line 1806 of yacc.c  */
    7544 #line 1815 "parser.yy"
     7602  case 489:
     7603
     7604/* Line 1806 of yacc.c  */
     7605#line 1819 "parser.yy"
    75457606    { (yyval.decl) = 0; }
    75467607    break;
    75477608
    7548   case 489:
    7549 
    7550 /* Line 1806 of yacc.c  */
    7551 #line 1817 "parser.yy"
     7609  case 490:
     7610
     7611/* Line 1806 of yacc.c  */
     7612#line 1821 "parser.yy"
    75527613    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    75537614    break;
    75547615
    7555   case 490:
    7556 
    7557 /* Line 1806 of yacc.c  */
    7558 #line 1822 "parser.yy"
     7616  case 491:
     7617
     7618/* Line 1806 of yacc.c  */
     7619#line 1826 "parser.yy"
    75597620    {
    7560                         typedefTable.openContext( *(yyvsp[(2) - (5)].tok) );
    7561                         (yyval.decl) = DeclarationNode::newContextUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
     7621                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     7622                        (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
    75627623                }
    75637624    break;
    75647625
    7565   case 491:
    7566 
    7567 /* Line 1806 of yacc.c  */
    7568 #line 1827 "parser.yy"
     7626  case 492:
     7627
     7628/* Line 1806 of yacc.c  */
     7629#line 1831 "parser.yy"
    75697630    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    75707631    break;
    75717632
    7572   case 492:
    7573 
    7574 /* Line 1806 of yacc.c  */
    7575 #line 1829 "parser.yy"
     7633  case 493:
     7634
     7635/* Line 1806 of yacc.c  */
     7636#line 1833 "parser.yy"
    75767637    { (yyval.decl) = 0; }
    75777638    break;
    75787639
    7579   case 493:
    7580 
    7581 /* Line 1806 of yacc.c  */
    7582 #line 1834 "parser.yy"
     7640  case 494:
     7641
     7642/* Line 1806 of yacc.c  */
     7643#line 1838 "parser.yy"
    75837644    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    75847645    break;
    75857646
    7586   case 495:
    7587 
    7588 /* Line 1806 of yacc.c  */
    7589 #line 1837 "parser.yy"
     7647  case 496:
     7648
     7649/* Line 1806 of yacc.c  */
     7650#line 1841 "parser.yy"
    75907651    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    75917652    break;
    75927653
    7593   case 496:
    7594 
    7595 /* Line 1806 of yacc.c  */
    7596 #line 1839 "parser.yy"
     7654  case 497:
     7655
     7656/* Line 1806 of yacc.c  */
     7657#line 1843 "parser.yy"
    75977658    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    75987659    break;
    75997660
    7600   case 497:
    7601 
    7602 /* Line 1806 of yacc.c  */
    7603 #line 1844 "parser.yy"
     7661  case 498:
     7662
     7663/* Line 1806 of yacc.c  */
     7664#line 1848 "parser.yy"
    76047665    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76057666    break;
    76067667
    7607   case 498:
    7608 
    7609 /* Line 1806 of yacc.c  */
    7610 #line 1846 "parser.yy"
     7668  case 499:
     7669
     7670/* Line 1806 of yacc.c  */
     7671#line 1850 "parser.yy"
    76117672    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76127673    break;
    76137674
    7614   case 499:
    7615 
    7616 /* Line 1806 of yacc.c  */
    7617 #line 1848 "parser.yy"
     7675  case 500:
     7676
     7677/* Line 1806 of yacc.c  */
     7678#line 1852 "parser.yy"
    76187679    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76197680    break;
    76207681
    7621   case 500:
    7622 
    7623 /* Line 1806 of yacc.c  */
    7624 #line 1853 "parser.yy"
     7682  case 501:
     7683
     7684/* Line 1806 of yacc.c  */
     7685#line 1857 "parser.yy"
    76257686    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76267687    break;
    76277688
    7628   case 501:
    7629 
    7630 /* Line 1806 of yacc.c  */
    7631 #line 1855 "parser.yy"
     7689  case 502:
     7690
     7691/* Line 1806 of yacc.c  */
     7692#line 1859 "parser.yy"
    76327693    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76337694    break;
    76347695
    7635   case 502:
    7636 
    7637 /* Line 1806 of yacc.c  */
    7638 #line 1860 "parser.yy"
     7696  case 503:
     7697
     7698/* Line 1806 of yacc.c  */
     7699#line 1864 "parser.yy"
    76397700    {
    76407701                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76437704    break;
    76447705
    7645   case 503:
    7646 
    7647 /* Line 1806 of yacc.c  */
    7648 #line 1865 "parser.yy"
     7706  case 504:
     7707
     7708/* Line 1806 of yacc.c  */
     7709#line 1869 "parser.yy"
    76497710    {
    76507711                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    76537714    break;
    76547715
    7655   case 504:
    7656 
    7657 /* Line 1806 of yacc.c  */
    7658 #line 1873 "parser.yy"
     7716  case 505:
     7717
     7718/* Line 1806 of yacc.c  */
     7719#line 1877 "parser.yy"
    76597720    {
    76607721                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
    7661                         (yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
     7722                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
    76627723                }
    76637724    break;
    76647725
    7665   case 505:
    7666 
    7667 /* Line 1806 of yacc.c  */
    7668 #line 1878 "parser.yy"
     7726  case 506:
     7727
     7728/* Line 1806 of yacc.c  */
     7729#line 1882 "parser.yy"
    76697730    {
    7670                         typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
     7731                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
    76717732                        typedefTable.enterScope();
    76727733                }
    76737734    break;
    76747735
    7675   case 506:
    7676 
    7677 /* Line 1806 of yacc.c  */
    7678 #line 1883 "parser.yy"
     7736  case 507:
     7737
     7738/* Line 1806 of yacc.c  */
     7739#line 1887 "parser.yy"
    76797740    {
    7680                         typedefTable.leaveContext();
     7741                        typedefTable.leaveTrait();
    76817742                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
    7682                         (yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
     7743                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
    76837744                }
    76847745    break;
    76857746
    7686   case 508:
    7687 
    7688 /* Line 1806 of yacc.c  */
    7689 #line 1893 "parser.yy"
     7747  case 509:
     7748
     7749/* Line 1806 of yacc.c  */
     7750#line 1897 "parser.yy"
    76907751    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    76917752    break;
    76927753
    7693   case 511:
    7694 
    7695 /* Line 1806 of yacc.c  */
    7696 #line 1903 "parser.yy"
     7754  case 512:
     7755
     7756/* Line 1806 of yacc.c  */
     7757#line 1907 "parser.yy"
    76977758    {
    76987759                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77017762    break;
    77027763
    7703   case 512:
    7704 
    7705 /* Line 1806 of yacc.c  */
    7706 #line 1908 "parser.yy"
     7764  case 513:
     7765
     7766/* Line 1806 of yacc.c  */
     7767#line 1912 "parser.yy"
    77077768    {
    77087769                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77117772    break;
    77127773
    7713   case 513:
    7714 
    7715 /* Line 1806 of yacc.c  */
    7716 #line 1913 "parser.yy"
     7774  case 514:
     7775
     7776/* Line 1806 of yacc.c  */
     7777#line 1917 "parser.yy"
    77177778    {
    77187779                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77217782    break;
    77227783
    7723   case 514:
    7724 
    7725 /* Line 1806 of yacc.c  */
    7726 #line 1921 "parser.yy"
     7784  case 515:
     7785
     7786/* Line 1806 of yacc.c  */
     7787#line 1925 "parser.yy"
    77277788    {
    77287789                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77317792    break;
    77327793
    7733   case 515:
    7734 
    7735 /* Line 1806 of yacc.c  */
    7736 #line 1926 "parser.yy"
     7794  case 516:
     7795
     7796/* Line 1806 of yacc.c  */
     7797#line 1930 "parser.yy"
    77377798    {
    77387799                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77417802    break;
    77427803
    7743   case 516:
    7744 
    7745 /* Line 1806 of yacc.c  */
    7746 #line 1936 "parser.yy"
     7804  case 517:
     7805
     7806/* Line 1806 of yacc.c  */
     7807#line 1940 "parser.yy"
    77477808    {}
    77487809    break;
    77497810
    7750   case 517:
    7751 
    7752 /* Line 1806 of yacc.c  */
    7753 #line 1938 "parser.yy"
     7811  case 518:
     7812
     7813/* Line 1806 of yacc.c  */
     7814#line 1942 "parser.yy"
    77547815    {
    77557816                        if ( theTree ) {
     
    77617822    break;
    77627823
    7763   case 519:
    7764 
    7765 /* Line 1806 of yacc.c  */
    7766 #line 1950 "parser.yy"
     7824  case 520:
     7825
     7826/* Line 1806 of yacc.c  */
     7827#line 1954 "parser.yy"
    77677828    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    77687829    break;
    77697830
    7770   case 520:
    7771 
    7772 /* Line 1806 of yacc.c  */
    7773 #line 1955 "parser.yy"
     7831  case 521:
     7832
     7833/* Line 1806 of yacc.c  */
     7834#line 1959 "parser.yy"
    77747835    { (yyval.decl) = 0; }
    77757836    break;
    77767837
    7777   case 524:
    7778 
    7779 /* Line 1806 of yacc.c  */
    7780 #line 1963 "parser.yy"
     7838  case 525:
     7839
     7840/* Line 1806 of yacc.c  */
     7841#line 1967 "parser.yy"
    77817842    {}
    77827843    break;
    77837844
    7784   case 525:
    7785 
    7786 /* Line 1806 of yacc.c  */
    7787 #line 1965 "parser.yy"
     7845  case 526:
     7846
     7847/* Line 1806 of yacc.c  */
     7848#line 1969 "parser.yy"
    77887849    {
    77897850                        linkageStack.push( linkage );
     
    77927853    break;
    77937854
    7794   case 526:
    7795 
    7796 /* Line 1806 of yacc.c  */
    7797 #line 1970 "parser.yy"
     7855  case 527:
     7856
     7857/* Line 1806 of yacc.c  */
     7858#line 1974 "parser.yy"
    77987859    {
    77997860                        linkage = linkageStack.top();
     
    78037864    break;
    78047865
    7805   case 527:
    7806 
    7807 /* Line 1806 of yacc.c  */
    7808 #line 1976 "parser.yy"
     7866  case 528:
     7867
     7868/* Line 1806 of yacc.c  */
     7869#line 1980 "parser.yy"
    78097870    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    78107871    break;
    78117872
    7812   case 529:
    7813 
    7814 /* Line 1806 of yacc.c  */
    7815 #line 1986 "parser.yy"
     7873  case 530:
     7874
     7875/* Line 1806 of yacc.c  */
     7876#line 1990 "parser.yy"
    78167877    {
    78177878                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78217882    break;
    78227883
    7823   case 530:
    7824 
    7825 /* Line 1806 of yacc.c  */
    7826 #line 1992 "parser.yy"
     7884  case 531:
     7885
     7886/* Line 1806 of yacc.c  */
     7887#line 1996 "parser.yy"
    78277888    {
    78287889                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78327893    break;
    78337894
    7834   case 531:
    7835 
    7836 /* Line 1806 of yacc.c  */
    7837 #line 2001 "parser.yy"
     7895  case 532:
     7896
     7897/* Line 1806 of yacc.c  */
     7898#line 2005 "parser.yy"
    78387899    {
    78397900                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78437904    break;
    78447905
    7845   case 532:
    7846 
    7847 /* Line 1806 of yacc.c  */
    7848 #line 2007 "parser.yy"
     7906  case 533:
     7907
     7908/* Line 1806 of yacc.c  */
     7909#line 2011 "parser.yy"
    78497910    {
    78507911                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78547915    break;
    78557916
    7856   case 533:
    7857 
    7858 /* Line 1806 of yacc.c  */
    7859 #line 2013 "parser.yy"
     7917  case 534:
     7918
     7919/* Line 1806 of yacc.c  */
     7920#line 2017 "parser.yy"
    78607921    {
    78617922                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78657926    break;
    78667927
    7867   case 534:
    7868 
    7869 /* Line 1806 of yacc.c  */
    7870 #line 2019 "parser.yy"
     7928  case 535:
     7929
     7930/* Line 1806 of yacc.c  */
     7931#line 2023 "parser.yy"
    78717932    {
    78727933                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78767937    break;
    78777938
    7878   case 535:
    7879 
    7880 /* Line 1806 of yacc.c  */
    7881 #line 2025 "parser.yy"
     7939  case 536:
     7940
     7941/* Line 1806 of yacc.c  */
     7942#line 2029 "parser.yy"
    78827943    {
    78837944                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78877948    break;
    78887949
    7889   case 536:
    7890 
    7891 /* Line 1806 of yacc.c  */
    7892 #line 2033 "parser.yy"
     7950  case 537:
     7951
     7952/* Line 1806 of yacc.c  */
     7953#line 2037 "parser.yy"
    78937954    {
    78947955                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78987959    break;
    78997960
    7900   case 537:
    7901 
    7902 /* Line 1806 of yacc.c  */
    7903 #line 2039 "parser.yy"
     7961  case 538:
     7962
     7963/* Line 1806 of yacc.c  */
     7964#line 2043 "parser.yy"
    79047965    {
    79057966                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79097970    break;
    79107971
    7911   case 538:
    7912 
    7913 /* Line 1806 of yacc.c  */
    7914 #line 2047 "parser.yy"
     7972  case 539:
     7973
     7974/* Line 1806 of yacc.c  */
     7975#line 2051 "parser.yy"
    79157976    {
    79167977                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79207981    break;
    79217982
    7922   case 539:
    7923 
    7924 /* Line 1806 of yacc.c  */
    7925 #line 2053 "parser.yy"
     7983  case 540:
     7984
     7985/* Line 1806 of yacc.c  */
     7986#line 2057 "parser.yy"
    79267987    {
    79277988                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79317992    break;
    79327993
    7933   case 543:
    7934 
    7935 /* Line 1806 of yacc.c  */
    7936 #line 2068 "parser.yy"
     7994  case 544:
     7995
     7996/* Line 1806 of yacc.c  */
     7997#line 2072 "parser.yy"
    79377998    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    79387999    break;
    79398000
    7940   case 546:
    7941 
    7942 /* Line 1806 of yacc.c  */
    7943 #line 2078 "parser.yy"
     8001  case 547:
     8002
     8003/* Line 1806 of yacc.c  */
     8004#line 2082 "parser.yy"
    79448005    { (yyval.decl) = 0; }
    79458006    break;
    79468007
    7947   case 549:
    7948 
    7949 /* Line 1806 of yacc.c  */
    7950 #line 2085 "parser.yy"
     8008  case 550:
     8009
     8010/* Line 1806 of yacc.c  */
     8011#line 2089 "parser.yy"
    79518012    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    79528013    break;
    79538014
    7954   case 550:
    7955 
    7956 /* Line 1806 of yacc.c  */
    7957 #line 2091 "parser.yy"
     8015  case 551:
     8016
     8017/* Line 1806 of yacc.c  */
     8018#line 2095 "parser.yy"
    79588019    { (yyval.decl) = 0; }
    79598020    break;
    79608021
    7961   case 556:
    7962 
    7963 /* Line 1806 of yacc.c  */
    7964 #line 2106 "parser.yy"
     8022  case 557:
     8023
     8024/* Line 1806 of yacc.c  */
     8025#line 2110 "parser.yy"
    79658026    {}
    79668027    break;
    79678028
    7968   case 557:
    7969 
    7970 /* Line 1806 of yacc.c  */
    7971 #line 2107 "parser.yy"
     8029  case 558:
     8030
     8031/* Line 1806 of yacc.c  */
     8032#line 2111 "parser.yy"
    79728033    {}
    79738034    break;
    79748035
    7975   case 558:
    7976 
    7977 /* Line 1806 of yacc.c  */
    7978 #line 2108 "parser.yy"
     8036  case 559:
     8037
     8038/* Line 1806 of yacc.c  */
     8039#line 2112 "parser.yy"
    79798040    {}
    79808041    break;
    79818042
    7982   case 559:
    7983 
    7984 /* Line 1806 of yacc.c  */
    7985 #line 2109 "parser.yy"
     8043  case 560:
     8044
     8045/* Line 1806 of yacc.c  */
     8046#line 2113 "parser.yy"
    79868047    {}
    79878048    break;
    79888049
    7989   case 560:
    7990 
    7991 /* Line 1806 of yacc.c  */
    7992 #line 2144 "parser.yy"
     8050  case 561:
     8051
     8052/* Line 1806 of yacc.c  */
     8053#line 2148 "parser.yy"
    79938054    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79948055    break;
    79958056
    7996   case 562:
    7997 
    7998 /* Line 1806 of yacc.c  */
    7999 #line 2147 "parser.yy"
     8057  case 563:
     8058
     8059/* Line 1806 of yacc.c  */
     8060#line 2151 "parser.yy"
    80008061    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80018062    break;
    80028063
    8003   case 563:
    8004 
    8005 /* Line 1806 of yacc.c  */
    8006 #line 2149 "parser.yy"
     8064  case 564:
     8065
     8066/* Line 1806 of yacc.c  */
     8067#line 2153 "parser.yy"
    80078068    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80088069    break;
    80098070
    8010   case 564:
    8011 
    8012 /* Line 1806 of yacc.c  */
    8013 #line 2154 "parser.yy"
     8071  case 565:
     8072
     8073/* Line 1806 of yacc.c  */
     8074#line 2158 "parser.yy"
    80148075    {
    80158076                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80188079    break;
    80198080
    8020   case 565:
    8021 
    8022 /* Line 1806 of yacc.c  */
    8023 #line 2159 "parser.yy"
     8081  case 566:
     8082
     8083/* Line 1806 of yacc.c  */
     8084#line 2163 "parser.yy"
    80248085    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80258086    break;
    80268087
    8027   case 566:
    8028 
    8029 /* Line 1806 of yacc.c  */
    8030 #line 2164 "parser.yy"
     8088  case 567:
     8089
     8090/* Line 1806 of yacc.c  */
     8091#line 2168 "parser.yy"
    80318092    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80328093    break;
    80338094
    8034   case 567:
    8035 
    8036 /* Line 1806 of yacc.c  */
    8037 #line 2166 "parser.yy"
     8095  case 568:
     8096
     8097/* Line 1806 of yacc.c  */
     8098#line 2170 "parser.yy"
    80388099    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80398100    break;
    80408101
    8041   case 568:
    8042 
    8043 /* Line 1806 of yacc.c  */
    8044 #line 2168 "parser.yy"
     8102  case 569:
     8103
     8104/* Line 1806 of yacc.c  */
     8105#line 2172 "parser.yy"
    80458106    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80468107    break;
    80478108
    8048   case 569:
    8049 
    8050 /* Line 1806 of yacc.c  */
    8051 #line 2173 "parser.yy"
     8109  case 570:
     8110
     8111/* Line 1806 of yacc.c  */
     8112#line 2177 "parser.yy"
    80528113    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    80538114    break;
    80548115
    8055   case 570:
    8056 
    8057 /* Line 1806 of yacc.c  */
    8058 #line 2175 "parser.yy"
     8116  case 571:
     8117
     8118/* Line 1806 of yacc.c  */
     8119#line 2179 "parser.yy"
    80598120    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80608121    break;
    80618122
    8062   case 571:
    8063 
    8064 /* Line 1806 of yacc.c  */
    8065 #line 2177 "parser.yy"
     8123  case 572:
     8124
     8125/* Line 1806 of yacc.c  */
     8126#line 2181 "parser.yy"
    80668127    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80678128    break;
    80688129
    8069   case 572:
    8070 
    8071 /* Line 1806 of yacc.c  */
    8072 #line 2179 "parser.yy"
     8130  case 573:
     8131
     8132/* Line 1806 of yacc.c  */
     8133#line 2183 "parser.yy"
    80738134    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80748135    break;
    80758136
    8076   case 573:
    8077 
    8078 /* Line 1806 of yacc.c  */
    8079 #line 2184 "parser.yy"
     8137  case 574:
     8138
     8139/* Line 1806 of yacc.c  */
     8140#line 2188 "parser.yy"
    80808141    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80818142    break;
    80828143
    8083   case 574:
    8084 
    8085 /* Line 1806 of yacc.c  */
    8086 #line 2186 "parser.yy"
     8144  case 575:
     8145
     8146/* Line 1806 of yacc.c  */
     8147#line 2190 "parser.yy"
    80878148    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80888149    break;
    80898150
    8090   case 575:
    8091 
    8092 /* Line 1806 of yacc.c  */
    8093 #line 2196 "parser.yy"
     8151  case 576:
     8152
     8153/* Line 1806 of yacc.c  */
     8154#line 2200 "parser.yy"
    80948155    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80958156    break;
    80968157
    8097   case 577:
    8098 
    8099 /* Line 1806 of yacc.c  */
    8100 #line 2199 "parser.yy"
     8158  case 578:
     8159
     8160/* Line 1806 of yacc.c  */
     8161#line 2203 "parser.yy"
    81018162    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81028163    break;
    81038164
    8104   case 578:
    8105 
    8106 /* Line 1806 of yacc.c  */
    8107 #line 2204 "parser.yy"
     8165  case 579:
     8166
     8167/* Line 1806 of yacc.c  */
     8168#line 2208 "parser.yy"
    81088169    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81098170    break;
    81108171
    8111   case 579:
    8112 
    8113 /* Line 1806 of yacc.c  */
    8114 #line 2206 "parser.yy"
     8172  case 580:
     8173
     8174/* Line 1806 of yacc.c  */
     8175#line 2210 "parser.yy"
    81158176    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81168177    break;
    81178178
    8118   case 580:
    8119 
    8120 /* Line 1806 of yacc.c  */
    8121 #line 2208 "parser.yy"
     8179  case 581:
     8180
     8181/* Line 1806 of yacc.c  */
     8182#line 2212 "parser.yy"
    81228183    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81238184    break;
    81248185
    8125   case 581:
    8126 
    8127 /* Line 1806 of yacc.c  */
    8128 #line 2213 "parser.yy"
     8186  case 582:
     8187
     8188/* Line 1806 of yacc.c  */
     8189#line 2217 "parser.yy"
    81298190    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81308191    break;
    81318192
    8132   case 582:
    8133 
    8134 /* Line 1806 of yacc.c  */
    8135 #line 2215 "parser.yy"
     8193  case 583:
     8194
     8195/* Line 1806 of yacc.c  */
     8196#line 2219 "parser.yy"
    81368197    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81378198    break;
    81388199
    8139   case 583:
    8140 
    8141 /* Line 1806 of yacc.c  */
    8142 #line 2217 "parser.yy"
     8200  case 584:
     8201
     8202/* Line 1806 of yacc.c  */
     8203#line 2221 "parser.yy"
    81438204    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81448205    break;
    81458206
    8146   case 584:
    8147 
    8148 /* Line 1806 of yacc.c  */
    8149 #line 2222 "parser.yy"
     8207  case 585:
     8208
     8209/* Line 1806 of yacc.c  */
     8210#line 2226 "parser.yy"
    81508211    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81518212    break;
    81528213
    8153   case 585:
    8154 
    8155 /* Line 1806 of yacc.c  */
    8156 #line 2224 "parser.yy"
     8214  case 586:
     8215
     8216/* Line 1806 of yacc.c  */
     8217#line 2228 "parser.yy"
    81578218    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81588219    break;
    81598220
    8160   case 586:
    8161 
    8162 /* Line 1806 of yacc.c  */
    8163 #line 2226 "parser.yy"
     8221  case 587:
     8222
     8223/* Line 1806 of yacc.c  */
     8224#line 2230 "parser.yy"
    81648225    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81658226    break;
    81668227
    8167   case 590:
    8168 
    8169 /* Line 1806 of yacc.c  */
    8170 #line 2241 "parser.yy"
     8228  case 591:
     8229
     8230/* Line 1806 of yacc.c  */
     8231#line 2245 "parser.yy"
    81718232    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    81728233    break;
    81738234
    8174   case 591:
    8175 
    8176 /* Line 1806 of yacc.c  */
    8177 #line 2243 "parser.yy"
     8235  case 592:
     8236
     8237/* Line 1806 of yacc.c  */
     8238#line 2247 "parser.yy"
    81788239    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    81798240    break;
    81808241
    8181   case 592:
    8182 
    8183 /* Line 1806 of yacc.c  */
    8184 #line 2245 "parser.yy"
     8242  case 593:
     8243
     8244/* Line 1806 of yacc.c  */
     8245#line 2249 "parser.yy"
    81858246    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81868247    break;
    81878248
    8188   case 593:
    8189 
    8190 /* Line 1806 of yacc.c  */
    8191 #line 2250 "parser.yy"
     8249  case 594:
     8250
     8251/* Line 1806 of yacc.c  */
     8252#line 2254 "parser.yy"
    81928253    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81938254    break;
    81948255
    8195   case 594:
    8196 
    8197 /* Line 1806 of yacc.c  */
    8198 #line 2252 "parser.yy"
     8256  case 595:
     8257
     8258/* Line 1806 of yacc.c  */
     8259#line 2256 "parser.yy"
    81998260    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82008261    break;
    82018262
    8202   case 595:
    8203 
    8204 /* Line 1806 of yacc.c  */
    8205 #line 2254 "parser.yy"
     8263  case 596:
     8264
     8265/* Line 1806 of yacc.c  */
     8266#line 2258 "parser.yy"
    82068267    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82078268    break;
    82088269
    8209   case 596:
    8210 
    8211 /* Line 1806 of yacc.c  */
    8212 #line 2259 "parser.yy"
     8270  case 597:
     8271
     8272/* Line 1806 of yacc.c  */
     8273#line 2263 "parser.yy"
    82138274    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82148275    break;
    82158276
    8216   case 597:
    8217 
    8218 /* Line 1806 of yacc.c  */
    8219 #line 2261 "parser.yy"
     8277  case 598:
     8278
     8279/* Line 1806 of yacc.c  */
     8280#line 2265 "parser.yy"
    82208281    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82218282    break;
    82228283
    8223   case 598:
    8224 
    8225 /* Line 1806 of yacc.c  */
    8226 #line 2263 "parser.yy"
     8284  case 599:
     8285
     8286/* Line 1806 of yacc.c  */
     8287#line 2267 "parser.yy"
    82278288    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82288289    break;
    82298290
    8230   case 599:
    8231 
    8232 /* Line 1806 of yacc.c  */
    8233 #line 2278 "parser.yy"
     8291  case 600:
     8292
     8293/* Line 1806 of yacc.c  */
     8294#line 2282 "parser.yy"
    82348295    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82358296    break;
    82368297
    8237   case 601:
    8238 
    8239 /* Line 1806 of yacc.c  */
    8240 #line 2281 "parser.yy"
     8298  case 602:
     8299
     8300/* Line 1806 of yacc.c  */
     8301#line 2285 "parser.yy"
    82418302    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82428303    break;
    82438304
    8244   case 602:
    8245 
    8246 /* Line 1806 of yacc.c  */
    8247 #line 2283 "parser.yy"
     8305  case 603:
     8306
     8307/* Line 1806 of yacc.c  */
     8308#line 2287 "parser.yy"
    82488309    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82498310    break;
    82508311
    8251   case 604:
    8252 
    8253 /* Line 1806 of yacc.c  */
    8254 #line 2289 "parser.yy"
     8312  case 605:
     8313
     8314/* Line 1806 of yacc.c  */
     8315#line 2293 "parser.yy"
    82558316    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82568317    break;
    82578318
    8258   case 605:
    8259 
    8260 /* Line 1806 of yacc.c  */
    8261 #line 2294 "parser.yy"
     8319  case 606:
     8320
     8321/* Line 1806 of yacc.c  */
     8322#line 2298 "parser.yy"
    82628323    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82638324    break;
    82648325
    8265   case 606:
    8266 
    8267 /* Line 1806 of yacc.c  */
    8268 #line 2296 "parser.yy"
     8326  case 607:
     8327
     8328/* Line 1806 of yacc.c  */
     8329#line 2300 "parser.yy"
    82698330    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82708331    break;
    82718332
    8272   case 607:
    8273 
    8274 /* Line 1806 of yacc.c  */
    8275 #line 2298 "parser.yy"
     8333  case 608:
     8334
     8335/* Line 1806 of yacc.c  */
     8336#line 2302 "parser.yy"
    82768337    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82778338    break;
    82788339
    8279   case 608:
    8280 
    8281 /* Line 1806 of yacc.c  */
    8282 #line 2303 "parser.yy"
     8340  case 609:
     8341
     8342/* Line 1806 of yacc.c  */
     8343#line 2307 "parser.yy"
    82838344    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    82848345    break;
    82858346
    8286   case 609:
    8287 
    8288 /* Line 1806 of yacc.c  */
    8289 #line 2305 "parser.yy"
     8347  case 610:
     8348
     8349/* Line 1806 of yacc.c  */
     8350#line 2309 "parser.yy"
    82908351    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82918352    break;
    82928353
    8293   case 610:
    8294 
    8295 /* Line 1806 of yacc.c  */
    8296 #line 2307 "parser.yy"
     8354  case 611:
     8355
     8356/* Line 1806 of yacc.c  */
     8357#line 2311 "parser.yy"
    82978358    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82988359    break;
    82998360
    8300   case 611:
    8301 
    8302 /* Line 1806 of yacc.c  */
    8303 #line 2309 "parser.yy"
     8361  case 612:
     8362
     8363/* Line 1806 of yacc.c  */
     8364#line 2313 "parser.yy"
    83048365    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83058366    break;
    83068367
    8307   case 612:
    8308 
    8309 /* Line 1806 of yacc.c  */
    8310 #line 2314 "parser.yy"
     8368  case 613:
     8369
     8370/* Line 1806 of yacc.c  */
     8371#line 2318 "parser.yy"
    83118372    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83128373    break;
    83138374
    8314   case 613:
    8315 
    8316 /* Line 1806 of yacc.c  */
    8317 #line 2316 "parser.yy"
     8375  case 614:
     8376
     8377/* Line 1806 of yacc.c  */
     8378#line 2320 "parser.yy"
    83188379    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83198380    break;
    83208381
    8321   case 614:
    8322 
    8323 /* Line 1806 of yacc.c  */
    8324 #line 2318 "parser.yy"
     8382  case 615:
     8383
     8384/* Line 1806 of yacc.c  */
     8385#line 2322 "parser.yy"
    83258386    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83268387    break;
    83278388
    8328   case 615:
    8329 
    8330 /* Line 1806 of yacc.c  */
    8331 #line 2328 "parser.yy"
     8389  case 616:
     8390
     8391/* Line 1806 of yacc.c  */
     8392#line 2332 "parser.yy"
    83328393    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83338394    break;
    83348395
    8335   case 617:
    8336 
    8337 /* Line 1806 of yacc.c  */
    8338 #line 2331 "parser.yy"
     8396  case 618:
     8397
     8398/* Line 1806 of yacc.c  */
     8399#line 2335 "parser.yy"
    83398400    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83408401    break;
    83418402
    8342   case 618:
    8343 
    8344 /* Line 1806 of yacc.c  */
    8345 #line 2333 "parser.yy"
     8403  case 619:
     8404
     8405/* Line 1806 of yacc.c  */
     8406#line 2337 "parser.yy"
    83468407    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83478408    break;
    83488409
    8349   case 619:
    8350 
    8351 /* Line 1806 of yacc.c  */
    8352 #line 2338 "parser.yy"
     8410  case 620:
     8411
     8412/* Line 1806 of yacc.c  */
     8413#line 2342 "parser.yy"
    83538414    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83548415    break;
    83558416
    8356   case 620:
    8357 
    8358 /* Line 1806 of yacc.c  */
    8359 #line 2340 "parser.yy"
     8417  case 621:
     8418
     8419/* Line 1806 of yacc.c  */
     8420#line 2344 "parser.yy"
    83608421    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83618422    break;
    83628423
    8363   case 621:
    8364 
    8365 /* Line 1806 of yacc.c  */
    8366 #line 2342 "parser.yy"
     8424  case 622:
     8425
     8426/* Line 1806 of yacc.c  */
     8427#line 2346 "parser.yy"
    83678428    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83688429    break;
    83698430
    8370   case 622:
    8371 
    8372 /* Line 1806 of yacc.c  */
    8373 #line 2347 "parser.yy"
     8431  case 623:
     8432
     8433/* Line 1806 of yacc.c  */
     8434#line 2351 "parser.yy"
    83748435    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83758436    break;
    83768437
    8377   case 623:
    8378 
    8379 /* Line 1806 of yacc.c  */
    8380 #line 2349 "parser.yy"
     8438  case 624:
     8439
     8440/* Line 1806 of yacc.c  */
     8441#line 2353 "parser.yy"
    83818442    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83828443    break;
    83838444
    8384   case 624:
    8385 
    8386 /* Line 1806 of yacc.c  */
    8387 #line 2351 "parser.yy"
     8445  case 625:
     8446
     8447/* Line 1806 of yacc.c  */
     8448#line 2355 "parser.yy"
    83888449    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83898450    break;
    83908451
    8391   case 625:
    8392 
    8393 /* Line 1806 of yacc.c  */
    8394 #line 2353 "parser.yy"
     8452  case 626:
     8453
     8454/* Line 1806 of yacc.c  */
     8455#line 2357 "parser.yy"
    83958456    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83968457    break;
    83978458
    8398   case 626:
    8399 
    8400 /* Line 1806 of yacc.c  */
    8401 #line 2358 "parser.yy"
     8459  case 627:
     8460
     8461/* Line 1806 of yacc.c  */
     8462#line 2362 "parser.yy"
    84028463    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84038464    break;
    84048465
    8405   case 627:
    8406 
    8407 /* Line 1806 of yacc.c  */
    8408 #line 2360 "parser.yy"
     8466  case 628:
     8467
     8468/* Line 1806 of yacc.c  */
     8469#line 2364 "parser.yy"
    84098470    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84108471    break;
    84118472
    8412   case 628:
    8413 
    8414 /* Line 1806 of yacc.c  */
    8415 #line 2362 "parser.yy"
     8473  case 629:
     8474
     8475/* Line 1806 of yacc.c  */
     8476#line 2366 "parser.yy"
    84168477    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84178478    break;
    84188479
    8419   case 629:
    8420 
    8421 /* Line 1806 of yacc.c  */
    8422 #line 2393 "parser.yy"
     8480  case 630:
     8481
     8482/* Line 1806 of yacc.c  */
     8483#line 2397 "parser.yy"
    84238484    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84248485    break;
    84258486
    8426   case 631:
    8427 
    8428 /* Line 1806 of yacc.c  */
    8429 #line 2396 "parser.yy"
     8487  case 632:
     8488
     8489/* Line 1806 of yacc.c  */
     8490#line 2400 "parser.yy"
    84308491    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84318492    break;
    84328493
    8433   case 632:
    8434 
    8435 /* Line 1806 of yacc.c  */
    8436 #line 2398 "parser.yy"
     8494  case 633:
     8495
     8496/* Line 1806 of yacc.c  */
     8497#line 2402 "parser.yy"
    84378498    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84388499    break;
    84398500
    8440   case 633:
    8441 
    8442 /* Line 1806 of yacc.c  */
    8443 #line 2403 "parser.yy"
     8501  case 634:
     8502
     8503/* Line 1806 of yacc.c  */
     8504#line 2407 "parser.yy"
    84448505    {
    84458506                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84488509    break;
    84498510
    8450   case 634:
    8451 
    8452 /* Line 1806 of yacc.c  */
    8453 #line 2408 "parser.yy"
     8511  case 635:
     8512
     8513/* Line 1806 of yacc.c  */
     8514#line 2412 "parser.yy"
    84548515    {
    84558516                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84588519    break;
    84598520
    8460   case 635:
    8461 
    8462 /* Line 1806 of yacc.c  */
    8463 #line 2416 "parser.yy"
     8521  case 636:
     8522
     8523/* Line 1806 of yacc.c  */
     8524#line 2420 "parser.yy"
    84648525    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84658526    break;
    84668527
    8467   case 636:
    8468 
    8469 /* Line 1806 of yacc.c  */
    8470 #line 2418 "parser.yy"
     8528  case 637:
     8529
     8530/* Line 1806 of yacc.c  */
     8531#line 2422 "parser.yy"
    84718532    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84728533    break;
    84738534
    8474   case 637:
    8475 
    8476 /* Line 1806 of yacc.c  */
    8477 #line 2420 "parser.yy"
     8535  case 638:
     8536
     8537/* Line 1806 of yacc.c  */
     8538#line 2424 "parser.yy"
    84788539    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84798540    break;
    84808541
    8481   case 638:
    8482 
    8483 /* Line 1806 of yacc.c  */
    8484 #line 2425 "parser.yy"
     8542  case 639:
     8543
     8544/* Line 1806 of yacc.c  */
     8545#line 2429 "parser.yy"
    84858546    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84868547    break;
    84878548
    8488   case 639:
    8489 
    8490 /* Line 1806 of yacc.c  */
    8491 #line 2427 "parser.yy"
     8549  case 640:
     8550
     8551/* Line 1806 of yacc.c  */
     8552#line 2431 "parser.yy"
    84928553    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84938554    break;
    84948555
    8495   case 640:
    8496 
    8497 /* Line 1806 of yacc.c  */
    8498 #line 2432 "parser.yy"
     8556  case 641:
     8557
     8558/* Line 1806 of yacc.c  */
     8559#line 2436 "parser.yy"
    84998560    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    85008561    break;
    85018562
    8502   case 641:
    8503 
    8504 /* Line 1806 of yacc.c  */
    8505 #line 2434 "parser.yy"
     8563  case 642:
     8564
     8565/* Line 1806 of yacc.c  */
     8566#line 2438 "parser.yy"
    85068567    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85078568    break;
    85088569
    8509   case 643:
    8510 
    8511 /* Line 1806 of yacc.c  */
    8512 #line 2449 "parser.yy"
     8570  case 644:
     8571
     8572/* Line 1806 of yacc.c  */
     8573#line 2453 "parser.yy"
    85138574    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85148575    break;
    85158576
    8516   case 644:
    8517 
    8518 /* Line 1806 of yacc.c  */
    8519 #line 2451 "parser.yy"
     8577  case 645:
     8578
     8579/* Line 1806 of yacc.c  */
     8580#line 2455 "parser.yy"
    85208581    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85218582    break;
    85228583
    8523   case 645:
    8524 
    8525 /* Line 1806 of yacc.c  */
    8526 #line 2456 "parser.yy"
     8584  case 646:
     8585
     8586/* Line 1806 of yacc.c  */
     8587#line 2460 "parser.yy"
    85278588    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85288589    break;
    85298590
    8530   case 646:
    8531 
    8532 /* Line 1806 of yacc.c  */
    8533 #line 2458 "parser.yy"
     8591  case 647:
     8592
     8593/* Line 1806 of yacc.c  */
     8594#line 2462 "parser.yy"
    85348595    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85358596    break;
    85368597
    8537   case 647:
    8538 
    8539 /* Line 1806 of yacc.c  */
    8540 #line 2460 "parser.yy"
     8598  case 648:
     8599
     8600/* Line 1806 of yacc.c  */
     8601#line 2464 "parser.yy"
    85418602    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85428603    break;
    85438604
    8544   case 648:
    8545 
    8546 /* Line 1806 of yacc.c  */
    8547 #line 2462 "parser.yy"
     8605  case 649:
     8606
     8607/* Line 1806 of yacc.c  */
     8608#line 2466 "parser.yy"
    85488609    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85498610    break;
    85508611
    8551   case 649:
    8552 
    8553 /* Line 1806 of yacc.c  */
    8554 #line 2464 "parser.yy"
     8612  case 650:
     8613
     8614/* Line 1806 of yacc.c  */
     8615#line 2468 "parser.yy"
    85558616    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85568617    break;
    85578618
    8558   case 651:
    8559 
    8560 /* Line 1806 of yacc.c  */
    8561 #line 2470 "parser.yy"
     8619  case 652:
     8620
     8621/* Line 1806 of yacc.c  */
     8622#line 2474 "parser.yy"
    85628623    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85638624    break;
    85648625
    8565   case 652:
    8566 
    8567 /* Line 1806 of yacc.c  */
    8568 #line 2472 "parser.yy"
     8626  case 653:
     8627
     8628/* Line 1806 of yacc.c  */
     8629#line 2476 "parser.yy"
    85698630    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85708631    break;
    85718632
    8572   case 653:
    8573 
    8574 /* Line 1806 of yacc.c  */
    8575 #line 2474 "parser.yy"
     8633  case 654:
     8634
     8635/* Line 1806 of yacc.c  */
     8636#line 2478 "parser.yy"
    85768637    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85778638    break;
    85788639
    8579   case 654:
    8580 
    8581 /* Line 1806 of yacc.c  */
    8582 #line 2479 "parser.yy"
     8640  case 655:
     8641
     8642/* Line 1806 of yacc.c  */
     8643#line 2483 "parser.yy"
    85838644    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    85848645    break;
    85858646
    8586   case 655:
    8587 
    8588 /* Line 1806 of yacc.c  */
    8589 #line 2481 "parser.yy"
     8647  case 656:
     8648
     8649/* Line 1806 of yacc.c  */
     8650#line 2485 "parser.yy"
    85908651    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85918652    break;
    85928653
    8593   case 656:
    8594 
    8595 /* Line 1806 of yacc.c  */
    8596 #line 2483 "parser.yy"
     8654  case 657:
     8655
     8656/* Line 1806 of yacc.c  */
     8657#line 2487 "parser.yy"
    85978658    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85988659    break;
    85998660
    8600   case 657:
    8601 
    8602 /* Line 1806 of yacc.c  */
    8603 #line 2489 "parser.yy"
     8661  case 658:
     8662
     8663/* Line 1806 of yacc.c  */
     8664#line 2493 "parser.yy"
    86048665    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86058666    break;
    86068667
    8607   case 658:
    8608 
    8609 /* Line 1806 of yacc.c  */
    8610 #line 2491 "parser.yy"
     8668  case 659:
     8669
     8670/* Line 1806 of yacc.c  */
     8671#line 2495 "parser.yy"
    86118672    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    86128673    break;
    86138674
    8614   case 660:
    8615 
    8616 /* Line 1806 of yacc.c  */
    8617 #line 2497 "parser.yy"
     8675  case 661:
     8676
     8677/* Line 1806 of yacc.c  */
     8678#line 2501 "parser.yy"
    86188679    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    86198680    break;
    86208681
    8621   case 661:
    8622 
    8623 /* Line 1806 of yacc.c  */
    8624 #line 2499 "parser.yy"
     8682  case 662:
     8683
     8684/* Line 1806 of yacc.c  */
     8685#line 2503 "parser.yy"
    86258686    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    86268687    break;
    86278688
    8628   case 662:
    8629 
    8630 /* Line 1806 of yacc.c  */
    8631 #line 2501 "parser.yy"
     8689  case 663:
     8690
     8691/* Line 1806 of yacc.c  */
     8692#line 2505 "parser.yy"
    86328693    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    86338694    break;
    86348695
    8635   case 663:
    8636 
    8637 /* Line 1806 of yacc.c  */
    8638 #line 2503 "parser.yy"
     8696  case 664:
     8697
     8698/* Line 1806 of yacc.c  */
     8699#line 2507 "parser.yy"
    86398700    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    86408701    break;
    86418702
    8642   case 665:
    8643 
    8644 /* Line 1806 of yacc.c  */
    8645 #line 2518 "parser.yy"
     8703  case 666:
     8704
     8705/* Line 1806 of yacc.c  */
     8706#line 2522 "parser.yy"
    86468707    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86478708    break;
    86488709
    8649   case 666:
    8650 
    8651 /* Line 1806 of yacc.c  */
    8652 #line 2520 "parser.yy"
     8710  case 667:
     8711
     8712/* Line 1806 of yacc.c  */
     8713#line 2524 "parser.yy"
    86538714    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86548715    break;
    86558716
    8656   case 667:
    8657 
    8658 /* Line 1806 of yacc.c  */
    8659 #line 2525 "parser.yy"
     8717  case 668:
     8718
     8719/* Line 1806 of yacc.c  */
     8720#line 2529 "parser.yy"
    86608721    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    86618722    break;
    86628723
    8663   case 668:
    8664 
    8665 /* Line 1806 of yacc.c  */
    8666 #line 2527 "parser.yy"
     8724  case 669:
     8725
     8726/* Line 1806 of yacc.c  */
     8727#line 2531 "parser.yy"
    86678728    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    86688729    break;
    86698730
    8670   case 669:
    8671 
    8672 /* Line 1806 of yacc.c  */
    8673 #line 2529 "parser.yy"
     8731  case 670:
     8732
     8733/* Line 1806 of yacc.c  */
     8734#line 2533 "parser.yy"
    86748735    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86758736    break;
    86768737
    8677   case 670:
    8678 
    8679 /* Line 1806 of yacc.c  */
    8680 #line 2531 "parser.yy"
     8738  case 671:
     8739
     8740/* Line 1806 of yacc.c  */
     8741#line 2535 "parser.yy"
    86818742    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86828743    break;
    86838744
    8684   case 671:
    8685 
    8686 /* Line 1806 of yacc.c  */
    8687 #line 2533 "parser.yy"
     8745  case 672:
     8746
     8747/* Line 1806 of yacc.c  */
     8748#line 2537 "parser.yy"
    86888749    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86898750    break;
    86908751
    8691   case 673:
    8692 
    8693 /* Line 1806 of yacc.c  */
    8694 #line 2539 "parser.yy"
     8752  case 674:
     8753
     8754/* Line 1806 of yacc.c  */
     8755#line 2543 "parser.yy"
    86958756    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86968757    break;
    86978758
    8698   case 674:
    8699 
    8700 /* Line 1806 of yacc.c  */
    8701 #line 2541 "parser.yy"
     8759  case 675:
     8760
     8761/* Line 1806 of yacc.c  */
     8762#line 2545 "parser.yy"
    87028763    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87038764    break;
    87048765
    8705   case 675:
    8706 
    8707 /* Line 1806 of yacc.c  */
    8708 #line 2543 "parser.yy"
     8766  case 676:
     8767
     8768/* Line 1806 of yacc.c  */
     8769#line 2547 "parser.yy"
    87098770    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87108771    break;
    87118772
    8712   case 676:
    8713 
    8714 /* Line 1806 of yacc.c  */
    8715 #line 2548 "parser.yy"
     8773  case 677:
     8774
     8775/* Line 1806 of yacc.c  */
     8776#line 2552 "parser.yy"
    87168777    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    87178778    break;
    87188779
    8719   case 677:
    8720 
    8721 /* Line 1806 of yacc.c  */
    8722 #line 2550 "parser.yy"
     8780  case 678:
     8781
     8782/* Line 1806 of yacc.c  */
     8783#line 2554 "parser.yy"
    87238784    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87248785    break;
    87258786
    8726   case 678:
    8727 
    8728 /* Line 1806 of yacc.c  */
    8729 #line 2552 "parser.yy"
     8787  case 679:
     8788
     8789/* Line 1806 of yacc.c  */
     8790#line 2556 "parser.yy"
    87308791    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87318792    break;
    87328793
    8733   case 680:
    8734 
    8735 /* Line 1806 of yacc.c  */
    8736 #line 2559 "parser.yy"
     8794  case 681:
     8795
     8796/* Line 1806 of yacc.c  */
     8797#line 2563 "parser.yy"
    87378798    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87388799    break;
    87398800
    8740   case 682:
    8741 
    8742 /* Line 1806 of yacc.c  */
    8743 #line 2570 "parser.yy"
     8801  case 683:
     8802
     8803/* Line 1806 of yacc.c  */
     8804#line 2574 "parser.yy"
    87448805    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    87458806    break;
    87468807
    8747   case 683:
    8748 
    8749 /* Line 1806 of yacc.c  */
    8750 #line 2573 "parser.yy"
     8808  case 684:
     8809
     8810/* Line 1806 of yacc.c  */
     8811#line 2577 "parser.yy"
    87518812    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    87528813    break;
    87538814
    8754   case 684:
    8755 
    8756 /* Line 1806 of yacc.c  */
    8757 #line 2575 "parser.yy"
     8815  case 685:
     8816
     8817/* Line 1806 of yacc.c  */
     8818#line 2579 "parser.yy"
    87588819    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    87598820    break;
    87608821
    8761   case 685:
    8762 
    8763 /* Line 1806 of yacc.c  */
    8764 #line 2578 "parser.yy"
     8822  case 686:
     8823
     8824/* Line 1806 of yacc.c  */
     8825#line 2582 "parser.yy"
    87658826    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    87668827    break;
    87678828
    8768   case 686:
    8769 
    8770 /* Line 1806 of yacc.c  */
    8771 #line 2580 "parser.yy"
     8829  case 687:
     8830
     8831/* Line 1806 of yacc.c  */
     8832#line 2584 "parser.yy"
    87728833    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    87738834    break;
    87748835
    8775   case 687:
    8776 
    8777 /* Line 1806 of yacc.c  */
    8778 #line 2582 "parser.yy"
     8836  case 688:
     8837
     8838/* Line 1806 of yacc.c  */
     8839#line 2586 "parser.yy"
    87798840    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    87808841    break;
    87818842
    8782   case 689:
    8783 
    8784 /* Line 1806 of yacc.c  */
    8785 #line 2596 "parser.yy"
     8843  case 690:
     8844
     8845/* Line 1806 of yacc.c  */
     8846#line 2600 "parser.yy"
    87868847    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87878848    break;
    87888849
    8789   case 690:
    8790 
    8791 /* Line 1806 of yacc.c  */
    8792 #line 2598 "parser.yy"
     8850  case 691:
     8851
     8852/* Line 1806 of yacc.c  */
     8853#line 2602 "parser.yy"
    87938854    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87948855    break;
    87958856
    8796   case 691:
    8797 
    8798 /* Line 1806 of yacc.c  */
    8799 #line 2603 "parser.yy"
     8857  case 692:
     8858
     8859/* Line 1806 of yacc.c  */
     8860#line 2607 "parser.yy"
    88008861    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    88018862    break;
    88028863
    8803   case 692:
    8804 
    8805 /* Line 1806 of yacc.c  */
    8806 #line 2605 "parser.yy"
     8864  case 693:
     8865
     8866/* Line 1806 of yacc.c  */
     8867#line 2609 "parser.yy"
    88078868    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    88088869    break;
    88098870
    8810   case 693:
    8811 
    8812 /* Line 1806 of yacc.c  */
    8813 #line 2607 "parser.yy"
     8871  case 694:
     8872
     8873/* Line 1806 of yacc.c  */
     8874#line 2611 "parser.yy"
    88148875    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    88158876    break;
    88168877
    8817   case 694:
    8818 
    8819 /* Line 1806 of yacc.c  */
    8820 #line 2609 "parser.yy"
     8878  case 695:
     8879
     8880/* Line 1806 of yacc.c  */
     8881#line 2613 "parser.yy"
    88218882    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    88228883    break;
    88238884
    8824   case 695:
    8825 
    8826 /* Line 1806 of yacc.c  */
    8827 #line 2611 "parser.yy"
     8885  case 696:
     8886
     8887/* Line 1806 of yacc.c  */
     8888#line 2615 "parser.yy"
    88288889    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88298890    break;
    88308891
    8831   case 697:
    8832 
    8833 /* Line 1806 of yacc.c  */
    8834 #line 2617 "parser.yy"
     8892  case 698:
     8893
     8894/* Line 1806 of yacc.c  */
     8895#line 2621 "parser.yy"
    88358896    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88368897    break;
    88378898
    8838   case 698:
    8839 
    8840 /* Line 1806 of yacc.c  */
    8841 #line 2619 "parser.yy"
     8899  case 699:
     8900
     8901/* Line 1806 of yacc.c  */
     8902#line 2623 "parser.yy"
    88428903    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88438904    break;
    88448905
    8845   case 699:
    8846 
    8847 /* Line 1806 of yacc.c  */
    8848 #line 2621 "parser.yy"
     8906  case 700:
     8907
     8908/* Line 1806 of yacc.c  */
     8909#line 2625 "parser.yy"
    88498910    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88508911    break;
    88518912
    8852   case 700:
    8853 
    8854 /* Line 1806 of yacc.c  */
    8855 #line 2626 "parser.yy"
     8913  case 701:
     8914
     8915/* Line 1806 of yacc.c  */
     8916#line 2630 "parser.yy"
    88568917    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    88578918    break;
    88588919
    8859   case 701:
    8860 
    8861 /* Line 1806 of yacc.c  */
    8862 #line 2628 "parser.yy"
     8920  case 702:
     8921
     8922/* Line 1806 of yacc.c  */
     8923#line 2632 "parser.yy"
    88638924    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88648925    break;
    88658926
    8866   case 704:
    8867 
    8868 /* Line 1806 of yacc.c  */
    8869 #line 2638 "parser.yy"
     8927  case 705:
     8928
     8929/* Line 1806 of yacc.c  */
     8930#line 2642 "parser.yy"
    88708931    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    88718932    break;
    88728933
    8873   case 707:
    8874 
    8875 /* Line 1806 of yacc.c  */
    8876 #line 2648 "parser.yy"
    8877     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8878     break;
    8879 
    88808934  case 708:
    8881 
    8882 /* Line 1806 of yacc.c  */
    8883 #line 2650 "parser.yy"
    8884     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    8885     break;
    8886 
    8887   case 709:
    88888935
    88898936/* Line 1806 of yacc.c  */
     
    88928939    break;
    88938940
    8894   case 710:
     8941  case 709:
    88958942
    88968943/* Line 1806 of yacc.c  */
     
    88998946    break;
    89008947
    8901   case 711:
     8948  case 710:
    89028949
    89038950/* Line 1806 of yacc.c  */
     
    89068953    break;
    89078954
    8908   case 712:
     8955  case 711:
    89098956
    89108957/* Line 1806 of yacc.c  */
     
    89138960    break;
    89148961
     8962  case 712:
     8963
     8964/* Line 1806 of yacc.c  */
     8965#line 2660 "parser.yy"
     8966    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8967    break;
     8968
    89158969  case 713:
    89168970
    89178971/* Line 1806 of yacc.c  */
    8918 #line 2665 "parser.yy"
     8972#line 2662 "parser.yy"
     8973    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8974    break;
     8975
     8976  case 714:
     8977
     8978/* Line 1806 of yacc.c  */
     8979#line 2669 "parser.yy"
    89198980    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89208981    break;
    89218982
    8922   case 714:
    8923 
    8924 /* Line 1806 of yacc.c  */
    8925 #line 2667 "parser.yy"
     8983  case 715:
     8984
     8985/* Line 1806 of yacc.c  */
     8986#line 2671 "parser.yy"
    89268987    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89278988    break;
    89288989
    8929   case 715:
    8930 
    8931 /* Line 1806 of yacc.c  */
    8932 #line 2669 "parser.yy"
     8990  case 716:
     8991
     8992/* Line 1806 of yacc.c  */
     8993#line 2673 "parser.yy"
    89338994    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89348995    break;
    89358996
    8936   case 716:
    8937 
    8938 /* Line 1806 of yacc.c  */
    8939 #line 2671 "parser.yy"
     8997  case 717:
     8998
     8999/* Line 1806 of yacc.c  */
     9000#line 2675 "parser.yy"
    89409001    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89419002    break;
    89429003
    8943   case 717:
    8944 
    8945 /* Line 1806 of yacc.c  */
    8946 #line 2673 "parser.yy"
    8947     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8948     break;
    8949 
    89509004  case 718:
    8951 
    8952 /* Line 1806 of yacc.c  */
    8953 #line 2675 "parser.yy"
    8954     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8955     break;
    8956 
    8957   case 719:
    89589005
    89599006/* Line 1806 of yacc.c  */
     
    89629009    break;
    89639010
     9011  case 719:
     9012
     9013/* Line 1806 of yacc.c  */
     9014#line 2679 "parser.yy"
     9015    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9016    break;
     9017
    89649018  case 720:
    89659019
    89669020/* Line 1806 of yacc.c  */
    8967 #line 2679 "parser.yy"
     9021#line 2681 "parser.yy"
     9022    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9023    break;
     9024
     9025  case 721:
     9026
     9027/* Line 1806 of yacc.c  */
     9028#line 2683 "parser.yy"
    89689029    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89699030    break;
    89709031
    8971   case 721:
    8972 
    8973 /* Line 1806 of yacc.c  */
    8974 #line 2681 "parser.yy"
     9032  case 722:
     9033
     9034/* Line 1806 of yacc.c  */
     9035#line 2685 "parser.yy"
    89759036    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89769037    break;
    89779038
    8978   case 722:
    8979 
    8980 /* Line 1806 of yacc.c  */
    8981 #line 2683 "parser.yy"
     9039  case 723:
     9040
     9041/* Line 1806 of yacc.c  */
     9042#line 2687 "parser.yy"
    89829043    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89839044    break;
    89849045
    8985   case 723:
    8986 
    8987 /* Line 1806 of yacc.c  */
    8988 #line 2688 "parser.yy"
     9046  case 724:
     9047
     9048/* Line 1806 of yacc.c  */
     9049#line 2692 "parser.yy"
    89899050    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    89909051    break;
    89919052
    8992   case 724:
    8993 
    8994 /* Line 1806 of yacc.c  */
    8995 #line 2690 "parser.yy"
     9053  case 725:
     9054
     9055/* Line 1806 of yacc.c  */
     9056#line 2694 "parser.yy"
    89969057    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    89979058    break;
    89989059
    8999   case 725:
    9000 
    9001 /* Line 1806 of yacc.c  */
    9002 #line 2695 "parser.yy"
     9060  case 726:
     9061
     9062/* Line 1806 of yacc.c  */
     9063#line 2699 "parser.yy"
    90039064    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    90049065    break;
    90059066
    9006   case 726:
    9007 
    9008 /* Line 1806 of yacc.c  */
    9009 #line 2697 "parser.yy"
     9067  case 727:
     9068
     9069/* Line 1806 of yacc.c  */
     9070#line 2701 "parser.yy"
    90109071    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    90119072    break;
    90129073
    9013   case 728:
    9014 
    9015 /* Line 1806 of yacc.c  */
    9016 #line 2724 "parser.yy"
     9074  case 729:
     9075
     9076/* Line 1806 of yacc.c  */
     9077#line 2728 "parser.yy"
    90179078    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    90189079    break;
    90199080
    9020   case 732:
    9021 
    9022 /* Line 1806 of yacc.c  */
    9023 #line 2735 "parser.yy"
    9024     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9025     break;
    9026 
    90279081  case 733:
    9028 
    9029 /* Line 1806 of yacc.c  */
    9030 #line 2737 "parser.yy"
    9031     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9032     break;
    9033 
    9034   case 734:
    90359082
    90369083/* Line 1806 of yacc.c  */
     
    90399086    break;
    90409087
    9041   case 735:
     9088  case 734:
    90429089
    90439090/* Line 1806 of yacc.c  */
     
    90469093    break;
    90479094
    9048   case 736:
     9095  case 735:
    90499096
    90509097/* Line 1806 of yacc.c  */
     
    90539100    break;
    90549101
    9055   case 737:
     9102  case 736:
    90569103
    90579104/* Line 1806 of yacc.c  */
     
    90609107    break;
    90619108
     9109  case 737:
     9110
     9111/* Line 1806 of yacc.c  */
     9112#line 2747 "parser.yy"
     9113    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9114    break;
     9115
    90629116  case 738:
    90639117
    90649118/* Line 1806 of yacc.c  */
    9065 #line 2752 "parser.yy"
     9119#line 2749 "parser.yy"
     9120    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9121    break;
     9122
     9123  case 739:
     9124
     9125/* Line 1806 of yacc.c  */
     9126#line 2756 "parser.yy"
    90669127    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90679128    break;
    90689129
    9069   case 739:
    9070 
    9071 /* Line 1806 of yacc.c  */
    9072 #line 2754 "parser.yy"
     9130  case 740:
     9131
     9132/* Line 1806 of yacc.c  */
     9133#line 2758 "parser.yy"
    90739134    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90749135    break;
    90759136
    9076   case 740:
    9077 
    9078 /* Line 1806 of yacc.c  */
    9079 #line 2756 "parser.yy"
     9137  case 741:
     9138
     9139/* Line 1806 of yacc.c  */
     9140#line 2760 "parser.yy"
    90809141    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90819142    break;
    90829143
    9083   case 741:
    9084 
    9085 /* Line 1806 of yacc.c  */
    9086 #line 2758 "parser.yy"
     9144  case 742:
     9145
     9146/* Line 1806 of yacc.c  */
     9147#line 2762 "parser.yy"
    90879148    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90889149    break;
    90899150
    9090   case 742:
    9091 
    9092 /* Line 1806 of yacc.c  */
    9093 #line 2760 "parser.yy"
     9151  case 743:
     9152
     9153/* Line 1806 of yacc.c  */
     9154#line 2764 "parser.yy"
    90949155    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90959156    break;
    90969157
    9097   case 743:
    9098 
    9099 /* Line 1806 of yacc.c  */
    9100 #line 2762 "parser.yy"
     9158  case 744:
     9159
     9160/* Line 1806 of yacc.c  */
     9161#line 2766 "parser.yy"
    91019162    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91029163    break;
    91039164
    9104   case 744:
    9105 
    9106 /* Line 1806 of yacc.c  */
    9107 #line 2767 "parser.yy"
     9165  case 745:
     9166
     9167/* Line 1806 of yacc.c  */
     9168#line 2771 "parser.yy"
    91089169    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91099170    break;
    91109171
    9111   case 745:
    9112 
    9113 /* Line 1806 of yacc.c  */
    9114 #line 2772 "parser.yy"
     9172  case 746:
     9173
     9174/* Line 1806 of yacc.c  */
     9175#line 2776 "parser.yy"
    91159176    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    91169177    break;
    91179178
    9118   case 746:
    9119 
    9120 /* Line 1806 of yacc.c  */
    9121 #line 2774 "parser.yy"
     9179  case 747:
     9180
     9181/* Line 1806 of yacc.c  */
     9182#line 2778 "parser.yy"
    91229183    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91239184    break;
    91249185
    9125   case 747:
    9126 
    9127 /* Line 1806 of yacc.c  */
    9128 #line 2776 "parser.yy"
     9186  case 748:
     9187
     9188/* Line 1806 of yacc.c  */
     9189#line 2780 "parser.yy"
    91299190    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91309191    break;
    91319192
    9132   case 750:
    9133 
    9134 /* Line 1806 of yacc.c  */
    9135 #line 2800 "parser.yy"
     9193  case 751:
     9194
     9195/* Line 1806 of yacc.c  */
     9196#line 2804 "parser.yy"
    91369197    { (yyval.en) = 0; }
    91379198    break;
    91389199
    9139   case 751:
    9140 
    9141 /* Line 1806 of yacc.c  */
    9142 #line 2802 "parser.yy"
     9200  case 752:
     9201
     9202/* Line 1806 of yacc.c  */
     9203#line 2806 "parser.yy"
    91439204    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    91449205    break;
     
    91479208
    91489209/* Line 1806 of yacc.c  */
    9149 #line 9150 "Parser/parser.cc"
     9210#line 9211 "Parser/parser.cc"
    91509211      default: break;
    91519212    }
     
    93789439
    93799440/* Line 2067 of yacc.c  */
    9380 #line 2805 "parser.yy"
     9441#line 2809 "parser.yy"
    93819442
    93829443// ----end of grammar----
  • src/Parser/parser.h

    r39786813 ra5a71d0  
    5959     SIGNED = 277,
    6060     UNSIGNED = 278,
    61      BOOL = 279,
    62      COMPLEX = 280,
    63      IMAGINARY = 281,
    64      TYPEOF = 282,
    65      LABEL = 283,
    66      ENUM = 284,
    67      STRUCT = 285,
    68      UNION = 286,
    69      TYPE = 287,
    70      FTYPE = 288,
    71      DTYPE = 289,
    72      CONTEXT = 290,
    73      SIZEOF = 291,
    74      OFFSETOF = 292,
    75      ATTRIBUTE = 293,
    76      EXTENSION = 294,
    77      IF = 295,
    78      ELSE = 296,
    79      SWITCH = 297,
    80      CASE = 298,
    81      DEFAULT = 299,
    82      DO = 300,
    83      WHILE = 301,
    84      FOR = 302,
    85      BREAK = 303,
    86      CONTINUE = 304,
    87      GOTO = 305,
    88      RETURN = 306,
    89      CHOOSE = 307,
    90      DISABLE = 308,
    91      ENABLE = 309,
    92      FALLTHRU = 310,
    93      TRY = 311,
    94      CATCH = 312,
    95      CATCHRESUME = 313,
    96      FINALLY = 314,
    97      THROW = 315,
    98      THROWRESUME = 316,
    99      AT = 317,
    100      ASM = 318,
    101      ALIGNAS = 319,
    102      ALIGNOF = 320,
    103      ATOMIC = 321,
    104      GENERIC = 322,
    105      NORETURN = 323,
    106      STATICASSERT = 324,
    107      THREADLOCAL = 325,
    108      IDENTIFIER = 326,
    109      QUOTED_IDENTIFIER = 327,
    110      TYPEDEFname = 328,
    111      TYPEGENname = 329,
    112      ATTR_IDENTIFIER = 330,
    113      ATTR_TYPEDEFname = 331,
    114      ATTR_TYPEGENname = 332,
    115      INTEGERconstant = 333,
    116      FLOATINGconstant = 334,
    117      CHARACTERconstant = 335,
    118      STRINGliteral = 336,
    119      ZERO = 337,
    120      ONE = 338,
    121      ARROW = 339,
    122      ICR = 340,
    123      DECR = 341,
    124      LS = 342,
    125      RS = 343,
    126      LE = 344,
    127      GE = 345,
    128      EQ = 346,
    129      NE = 347,
    130      ANDAND = 348,
    131      OROR = 349,
    132      ELLIPSIS = 350,
    133      MULTassign = 351,
    134      DIVassign = 352,
    135      MODassign = 353,
    136      PLUSassign = 354,
    137      MINUSassign = 355,
    138      LSassign = 356,
    139      RSassign = 357,
    140      ANDassign = 358,
    141      ERassign = 359,
    142      ORassign = 360,
    143      ATassign = 361,
    144      THEN = 362
     61     VALIST = 279,
     62     BOOL = 280,
     63     COMPLEX = 281,
     64     IMAGINARY = 282,
     65     TYPEOF = 283,
     66     LABEL = 284,
     67     ENUM = 285,
     68     STRUCT = 286,
     69     UNION = 287,
     70     OTYPE = 288,
     71     FTYPE = 289,
     72     DTYPE = 290,
     73     TRAIT = 291,
     74     SIZEOF = 292,
     75     OFFSETOF = 293,
     76     ATTRIBUTE = 294,
     77     EXTENSION = 295,
     78     IF = 296,
     79     ELSE = 297,
     80     SWITCH = 298,
     81     CASE = 299,
     82     DEFAULT = 300,
     83     DO = 301,
     84     WHILE = 302,
     85     FOR = 303,
     86     BREAK = 304,
     87     CONTINUE = 305,
     88     GOTO = 306,
     89     RETURN = 307,
     90     CHOOSE = 308,
     91     DISABLE = 309,
     92     ENABLE = 310,
     93     FALLTHRU = 311,
     94     TRY = 312,
     95     CATCH = 313,
     96     CATCHRESUME = 314,
     97     FINALLY = 315,
     98     THROW = 316,
     99     THROWRESUME = 317,
     100     AT = 318,
     101     ASM = 319,
     102     ALIGNAS = 320,
     103     ALIGNOF = 321,
     104     ATOMIC = 322,
     105     GENERIC = 323,
     106     NORETURN = 324,
     107     STATICASSERT = 325,
     108     THREADLOCAL = 326,
     109     IDENTIFIER = 327,
     110     QUOTED_IDENTIFIER = 328,
     111     TYPEDEFname = 329,
     112     TYPEGENname = 330,
     113     ATTR_IDENTIFIER = 331,
     114     ATTR_TYPEDEFname = 332,
     115     ATTR_TYPEGENname = 333,
     116     INTEGERconstant = 334,
     117     FLOATINGconstant = 335,
     118     CHARACTERconstant = 336,
     119     STRINGliteral = 337,
     120     ZERO = 338,
     121     ONE = 339,
     122     ARROW = 340,
     123     ICR = 341,
     124     DECR = 342,
     125     LS = 343,
     126     RS = 344,
     127     LE = 345,
     128     GE = 346,
     129     EQ = 347,
     130     NE = 348,
     131     ANDAND = 349,
     132     OROR = 350,
     133     ELLIPSIS = 351,
     134     MULTassign = 352,
     135     DIVassign = 353,
     136     MODassign = 354,
     137     PLUSassign = 355,
     138     MINUSassign = 356,
     139     LSassign = 357,
     140     RSassign = 358,
     141     ANDassign = 359,
     142     ERassign = 360,
     143     ORassign = 361,
     144     ATassign = 362,
     145     THEN = 363
    145146   };
    146147#endif
     
    167168#define SIGNED 277
    168169#define UNSIGNED 278
    169 #define BOOL 279
    170 #define COMPLEX 280
    171 #define IMAGINARY 281
    172 #define TYPEOF 282
    173 #define LABEL 283
    174 #define ENUM 284
    175 #define STRUCT 285
    176 #define UNION 286
    177 #define TYPE 287
    178 #define FTYPE 288
    179 #define DTYPE 289
    180 #define CONTEXT 290
    181 #define SIZEOF 291
    182 #define OFFSETOF 292
    183 #define ATTRIBUTE 293
    184 #define EXTENSION 294
    185 #define IF 295
    186 #define ELSE 296
    187 #define SWITCH 297
    188 #define CASE 298
    189 #define DEFAULT 299
    190 #define DO 300
    191 #define WHILE 301
    192 #define FOR 302
    193 #define BREAK 303
    194 #define CONTINUE 304
    195 #define GOTO 305
    196 #define RETURN 306
    197 #define CHOOSE 307
    198 #define DISABLE 308
    199 #define ENABLE 309
    200 #define FALLTHRU 310
    201 #define TRY 311
    202 #define CATCH 312
    203 #define CATCHRESUME 313
    204 #define FINALLY 314
    205 #define THROW 315
    206 #define THROWRESUME 316
    207 #define AT 317
    208 #define ASM 318
    209 #define ALIGNAS 319
    210 #define ALIGNOF 320
    211 #define ATOMIC 321
    212 #define GENERIC 322
    213 #define NORETURN 323
    214 #define STATICASSERT 324
    215 #define THREADLOCAL 325
    216 #define IDENTIFIER 326
    217 #define QUOTED_IDENTIFIER 327
    218 #define TYPEDEFname 328
    219 #define TYPEGENname 329
    220 #define ATTR_IDENTIFIER 330
    221 #define ATTR_TYPEDEFname 331
    222 #define ATTR_TYPEGENname 332
    223 #define INTEGERconstant 333
    224 #define FLOATINGconstant 334
    225 #define CHARACTERconstant 335
    226 #define STRINGliteral 336
    227 #define ZERO 337
    228 #define ONE 338
    229 #define ARROW 339
    230 #define ICR 340
    231 #define DECR 341
    232 #define LS 342
    233 #define RS 343
    234 #define LE 344
    235 #define GE 345
    236 #define EQ 346
    237 #define NE 347
    238 #define ANDAND 348
    239 #define OROR 349
    240 #define ELLIPSIS 350
    241 #define MULTassign 351
    242 #define DIVassign 352
    243 #define MODassign 353
    244 #define PLUSassign 354
    245 #define MINUSassign 355
    246 #define LSassign 356
    247 #define RSassign 357
    248 #define ANDassign 358
    249 #define ERassign 359
    250 #define ORassign 360
    251 #define ATassign 361
    252 #define THEN 362
     170#define VALIST 279
     171#define BOOL 280
     172#define COMPLEX 281
     173#define IMAGINARY 282
     174#define TYPEOF 283
     175#define LABEL 284
     176#define ENUM 285
     177#define STRUCT 286
     178#define UNION 287
     179#define OTYPE 288
     180#define FTYPE 289
     181#define DTYPE 290
     182#define TRAIT 291
     183#define SIZEOF 292
     184#define OFFSETOF 293
     185#define ATTRIBUTE 294
     186#define EXTENSION 295
     187#define IF 296
     188#define ELSE 297
     189#define SWITCH 298
     190#define CASE 299
     191#define DEFAULT 300
     192#define DO 301
     193#define WHILE 302
     194#define FOR 303
     195#define BREAK 304
     196#define CONTINUE 305
     197#define GOTO 306
     198#define RETURN 307
     199#define CHOOSE 308
     200#define DISABLE 309
     201#define ENABLE 310
     202#define FALLTHRU 311
     203#define TRY 312
     204#define CATCH 313
     205#define CATCHRESUME 314
     206#define FINALLY 315
     207#define THROW 316
     208#define THROWRESUME 317
     209#define AT 318
     210#define ASM 319
     211#define ALIGNAS 320
     212#define ALIGNOF 321
     213#define ATOMIC 322
     214#define GENERIC 323
     215#define NORETURN 324
     216#define STATICASSERT 325
     217#define THREADLOCAL 326
     218#define IDENTIFIER 327
     219#define QUOTED_IDENTIFIER 328
     220#define TYPEDEFname 329
     221#define TYPEGENname 330
     222#define ATTR_IDENTIFIER 331
     223#define ATTR_TYPEDEFname 332
     224#define ATTR_TYPEGENname 333
     225#define INTEGERconstant 334
     226#define FLOATINGconstant 335
     227#define CHARACTERconstant 336
     228#define STRINGliteral 337
     229#define ZERO 338
     230#define ONE 339
     231#define ARROW 340
     232#define ICR 341
     233#define DECR 342
     234#define LS 343
     235#define RS 344
     236#define LE 345
     237#define GE 346
     238#define EQ 347
     239#define NE 348
     240#define ANDAND 349
     241#define OROR 350
     242#define ELLIPSIS 351
     243#define MULTassign 352
     244#define DIVassign 353
     245#define MODassign 354
     246#define PLUSassign 355
     247#define MINUSassign 356
     248#define LSassign 357
     249#define RSassign 358
     250#define ANDassign 359
     251#define ERassign 360
     252#define ORassign 361
     253#define ATassign 362
     254#define THEN 363
    253255
    254256
     
    260262
    261263/* Line 2068 of yacc.c  */
    262 #line 110 "parser.yy"
     264#line 112 "parser.yy"
    263265
    264266        Token tok;
     
    277279
    278280/* Line 2068 of yacc.c  */
    279 #line 280 "Parser/parser.h"
     281#line 282 "Parser/parser.h"
    280282} YYSTYPE;
    281283# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    r39786813 ra5a71d0  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Feb  1 18:22:42 2016
    13 // Update Count     : 1483
     12// Last Modified On : Thu Mar 24 16:16:16 2016
     13// Update Count     : 1498
    1414//
    1515
     
    5151#include <cstdio>
    5252#include <stack>
     53#include "lex.h"
     54#include "parser.h"
     55#include "ParseNode.h"
    5356#include "TypedefTable.h"
    54 #include "lex.h"
    55 #include "ParseNode.h"
    5657#include "TypeData.h"
    5758#include "LinkageSpec.h"
     
    7475%token FORALL LVALUE                                                                    // CFA
    7576%token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED
     77%token VALIST                                                                                   // GCC
    7678%token BOOL COMPLEX IMAGINARY                                                   // C99
    7779%token TYPEOF LABEL                                                                             // GCC
    7880%token ENUM STRUCT UNION
    79 %token TYPE FTYPE DTYPE CONTEXT                                                 // CFA
     81%token OTYPE FTYPE DTYPE TRAIT                                          // CFA
    8082%token SIZEOF OFFSETOF
    8183%token ATTRIBUTE EXTENSION                                                              // GCC
     
    171173%type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type_name indirect_type_name
    172174
    173 %type<decl> context_declaration context_declaration_list context_declaring_list context_specifier
     175%type<decl> trait_declaration trait_declaration_list trait_declaring_list trait_specifier
    174176
    175177%type<decl> declaration declaration_list declaration_list_opt declaration_qualifier_list
     
    197199%type<decl> new_array_parameter_1st_dimension
    198200
    199 %type<decl> new_context_declaring_list new_declaration new_field_declaring_list
     201%type<decl> new_trait_declaring_list new_declaration new_field_declaring_list
    200202%type<decl> new_function_declaration new_function_return new_function_specifier
    201203
     
    448450                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( $3 )); }
    449451        | OFFSETOF '(' type_name_no_function ',' no_attr_identifier ')'
    450         { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( $3 ), new VarRefNode( $5 )); }
     452                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( $3 ), new VarRefNode( $5 )); }
    451453        | ATTR_IDENTIFIER
    452454                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 )); }
     
    10201022        | new_function_declaration pop ';'
    10211023        | type_declaring_list pop ';'
    1022         | context_specifier pop ';'
     1024        | trait_specifier pop ';'
    10231025        ;
    10241026
     
    10271029                {
    10281030                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1029                         $$ = $1;
     1031                        $$ = $1->addInitializer( $2 );
    10301032                }
    10311033        | declaration_qualifier_list new_variable_specifier initializer_opt
     
    10341036                {
    10351037                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1036                         $$ = $2->addQualifiers( $1 );
     1038                        $$ = $2->addQualifiers( $1 )->addInitializer( $3 );;
    10371039                }
    10381040        | new_variable_declaration pop ',' push identifier_or_type_name initializer_opt
    10391041                {
    10401042                        typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
    1041                         $$ = $1->appendList( $1->cloneType( $5 ) );
     1043                        $$ = $1->appendList( $1->cloneType( $5 )->addInitializer( $6 ) );
    10421044                }
    10431045        ;
     
    13451347        | IMAGINARY                                                                                     // C99
    13461348                { $$ = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     1349        | VALIST                                                                                        // GCC, __builtin_va_list
     1350                { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    13471351        ;
    13481352
     
    18031807
    18041808type_class:                                                                                             // CFA
    1805         TYPE
     1809        OTYPE
    18061810                { $$ = DeclarationNode::Type; }
    18071811        | DTYPE
     
    18211825        '|' no_attr_identifier_or_type_name '(' type_name_list ')'
    18221826                {
    1823                         typedefTable.openContext( *$2 );
    1824                         $$ = DeclarationNode::newContextUse( $2, $4 );
    1825                 }
    1826         | '|' '{' push context_declaration_list '}'
     1827                        typedefTable.openTrait( *$2 );
     1828                        $$ = DeclarationNode::newTraitUse( $2, $4 );
     1829                }
     1830        | '|' '{' push trait_declaration_list '}'
    18271831                { $$ = $4; }
    1828         | '|' '(' push type_parameter_list pop ')' '{' push context_declaration_list '}' '(' type_name_list ')'
     1832        | '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_name_list ')'
    18291833                { $$ = 0; }
    18301834        ;
     
    18411845
    18421846type_declaring_list:                                                                    // CFA
    1843         TYPE type_declarator
    1844                 { $$ = $2; }
    1845         | storage_class_list TYPE type_declarator
     1847        OTYPE type_declarator
     1848                { $$ = $2; }
     1849        | storage_class_list OTYPE type_declarator
    18461850                { $$ = $3->addQualifiers( $1 ); }
    18471851        | type_declaring_list ',' type_declarator
     
    18691873        ;
    18701874
    1871 context_specifier:                                                                              // CFA
    1872         CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}'
     1875trait_specifier:                                                                                // CFA
     1876        TRAIT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}'
    18731877                {
    18741878                        typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
    1875                         $$ = DeclarationNode::newContext( $2, $5, 0 );
    1876                 }
    1877         | CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{'
    1878                 {
    1879                         typedefTable.enterContext( *$2 );
     1879                        $$ = DeclarationNode::newTrait( $2, $5, 0 );
     1880                }
     1881        | TRAIT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{'
     1882                {
     1883                        typedefTable.enterTrait( *$2 );
    18801884                        typedefTable.enterScope();
    18811885                }
    1882           context_declaration_list '}'
    1883                 {
    1884                         typedefTable.leaveContext();
     1886          trait_declaration_list '}'
     1887                {
     1888                        typedefTable.leaveTrait();
    18851889                        typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
    1886                         $$ = DeclarationNode::newContext( $2, $5, $10 );
    1887                 }
    1888         ;
    1889 
    1890 context_declaration_list:                                                               // CFA
    1891         context_declaration
    1892         | context_declaration_list push context_declaration
     1890                        $$ = DeclarationNode::newTrait( $2, $5, $10 );
     1891                }
     1892        ;
     1893
     1894trait_declaration_list:                                                         // CFA
     1895        trait_declaration
     1896        | trait_declaration_list push trait_declaration
    18931897                { $$ = $1->appendList( $3 ); }
    18941898        ;
    18951899
    1896 context_declaration:                                                                    // CFA
    1897         new_context_declaring_list pop ';'
    1898         | context_declaring_list pop ';'
    1899         ;
    1900 
    1901 new_context_declaring_list:                                                             // CFA
     1900trait_declaration:                                                                      // CFA
     1901        new_trait_declaring_list pop ';'
     1902        | trait_declaring_list pop ';'
     1903        ;
     1904
     1905new_trait_declaring_list:                                                               // CFA
    19021906        new_variable_specifier
    19031907                {
     
    19101914                        $$ = $1;
    19111915                }
    1912         | new_context_declaring_list pop ',' push identifier_or_type_name
     1916        | new_trait_declaring_list pop ',' push identifier_or_type_name
    19131917                {
    19141918                        typedefTable.addToEnclosingScope2( *$5, TypedefTable::ID );
     
    19171921        ;
    19181922
    1919 context_declaring_list:                                                                 // CFA
     1923trait_declaring_list:                                                                   // CFA
    19201924        type_specifier declarator
    19211925                {
     
    19231927                        $$ = $2->addType( $1 );
    19241928                }
    1925         | context_declaring_list pop ',' push declarator
     1929        | trait_declaring_list pop ',' push declarator
    19261930                {
    19271931                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
Note: See TracChangeset for help on using the changeset viewer.