Changeset 4a7d895 for src/Parser


Ignore:
Timestamp:
Aug 20, 2016, 5:33:07 AM (9 years ago)
Author:
Aaron Moss <bruceiv@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, 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:
80722d0
Parents:
7b1bfc5 (diff), 2037f82 (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 'master' of plg2.cs.uwaterloo.ca:software/cfa/cfa-cc

Location:
src/Parser
Files:
2 deleted
18 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 14:30:25 2016
    13 // Update Count     : 172
     12// Last Modified On : Thu Aug 18 23:48:23 2016
     13// Update Count     : 182
    1414//
    1515
     
    2525#include "SynTree/Expression.h"
    2626
    27 #include "Parser.h"
    2827#include "TypedefTable.h"
    2928extern TypedefTable typedefTable;
     
    4241UniqueName DeclarationNode::anonymous( "__anonymous" );
    4342
    44 extern LinkageSpec::Type linkage;                                               // defined in parser.yy
     43extern LinkageSpec::Spec linkage;                                               // defined in parser.yy
    4544
    4645DeclarationNode *DeclarationNode::clone() const {
     
    4847        newnode->type = maybeClone( type );
    4948        newnode->name = name;
    50         newnode->storageClasses = storageClasses;
    51 //PAB   newnode->bitfieldWidth = maybeClone( bitfieldWidth );
     49        newnode->storageClass = storageClass;
     50        newnode->isInline = isInline;
     51        newnode->isNoreturn = isNoreturn;
    5252        newnode->bitfieldWidth = bitfieldWidth;
    5353        newnode->hasEllipsis = hasEllipsis;
    5454        newnode->initializer = initializer;
    55         newnode->next = maybeClone( next );
     55        newnode->set_next( maybeClone( get_next() ) );
    5656        newnode->linkage = linkage;
    5757        return newnode;
    5858} // DeclarationNode::clone
    5959
    60 DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) {
     60DeclarationNode::DeclarationNode()
     61        : type( 0 )
     62        , storageClass( NoStorageClass )
     63        , isInline( false )
     64        , isNoreturn( false )
     65        , bitfieldWidth( 0 )
     66        , initializer( 0 )
     67        , hasEllipsis( false )
     68        , linkage( ::linkage )
     69        , extension( false )
     70        , error() {
    6171}
    6272
     
    8393        } // if
    8494
    85         printEnums( storageClasses.begin(), storageClasses.end(), DeclarationNode::storageName, os );
     95        if(storageClass != NoStorageClass) os << DeclarationNode::storageName[storageClass] << ' ';
     96        if(isInline) os << DeclarationNode::storageName[Inline] << ' ';
     97        if(isNoreturn) os << DeclarationNode::storageName[Noreturn] << ' ';
    8698        if ( type ) {
    8799                type->print( os, indent );
     
    144156DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
    145157        DeclarationNode *newnode = new DeclarationNode;
    146         newnode->storageClasses.push_back( sc );
     158        switch (sc) {
     159                case Inline: newnode->isInline = true; break;
     160                case Noreturn: newnode->isNoreturn = true; break;
     161                default: newnode->storageClass = sc; break;
     162        }
    147163        return newnode;
    148164} // DeclarationNode::newStorageClass
     
    284300        newnode->type->array->dimension = size;
    285301        newnode->type->array->isStatic = isStatic;
    286         if ( newnode->type->array->dimension == 0 || dynamic_cast<ConstantExpr *>( newnode->type->array->dimension->build() ) ) {
     302        if ( newnode->type->array->dimension == 0 || newnode->type->array->dimension->isExpressionType<ConstantExpr *>() ) {
    287303                newnode->type->array->isVarLen = false;
    288304        } else {
     
    360376DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) {
    361377        if ( q ) {
    362                 storageClasses.splice( storageClasses.end(), q->storageClasses );
     378                copyStorageClasses(q);
    363379                if ( q->type ) {
    364380                        if ( ! type ) {
     
    387403
    388404DeclarationNode *DeclarationNode::copyStorageClasses( DeclarationNode *q ) {
    389         storageClasses = q->storageClasses;
     405        isInline = isInline || q->isInline;
     406        isNoreturn = isNoreturn || q->isNoreturn;
     407        if(storageClass == NoStorageClass) {
     408                storageClass = q->storageClass;
     409        }
     410        else if (q->storageClass != NoStorageClass) {
     411                q->error = "invalid combination of storage classes in declaration of ";
     412        }
     413        if(error.empty()) error = q->error;
    390414        return this;
    391415}
     
    447471DeclarationNode *DeclarationNode::addType( DeclarationNode *o ) {
    448472        if ( o ) {
    449                 storageClasses.splice( storageClasses.end(), o->storageClasses );
     473                copyStorageClasses( o );
    450474                if ( o->type ) {
    451475                        if ( ! type ) {
     
    694718        } // if
    695719        newnode->type->forall = maybeClone( type->forall );
    696         newnode->storageClasses = storageClasses;
     720        newnode->copyStorageClasses( this );
    697721        newnode->name = assign_strptr( newName );
    698722        return newnode;
     
    701725DeclarationNode *DeclarationNode::cloneBaseType( DeclarationNode *o ) {
    702726        if ( o ) {
    703                 o->storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end() );
     727                o->copyStorageClasses( this );
    704728                if ( type ) {
    705729                        TypeData *srcType = type;
     
    734758        DeclarationNode *newnode = new DeclarationNode;
    735759        newnode->type = maybeClone( type );
    736         newnode->storageClasses = storageClasses;
     760        newnode->copyStorageClasses( this );
    737761        newnode->name = assign_strptr( newName );
    738762        return newnode;
     
    741765DeclarationNode *DeclarationNode::cloneType( DeclarationNode *o ) {
    742766        if ( o ) {
    743                 o->storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end() );
     767                o->copyStorageClasses( this );
    744768                if ( type ) {
    745769                        TypeData *newType = type->clone();
     
    752776                } // if
    753777        } // if
     778        delete o;
    754779        return o;
    755 }
    756 
    757 DeclarationNode *DeclarationNode::appendList( DeclarationNode *node ) {
    758         if ( node != 0 ) {
    759                 set_last( node );
    760         } // if
    761         return this;
    762780}
    763781
     
    776794void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) {
    777795        SemanticError errors;
    778         std::back_insert_iterator< std::list< Declaration *> > out( outputList );
     796        std::back_insert_iterator< std::list< Declaration * > > out( outputList );
    779797        const DeclarationNode *cur = firstNode;
    780798        while ( cur ) {
     
    794812                        errors.append( e );
    795813                } // try
    796                 cur = dynamic_cast<DeclarationNode *>( cur->get_next() );
     814                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    797815        } // while
    798816        if ( ! errors.isEmpty() ) {
     
    801819}
    802820
    803 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList ) {
     821void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) {
    804822        SemanticError errors;
    805         std::back_insert_iterator< std::list< DeclarationWithType *> > out( outputList );
     823        std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList );
    806824        const DeclarationNode *cur = firstNode;
    807825        while ( cur ) {
     
    817835                        Declaration *decl = cur->build();
    818836                        if ( decl ) {
    819                                 if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType *>( decl ) ) {
     837                                if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {
    820838                                        *out++ = dwt;
    821                                 } else if ( StructDecl *agg = dynamic_cast< StructDecl *>( decl ) ) {
     839                                } else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) {
    822840                                        StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
    823841                                        *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
    824842                                        delete agg;
    825                                 } else if ( UnionDecl *agg = dynamic_cast< UnionDecl *>( decl ) ) {
     843                                } else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) {
    826844                                        UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
    827845                                        *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
     
    831849                        errors.append( e );
    832850                } // try
    833                 cur = dynamic_cast< DeclarationNode *>( cur->get_next() );
     851                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    834852        } // while
    835853        if ( ! errors.isEmpty() ) {
     
    838856}
    839857
    840 void buildTypeList( const DeclarationNode *firstNode, std::list< Type *> &outputList ) {
     858void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) {
    841859        SemanticError errors;
    842         std::back_insert_iterator< std::list< Type *> > out( outputList );
     860        std::back_insert_iterator< std::list< Type * > > out( outputList );
    843861        const DeclarationNode *cur = firstNode;
    844862        while ( cur ) {
     
    848866                        errors.append( e );
    849867                } // try
    850                 cur = dynamic_cast< DeclarationNode *>( cur->get_next() );
     868                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    851869        } // while
    852870        if ( ! errors.isEmpty() ) {
     
    856874
    857875Declaration *DeclarationNode::build() const {
     876        if( !error.empty() ) throw SemanticError( error, this );
    858877        if ( type ) {
    859                 return type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildFuncSpecifier( Inline ), buildFuncSpecifier( Noreturn ), linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
    860         } // if
    861         if ( ! buildFuncSpecifier( Inline ) && ! buildFuncSpecifier( Noreturn ) ) {
    862                 return (new ObjectDecl( name, buildStorageClass(), linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
     878                return type->buildDecl( name, storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
     879        } // if
     880        if ( ! isInline && ! isNoreturn ) {
     881                return (new ObjectDecl( name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
    863882        } // if
    864883        throw SemanticError( "invalid function specifier in declaration of ", this );
     
    899918}
    900919
    901 DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const {
    902         DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass;
    903         for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
    904           if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
    905           if ( ret != DeclarationNode::NoStorageClass ) {       // already have a valid storage class ?
    906                         throw SemanticError( "invalid combination of storage classes in declaration of ", this );
    907                 } // if
    908                 ret = *i;
    909         } // for
    910         return ret;
    911 }
    912 
    913 bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const {
    914         std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key );
    915   if ( first == storageClasses.end() ) return false;    // not found
    916         first = std::find( ++first, storageClasses.end(), key ); // found
    917   if ( first == storageClasses.end() ) return true;             // not found again
    918         throw SemanticError( "duplicate function specifier in declaration of ", this );
    919 }
     920// DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const {
     921//      DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass;
     922//      for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
     923//        if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
     924//        if ( ret != DeclarationNode::NoStorageClass ) {       // already have a valid storage class ?
     925//                      throw SemanticError( "invalid combination of storage classes in declaration of ", this );
     926//              } // if
     927//              ret = *i;
     928//      } // for
     929//      return ret;
     930// }
     931
     932// bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const {
     933//      std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key );
     934//   if ( first == storageClasses.end() ) return false; // not found
     935//      first = std::find( ++first, storageClasses.end(), key ); // found
     936//   if ( first == storageClasses.end() ) return true;          // not found again
     937//      throw SemanticError( "duplicate function specifier in declaration of ", this );
     938// }
    920939
    921940// Local Variables: //
  • src/Parser/ExpressionNode.cc

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 14:30:42 2016
    13 // Update Count     : 490
     12// Last Modified On : Tue Aug 16 00:09:20 2016
     13// Update Count     : 495
    1414//
    1515
     
    3232using namespace std;
    3333
    34 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {}
     34ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.get_name() ), extension( other.extension ) {}
    3535
    3636//##############################################################################
     
    5757static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
    5858
    59 Expression *build_constantInteger( std::string & str ) {
     59Expression *build_constantInteger( const std::string & str ) {
    6060        static const BasicType::Kind kind[2][3] = {
    6161                { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
     
    123123} // build_constantInteger
    124124
    125 Expression *build_constantFloat( std::string & str ) {
     125Expression *build_constantFloat( const std::string & str ) {
    126126        static const BasicType::Kind kind[2][3] = {
    127127                { BasicType::Float, BasicType::Double, BasicType::LongDouble },
     
    153153} // build_constantFloat
    154154
    155 Expression *build_constantChar( std::string & str ) {
     155Expression *build_constantChar( const std::string & str ) {
    156156        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) );
    157157} // build_constantChar
    158158
    159 ConstantExpr *build_constantStr( std::string & str ) {
     159ConstantExpr *build_constantStr( const std::string & str ) {
    160160        // string should probably be a primitive type
    161161        ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ),
     
    166166} // build_constantStr
    167167
    168 //##############################################################################
    169 
    170168NameExpr * build_varref( const string *name, bool labelp ) {
    171         return new NameExpr( *name, nullptr );
    172 }
    173 
    174 //##############################################################################
     169        NameExpr *expr = new NameExpr( *name, nullptr );
     170        delete name;
     171        return expr;
     172}
    175173
    176174static const char *OperName[] = {
     
    184182};
    185183
    186 //##############################################################################
    187 
    188184Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
    189185        Type *targetType = decl_node->buildType();
    190186        if ( dynamic_cast< VoidType * >( targetType ) ) {
    191187                delete targetType;
    192                 return new CastExpr( maybeBuild<Expression>(expr_node) );
     188                return new CastExpr( maybeMoveBuild< Expression >(expr_node) );
    193189        } else {
    194                 return new CastExpr( maybeBuild<Expression>(expr_node), targetType );
     190                return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType );
    195191        } // if
    196192}
    197193
    198194Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    199         UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeBuild<Expression>(expr_node) );
     195        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeMoveBuild< Expression >(expr_node) );
    200196        delete member;
    201197        return ret;
     
    204200Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    205201        UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    206         deref->get_args().push_back( maybeBuild<Expression>(expr_node) );
     202        deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) );
    207203        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
    208204        delete member;
     
    211207
    212208Expression *build_addressOf( ExpressionNode *expr_node ) {
    213                 return new AddressExpr( maybeBuild<Expression>(expr_node) );
     209                return new AddressExpr( maybeMoveBuild< Expression >(expr_node) );
    214210}
    215211Expression *build_sizeOfexpr( ExpressionNode *expr_node ) {
    216         return new SizeofExpr( maybeBuild<Expression>(expr_node) );
     212        return new SizeofExpr( maybeMoveBuild< Expression >(expr_node) );
    217213}
    218214Expression *build_sizeOftype( DeclarationNode *decl_node ) {
    219         return new SizeofExpr( decl_node->buildType() );
     215        Expression* ret = new SizeofExpr( decl_node->buildType() );
     216        delete decl_node;
     217        return ret;
    220218}
    221219Expression *build_alignOfexpr( ExpressionNode *expr_node ) {
    222         return new AlignofExpr( maybeBuild<Expression>(expr_node) );
     220        return new AlignofExpr( maybeMoveBuild< Expression >(expr_node) );
    223221}
    224222Expression *build_alignOftype( DeclarationNode *decl_node ) {
     
    226224}
    227225Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) {
    228         return new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() );
     226        Expression* ret = new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() );
     227        delete decl_node;
     228        delete member;
     229        return ret;
    229230}
    230231
    231232Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) {
    232         return new LogicalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), notZeroExpr( maybeBuild<Expression>(expr_node2) ), kind );
     233        return new LogicalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), notZeroExpr( maybeMoveBuild< Expression >(expr_node2) ), kind );
    233234}
    234235
    235236Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) {
    236         std::list<Expression *> args;
    237         args.push_back( maybeBuild<Expression>(expr_node) );
     237        std::list< Expression * > args;
     238        args.push_back( maybeMoveBuild< Expression >(expr_node) );
    238239        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    239240}
    240241Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) {
    241         std::list<Expression *> args;
    242         args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node) ) );
     242        std::list< Expression * > args;
     243        args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node) ) );
    243244        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    244245}
    245246Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    246         std::list<Expression *> args;
    247         args.push_back( maybeBuild<Expression>(expr_node1) );
    248         args.push_back( maybeBuild<Expression>(expr_node2) );
     247        std::list< Expression * > args;
     248        args.push_back( maybeMoveBuild< Expression >(expr_node1) );
     249        args.push_back( maybeMoveBuild< Expression >(expr_node2) );
    249250        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    250251}
    251252Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    252         std::list<Expression *> args;
    253         args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node1) ) );
    254         args.push_back( maybeBuild<Expression>(expr_node2) );
     253        std::list< Expression * > args;
     254        args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node1) ) );
     255        args.push_back( maybeMoveBuild< Expression >(expr_node2) );
    255256        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    256257}
    257258
    258259Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) {
    259         return new ConditionalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), maybeBuild<Expression>(expr_node2), maybeBuild<Expression>(expr_node3) );
     260        return new ConditionalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), maybeMoveBuild< Expression >(expr_node2), maybeMoveBuild< Expression >(expr_node3) );
    260261}
    261262
    262263Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    263         return new CommaExpr( maybeBuild<Expression>(expr_node1), maybeBuild<Expression>(expr_node2) );
     264        return new CommaExpr( maybeMoveBuild< Expression >(expr_node1), maybeMoveBuild< Expression >(expr_node2) );
    264265}
    265266
    266267Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) {
    267         return new AttrExpr( var, maybeBuild<Expression>(expr_node) );
     268        return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) );
    268269}
    269270Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) {
     
    273274Expression *build_tuple( ExpressionNode * expr_node ) {
    274275        TupleExpr *ret = new TupleExpr();
    275         buildList( expr_node, ret->get_exprs() );
     276        buildMoveList( expr_node, ret->get_exprs() );
    276277        return ret;
    277278}
    278279
    279280Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ) {
    280         std::list<Expression *> args;
    281 
    282         buildList( expr_node, args );
    283         return new UntypedExpr( maybeBuild<Expression>(function), args, nullptr );
     281        std::list< Expression * > args;
     282        buildMoveList( expr_node, args );
     283        return new UntypedExpr( maybeMoveBuild< Expression >(function), args, nullptr );
    284284}
    285285
    286286Expression *build_range( ExpressionNode * low, ExpressionNode *high ) {
    287         Expression *low_cexpr = maybeBuild<Expression>( low );
    288         Expression *high_cexpr = maybeBuild<Expression>( high );
    289         return new RangeExpr( low_cexpr, high_cexpr );
    290 }
    291 
    292 //##############################################################################
     287        return new RangeExpr( maybeMoveBuild< Expression >( low ), maybeMoveBuild< Expression >( high ) );
     288}
    293289
    294290Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) {
    295         return new AsmExpr( maybeBuild< Expression >( inout ), constraint, maybeBuild<Expression>(operand) );
    296 }
    297 
    298 //##############################################################################
    299 
    300 //void LabelNode::print( std::ostream &os, int indent ) const {}
    301 
    302 //void LabelNode::printOneLine( std::ostream &os, int indent ) const {}
    303 
    304 //##############################################################################
     291        return new AsmExpr( maybeMoveBuild< Expression >( inout ), constraint, maybeMoveBuild< Expression >(operand) );
     292}
    305293
    306294Expression *build_valexpr( StatementNode *s ) {
    307         return new UntypedValofExpr( maybeBuild<Statement>(s), nullptr );
    308 }
    309 
    310 //##############################################################################
    311 
     295        return new UntypedValofExpr( maybeMoveBuild< Statement >(s), nullptr );
     296}
    312297Expression *build_typevalue( DeclarationNode *decl ) {
    313298        return new TypeExpr( decl->buildType() );
    314299}
    315300
    316 //##############################################################################
    317 
    318301Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) {
    319         Declaration * newDecl = maybeBuild<Declaration>(decl_node); // compound literal type
     302        Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type
    320303        if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
    321                 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );
     304                return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeMoveBuild< Initializer >(kids) );
    322305        // these types do not have associated type information
    323306        } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl )  ) {
    324                 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild<Initializer>(kids) );
     307                return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
    325308        } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl )  ) {
    326                 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild<Initializer>(kids) );
     309                return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
    327310        } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl )  ) {
    328                 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild<Initializer>(kids) );
     311                return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
    329312        } else {
    330313                assert( false );
  • src/Parser/InitializerNode.cc

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 13:20:24 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 13 18:55:11 2016
    13 // Update Count     : 18
     12// Last Modified On : Mon Aug 15 18:27:02 2016
     13// Update Count     : 20
    1414//
    1515
     
    2525        : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    2626        if ( aggrp )
    27                 kids = dynamic_cast< InitializerNode *>( get_next() );
     27                kids = dynamic_cast< InitializerNode * >( get_next() );
    2828
    2929        if ( kids != 0 )
     
    3737
    3838        if ( aggrp )
    39                 kids = dynamic_cast< InitializerNode *>( get_next() );
     39                kids = dynamic_cast< InitializerNode * >( get_next() );
    4040
    4141        if ( kids != 0 )
     
    8282                //assert( next_init() != 0 );
    8383
    84                 std::list< Initializer *> initlist;
    85                 buildList<Initializer, InitializerNode>( next_init(), initlist );
     84                std::list< Initializer * > initlist;
     85                buildList< Initializer, InitializerNode >( next_init(), initlist );
    8686
    87                 std::list< Expression *> designlist;
     87                std::list< Expression * > designlist;
    8888
    8989                if ( designator != 0 ) {
    90                         buildList<Expression, ExpressionNode>( designator, designlist );
     90                        buildList< Expression, ExpressionNode >( designator, designlist );
    9191                } // if
    9292
    9393                return new ListInit( initlist, designlist, maybeConstructed );
    9494        } else {
    95                 std::list< Expression *> designators;
     95                std::list< Expression * > designators;
    9696
    9797                if ( designator != 0 )
    98                         buildList<Expression, ExpressionNode>( designator, designators );
     98                        buildList< Expression, ExpressionNode >( designator, designators );
    9999
    100100                if ( get_expression() != 0)
    101                         return new SingleInit( maybeBuild<Expression>( get_expression() ), designators, maybeConstructed );
     101                        return new SingleInit( maybeBuild< Expression >( get_expression() ), designators, maybeConstructed );
    102102        } // if
    103103
  • src/Parser/LinkageSpec.cc

    r7b1bfc5 r4a7d895  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:22:09 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 19 15:53:05 2015
    13 // Update Count     : 5
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug 18 23:47:14 2016
     13// Update Count     : 12
    1414//
    1515
     
    2020#include "Common/SemanticError.h"
    2121
    22 LinkageSpec::Type LinkageSpec::fromString( const std::string &stringSpec ) {
     22LinkageSpec::Spec LinkageSpec::fromString( const std::string &stringSpec ) {
    2323        if ( stringSpec == "\"Cforall\"" ) {
    2424                return Cforall;
     
    3030}
    3131
    32 std::string LinkageSpec::toString( LinkageSpec::Type linkage ) {
    33         switch ( linkage ) {
    34           case Intrinsic:
    35                 return "intrinsic";
    36           case Cforall:
    37                 return "Cforall";
    38           case C:
    39                 return "C";
    40           case AutoGen:
    41                 return "automatically generated";
    42           case Compiler:
    43                 return "compiler built-in";
    44         }
    45         assert( false );
    46         return "";
     32std::string LinkageSpec::toString( LinkageSpec::Spec linkage ) {
     33        static const char *linkageKinds[LinkageSpec::NoOfSpecs] = {
     34                "intrinsic", "Cforall", "C", "automatically generated", "compiler built-in",
     35        };
     36        return linkageKinds[linkage];
    4737}
    4838
    49 bool LinkageSpec::isDecoratable( Type t ) {
    50         switch ( t ) {
    51           case Intrinsic:
    52           case Cforall:
    53           case AutoGen:
    54                 return true;
    55           case C:
    56           case Compiler:
    57                 return false;
    58         }
    59         assert( false );
    60         return false;
     39bool LinkageSpec::isDecoratable( Spec t ) {
     40        static bool decoratable[LinkageSpec::NoOfSpecs] = {
     41                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     42                        true,           true,           false,  true,           false,
     43        };
     44        return decoratable[t];
    6145}
    6246
    63 bool LinkageSpec::isGeneratable( Type t ) {
    64         switch ( t ) {
    65           case Intrinsic:
    66           case Cforall:
    67           case AutoGen:
    68           case C:
    69                 return true;
    70           case Compiler:
    71                 return false;
    72         }
    73         assert( false );
    74         return false;
     47bool LinkageSpec::isGeneratable( Spec t ) {
     48        static bool generatable[LinkageSpec::NoOfSpecs] = {
     49                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     50                        true,           true,           true,   true,           false,
     51        };
     52        return generatable[t];
    7553}
    7654
    77 bool LinkageSpec::isOverloadable( Type t ) {
     55bool LinkageSpec::isOverloadable( Spec t ) {
    7856        return isDecoratable( t );
    7957}
    8058
    8159
    82 bool LinkageSpec::isOverridable( Type t ) {
    83         switch ( t ) {
    84           case Intrinsic:
    85           case AutoGen:
    86                 return true;
    87           case Cforall:
    88           case C:
    89           case Compiler:
    90                 return false;
    91         }
    92         assert( false );
    93         return false;
     60bool LinkageSpec::isOverridable( Spec t ) {
     61        static bool overridable[LinkageSpec::NoOfSpecs] = {
     62                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     63                        true,           false,          false,  true,           false,
     64        };
     65        return overridable[t];
    9466}
    9567
    96 bool LinkageSpec::isBuiltin( Type t ) {
    97         switch ( t ) {
    98           case Cforall:
    99           case AutoGen:
    100           case C:
    101                 return false;
    102           case Intrinsic:
    103           case Compiler:
    104                 return true;
    105         }
    106         assert( false );
    107         return false;
     68bool LinkageSpec::isBuiltin( Spec t ) {
     69        static bool builtin[LinkageSpec::NoOfSpecs] = {
     70                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     71                        true,           false,          false,  false,          true,
     72        };
     73        return builtin[t];
    10874}
    10975
  • src/Parser/LinkageSpec.h

    r7b1bfc5 r4a7d895  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:24:28 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Aug 18 14:11:55 2015
    13 // Update Count     : 5
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug 18 23:47:16 2016
     13// Update Count     : 7
    1414//
    1515
     
    2020
    2121struct LinkageSpec {
    22         enum Type {
     22        enum Spec {
    2323                Intrinsic,                                                                              // C built-in defined in prelude
    2424                Cforall,                                                                                // ordinary
    2525                C,                                                                                              // not overloadable, not mangled
    2626                AutoGen,                                                                                // built by translator (struct assignment)
    27                 Compiler                                                                                // gcc internal
     27                Compiler,                                                                               // gcc internal
     28                NoOfSpecs
    2829        };
    2930 
    30         static Type fromString( const std::string & );
    31         static std::string toString( Type );
     31        static Spec fromString( const std::string & );
     32        static std::string toString( Spec );
    3233 
    33         static bool isDecoratable( Type );
    34         static bool isGeneratable( Type );
    35         static bool isOverloadable( Type );
    36         static bool isOverridable( Type );
    37         static bool isBuiltin( Type );
     34        static bool isDecoratable( Spec );
     35        static bool isGeneratable( Spec );
     36        static bool isOverloadable( Spec );
     37        static bool isOverridable( Spec );
     38        static bool isBuiltin( Spec );
    3839};
    3940
  • src/Parser/ParseNode.cc

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 14:49:06 2016
    13 // Update Count     : 99
     12// Last Modified On : Wed Aug 17 23:14:16 2016
     13// Update Count     : 126
    1414//
    1515
     
    1717using namespace std;
    1818
    19 // Builder
    2019int ParseNode::indent_by = 4;
    21 
    22 ParseNode::ParseNode() : next( 0 ) {};
    23 ParseNode::ParseNode( const string *name ) : name( *name ), next( 0 ) { delete name; }
    24 ParseNode::ParseNode( const string &name ) : name( name ), next( 0 ) { }
    25 
    26 ParseNode::~ParseNode() {
    27         delete next;
    28 };
    29 
    30 ParseNode *ParseNode::get_last() {
    31         ParseNode *current = this;
    32 
    33         while ( current->get_next() != 0 )
    34         current = current->get_next();
    35         return current;
    36 }
    37 
    38 ParseNode *ParseNode::set_last( ParseNode *next_ ) {
    39         if ( next_ != 0 ) get_last()->next = next_;
    40         return this;
    41 }
    42 
    43 void ParseNode::print( std::ostream &os, int indent ) const {}
    44 
    45 
    46 void ParseNode::printList( std::ostream &os, int indent ) const {
    47         print( os, indent );
    48 
    49         if ( next ) {
    50                 next->printList( os, indent );
    51         } // if
    52 }
    5320
    5421// Local Variables: //
  • src/Parser/ParseNode.h

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 14:52:12 2016
    13 // Update Count     : 512
     12// Last Modified On : Thu Aug 18 23:48:37 2016
     13// Update Count     : 542
    1414//
    1515
     
    2222#include <memory>
    2323
    24 #include "Common/utility.h"
    2524#include "Parser/LinkageSpec.h"
    2625#include "SynTree/Type.h"
    2726#include "SynTree/Expression.h"
    2827#include "SynTree/Statement.h"
    29 //#include "SynTree/Declaration.h"
     28#include "SynTree/Label.h"
     29#include "Common/utility.h"
    3030#include "Common/UniqueName.h"
    31 #include "SynTree/Label.h"
    3231
    3332class StatementNode;
     
    3736class InitializerNode;
    3837
    39 // Builder
     38//##############################################################################
     39
    4040class ParseNode {
    4141  public:
    42         ParseNode();
    43         ParseNode( const std::string * );
    44         ParseNode( const std::string & );                                       // for copy constructing subclasses
    45         virtual ~ParseNode();
     42        ParseNode() {};
     43        ParseNode( const std::string *name ) : name( *name ) { assert( false ); delete name; }
     44        ParseNode( const std::string &name ) : name( name ) { assert( false ); }
     45        virtual ~ParseNode() { delete next; };
     46        virtual ParseNode *clone() const = 0;
    4647
    4748        ParseNode *get_next() const { return next; }
    4849        ParseNode *set_next( ParseNode *newlink ) { next = newlink; return this; }
    49         ParseNode *get_last();
    50         ParseNode *set_last( ParseNode * );
    51 
    52         virtual ParseNode *clone() const { return 0; };
     50        ParseNode *get_last() {
     51                ParseNode *current;
     52                for ( current = this; current->get_next() != 0; current = current->get_next() );
     53                return current;
     54        }
     55        ParseNode *set_last( ParseNode *newlast ) {
     56                if ( newlast != 0 ) get_last()->set_next( newlast );
     57                return this;
     58        }
    5359
    5460        const std::string &get_name() const { return name; }
    5561        void set_name( const std::string &newValue ) { name = newValue; }
    5662
    57         virtual void print( std::ostream &os, int indent = 0 ) const;
    58         virtual void printList( std::ostream &os, int indent = 0 ) const;
    59 
    60         ParseNode &operator,( ParseNode & );
    61   protected:
     63        virtual void print( std::ostream &os, int indent = 0 ) const {}
     64        virtual void printList( std::ostream &os, int indent = 0 ) const {}
     65  private:
     66        static int indent_by;
     67
     68        ParseNode *next = nullptr;
    6269        std::string name;
    63         static int indent_by;
    64         ParseNode *next;
    65 };
     70}; // ParseNode
    6671
    6772//##############################################################################
     
    7277        InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode *des = 0 );
    7378        ~InitializerNode();
     79        virtual InitializerNode *clone() const { assert( false ); return nullptr; }
    7480
    7581        ExpressionNode *get_expression() const { return expr; }
     
    97103//##############################################################################
    98104
    99 class ExpressionNode : public ParseNode {
     105class ExpressionNode final : public ParseNode {
    100106  public:
    101107        ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {}
     
    103109        ExpressionNode( const ExpressionNode &other );
    104110        virtual ~ExpressionNode() {}
    105 
    106         virtual ExpressionNode *clone() const { return 0; }
     111        virtual ExpressionNode *clone() const { assert( false ); return nullptr; }
    107112
    108113        bool get_extension() const { return extension; }
    109114        ExpressionNode *set_extension( bool exten ) { extension = exten; return this; }
    110115
    111         virtual void print( std::ostream &os, int indent = 0 ) const {}
    112         virtual void printOneLine( std::ostream &os, int indent = 0 ) const {}
    113 
    114         virtual Expression *build() const { return expr; }
     116        void print( std::ostream &os, int indent = 0 ) const {}
     117        void printOneLine( std::ostream &os, int indent = 0 ) const {}
     118
     119        template<typename T>
     120        bool isExpressionType() const {
     121                return nullptr != dynamic_cast<T>(expr.get());
     122        }
     123
     124        Expression *build() const { return const_cast<ExpressionNode*>(this)->expr.release(); }
    115125  private:
    116126        bool extension = false;
    117         Expression *expr;
     127        std::unique_ptr<Expression> expr;
    118128};
    119129
    120130template< typename T >
    121 struct maybeBuild_t<Expression, T> {
     131struct maybeBuild_t< Expression, T > {
    122132        static inline Expression * doit( const T *orig ) {
    123133                if ( orig ) {
     
    126136                        return p;
    127137                } else {
    128                         return 0;
     138                        return nullptr;
    129139                } // if
    130140        }
     
    146156};
    147157
    148 Expression *build_constantInteger( std::string &str );
    149 Expression *build_constantFloat( std::string &str );
    150 Expression *build_constantChar( std::string &str );
    151 ConstantExpr *build_constantStr( std::string &str );
     158Expression *build_constantInteger( const std::string &str );
     159Expression *build_constantFloat( const std::string &str );
     160Expression *build_constantChar( const std::string &str );
     161ConstantExpr *build_constantStr( const std::string &str );
    152162
    153163NameExpr *build_varref( const std::string *name, bool labelp = false );
     
    228238        static DeclarationNode *newBuiltinType( BuiltinType );
    229239
     240        DeclarationNode();
     241        ~DeclarationNode();
     242        DeclarationNode *clone() const;
     243
    230244        DeclarationNode *addQualifiers( DeclarationNode *);
    231245        DeclarationNode *copyStorageClasses( DeclarationNode *);
     
    252266        DeclarationNode *cloneBaseType( DeclarationNode *newdecl );
    253267
    254         DeclarationNode *appendList( DeclarationNode * );
    255 
    256         DeclarationNode *clone() const;
     268        DeclarationNode *appendList( DeclarationNode *node ) {
     269                return (DeclarationNode *)set_last( node );
     270        }
     271
    257272        void print( std::ostream &os, int indent = 0 ) const;
    258273        void printList( std::ostream &os, int indent = 0 ) const;
     
    263278        bool get_hasEllipsis() const;
    264279        const std::string &get_name() const { return name; }
    265         LinkageSpec::Type get_linkage() const { return linkage; }
     280        LinkageSpec::Spec get_linkage() const { return linkage; }
    266281        DeclarationNode *extractAggregate() const;
    267282        ExpressionNode *get_enumeratorValue() const { return enumeratorValue; }
     
    269284        bool get_extension() const { return extension; }
    270285        DeclarationNode *set_extension( bool exten ) { extension = exten; return this; }
    271 
    272         DeclarationNode();
    273         ~DeclarationNode();
    274286  private:
    275         StorageClass buildStorageClass() const;
    276         bool buildFuncSpecifier( StorageClass key ) const;
     287        // StorageClass buildStorageClass() const;
     288        // bool buildFuncSpecifier( StorageClass key ) const;
    277289
    278290        TypeData *type;
    279291        std::string name;
    280         std::list< StorageClass > storageClasses;
     292        // std::list< StorageClass > storageClasses;
     293        StorageClass storageClass;
     294        bool isInline, isNoreturn;
    281295        std::list< std::string > attributes;
    282296        ExpressionNode *bitfieldWidth;
     
    284298        InitializerNode *initializer;
    285299        bool hasEllipsis;
    286         LinkageSpec::Type linkage;
     300        LinkageSpec::Spec linkage;
    287301        bool extension = false;
     302        std::string error;
    288303
    289304        static UniqueName anonymous;
     
    294309//##############################################################################
    295310
    296 class StatementNode : public ParseNode {
     311class StatementNode final : public ParseNode {
    297312  public:
    298313        StatementNode() { stmt = nullptr; }
     
    301316        virtual ~StatementNode() {}
    302317
    303         virtual StatementNode *clone() const { assert( false ); return nullptr; }
    304         virtual Statement *build() const { return stmt; }
     318        virtual StatementNode *clone() const final { assert( false ); return nullptr; }
     319        Statement *build() const { return const_cast<StatementNode*>(this)->stmt.release(); }
    305320
    306321        virtual StatementNode *add_label( const std::string * name ) {
    307322                stmt->get_labels().emplace_back( *name );
     323                delete name;
    308324                return this;
    309325        }
     
    314330        virtual void printList( std::ostream &os, int indent = 0 ) {}
    315331  private:
    316         Statement *stmt;
     332        std::unique_ptr<Statement> stmt;
    317333}; // StatementNode
    318334
     
    351367void buildList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {
    352368        SemanticError errors;
    353         std::back_insert_iterator< std::list< SynTreeType *> > out( outputList );
     369        std::back_insert_iterator< std::list< SynTreeType * > > out( outputList );
    354370        const NodeType *cur = firstNode;
    355371
    356372        while ( cur ) {
    357373                try {
    358 //                      SynTreeType *result = dynamic_cast< SynTreeType *>( maybeBuild<typename std::result_of<decltype(&NodeType::build)(NodeType)>::type>( cur ) );
    359                         SynTreeType *result = dynamic_cast< SynTreeType *>( maybeBuild<typename std::pointer_traits<decltype(cur->build())>::element_type>( cur ) );
     374//                      SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::result_of< decltype(&NodeType::build)(NodeType)>::type >( cur ) );
     375                        SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::pointer_traits< decltype(cur->build())>::element_type >( cur ) );
    360376                        if ( result ) {
    361377                                *out++ = result;
     
    365381                        errors.append( e );
    366382                } // try
    367                 cur = dynamic_cast< NodeType *>( cur->get_next() );
     383                cur = dynamic_cast< NodeType * >( cur->get_next() );
    368384        } // while
    369385        if ( ! errors.isEmpty() ) {
     
    374390// in DeclarationNode.cc
    375391void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList );
    376 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList );
     392void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList );
    377393void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList );
     394
     395template< typename SynTreeType, typename NodeType >
     396void buildMoveList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {
     397        buildList(firstNode, outputList);
     398        delete firstNode;
     399}
     400
    378401
    379402#endif // PARSENODE_H
  • src/Parser/StatementNode.cc

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 14:40:05 2016
    13 // Update Count     : 317
     12// Last Modified On : Mon Aug 15 20:47:11 2016
     13// Update Count     : 322
    1414//
    1515
     
    3232                if ( agg ) {
    3333                        StatementNode *nextStmt = new StatementNode( new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) ) );
    34                         next = nextStmt;
     34                        set_next( nextStmt );
    3535                        if ( decl->get_next() ) {
    36                                 next->set_next( new StatementNode( dynamic_cast<DeclarationNode *>(decl->get_next()) ) );
     36                                get_next()->set_next( new StatementNode( dynamic_cast< DeclarationNode * >(decl->get_next()) ) );
    3737                                decl->set_next( 0 );
    3838                        } // if
    3939                } else {
    4040                        if ( decl->get_next() ) {
    41                                 next = new StatementNode( dynamic_cast<DeclarationNode *>( decl->get_next() ) );
     41                                set_next(new StatementNode( dynamic_cast< DeclarationNode * >( decl->get_next() ) ) );
    4242                                decl->set_next( 0 );
    4343                        } // if
    4444                        agg = decl;
    4545                } // if
    46                 stmt = new DeclStmt( noLabels, maybeBuild<Declaration>(agg) );
     46                stmt.reset( new DeclStmt( noLabels, maybeBuild< Declaration >(agg) ) );
    4747        } else {
    4848                assert( false );
     
    5454        // find end of list and maintain previous pointer
    5555        for ( StatementNode * curr = prev; curr != nullptr; curr = (StatementNode *)curr->get_next() ) {
    56                 StatementNode *node = dynamic_cast<StatementNode *>(curr);
     56                StatementNode *node = dynamic_cast< StatementNode * >(curr);
    5757                assert( node );
    58                 assert( dynamic_cast<CaseStmt *>(node->stmt) );
     58                assert( dynamic_cast< CaseStmt * >(node->stmt.get()) );
    5959                prev = curr;
    6060        } // for
    6161        // convert from StatementNode list to Statement list
    62         StatementNode *node = dynamic_cast<StatementNode *>(prev);
    63         std::list<Statement *> stmts;
    64         buildList( stmt, stmts );
     62        StatementNode *node = dynamic_cast< StatementNode * >(prev);
     63        std::list< Statement * > stmts;
     64        buildMoveList( stmt, stmts );
    6565        // splice any new Statements to end of current Statements
    66         CaseStmt * caseStmt = dynamic_cast<CaseStmt *>(node->stmt);
     66        CaseStmt * caseStmt = dynamic_cast< CaseStmt * >(node->stmt.get());
    6767        caseStmt->get_statements().splice( caseStmt->get_statements().end(), stmts );
    6868        return this;
     
    7070
    7171Statement *build_expr( ExpressionNode *ctl ) {
    72         Expression *e = maybeBuild< Expression >( ctl );
     72        Expression *e = maybeMoveBuild< Expression >( ctl );
    7373
    7474        if ( e )
     
    8080Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ) {
    8181        Statement *thenb, *elseb = 0;
    82         std::list<Statement *> branches;
    83         buildList<Statement, StatementNode>( then_stmt, branches );
     82        std::list< Statement * > branches;
     83        buildMoveList< Statement, StatementNode >( then_stmt, branches );
    8484        assert( branches.size() == 1 );
    8585        thenb = branches.front();
    8686
    8787        if ( else_stmt ) {
    88                 std::list<Statement *> branches;
    89                 buildList<Statement, StatementNode>( else_stmt, branches );
     88                std::list< Statement * > branches;
     89                buildMoveList< Statement, StatementNode >( else_stmt, branches );
    9090                assert( branches.size() == 1 );
    9191                elseb = branches.front();
    9292        } // if
    93         return new IfStmt( noLabels, notZeroExpr( maybeBuild<Expression>(ctl) ), thenb, elseb );
     93        return new IfStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), thenb, elseb );
    9494}
    9595
    9696Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ) {
    97         std::list<Statement *> branches;
    98         buildList<Statement, StatementNode>( stmt, branches );
     97        std::list< Statement * > branches;
     98        buildMoveList< Statement, StatementNode >( stmt, branches );
    9999        assert( branches.size() >= 0 );                                         // size == 0 for switch (...) {}, i.e., no declaration or statements
    100         return new SwitchStmt( noLabels, maybeBuild<Expression>(ctl), branches );
     100        return new SwitchStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches );
    101101}
    102102Statement *build_case( ExpressionNode *ctl ) {
    103         std::list<Statement *> branches;
    104         return new CaseStmt( noLabels, maybeBuild<Expression>(ctl), branches );
     103        std::list< Statement * > branches;
     104        return new CaseStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches );
    105105}
    106106Statement *build_default() {
    107         std::list<Statement *> branches;
     107        std::list< Statement * > branches;
    108108        return new CaseStmt( noLabels, nullptr, branches, true );
    109109}
    110110
    111111Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind ) {
    112         std::list<Statement *> branches;
    113         buildList<Statement, StatementNode>( stmt, branches );
    114         assert( branches.size() == 1 );
    115         return new WhileStmt( noLabels, notZeroExpr( maybeBuild<Expression>(ctl) ), branches.front(), kind );
     112        std::list< Statement * > branches;
     113        buildMoveList< Statement, StatementNode >( stmt, branches );
     114        assert( branches.size() == 1 );
     115        return new WhileStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), branches.front(), kind );
    116116}
    117117
    118118Statement *build_for( ForCtl *forctl, StatementNode *stmt ) {
    119         std::list<Statement *> branches;
    120         buildList<Statement, StatementNode>( stmt, branches );
    121         assert( branches.size() == 1 );
    122 
    123         std::list<Statement *> init;
     119        std::list< Statement * > branches;
     120        buildMoveList< Statement, StatementNode >( stmt, branches );
     121        assert( branches.size() == 1 );
     122
     123        std::list< Statement * > init;
    124124        if ( forctl->init != 0 ) {
    125                 buildList( forctl->init, init );
     125                buildMoveList( forctl->init, init );
    126126        } // if
    127127
    128128        Expression *cond = 0;
    129129        if ( forctl->condition != 0 )
    130                 cond = notZeroExpr( maybeBuild<Expression>(forctl->condition) );
     130                cond = notZeroExpr( maybeMoveBuild< Expression >(forctl->condition) );
    131131
    132132        Expression *incr = 0;
    133133        if ( forctl->change != 0 )
    134                 incr = maybeBuild<Expression>(forctl->change);
     134                incr = maybeMoveBuild< Expression >(forctl->change);
    135135
    136136        delete forctl;
     
    142142}
    143143Statement *build_computedgoto( ExpressionNode *ctl ) {
    144         return new BranchStmt( noLabels, maybeBuild<Expression>(ctl), BranchStmt::Goto );
     144        return new BranchStmt( noLabels, maybeMoveBuild< Expression >(ctl), BranchStmt::Goto );
    145145}
    146146
    147147Statement *build_return( ExpressionNode *ctl ) {
    148         std::list<Expression *> exps;
    149         buildList( ctl, exps );
     148        std::list< Expression * > exps;
     149        buildMoveList( ctl, exps );
    150150        return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr );
    151151}
    152152Statement *build_throw( ExpressionNode *ctl ) {
    153         std::list<Expression *> exps;
    154         buildList( ctl, exps );
    155         return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr, true );
     153        std::list< Expression * > exps;
     154        buildMoveList( ctl, exps );
     155        assertf( exps.size() < 2, "This means we are leaking memory");
     156        return new ReturnStmt( noLabels, !exps.empty() ? exps.back() : nullptr, true );
    156157}
    157158
    158159Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt ) {
    159         std::list<Statement *> branches;
    160         buildList<Statement, StatementNode>( catch_stmt, branches );
    161         CompoundStmt *tryBlock = dynamic_cast<CompoundStmt *>(maybeBuild<Statement>(try_stmt));
     160        std::list< Statement * > branches;
     161        buildMoveList< Statement, StatementNode >( catch_stmt, branches );
     162        CompoundStmt *tryBlock = dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >(try_stmt));
    162163        assert( tryBlock );
    163         FinallyStmt *finallyBlock = dynamic_cast<FinallyStmt *>(maybeBuild<Statement>(finally_stmt) );
     164        FinallyStmt *finallyBlock = dynamic_cast< FinallyStmt * >(maybeMoveBuild< Statement >(finally_stmt) );
    164165        return new TryStmt( noLabels, tryBlock, branches, finallyBlock );
    165166}
    166167Statement *build_catch( DeclarationNode *decl, StatementNode *stmt, bool catchAny ) {
    167         std::list<Statement *> branches;
    168         buildList<Statement, StatementNode>( stmt, branches );
    169         assert( branches.size() == 1 );
    170         return new CatchStmt( noLabels, maybeBuild<Declaration>(decl), branches.front(), catchAny );
     168        std::list< Statement * > branches;
     169        buildMoveList< Statement, StatementNode >( stmt, branches );
     170        assert( branches.size() == 1 );
     171        return new CatchStmt( noLabels, maybeMoveBuild< Declaration >(decl), branches.front(), catchAny );
    171172}
    172173Statement *build_finally( StatementNode *stmt ) {
    173         std::list<Statement *> branches;
    174         buildList<Statement, StatementNode>( stmt, branches );
    175         assert( branches.size() == 1 );
    176         return new FinallyStmt( noLabels, dynamic_cast<CompoundStmt *>( branches.front() ) );
     174        std::list< Statement * > branches;
     175        buildMoveList< Statement, StatementNode >( stmt, branches );
     176        assert( branches.size() == 1 );
     177        return new FinallyStmt( noLabels, dynamic_cast< CompoundStmt * >( branches.front() ) );
    177178}
    178179
    179180Statement *build_compound( StatementNode *first ) {
    180181        CompoundStmt *cs = new CompoundStmt( noLabels );
    181         buildList( first, cs->get_kids() );
     182        buildMoveList( first, cs->get_kids() );
    182183        return cs;
    183184}
     
    187188        std::list< ConstantExpr * > clob;
    188189
    189         buildList( output, out );
    190         buildList( input, in );
    191         buildList( clobber, clob );
     190        buildMoveList( output, out );
     191        buildMoveList( input, in );
     192        buildMoveList( clobber, clob );
    192193        return new AsmStmt( noLabels, voltile, instruction, out, in, clob, gotolabels ? gotolabels->labels : noLabels );
    193194}
  • src/Parser/TypeData.cc

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 13 18:38:41 2016
    13 // Update Count     : 59
     12// Last Modified On : Thu Aug 18 23:48:44 2016
     13// Update Count     : 64
    1414//
    1515
     
    182182                break;
    183183          case Array:
    184 //PAB           newtype->array->dimension = maybeClone( array->dimension );
    185184                newtype->array->dimension = array->dimension;
    186185                newtype->array->isVarLen = array->isVarLen;
     
    479478}
    480479
    481 Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer *init ) const {
     480Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer *init ) const {
    482481        if ( kind == TypeData::Function ) {
    483482                FunctionDecl *decl;
     
    489488                                decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline, isNoreturn );
    490489                        } else {
    491                                 // std::list<Label> ls;
    492                                 decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline, isNoreturn );
     490                                // std::list< Label > ls;
     491                                decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list< Label >() ), isInline, isNoreturn );
    493492                        } // if
    494493                } else {
     
    909908        buildList( enumeration->constants, ret->get_members() );
    910909        std::list< Declaration * >::iterator members = ret->get_members().begin();
    911         for ( const DeclarationNode *cur = enumeration->constants; cur != NULL; cur = dynamic_cast<DeclarationNode *>( cur->get_next() ), ++members ) {
    912                 if ( cur->get_enumeratorValue() != NULL ) {
    913                         ObjectDecl *member = dynamic_cast<ObjectDecl *>(*members);
     910        for ( const DeclarationNode *cur = enumeration->constants; cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ), ++members ) {
     911                if ( cur->get_enumeratorValue() != nullptr ) {
     912                        ObjectDecl *member = dynamic_cast< ObjectDecl * >(*members);
    914913                        member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) );
    915914                } // if
  • src/Parser/TypeData.h

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 14:28:32 2016
    13 // Update Count     : 21
     12// Last Modified On : Thu Aug 18 23:48:52 2016
     13// Update Count     : 22
    1414//
    1515
     
    126126        TypeData * extractAggregate( bool toplevel = true ) const;
    127127        // helper function for DeclNodeImpl::build
    128         Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer * init = 0 ) const;
     128        Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init = 0 ) const;
    129129        // helper functions for build()
    130130        Type::Qualifiers buildQualifiers() const;
  • src/Parser/TypedefTable.cc

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 15:20:13 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 16:57:30 2016
    13 // Update Count     : 24
     12// Last Modified On : Mon Aug 15 18:24:42 2016
     13// Update Count     : 25
    1414//
    1515
     
    6464                tableType::iterator curPos = table.find( identifier );
    6565                if ( curPos == table.end()) {
    66                         list<Entry> newList;
     66                        list< Entry > newList;
    6767                        newList.push_front( newEntry );
    6868                        table[identifier] = newList;
    6969                } else {
    70                         list<Entry>::iterator listPos = (*curPos ).second.begin();
     70                        list< Entry >::iterator listPos = (*curPos ).second.begin();
    7171                        while ( listPos != (*curPos ).second.end() && listPos->scope > scope ) {
    7272                                listPos++;
     
    127127        debugPrint( "Leaving scope " << currentScope << endl );
    128128        for ( tableType::iterator i = table.begin(); i != table.end(); ) {
    129                 list<Entry> &declList = (*i).second;
     129                list< Entry > &declList = (*i).second;
    130130                while ( ! declList.empty() && declList.front().scope == currentScope ) {
    131131                        declList.pop_front();
     
    157157        for ( tableType::const_iterator i = table.begin(); i != table.end(); i++) {
    158158                debugPrint( (*i ).first << ": " );
    159                 list<Entry> declList = (*i).second;
    160                 for ( list<Entry>::const_iterator j = declList.begin(); j != declList.end(); j++ ) {
     159                list< Entry > declList = (*i).second;
     160                for ( list< Entry >::const_iterator j = declList.begin(); j != declList.end(); j++ ) {
    161161                        debugPrint( "(" << (*j).scope << " " << (*j).kind << ") " );
    162162                }
  • src/Parser/TypedefTable.h

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 15:24:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 16:59:56 2016
    13 // Update Count     : 27
     12// Last Modified On : Mon Aug 15 18:25:04 2016
     13// Update Count     : 28
    1414//
    1515
     
    3939        };
    4040
    41         typedef std::map<std::string, std::list<Entry> > tableType;
     41        typedef std::map< std::string, std::list< Entry > > tableType;
    4242        tableType table;
    4343
  • src/Parser/lex.cc

    r7b1bfc5 r4a7d895  
    14681468 * Author           : Peter A. Buhr
    14691469 * Created On       : Sat Sep 22 08:58:10 2001
    1470  * Last Modified By :
    1471  * Last Modified On : Sun Jul 31 07:19:36 2016
    1472  * Update Count     : 459
     1470 * Last Modified By : Peter A. Buhr
     1471 * Last Modified On : Thu Aug 18 22:17:30 2016
     1472 * Update Count     : 472
    14731473 */
    14741474#line 20 "lex.ll"
     
    14801480
    14811481#include <string>
     1482#include <cstdio>                                                                               // FILENAME_MAX
    14821483
    14831484#include "lex.h"
     
    14911492#define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x )
    14921493#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x )
    1493 #define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN( x )
     1494#define RETURN_CHAR(x)          yylval.tok.str = nullptr; RETURN_LOCN( x )
    14941495#define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN( x )
    14951496
    1496 #define WHITE_RETURN(x)                                                                 // do nothing
     1497#define WHITE_RETURN(x)         // do nothing
    14971498#define NEWLINE_RETURN()        WHITE_RETURN( '\n' )
    14981499#define ASCIIOP_RETURN()        RETURN_CHAR( (int)yytext[0] ) // single character operator
    1499 #define NAMEDOP_RETURN(x)       RETURN_VAL( x )                         // multichar operator, with a name
     1500#define NAMEDOP_RETURN(x)       RETURN_CHAR( x )                        // multichar operator, with a name
    15001501#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    15011502#define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
     
    15311532
    15321533
    1533 #line 1534 "Parser/lex.cc"
     1534#line 1535 "Parser/lex.cc"
    15341535
    15351536#define INITIAL 0
     
    17231724        register int yy_act;
    17241725   
    1725 #line 138 "lex.ll"
     1726#line 139 "lex.ll"
    17261727
    17271728                                   /* line directives */
    1728 #line 1729 "Parser/lex.cc"
     1729#line 1730 "Parser/lex.cc"
    17291730
    17301731        if ( !(yy_init) )
     
    18231824/* rule 1 can match eol */
    18241825YY_RULE_SETUP
    1825 #line 140 "lex.ll"
     1826#line 141 "lex.ll"
    18261827{
    18271828        /* " stop highlighting */
     1829        static char *filename[FILENAME_MAX];                            // temporarily store current source-file name
    18281830        char *end_num;
    18291831        char *begin_string, *end_string;
    1830         char *filename;
    18311832        long lineno, length;
    18321833        lineno = strtol( yytext + 1, &end_num, 0 );
    18331834        begin_string = strchr( end_num, '"' );
    1834         if ( begin_string ) {
    1835                 end_string = strchr( begin_string + 1, '"' );
    1836                 if ( end_string ) {
    1837                         length = end_string - begin_string - 1;
    1838                         filename = new char[ length + 1 ];
    1839                         memcpy( filename, begin_string + 1, length );
    1840                         filename[ length ] = '\0';
    1841                         //std::cout << "file " << filename << " line " << lineno << std::endl;
    1842                         yylineno = lineno;
    1843                         yyfilename = filename;
    1844                 } // if
     1835        if ( begin_string ) {                                                           // file name ?
     1836                end_string = strchr( begin_string + 1, '"' );   // look for ending delimiter
     1837                assert( end_string );                                                   // closing quote ?
     1838                length = end_string - begin_string - 1;                 // file-name length without quotes or sentinel
     1839                assert( length < FILENAME_MAX );                                // room for sentinel ?
     1840                memcpy( &filename, begin_string + 1, length );  // copy file name from yytext
     1841                filename[ length ] = '\0';                                              // terminate string with sentinel
     1842                //std::cout << "file " << filename << " line " << lineno << std::endl;
     1843                yylineno = lineno;
     1844                yyfilename = filename[0];
    18451845        } // if
    18461846}
  • src/Parser/lex.ll

    r7b1bfc5 r4a7d895  
    99 * Author           : Peter A. Buhr
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    11  * Last Modified By :
    12  * Last Modified On : Sun Jul 31 07:19:36 2016
    13  * Update Count     : 459
     11 * Last Modified By : Peter A. Buhr
     12 * Last Modified On : Thu Aug 18 22:17:30 2016
     13 * Update Count     : 472
    1414 */
    1515
     
    2525
    2626#include <string>
     27#include <cstdio>                                                                               // FILENAME_MAX
    2728
    2829#include "lex.h"
     
    3637#define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x )
    3738#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x )
    38 #define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN( x )
     39#define RETURN_CHAR(x)          yylval.tok.str = nullptr; RETURN_LOCN( x )
    3940#define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN( x )
    4041
    41 #define WHITE_RETURN(x)                                                                 // do nothing
     42#define WHITE_RETURN(x)         // do nothing
    4243#define NEWLINE_RETURN()        WHITE_RETURN( '\n' )
    4344#define ASCIIOP_RETURN()        RETURN_CHAR( (int)yytext[0] ) // single character operator
    44 #define NAMEDOP_RETURN(x)       RETURN_VAL( x )                         // multichar operator, with a name
     45#define NAMEDOP_RETURN(x)       RETURN_CHAR( x )                        // multichar operator, with a name
    4546#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    4647#define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
     
    140141^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" {
    141142        /* " stop highlighting */
     143        static char *filename[FILENAME_MAX];                            // temporarily store current source-file name
    142144        char *end_num;
    143145        char *begin_string, *end_string;
    144         char *filename;
    145146        long lineno, length;
    146147        lineno = strtol( yytext + 1, &end_num, 0 );
    147148        begin_string = strchr( end_num, '"' );
    148         if ( begin_string ) {
    149                 end_string = strchr( begin_string + 1, '"' );
    150                 if ( end_string ) {
    151                         length = end_string - begin_string - 1;
    152                         filename = new char[ length + 1 ];
    153                         memcpy( filename, begin_string + 1, length );
    154                         filename[ length ] = '\0';
    155                         //std::cout << "file " << filename << " line " << lineno << std::endl;
    156                         yylineno = lineno;
    157                         yyfilename = filename;
    158                 } // if
     149        if ( begin_string ) {                                                           // file name ?
     150                end_string = strchr( begin_string + 1, '"' );   // look for ending delimiter
     151                assert( end_string );                                                   // closing quote ?
     152                length = end_string - begin_string - 1;                 // file-name length without quotes or sentinel
     153                assert( length < FILENAME_MAX );                                // room for sentinel ?
     154                memcpy( &filename, begin_string + 1, length );  // copy file name from yytext
     155                filename[ length ] = '\0';                                              // terminate string with sentinel
     156                //std::cout << "file " << filename << " line " << lineno << std::endl;
     157                yylineno = lineno;
     158                yyfilename = filename[0];
    159159        } // if
    160160}
  • src/Parser/module.mk

    r7b1bfc5 r4a7d895  
    1111## Created On       : Sat May 16 15:29:09 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Thu Jan 28 11:57:23 2016
    14 ## Update Count     : 100
     13## Last Modified On : Tue Aug 16 17:28:34 2016
     14## Update Count     : 101
    1515###############################################################################
    1616
     
    2929       Parser/TypeData.cc \
    3030       Parser/LinkageSpec.cc \
    31        Parser/parseutility.cc \
    32        Parser/Parser.cc
     31       Parser/parseutility.cc
    3332
    3433MAINTAINERCLEANFILES += Parser/parser.output
  • src/Parser/parser.cc

    r7b1bfc5 r4a7d895  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 3.0.2.  */
    22
    33/* Bison implementation for Yacc-like parsers in C
    4    
    5       Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
    6    
     4
     5   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
     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.  */
     
    4545
    4646/* Bison version.  */
    47 #define YYBISON_VERSION "2.5"
     47#define YYBISON_VERSION "3.0.2"
    4848
    4949/* Skeleton name.  */
     
    5959#define YYPULL 1
    6060
    61 /* Using locations.  */
    62 #define YYLSP_NEEDED 0
    6361
    6462
    6563
    6664/* Copy the first part of user declarations.  */
    67 
    68 /* Line 268 of yacc.c  */
    69 #line 42 "parser.yy"
     65#line 42 "parser.yy" /* yacc.c:339  */
    7066
    7167#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
    7268#define YYDEBUG 1                                                                               // get the pretty debugging code to compile
    73 extern char *yytext;
    7469
    7570#undef __GNUC_MINOR__
     
    8479#include "LinkageSpec.h"
    8580
    86 DeclarationNode *theTree = 0;                                                   // the resulting parse tree
    87 LinkageSpec::Type linkage = LinkageSpec::Cforall;
    88 std::stack< LinkageSpec::Type > linkageStack;
    89 TypedefTable typedefTable;
     81extern DeclarationNode * parseTree;
     82extern LinkageSpec::Spec linkage;
     83extern TypedefTable typedefTable;
     84
     85std::stack< LinkageSpec::Spec > linkageStack;
    9086
    9187void appendStr( std::string &to, std::string *from ) {
     
    9490} // appendStr
    9591
    96 
    97 /* Line 268 of yacc.c  */
    98 #line 99 "Parser/parser.cc"
    99 
    100 /* Enabling traces.  */
    101 #ifndef YYDEBUG
    102 # define YYDEBUG 1
    103 #endif
     92#line 93 "Parser/parser.cc" /* yacc.c:339  */
     93
     94# ifndef YY_NULLPTR
     95#  if defined __cplusplus && 201103L <= __cplusplus
     96#   define YY_NULLPTR nullptr
     97#  else
     98#   define YY_NULLPTR 0
     99#  endif
     100# endif
    104101
    105102/* Enabling verbose error messages.  */
     
    111108#endif
    112109
    113 /* Enabling the token table.  */
    114 #ifndef YYTOKEN_TABLE
    115 # define YYTOKEN_TABLE 0
     110/* In a future release of Bison, this section will be replaced
     111   by #include "y.tab.h".  */
     112#ifndef YY_YY_Y_TAB_H_INCLUDED
     113# define YY_YY_Y_TAB_H_INCLUDED
     114/* Debug traces.  */
     115#ifndef YYDEBUG
     116# define YYDEBUG 1
    116117#endif
    117 
    118 
    119 /* Tokens.  */
     118#if YYDEBUG
     119extern int yydebug;
     120#endif
     121
     122/* Token type.  */
    120123#ifndef YYTOKENTYPE
    121124# define YYTOKENTYPE
    122    /* Put the tokens into the symbol table, so that GDB and other debuggers
    123       know about them.  */
    124    enum yytokentype {
    125      TYPEDEF = 258,
    126      AUTO = 259,
    127      EXTERN = 260,
    128      REGISTER = 261,
    129      STATIC = 262,
    130      INLINE = 263,
    131      FORTRAN = 264,
    132      CONST = 265,
    133      VOLATILE = 266,
    134      RESTRICT = 267,
    135      FORALL = 268,
    136      LVALUE = 269,
    137      VOID = 270,
    138      CHAR = 271,
    139      SHORT = 272,
    140      INT = 273,
    141      LONG = 274,
    142      FLOAT = 275,
    143      DOUBLE = 276,
    144      SIGNED = 277,
    145      UNSIGNED = 278,
    146      VALIST = 279,
    147      BOOL = 280,
    148      COMPLEX = 281,
    149      IMAGINARY = 282,
    150      TYPEOF = 283,
    151      LABEL = 284,
    152      ENUM = 285,
    153      STRUCT = 286,
    154      UNION = 287,
    155      OTYPE = 288,
    156      FTYPE = 289,
    157      DTYPE = 290,
    158      TRAIT = 291,
    159      SIZEOF = 292,
    160      OFFSETOF = 293,
    161      ATTRIBUTE = 294,
    162      EXTENSION = 295,
    163      IF = 296,
    164      ELSE = 297,
    165      SWITCH = 298,
    166      CASE = 299,
    167      DEFAULT = 300,
    168      DO = 301,
    169      WHILE = 302,
    170      FOR = 303,
    171      BREAK = 304,
    172      CONTINUE = 305,
    173      GOTO = 306,
    174      RETURN = 307,
    175      CHOOSE = 308,
    176      DISABLE = 309,
    177      ENABLE = 310,
    178      FALLTHRU = 311,
    179      TRY = 312,
    180      CATCH = 313,
    181      CATCHRESUME = 314,
    182      FINALLY = 315,
    183      THROW = 316,
    184      THROWRESUME = 317,
    185      AT = 318,
    186      ASM = 319,
    187      ALIGNAS = 320,
    188      ALIGNOF = 321,
    189      ATOMIC = 322,
    190      GENERIC = 323,
    191      NORETURN = 324,
    192      STATICASSERT = 325,
    193      THREADLOCAL = 326,
    194      IDENTIFIER = 327,
    195      QUOTED_IDENTIFIER = 328,
    196      TYPEDEFname = 329,
    197      TYPEGENname = 330,
    198      ATTR_IDENTIFIER = 331,
    199      ATTR_TYPEDEFname = 332,
    200      ATTR_TYPEGENname = 333,
    201      INTEGERconstant = 334,
    202      FLOATINGconstant = 335,
    203      CHARACTERconstant = 336,
    204      STRINGliteral = 337,
    205      ZERO = 338,
    206      ONE = 339,
    207      ARROW = 340,
    208      ICR = 341,
    209      DECR = 342,
    210      LS = 343,
    211      RS = 344,
    212      LE = 345,
    213      GE = 346,
    214      EQ = 347,
    215      NE = 348,
    216      ANDAND = 349,
    217      OROR = 350,
    218      ELLIPSIS = 351,
    219      MULTassign = 352,
    220      DIVassign = 353,
    221      MODassign = 354,
    222      PLUSassign = 355,
    223      MINUSassign = 356,
    224      LSassign = 357,
    225      RSassign = 358,
    226      ANDassign = 359,
    227      ERassign = 360,
    228      ORassign = 361,
    229      ATassign = 362,
    230      THEN = 363
    231    };
     125  enum yytokentype
     126  {
     127    TYPEDEF = 258,
     128    AUTO = 259,
     129    EXTERN = 260,
     130    REGISTER = 261,
     131    STATIC = 262,
     132    INLINE = 263,
     133    FORTRAN = 264,
     134    CONST = 265,
     135    VOLATILE = 266,
     136    RESTRICT = 267,
     137    FORALL = 268,
     138    LVALUE = 269,
     139    VOID = 270,
     140    CHAR = 271,
     141    SHORT = 272,
     142    INT = 273,
     143    LONG = 274,
     144    FLOAT = 275,
     145    DOUBLE = 276,
     146    SIGNED = 277,
     147    UNSIGNED = 278,
     148    VALIST = 279,
     149    BOOL = 280,
     150    COMPLEX = 281,
     151    IMAGINARY = 282,
     152    TYPEOF = 283,
     153    LABEL = 284,
     154    ENUM = 285,
     155    STRUCT = 286,
     156    UNION = 287,
     157    OTYPE = 288,
     158    FTYPE = 289,
     159    DTYPE = 290,
     160    TRAIT = 291,
     161    SIZEOF = 292,
     162    OFFSETOF = 293,
     163    ATTRIBUTE = 294,
     164    EXTENSION = 295,
     165    IF = 296,
     166    ELSE = 297,
     167    SWITCH = 298,
     168    CASE = 299,
     169    DEFAULT = 300,
     170    DO = 301,
     171    WHILE = 302,
     172    FOR = 303,
     173    BREAK = 304,
     174    CONTINUE = 305,
     175    GOTO = 306,
     176    RETURN = 307,
     177    CHOOSE = 308,
     178    DISABLE = 309,
     179    ENABLE = 310,
     180    FALLTHRU = 311,
     181    TRY = 312,
     182    CATCH = 313,
     183    CATCHRESUME = 314,
     184    FINALLY = 315,
     185    THROW = 316,
     186    THROWRESUME = 317,
     187    AT = 318,
     188    ASM = 319,
     189    ALIGNAS = 320,
     190    ALIGNOF = 321,
     191    ATOMIC = 322,
     192    GENERIC = 323,
     193    NORETURN = 324,
     194    STATICASSERT = 325,
     195    THREADLOCAL = 326,
     196    IDENTIFIER = 327,
     197    QUOTED_IDENTIFIER = 328,
     198    TYPEDEFname = 329,
     199    TYPEGENname = 330,
     200    ATTR_IDENTIFIER = 331,
     201    ATTR_TYPEDEFname = 332,
     202    ATTR_TYPEGENname = 333,
     203    INTEGERconstant = 334,
     204    FLOATINGconstant = 335,
     205    CHARACTERconstant = 336,
     206    STRINGliteral = 337,
     207    ZERO = 338,
     208    ONE = 339,
     209    ARROW = 340,
     210    ICR = 341,
     211    DECR = 342,
     212    LS = 343,
     213    RS = 344,
     214    LE = 345,
     215    GE = 346,
     216    EQ = 347,
     217    NE = 348,
     218    ANDAND = 349,
     219    OROR = 350,
     220    ELLIPSIS = 351,
     221    MULTassign = 352,
     222    DIVassign = 353,
     223    MODassign = 354,
     224    PLUSassign = 355,
     225    MINUSassign = 356,
     226    LSassign = 357,
     227    RSassign = 358,
     228    ANDassign = 359,
     229    ERassign = 360,
     230    ORassign = 361,
     231    ATassign = 362,
     232    THEN = 363
     233  };
    232234#endif
    233235/* Tokens.  */
     
    339341#define THEN 363
    340342
    341 
    342 
    343 
     343/* Value type.  */
    344344#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    345 typedef union YYSTYPE
     345typedef union YYSTYPE YYSTYPE;
     346union YYSTYPE
    346347{
    347 
    348 /* Line 293 of yacc.c  */
    349 #line 115 "parser.yy"
     348#line 115 "parser.yy" /* yacc.c:355  */
    350349
    351350        Token tok;
     
    363362        bool flag;
    364363
    365 
    366 
    367 /* Line 293 of yacc.c  */
    368 #line 369 "Parser/parser.cc"
    369 } YYSTYPE;
     364#line 365 "Parser/parser.cc" /* yacc.c:355  */
     365};
    370366# define YYSTYPE_IS_TRIVIAL 1
    371 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
    372367# define YYSTYPE_IS_DECLARED 1
    373368#endif
    374369
    375370
     371extern YYSTYPE yylval;
     372
     373int yyparse (void);
     374
     375#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
     376
    376377/* Copy the second part of user declarations.  */
    377378
    378 
    379 /* Line 343 of yacc.c  */
    380 #line 381 "Parser/parser.cc"
     379#line 380 "Parser/parser.cc" /* yacc.c:358  */
    381380
    382381#ifdef short
     
    392391#ifdef YYTYPE_INT8
    393392typedef YYTYPE_INT8 yytype_int8;
    394 #elif (defined __STDC__ || defined __C99__FUNC__ \
    395      || defined __cplusplus || defined _MSC_VER)
     393#else
    396394typedef signed char yytype_int8;
    397 #else
    398 typedef short int yytype_int8;
    399395#endif
    400396
     
    416412# elif defined size_t
    417413#  define YYSIZE_T size_t
    418 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
    419      || defined __cplusplus || defined _MSC_VER)
     414# elif ! defined YYSIZE_T
    420415#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    421416#  define YYSIZE_T size_t
     
    431426#  if ENABLE_NLS
    432427#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
    433 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
     428#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
    434429#  endif
    435430# endif
    436431# ifndef YY_
    437 #  define YY_(msgid) msgid
     432#  define YY_(Msgid) Msgid
    438433# endif
    439434#endif
    440435
     436#ifndef YY_ATTRIBUTE
     437# if (defined __GNUC__                                               \
     438      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
     439     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
     440#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
     441# else
     442#  define YY_ATTRIBUTE(Spec) /* empty */
     443# endif
     444#endif
     445
     446#ifndef YY_ATTRIBUTE_PURE
     447# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
     448#endif
     449
     450#ifndef YY_ATTRIBUTE_UNUSED
     451# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
     452#endif
     453
     454#if !defined _Noreturn \
     455     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
     456# if defined _MSC_VER && 1200 <= _MSC_VER
     457#  define _Noreturn __declspec (noreturn)
     458# else
     459#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
     460# endif
     461#endif
     462
    441463/* Suppress unused-variable warnings by "using" E.  */
    442464#if ! defined lint || defined __GNUC__
    443 # define YYUSE(e) ((void) (e))
     465# define YYUSE(E) ((void) (E))
    444466#else
    445 # define YYUSE(e) /* empty */
     467# define YYUSE(E) /* empty */
    446468#endif
    447469
    448 /* Identity function, used to suppress warnings about constant conditions.  */
    449 #ifndef lint
    450 # define YYID(n) (n)
     470#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
     471/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
     472# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
     473    _Pragma ("GCC diagnostic push") \
     474    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
     475    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
     476# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
     477    _Pragma ("GCC diagnostic pop")
    451478#else
    452 #if (defined __STDC__ || defined __C99__FUNC__ \
    453      || defined __cplusplus || defined _MSC_VER)
    454 static int
    455 YYID (int yyi)
    456 #else
    457 static int
    458 YYID (yyi)
    459     int yyi;
     479# define YY_INITIAL_VALUE(Value) Value
    460480#endif
    461 {
    462   return yyi;
    463 }
     481#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     482# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     483# define YY_IGNORE_MAYBE_UNINITIALIZED_END
    464484#endif
     485#ifndef YY_INITIAL_VALUE
     486# define YY_INITIAL_VALUE(Value) /* Nothing. */
     487#endif
     488
    465489
    466490#if ! defined yyoverflow || YYERROR_VERBOSE
     
    481505#   else
    482506#    define YYSTACK_ALLOC alloca
    483 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
    484      || defined __cplusplus || defined _MSC_VER)
     507#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
    485508#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
     509      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
    486510#     ifndef EXIT_SUCCESS
    487511#      define EXIT_SUCCESS 0
     
    493517
    494518# ifdef YYSTACK_ALLOC
    495    /* Pacify GCC's `empty if-body' warning.  */
    496 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
     519   /* Pacify GCC's 'empty if-body' warning.  */
     520#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
    497521#  ifndef YYSTACK_ALLOC_MAXIMUM
    498522    /* The OS might guarantee only one guard page at the bottom of the stack,
     
    510534#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
    511535       && ! ((defined YYMALLOC || defined malloc) \
    512              && (defined YYFREE || defined free)))
     536             && (defined YYFREE || defined free)))
    513537#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    514538#   ifndef EXIT_SUCCESS
     
    518542#  ifndef YYMALLOC
    519543#   define YYMALLOC malloc
    520 #   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
    521      || defined __cplusplus || defined _MSC_VER)
     544#   if ! defined malloc && ! defined EXIT_SUCCESS
    522545void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
    523546#   endif
     
    525548#  ifndef YYFREE
    526549#   define YYFREE free
    527 #   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
    528      || defined __cplusplus || defined _MSC_VER)
     550#   if ! defined free && ! defined EXIT_SUCCESS
    529551void free (void *); /* INFRINGES ON USER NAME SPACE */
    530552#   endif
     
    536558#if (! defined yyoverflow \
    537559     && (! defined __cplusplus \
    538         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
     560        || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
    539561
    540562/* A type that is properly aligned for any stack member.  */
     
    561583   stack.  Advance YYPTR to a properly aligned location for the next
    562584   stack.  */
    563 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
    564     do                                                                  \
    565       {                                                                 \
    566         YYSIZE_T yynewbytes;                                            \
    567         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
    568         Stack = &yyptr->Stack_alloc;                                    \
    569         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
    570         yyptr += yynewbytes / sizeof (*yyptr);                          \
    571       }                                                                 \
    572     while (YYID (0))
     585# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
     586    do                                                                  \
     587      {                                                                 \
     588        YYSIZE_T yynewbytes;                                            \
     589        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
     590        Stack = &yyptr->Stack_alloc;                                    \
     591        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
     592        yyptr += yynewbytes / sizeof (*yyptr);                          \
     593      }                                                                 \
     594    while (0)
    573595
    574596#endif
    575597
    576598#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
    577 /* Copy COUNT objects from FROM to TO.  The source and destination do
     599/* Copy COUNT objects from SRC to DST.  The source and destination do
    578600   not overlap.  */
    579601# ifndef YYCOPY
    580602#  if defined __GNUC__ && 1 < __GNUC__
    581 #   define YYCOPY(To, From, Count) \
    582       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
     603#   define YYCOPY(Dst, Src, Count) \
     604      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
    583605#  else
    584 #   define YYCOPY(To, From, Count)              \
    585       do                                        \
    586         {                                       \
    587           YYSIZE_T yyi;                         \
    588           for (yyi = 0; yyi < (Count); yyi++)   \
    589             (To)[yyi] = (From)[yyi];            \
    590         }                                       \
    591       while (YYID (0))
     606#   define YYCOPY(Dst, Src, Count)              \
     607      do                                        \
     608        {                                       \
     609          YYSIZE_T yyi;                         \
     610          for (yyi = 0; yyi < (Count); yyi++)   \
     611            (Dst)[yyi] = (Src)[yyi];            \
     612        }                                       \
     613      while (0)
    592614#  endif
    593615# endif
     
    595617
    596618/* YYFINAL -- State number of the termination state.  */
    597 #define YYFINAL  251
     619#define YYFINAL  250
    598620/* YYLAST -- Last index in YYTABLE.  */
    599 #define YYLAST   10816
     621#define YYLAST   10977
    600622
    601623/* YYNTOKENS -- Number of terminals.  */
    602624#define YYNTOKENS  133
    603625/* YYNNTS -- Number of nonterminals.  */
    604 #define YYNNTS  241
     626#define YYNNTS  240
    605627/* YYNRULES -- Number of rules.  */
    606 #define YYNRULES  750
    607 /* YYNRULES -- Number of states.  */
    608 #define YYNSTATES  1554
    609 
    610 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     628#define YYNRULES  749
     629/* YYNSTATES -- Number of states.  */
     630#define YYNSTATES  1553
     631
     632/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
     633   by yylex, with out-of-bounds checking.  */
    611634#define YYUNDEFTOK  2
    612635#define YYMAXUTOK   363
    613636
    614 #define YYTRANSLATE(YYX)                                                \
     637#define YYTRANSLATE(YYX)                                                \
    615638  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
    616639
    617 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
     640/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
     641   as returned by yylex, without out-of-bounds checking.  */
    618642static const yytype_uint8 yytranslate[] =
    619643{
     
    658682
    659683#if YYDEBUG
    660 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    661    YYRHS.  */
    662 static const yytype_uint16 yyprhs[] =
    663 {
    664        0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
    665       17,    19,    21,    23,    25,    27,    29,    31,    34,    36,
    666       38,    42,    46,    48,    55,    60,    64,    72,    76,    84,
    667       87,    90,    98,   103,   105,   109,   110,   112,   114,   118,
    668      120,   124,   132,   136,   144,   146,   148,   150,   153,   156,
    669      159,   162,   165,   168,   173,   176,   181,   188,   190,   195,
    670      200,   202,   204,   206,   208,   210,   212,   214,   219,   224,
    671      226,   230,   234,   238,   240,   244,   248,   250,   254,   258,
    672      260,   264,   268,   272,   276,   278,   282,   286,   288,   292,
    673      294,   298,   300,   304,   306,   310,   312,   316,   318,   324,
    674      329,   335,   337,   339,   343,   346,   347,   349,   351,   353,
    675      355,   357,   359,   361,   363,   365,   367,   369,   371,   374,
    676      380,   387,   395,   397,   401,   403,   407,   408,   410,   412,
    677      414,   416,   418,   420,   422,   424,   426,   433,   438,   441,
    678      449,   451,   455,   457,   460,   462,   465,   467,   470,   473,
    679      479,   487,   493,   503,   509,   519,   521,   525,   527,   529,
    680      533,   537,   540,   542,   545,   548,   549,   551,   554,   558,
    681      559,   561,   564,   568,   572,   577,   578,   580,   582,   585,
    682      591,   599,   606,   613,   618,   622,   627,   630,   634,   637,
    683      641,   645,   649,   653,   659,   663,   667,   672,   674,   680,
    684      687,   693,   700,   710,   721,   731,   742,   745,   747,   750,
    685      753,   756,   758,   765,   774,   785,   798,   813,   814,   816,
    686      817,   819,   821,   825,   830,   838,   839,   841,   845,   847,
    687      851,   853,   855,   857,   861,   863,   865,   867,   871,   872,
    688      874,   878,   883,   885,   889,   891,   893,   897,   901,   905,
    689      909,   913,   916,   920,   927,   931,   935,   940,   942,   945,
    690      948,   952,   958,   967,   975,   983,   989,   999,  1002,  1005,
    691     1011,  1015,  1021,  1026,  1030,  1035,  1040,  1048,  1052,  1056,
    692     1060,  1064,  1069,  1076,  1078,  1080,  1082,  1084,  1086,  1088,
    693     1090,  1092,  1093,  1095,  1097,  1100,  1102,  1104,  1106,  1108,
    694     1110,  1112,  1114,  1115,  1121,  1123,  1126,  1130,  1132,  1135,
    695     1137,  1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,
    696     1157,  1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
    697     1177,  1179,  1181,  1184,  1187,  1191,  1195,  1197,  1201,  1203,
    698     1206,  1209,  1212,  1217,  1222,  1227,  1232,  1234,  1237,  1240,
    699     1244,  1246,  1249,  1252,  1254,  1257,  1260,  1264,  1266,  1269,
    700     1272,  1274,  1276,  1281,  1284,  1285,  1292,  1300,  1303,  1306,
    701     1309,  1310,  1313,  1316,  1320,  1323,  1327,  1329,  1332,  1336,
    702     1339,  1342,  1347,  1348,  1350,  1353,  1356,  1358,  1359,  1361,
    703     1364,  1367,  1373,  1376,  1377,  1385,  1388,  1393,  1394,  1397,
    704     1398,  1400,  1402,  1404,  1410,  1416,  1422,  1424,  1430,  1436,
    705     1446,  1448,  1454,  1455,  1457,  1459,  1465,  1467,  1469,  1475,
    706     1481,  1483,  1487,  1491,  1496,  1498,  1500,  1502,  1504,  1507,
    707     1509,  1513,  1517,  1519,  1522,  1524,  1528,  1530,  1532,  1534,
    708     1536,  1538,  1540,  1542,  1544,  1546,  1548,  1550,  1553,  1555,
    709     1557,  1559,  1562,  1563,  1566,  1569,  1571,  1576,  1577,  1579,
    710     1582,  1586,  1591,  1594,  1597,  1599,  1602,  1605,  1611,  1617,
    711     1625,  1632,  1634,  1637,  1640,  1644,  1646,  1649,  1652,  1657,
    712     1660,  1665,  1666,  1671,  1674,  1676,  1678,  1680,  1681,  1684,
    713     1690,  1696,  1710,  1712,  1714,  1718,  1722,  1725,  1729,  1733,
    714     1736,  1741,  1743,  1750,  1760,  1761,  1773,  1775,  1779,  1783,
    715     1787,  1789,  1791,  1797,  1800,  1806,  1807,  1809,  1811,  1815,
    716     1816,  1818,  1820,  1822,  1824,  1825,  1832,  1835,  1837,  1840,
    717     1845,  1848,  1852,  1856,  1860,  1865,  1871,  1877,  1883,  1890,
    718     1892,  1894,  1896,  1900,  1901,  1907,  1908,  1910,  1912,  1915,
    719     1922,  1924,  1928,  1929,  1931,  1936,  1938,  1940,  1942,  1944,
    720     1947,  1949,  1952,  1955,  1957,  1961,  1964,  1968,  1972,  1975,
    721     1980,  1985,  1989,  1998,  2002,  2005,  2007,  2010,  2017,  2026,
    722     2030,  2033,  2037,  2041,  2046,  2051,  2055,  2057,  2059,  2061,
    723     2066,  2073,  2077,  2080,  2084,  2088,  2093,  2098,  2102,  2105,
    724     2107,  2110,  2113,  2115,  2119,  2122,  2126,  2130,  2133,  2138,
    725     2143,  2147,  2154,  2163,  2167,  2170,  2172,  2175,  2178,  2181,
    726     2185,  2189,  2192,  2197,  2202,  2206,  2213,  2222,  2226,  2229,
    727     2231,  2234,  2237,  2239,  2241,  2244,  2248,  2252,  2255,  2260,
    728     2267,  2276,  2278,  2281,  2284,  2286,  2289,  2292,  2296,  2300,
    729     2302,  2307,  2312,  2316,  2322,  2331,  2335,  2338,  2342,  2344,
    730     2350,  2356,  2363,  2370,  2372,  2375,  2378,  2380,  2383,  2386,
    731     2390,  2394,  2396,  2401,  2406,  2410,  2416,  2425,  2429,  2431,
    732     2434,  2436,  2439,  2446,  2452,  2459,  2467,  2475,  2477,  2480,
    733     2483,  2485,  2488,  2491,  2495,  2499,  2501,  2506,  2511,  2515,
    734     2524,  2528,  2530,  2532,  2535,  2537,  2539,  2542,  2546,  2549,
    735     2553,  2556,  2560,  2564,  2567,  2572,  2576,  2579,  2583,  2586,
    736     2591,  2595,  2598,  2605,  2612,  2619,  2627,  2629,  2632,  2634,
    737     2636,  2638,  2641,  2645,  2648,  2652,  2655,  2659,  2663,  2668,
    738     2671,  2675,  2680,  2683,  2689,  2695,  2702,  2709,  2710,  2712,
    739     2713
    740 };
    741 
    742 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
    743 static const yytype_int16 yyrhs[] =
    744 {
    745      302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
    746       -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
    747       -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,    82,
    748       -1,   141,    82,    -1,    72,    -1,   140,    -1,   109,   169,
    749      110,    -1,   109,   173,   110,    -1,   142,    -1,   143,   111,
    750      134,   164,   135,   112,    -1,   143,   109,   144,   110,    -1,
    751      143,   113,   139,    -1,   143,   113,   111,   134,   146,   135,
    752      112,    -1,   143,    85,   139,    -1,   143,    85,   111,   134,
    753      146,   135,   112,    -1,   143,    86,    -1,   143,    87,    -1,
    754      109,   275,   110,   114,   279,   372,   115,    -1,   143,   114,
    755      144,   115,    -1,   145,    -1,   144,   116,   145,    -1,    -1,
    756      164,    -1,   147,    -1,   146,   116,   147,    -1,   139,    -1,
    757      139,   113,   147,    -1,   139,   113,   111,   134,   146,   135,
    758      112,    -1,   139,    85,   147,    -1,   139,    85,   111,   134,
    759      146,   135,   112,    -1,   143,    -1,   136,    -1,   141,    -1,
    760       40,   151,    -1,   149,   151,    -1,   150,   151,    -1,    86,
    761      148,    -1,    87,   148,    -1,    37,   148,    -1,    37,   109,
    762      275,   110,    -1,    66,   148,    -1,    66,   109,   275,   110,
    763       -1,    38,   109,   275,   116,   139,   110,    -1,    76,    -1,
    764       76,   109,   145,   110,    -1,    76,   109,   276,   110,    -1,
    765      117,    -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,
    766      122,    -1,   148,    -1,   109,   275,   110,   151,    -1,   109,
    767      275,   110,   167,    -1,   151,    -1,   152,   117,   151,    -1,
    768      152,   123,   151,    -1,   152,   124,   151,    -1,   152,    -1,
    769      153,   119,   152,    -1,   153,   120,   152,    -1,   153,    -1,
    770      154,    88,   153,    -1,   154,    89,   153,    -1,   154,    -1,
    771      155,   125,   154,    -1,   155,   126,   154,    -1,   155,    90,
    772      154,    -1,   155,    91,   154,    -1,   155,    -1,   156,    92,
    773      155,    -1,   156,    93,   155,    -1,   156,    -1,   157,   118,
    774      156,    -1,   157,    -1,   158,   127,   157,    -1,   158,    -1,
    775      159,   128,   158,    -1,   159,    -1,   160,    94,   159,    -1,
    776      160,    -1,   161,    95,   160,    -1,   161,    -1,   161,   129,
    777      169,   130,   162,    -1,   161,   129,   130,   162,    -1,   161,
    778      129,   169,   130,   167,    -1,   162,    -1,   162,    -1,   148,
    779      166,   164,    -1,   167,   373,    -1,    -1,   164,    -1,   131,
    780       -1,    97,    -1,    98,    -1,    99,    -1,   100,    -1,   101,
    781       -1,   102,    -1,   103,    -1,   104,    -1,   105,    -1,   106,
    782       -1,   111,   112,    -1,   111,   134,   164,   135,   112,    -1,
    783      111,   134,   116,   168,   135,   112,    -1,   111,   134,   164,
    784      116,   168,   135,   112,    -1,   165,    -1,   168,   116,   165,
    785       -1,   164,    -1,   169,   116,   164,    -1,    -1,   169,    -1,
    786      172,    -1,   173,    -1,   177,    -1,   178,    -1,   190,    -1,
    787      192,    -1,   193,    -1,   198,    -1,   127,   143,   114,   144,
    788      115,   132,    -1,    72,   130,   312,   171,    -1,   114,   115,
    789       -1,   114,   134,   134,   209,   174,   135,   115,    -1,   175,
    790       -1,   174,   134,   175,    -1,   212,    -1,    40,   212,    -1,
    791      308,    -1,   171,   135,    -1,   171,    -1,   176,   171,    -1,
    792      170,   132,    -1,    41,   109,   169,   110,   171,    -1,    41,
    793      109,   169,   110,   171,    42,   171,    -1,    43,   109,   169,
    794      110,   183,    -1,    43,   109,   169,   110,   114,   134,   205,
    795      184,   115,    -1,    53,   109,   169,   110,   183,    -1,    53,
    796      109,   169,   110,   114,   134,   205,   186,   115,    -1,   163,
    797       -1,   163,    96,   163,    -1,   310,    -1,   179,    -1,   180,
    798      116,   179,    -1,    44,   180,   130,    -1,    45,   130,    -1,
    799      181,    -1,   182,   181,    -1,   182,   171,    -1,    -1,   185,
    800       -1,   182,   176,    -1,   185,   182,   176,    -1,    -1,   187,
    801       -1,   182,   189,    -1,   182,   176,   188,    -1,   187,   182,
    802      189,    -1,   187,   182,   176,   188,    -1,    -1,   189,    -1,
    803       56,    -1,    56,   132,    -1,    47,   109,   169,   110,   171,
    804       -1,    46,   171,    47,   109,   169,   110,   132,    -1,    48,
    805      109,   134,   191,   110,   171,    -1,   170,   135,   132,   170,
    806      132,   170,    -1,   212,   170,   132,   170,    -1,    51,    72,
    807      132,    -1,    51,   117,   169,   132,    -1,    50,   132,    -1,
    808       50,    72,   132,    -1,    49,   132,    -1,    49,    72,   132,
    809       -1,    52,   170,   132,    -1,    61,   165,   132,    -1,    62,
    810      165,   132,    -1,    62,   165,    63,   164,   132,    -1,    57,
    811      173,   194,    -1,    57,   173,   196,    -1,    57,   173,   194,
    812      196,    -1,   195,    -1,    58,   109,    96,   110,   173,    -1,
    813      195,    58,   109,    96,   110,   173,    -1,    59,   109,    96,
    814      110,   173,    -1,   195,    59,   109,    96,   110,   173,    -1,
    815       58,   109,   134,   134,   197,   135,   110,   173,   135,    -1,
    816      195,    58,   109,   134,   134,   197,   135,   110,   173,   135,
    817       -1,    59,   109,   134,   134,   197,   135,   110,   173,   135,
    818       -1,   195,    59,   109,   134,   134,   197,   135,   110,   173,
    819      135,    -1,    60,   173,    -1,   225,    -1,   225,   309,    -1,
    820      225,   357,    -1,   366,   139,    -1,   366,    -1,    64,   199,
    821      109,   141,   110,   132,    -1,    64,   199,   109,   141,   130,
    822      200,   110,   132,    -1,    64,   199,   109,   141,   130,   200,
    823      130,   200,   110,   132,    -1,    64,   199,   109,   141,   130,
    824      200,   130,   200,   130,   203,   110,   132,    -1,    64,   199,
    825       51,   109,   141,   130,   130,   200,   130,   203,   130,   204,
    826      110,   132,    -1,    -1,    11,    -1,    -1,   201,    -1,   202,
    827       -1,   201,   116,   202,    -1,   141,   109,   163,   110,    -1,
    828      111,   163,   112,   141,   109,   163,   110,    -1,    -1,   141,
    829       -1,   203,   116,   141,    -1,   139,    -1,   204,   116,   139,
    830       -1,   135,    -1,   206,    -1,   212,    -1,   206,   134,   212,
    831       -1,   135,    -1,   208,    -1,   222,    -1,   208,   134,   222,
    832       -1,    -1,   210,    -1,    29,   211,   132,    -1,   210,    29,
    833      211,   132,    -1,   274,    -1,   211,   116,   274,    -1,   213,
    834       -1,   222,    -1,   214,   135,   132,    -1,   219,   135,   132,
    835       -1,   216,   135,   132,    -1,   293,   135,   132,    -1,   296,
    836      135,   132,    -1,   215,   277,    -1,   231,   215,   277,    -1,
    837      214,   135,   116,   134,   272,   277,    -1,   367,   272,   311,
    838       -1,   370,   272,   311,    -1,   227,   370,   272,   311,    -1,
    839      217,    -1,   227,   217,    -1,   231,   217,    -1,   231,   227,
    840      217,    -1,   216,   135,   116,   134,   272,    -1,   111,   112,
    841      272,   109,   134,   260,   135,   110,    -1,   370,   272,   109,
    842      134,   260,   135,   110,    -1,   218,   272,   109,   134,   260,
    843      135,   110,    -1,   111,   134,   262,   135,   112,    -1,   111,
    844      134,   262,   135,   116,   134,   263,   135,   112,    -1,     3,
    845      215,    -1,     3,   217,    -1,   219,   135,   116,   134,   139,
    846       -1,     3,   225,   309,    -1,   220,   135,   116,   134,   309,
    847       -1,   227,     3,   225,   309,    -1,   225,     3,   309,    -1,
    848      225,     3,   227,   309,    -1,     3,   139,   131,   164,    -1,
    849      221,   135,   116,   134,   139,   131,   164,    -1,   223,   135,
    850      132,    -1,   220,   135,   132,    -1,   221,   135,   132,    -1,
    851      240,   135,   132,    -1,   224,   309,   311,   277,    -1,   223,
    852      116,   312,   309,   311,   277,    -1,   236,    -1,   240,    -1,
    853      242,    -1,   283,    -1,   237,    -1,   241,    -1,   243,    -1,
    854      284,    -1,    -1,   227,    -1,   228,    -1,   227,   228,    -1,
    855      229,    -1,   314,    -1,    10,    -1,    12,    -1,    11,    -1,
    856       14,    -1,    67,    -1,    -1,    13,   109,   230,   286,   110,
    857       -1,   232,    -1,   227,   232,    -1,   231,   227,   232,    -1,
    858      233,    -1,   232,   233,    -1,   234,    -1,     5,    -1,     7,
    859       -1,     4,    -1,     6,    -1,     8,    -1,     9,    -1,    69,
    860       -1,    71,    -1,    16,    -1,    21,    -1,    20,    -1,    18,
    861       -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,    15,
    862       -1,    25,    -1,    26,    -1,    27,    -1,    24,    -1,   237,
    863       -1,   231,   237,    -1,   236,   233,    -1,   236,   233,   227,
    864       -1,   236,   233,   237,    -1,   238,    -1,   226,   239,   226,
    865       -1,   235,    -1,   227,   235,    -1,   238,   228,    -1,   238,
    866      235,    -1,    28,   109,   276,   110,    -1,    28,   109,   169,
    867      110,    -1,    78,   109,   276,   110,    -1,    78,   109,   169,
    868      110,    -1,   241,    -1,   231,   241,    -1,   240,   233,    -1,
    869      240,   233,   227,    -1,   244,    -1,   227,   244,    -1,   241,
    870      228,    -1,   243,    -1,   231,   243,    -1,   242,   233,    -1,
    871      242,   233,   227,    -1,    74,    -1,   227,    74,    -1,   243,
    872      228,    -1,   245,    -1,   256,    -1,   247,   114,   248,   115,
    873       -1,   247,   274,    -1,    -1,   247,   274,   246,   114,   248,
    874      115,    -1,   247,   109,   292,   110,   114,   248,   115,    -1,
    875      247,   285,    -1,    31,   312,    -1,    32,   312,    -1,    -1,
    876      248,   249,    -1,   250,   132,    -1,    40,   250,   132,    -1,
    877      251,   132,    -1,    40,   251,   132,    -1,   366,    -1,   366,
    878      274,    -1,   250,   116,   274,    -1,   250,   116,    -1,   225,
    879      252,    -1,   251,   116,   312,   252,    -1,    -1,   254,    -1,
    880      318,   253,    -1,   331,   253,    -1,   357,    -1,    -1,   254,
    881       -1,   130,   163,    -1,    30,   312,    -1,   255,   114,   258,
    882      372,   115,    -1,   255,   274,    -1,    -1,   255,   274,   257,
    883      114,   258,   372,   115,    -1,   274,   259,    -1,   258,   116,
    884      274,   259,    -1,    -1,   131,   163,    -1,    -1,   261,    -1,
    885      263,    -1,   262,    -1,   262,   135,   116,   134,   263,    -1,
    886      263,   135,   116,   134,    96,    -1,   262,   135,   116,   134,
    887       96,    -1,   267,    -1,   263,   135,   116,   134,   267,    -1,
    888      262,   135,   116,   134,   267,    -1,   262,   135,   116,   134,
    889      263,   135,   116,   134,   267,    -1,   268,    -1,   263,   135,
    890      116,   134,   268,    -1,    -1,   265,    -1,   266,    -1,   266,
    891      135,   116,   134,    96,    -1,   270,    -1,   269,    -1,   266,
    892      135,   116,   134,   270,    -1,   266,   135,   116,   134,   269,
    893       -1,   269,    -1,   362,   272,   373,    -1,   370,   272,   373,
    894       -1,   227,   370,   272,   373,    -1,   217,    -1,   270,    -1,
    895      362,    -1,   370,    -1,   227,   370,    -1,   371,    -1,   224,
    896      336,   373,    -1,   224,   340,   373,    -1,   224,    -1,   224,
    897      351,    -1,   139,    -1,   271,   116,   139,    -1,   137,    -1,
    898       74,    -1,    75,    -1,   138,    -1,    74,    -1,    75,    -1,
    899      139,    -1,    74,    -1,    75,    -1,   366,    -1,   225,    -1,
    900      225,   357,    -1,   366,    -1,   371,    -1,   225,    -1,   225,
    901      345,    -1,    -1,   131,   278,    -1,   107,   278,    -1,   164,
    902       -1,   114,   279,   372,   115,    -1,    -1,   278,    -1,   280,
    903      278,    -1,   279,   116,   278,    -1,   279,   116,   280,   278,
    904       -1,   281,   130,    -1,   274,   130,    -1,   282,    -1,   281,
    905      282,    -1,   113,   274,    -1,   111,   134,   164,   135,   112,
    906       -1,   111,   134,   310,   135,   112,    -1,   111,   134,   163,
    907       96,   163,   135,   112,    -1,   113,   111,   134,   146,   135,
    908      112,    -1,   284,    -1,   231,   284,    -1,   283,   233,    -1,
    909      283,   233,   227,    -1,   285,    -1,   227,   285,    -1,   284,
    910      228,    -1,    75,   109,   292,   110,    -1,   287,   373,    -1,
    911      286,   116,   287,   373,    -1,    -1,   289,   274,   288,   290,
    912       -1,   225,   336,    -1,    33,    -1,    35,    -1,    34,    -1,
    913       -1,   290,   291,    -1,   128,   274,   109,   292,   110,    -1,
    914      128,   114,   134,   298,   115,    -1,   128,   109,   134,   286,
    915      135,   110,   114,   134,   298,   115,   109,   292,   110,    -1,
    916      276,    -1,   164,    -1,   292,   116,   276,    -1,   292,   116,
    917      164,    -1,    33,   294,    -1,   232,    33,   294,    -1,   293,
    918      116,   294,    -1,   295,   290,    -1,   295,   290,   131,   276,
    919       -1,   274,    -1,   273,   109,   134,   286,   135,   110,    -1,
    920       36,   274,   109,   134,   286,   135,   110,   114,   115,    -1,
    921       -1,    36,   274,   109,   134,   286,   135,   110,   114,   297,
    922      298,   115,    -1,   299,    -1,   298,   134,   299,    -1,   300,
    923      135,   132,    -1,   301,   135,   132,    -1,   215,    -1,   217,
    924       -1,   300,   135,   116,   134,   272,    -1,   225,   309,    -1,
    925      301,   135,   116,   134,   309,    -1,    -1,   303,    -1,   305,
    926       -1,   303,   134,   305,    -1,    -1,   303,    -1,   212,    -1,
    927      307,    -1,   198,    -1,    -1,     5,    82,   306,   114,   304,
    928      115,    -1,    40,   305,    -1,   308,    -1,   323,   173,    -1,
    929      327,   134,   207,   173,    -1,   216,   173,    -1,   224,   323,
    930      173,    -1,   227,   323,   173,    -1,   231,   323,   173,    -1,
    931      231,   227,   323,   173,    -1,   224,   327,   134,   207,   173,
    932       -1,   227,   327,   134,   207,   173,    -1,   231,   327,   134,
    933      207,   173,    -1,   231,   227,   327,   134,   207,   173,    -1,
    934      318,    -1,   331,    -1,   323,    -1,   163,   122,   163,    -1,
    935       -1,    64,   109,   141,   110,   312,    -1,    -1,   313,    -1,
    936      314,    -1,   313,   314,    -1,    39,   109,   109,   315,   110,
    937      110,    -1,   316,    -1,   315,   116,   316,    -1,    -1,   317,
    938       -1,   317,   109,   170,   110,    -1,   272,    -1,   234,    -1,
    939      235,    -1,   228,    -1,   319,   312,    -1,   320,    -1,   321,
    940      312,    -1,   322,   312,    -1,   137,    -1,   109,   319,   110,
    941       -1,   149,   318,    -1,   149,   227,   318,    -1,   109,   320,
    942      110,    -1,   319,   349,    -1,   109,   320,   110,   349,    -1,
    943      109,   321,   110,   350,    -1,   109,   321,   110,    -1,   109,
    944      320,   110,   109,   134,   264,   135,   110,    -1,   109,   322,
    945      110,    -1,   324,   312,    -1,   325,    -1,   326,   312,    -1,
    946      319,   109,   134,   264,   135,   110,    -1,   109,   325,   110,
    947      109,   134,   264,   135,   110,    -1,   109,   324,   110,    -1,
    948      149,   323,    -1,   149,   227,   323,    -1,   109,   325,   110,
    949       -1,   109,   325,   110,   349,    -1,   109,   326,   110,   350,
    950       -1,   109,   326,   110,    -1,   328,    -1,   329,    -1,   330,
    951       -1,   319,   109,   271,   110,    -1,   109,   329,   110,   109,
    952      271,   110,    -1,   109,   328,   110,    -1,   149,   327,    -1,
    953      149,   227,   327,    -1,   109,   329,   110,    -1,   109,   329,
    954      110,   349,    -1,   109,   330,   110,   350,    -1,   109,   330,
    955      110,    -1,   332,   312,    -1,   333,    -1,   334,   312,    -1,
    956      335,   312,    -1,   341,    -1,   109,   332,   110,    -1,   149,
    957      331,    -1,   149,   227,   331,    -1,   109,   333,   110,    -1,
    958      332,   349,    -1,   109,   333,   110,   349,    -1,   109,   334,
    959      110,   350,    -1,   109,   334,   110,    -1,   332,   109,   134,
    960      264,   135,   110,    -1,   109,   333,   110,   109,   134,   264,
    961      135,   110,    -1,   109,   335,   110,    -1,   319,   312,    -1,
    962      337,    -1,   338,   312,    -1,   339,   312,    -1,   149,   336,
    963       -1,   149,   227,   336,    -1,   109,   337,   110,    -1,   319,
    964      355,    -1,   109,   337,   110,   349,    -1,   109,   338,   110,
    965      350,    -1,   109,   338,   110,    -1,   319,   109,   134,   264,
    966      135,   110,    -1,   109,   337,   110,   109,   134,   264,   135,
    967      110,    -1,   109,   339,   110,    -1,   341,   312,    -1,   342,
    968       -1,   343,   312,    -1,   344,   312,    -1,    74,    -1,    75,
    969       -1,   149,   340,    -1,   149,   227,   340,    -1,   109,   342,
    970      110,    -1,   341,   355,    -1,   109,   342,   110,   355,    -1,
    971      341,   109,   134,   264,   135,   110,    -1,   109,   342,   110,
    972      109,   134,   264,   135,   110,    -1,   346,    -1,   347,   312,
    973       -1,   348,   312,    -1,   149,    -1,   149,   227,    -1,   149,
    974      345,    -1,   149,   227,   345,    -1,   109,   346,   110,    -1,
    975      349,    -1,   109,   346,   110,   349,    -1,   109,   347,   110,
    976      350,    -1,   109,   347,   110,    -1,   109,   134,   264,   135,
    977      110,    -1,   109,   346,   110,   109,   134,   264,   135,   110,
    978       -1,   109,   348,   110,    -1,   111,   112,    -1,   111,   112,
    979      350,    -1,   350,    -1,   111,   134,   164,   135,   112,    -1,
    980      111,   134,   117,   135,   112,    -1,   350,   111,   134,   164,
    981      135,   112,    -1,   350,   111,   134,   117,   135,   112,    -1,
    982      352,    -1,   353,   312,    -1,   354,   312,    -1,   149,    -1,
    983      149,   227,    -1,   149,   351,    -1,   149,   227,   351,    -1,
    984      109,   352,   110,    -1,   355,    -1,   109,   352,   110,   355,
    985       -1,   109,   353,   110,   350,    -1,   109,   353,   110,    -1,
    986      109,   134,   264,   135,   110,    -1,   109,   352,   110,   109,
    987      134,   264,   135,   110,    -1,   109,   354,   110,    -1,   356,
    988       -1,   356,   350,    -1,   350,    -1,   111,   112,    -1,   111,
    989      134,   227,   117,   135,   112,    -1,   111,   134,   227,   135,
    990      112,    -1,   111,   134,   227,   164,   135,   112,    -1,   111,
    991      134,     7,   226,   164,   135,   112,    -1,   111,   134,   227,
    992        7,   164,   135,   112,    -1,   358,    -1,   359,   312,    -1,
    993      360,   312,    -1,   149,    -1,   149,   227,    -1,   149,   357,
    994       -1,   149,   227,   357,    -1,   109,   358,   110,    -1,   349,
    995       -1,   109,   358,   110,   349,    -1,   109,   359,   110,   350,
    996       -1,   109,   359,   110,    -1,   109,   358,   110,   109,   134,
    997      264,   135,   110,    -1,   109,   360,   110,    -1,   362,    -1,
    998      370,    -1,   227,   370,    -1,   363,    -1,   364,    -1,   149,
    999      225,    -1,   227,   149,   225,    -1,   149,   371,    -1,   227,
    1000      149,   371,    -1,   149,   361,    -1,   227,   149,   361,    -1,
    1001      111,   112,   225,    -1,   365,   225,    -1,   111,   112,   350,
    1002      225,    -1,   365,   350,   225,    -1,   350,   225,    -1,   111,
    1003      112,   363,    -1,   365,   363,    -1,   111,   112,   350,   363,
    1004       -1,   365,   350,   363,    -1,   350,   363,    -1,   111,   134,
    1005      227,   117,   135,   112,    -1,   111,   134,   227,   164,   135,
    1006      112,    -1,   111,   134,   231,   164,   135,   112,    -1,   111,
    1007      134,   231,   227,   164,   135,   112,    -1,   370,    -1,   227,
    1008      370,    -1,   367,    -1,   368,    -1,   369,    -1,   149,   225,
    1009       -1,   227,   149,   225,    -1,   149,   371,    -1,   227,   149,
    1010      371,    -1,   149,   366,    -1,   227,   149,   366,    -1,   111,
    1011      112,   225,    -1,   111,   112,   350,   225,    -1,   350,   225,
    1012       -1,   111,   112,   368,    -1,   111,   112,   350,   368,    -1,
    1013      350,   368,    -1,   111,   134,   263,   135,   112,    -1,   111,
    1014      112,   109,   260,   110,    -1,   370,   109,   134,   260,   135,
    1015      110,    -1,   218,   109,   134,   260,   135,   110,    -1,    -1,
    1016      116,    -1,    -1,   131,   164,    -1
    1017 };
    1018 
    1019 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
     684  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
    1020685static const yytype_uint16 yyrline[] =
    1021686{
     
    1051716    1258,  1263,  1264,  1273,  1274,  1279,  1280,  1285,  1287,  1289,
    1052717    1291,  1293,  1296,  1295,  1307,  1308,  1310,  1320,  1321,  1326,
    1053     1330,  1332,  1334,  1336,  1338,  1340,  1342,  1344,  1349,  1351,
    1054     1353,  1355,  1357,  1359,  1361,  1363,  1365,  1367,  1369,  1371,
    1055     1373,  1379,  1380,  1382,  1384,  1386,  1391,  1392,  1398,  1399,
    1056     1401,  1403,  1408,  1410,  1412,  1414,  1419,  1420,  1422,  1424,
    1057     1429,  1430,  1432,  1437,  1438,  1440,  1442,  1447,  1449,  1451,
    1058     1456,  1457,  1461,  1463,  1469,  1468,  1472,  1474,  1479,  1481,
    1059     1487,  1488,  1493,  1494,  1496,  1497,  1506,  1507,  1509,  1511,
    1060     1516,  1518,  1524,  1525,  1527,  1530,  1533,  1538,  1539,  1544,
    1061     1549,  1553,  1555,  1561,  1560,  1567,  1569,  1575,  1576,  1584,
    1062     1585,  1589,  1590,  1591,  1593,  1595,  1602,  1603,  1605,  1607,
    1063     1612,  1613,  1619,  1620,  1624,  1625,  1630,  1631,  1632,  1634,
    1064     1642,  1643,  1645,  1648,  1650,  1654,  1655,  1656,  1658,  1660,
    1065     1664,  1669,  1677,  1678,  1687,  1689,  1694,  1695,  1696,  1700,
    1066     1701,  1702,  1706,  1707,  1708,  1712,  1713,  1714,  1719,  1720,
    1067     1721,  1722,  1728,  1729,  1731,  1736,  1737,  1742,  1743,  1744,
    1068     1745,  1746,  1761,  1762,  1767,  1768,  1774,  1776,  1779,  1781,
    1069     1783,  1806,  1807,  1809,  1811,  1816,  1817,  1819,  1824,  1829,
    1070     1830,  1836,  1835,  1839,  1843,  1845,  1847,  1853,  1854,  1859,
    1071     1864,  1866,  1871,  1873,  1874,  1876,  1881,  1883,  1885,  1890,
    1072     1892,  1897,  1902,  1910,  1916,  1915,  1929,  1930,  1935,  1936,
    1073     1940,  1945,  1950,  1958,  1963,  1974,  1975,  1986,  1987,  1993,
    1074     1994,  1998,  1999,  2000,  2003,  2002,  2013,  2022,  2028,  2034,
    1075     2043,  2049,  2055,  2061,  2067,  2075,  2081,  2089,  2095,  2104,
    1076     2105,  2106,  2110,  2114,  2116,  2121,  2122,  2126,  2127,  2132,
    1077     2138,  2139,  2142,  2144,  2145,  2149,  2150,  2151,  2152,  2186,
    1078     2188,  2189,  2191,  2196,  2201,  2206,  2208,  2210,  2215,  2217,
    1079     2219,  2221,  2226,  2228,  2237,  2239,  2240,  2245,  2247,  2249,
    1080     2254,  2256,  2258,  2263,  2265,  2267,  2276,  2277,  2278,  2282,
    1081     2284,  2286,  2291,  2293,  2295,  2300,  2302,  2304,  2319,  2321,
    1082     2322,  2324,  2329,  2330,  2335,  2337,  2339,  2344,  2346,  2348,
    1083     2350,  2355,  2357,  2359,  2369,  2371,  2372,  2374,  2379,  2381,
    1084     2383,  2388,  2390,  2392,  2394,  2399,  2401,  2403,  2434,  2436,
    1085     2437,  2439,  2444,  2449,  2457,  2459,  2461,  2466,  2468,  2473,
    1086     2475,  2489,  2490,  2492,  2497,  2499,  2501,  2503,  2505,  2510,
    1087     2511,  2513,  2515,  2520,  2522,  2524,  2530,  2532,  2534,  2538,
    1088     2540,  2542,  2544,  2558,  2559,  2561,  2566,  2568,  2570,  2572,
    1089     2574,  2579,  2580,  2582,  2584,  2589,  2591,  2593,  2599,  2600,
    1090     2602,  2611,  2614,  2616,  2619,  2621,  2623,  2636,  2637,  2639,
    1091     2644,  2646,  2648,  2650,  2652,  2657,  2658,  2660,  2662,  2667,
    1092     2669,  2677,  2678,  2679,  2684,  2685,  2689,  2691,  2693,  2695,
    1093     2697,  2699,  2706,  2708,  2710,  2712,  2714,  2716,  2718,  2720,
    1094     2722,  2724,  2729,  2731,  2733,  2738,  2764,  2765,  2767,  2771,
    1095     2772,  2776,  2778,  2780,  2782,  2784,  2786,  2793,  2795,  2797,
    1096     2799,  2801,  2803,  2808,  2813,  2815,  2817,  2835,  2837,  2842,
    1097     2843
     718    1328,  1330,  1332,  1334,  1336,  1338,  1340,  1345,  1347,  1349,
     719    1351,  1353,  1355,  1357,  1359,  1361,  1363,  1365,  1367,  1369,
     720    1375,  1376,  1378,  1380,  1382,  1387,  1388,  1394,  1395,  1397,
     721    1399,  1404,  1406,  1408,  1410,  1415,  1416,  1418,  1420,  1425,
     722    1426,  1428,  1433,  1434,  1436,  1438,  1443,  1445,  1447,  1452,
     723    1453,  1457,  1459,  1465,  1464,  1468,  1470,  1475,  1477,  1483,
     724    1484,  1489,  1490,  1492,  1493,  1502,  1503,  1505,  1507,  1512,
     725    1514,  1520,  1521,  1523,  1526,  1529,  1534,  1535,  1540,  1545,
     726    1549,  1551,  1557,  1556,  1563,  1565,  1571,  1572,  1580,  1581,
     727    1585,  1586,  1587,  1589,  1591,  1598,  1599,  1601,  1603,  1608,
     728    1609,  1615,  1616,  1620,  1621,  1626,  1627,  1628,  1630,  1638,
     729    1639,  1641,  1644,  1646,  1650,  1651,  1652,  1654,  1656,  1660,
     730    1665,  1673,  1674,  1683,  1685,  1690,  1691,  1692,  1696,  1697,
     731    1698,  1702,  1703,  1704,  1708,  1709,  1710,  1715,  1716,  1717,
     732    1718,  1724,  1725,  1727,  1732,  1733,  1738,  1739,  1740,  1741,
     733    1742,  1757,  1758,  1763,  1764,  1770,  1772,  1775,  1777,  1779,
     734    1802,  1803,  1805,  1807,  1812,  1813,  1815,  1820,  1825,  1826,
     735    1832,  1831,  1835,  1839,  1841,  1843,  1849,  1850,  1855,  1860,
     736    1862,  1867,  1869,  1870,  1872,  1877,  1879,  1881,  1886,  1888,
     737    1893,  1898,  1906,  1912,  1911,  1925,  1926,  1931,  1932,  1936,
     738    1941,  1946,  1954,  1959,  1970,  1971,  1976,  1977,  1983,  1984,
     739    1988,  1989,  1990,  1993,  1992,  2003,  2012,  2018,  2024,  2033,
     740    2039,  2045,  2051,  2057,  2065,  2071,  2079,  2085,  2094,  2095,
     741    2096,  2100,  2104,  2106,  2111,  2112,  2116,  2117,  2122,  2128,
     742    2129,  2132,  2134,  2135,  2139,  2140,  2141,  2142,  2176,  2178,
     743    2179,  2181,  2186,  2191,  2196,  2198,  2200,  2205,  2207,  2209,
     744    2211,  2216,  2218,  2227,  2229,  2230,  2235,  2237,  2239,  2244,
     745    2246,  2248,  2253,  2255,  2257,  2266,  2267,  2268,  2272,  2274,
     746    2276,  2281,  2283,  2285,  2290,  2292,  2294,  2309,  2311,  2312,
     747    2314,  2319,  2320,  2325,  2327,  2329,  2334,  2336,  2338,  2340,
     748    2345,  2347,  2349,  2359,  2361,  2362,  2364,  2369,  2371,  2373,
     749    2378,  2380,  2382,  2384,  2389,  2391,  2393,  2424,  2426,  2427,
     750    2429,  2434,  2439,  2447,  2449,  2451,  2456,  2458,  2463,  2465,
     751    2479,  2480,  2482,  2487,  2489,  2491,  2493,  2495,  2500,  2501,
     752    2503,  2505,  2510,  2512,  2514,  2520,  2522,  2524,  2528,  2530,
     753    2532,  2534,  2548,  2549,  2551,  2556,  2558,  2560,  2562,  2564,
     754    2569,  2570,  2572,  2574,  2579,  2581,  2583,  2589,  2590,  2592,
     755    2601,  2604,  2606,  2609,  2611,  2613,  2626,  2627,  2629,  2634,
     756    2636,  2638,  2640,  2642,  2647,  2648,  2650,  2652,  2657,  2659,
     757    2667,  2668,  2669,  2674,  2675,  2679,  2681,  2683,  2685,  2687,
     758    2689,  2696,  2698,  2700,  2702,  2704,  2706,  2708,  2710,  2712,
     759    2714,  2719,  2721,  2723,  2728,  2754,  2755,  2757,  2761,  2762,
     760    2766,  2768,  2770,  2772,  2774,  2776,  2783,  2785,  2787,  2789,
     761    2791,  2793,  2798,  2803,  2805,  2807,  2825,  2827,  2832,  2833
    1098762};
    1099763#endif
    1100764
    1101 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
     765#if YYDEBUG || YYERROR_VERBOSE || 0
    1102766/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    1103767   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
     
    1156820  "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1",
    1157821  "declaration_qualifier_list", "storage_class_list", "storage_class",
    1158   "storage_class_name", "basic_type_name", "basic_declaration_specifier",
    1159   "basic_type_specifier", "direct_type_name", "indirect_type_name",
    1160   "sue_declaration_specifier", "sue_type_specifier",
    1161   "typedef_declaration_specifier", "typedef_type_specifier",
    1162   "elaborated_type_name", "aggregate_name", "$@2", "aggregate_key",
    1163   "field_declaration_list", "field_declaration",
     822  "basic_type_name", "basic_declaration_specifier", "basic_type_specifier",
     823  "direct_type_name", "indirect_type_name", "sue_declaration_specifier",
     824  "sue_type_specifier", "typedef_declaration_specifier",
     825  "typedef_type_specifier", "elaborated_type_name", "aggregate_name",
     826  "$@2", "aggregate_key", "field_declaration_list", "field_declaration",
    1164827  "new_field_declaring_list", "field_declaring_list", "field_declarator",
    1165828  "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name",
     
    1208871  "new_abstract_declarator_no_tuple", "new_abstract_ptr",
    1209872  "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
    1210   "comma_opt", "assignment_opt", 0
     873  "comma_opt", "assignment_opt", YY_NULLPTR
    1211874};
    1212875#endif
    1213876
    1214877# ifdef YYPRINT
    1215 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
    1216    token YYLEX-NUM.  */
     878/* YYTOKNUM[NUM] -- (External) token number corresponding to the
     879   (internal) symbol number NUM (which must be that of a token).  */
    1217880static const yytype_uint16 yytoknum[] =
    1218881{
     
    1234897# endif
    1235898
    1236 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
     899#define YYPACT_NINF -1317
     900
     901#define yypact_value_is_default(Yystate) \
     902  (!!((Yystate) == (-1317)))
     903
     904#define YYTABLE_NINF -520
     905
     906#define yytable_value_is_error(Yytable_value) \
     907  0
     908
     909  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
     910     STATE-NUM.  */
     911static const yytype_int16 yypact[] =
     912{
     913    7252,  8635, -1317,    -3, -1317, -1317, -1317, -1317, -1317, -1317,
     914   -1317,    23, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     915   -1317, -1317, -1317, -1317, -1317, -1317,    81,    81,    81,  1277,
     916     970,   104,  7368,   277, -1317, -1317, -1317, -1317, -1317,   201,
     917   -1317, -1317, -1317,  1047,   187, -1317, -1317, -1317, -1317,  5370,
     918   -1317, -1317, -1317, -1317,    35,    48, -1317,  1328, -1317, -1317,
     919   -1317, -1317,   235,  1663,   343,    98,  7484, -1317, -1317,  6174,
     920    1066, -1317, -1317,   536,   376,  5540,   978,  1631,   536,  1775,
     921   -1317, -1317,   477,   683, -1317,   536,  1892, -1317,   295, -1317,
     922     422,   489, -1317, -1317, -1317, -1317,   346,    48,    81, -1317,
     923      81, -1317, -1317, -1317, -1317,  9392,  1328, -1317, -1317,  1328,
     924   -1317,   321, -1317,  9431, -1317, -1317,  2250,  9501, -1317,   668,
     925     668,   668, -1317, -1317, -1317,    81, -1317, -1317, -1317,   373,
     926     399,   410, -1317, -1317, -1317,   420, -1317, -1317, -1317, -1317,
     927   -1317,   428,   450, -1317, -1317,    59,  8604,  2904,   144,   440,
     928     493,   498,   531,   544,   560,  8522,  6772,   510,   580, -1317,
     929    9114, -1317, -1317, -1317, -1317,   584, -1317,   153,  4280,  4280,
     930   -1317,   570,   283, -1317, -1317, -1317, -1317,   596,   288,   303,
     931     332,    81,   583, -1317, -1317,  1663,  2232,   648, -1317,    73,
     932   -1317,    81,    81,    48, -1317, -1317,    80, -1317,    81,    81,
     933   -1317,  3694,   599,   613,   668,  6565, -1317, -1317,   661,  5370,
     934   -1317, -1317,   536, -1317, -1317, -1317,    48, -1317,  1328,    35,
     935   -1317,  7675, -1317,   668,   668,   668,    48, -1317,  1277, -1317,
     936    5446, -1317, -1317,   620,   668, -1317,   668, -1317,   201,  8604,
     937   -1317,   673, -1317,   970,   692,   668, -1317,  1277,   697,   707,
     938   -1317,  7368,   576, -1317, -1317, -1317,  4822, -1317, -1317,  9720,
     939   -1317,   648,   165, 10347,  9501,  2250,  3694, -1317,   109, -1317,
     940   -1317,  9431,  1328,   743,  7515, -1317, -1317,   306, -1317, 10675,
     941     770,   800,  2676,   801, 10480, 10499, -1317,   813, -1317, -1317,
     942   -1317, -1317, 10556, 10556,  8378,   795, -1317, -1317, -1317, -1317,
     943   -1317, -1317,   842, -1317,   685,  1919,  8717, 10480, -1317,   652,
     944     325,   507,   317,   581,   826,   820,   823,   861,   111, -1317,
     945   -1317,   827,   703, -1317,   452, -1317, -1317,  2904, -1317, -1317,
     946     278,   856, -1317,   636,   856,   866,   201, -1317, -1317,   872,
     947    9392, -1317,   876,   887,  8830, -1317, -1317,  1020,  2049,  8093,
     948    6565,   536, -1317,   536,   668,   668, -1317, -1317, -1317, -1317,
     949   -1317, -1317,   668,  9392,  1328, -1317, -1317,  9540,  1233, -1317,
     950    7824, -1317, -1317, -1317, -1317, -1317, -1317, -1317,   891,  4627,
     951   10480, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     952   -1317, -1317, -1317, -1317, -1317,  2250, -1317,   552,   901,   904,
     953     912,   862,   920,   922,   924,  2232, -1317, -1317,   932,    35,
     954     936, -1317, -1317,   939, -1317, -1317, -1317,  4822, -1317, -1317,
     955   -1317, -1317, -1317,  3694, -1317,  8604,  8604, -1317,   668,  2250,
     956    6684,  1328,  8166, -1317, -1317, -1317, -1317,  4822,   165, -1317,
     957   -1317,   536,    48, -1317, -1317,  4822, -1317,  6449, -1317, -1317,
     958     668,   668,   484,  8011,   938,   941,   931,   952,   668, -1317,
     959   -1317, -1317, -1317,  9797, -1317,   578,  6327, -1317,    48,   955,
     960   -1317,  2250, 10757, 10404, -1317, -1317, -1317, -1317,   881,  3694,
     961   -1317,  8239,   648,  3545, -1317, -1317, -1317,  1641,   586,   827,
     962     970,  7515,   592,  9431, -1317,  7515, -1317, -1317, -1317, -1317,
     963     603, -1317,   967,   800,   215,  8378, -1317,  9570, -1317, -1317,
     964    8378, -1317,  8491,  8378, -1317, -1317,   966, -1317,   617,   973,
     965     839,   983, -1317, -1317,  9253,  6415, -1317,   247, -1317, -1317,
     966   10347, -1317,   330, 10347, -1317, -1317, -1317, -1317, -1317, -1317,
     967   -1317, -1317, -1317, -1317, -1317, 10347, -1317, -1317, 10480, 10480,
     968   10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480,
     969   10480, 10480, 10480, 10480, 10480, 10480,  4526, 10347, -1317,   703,
     970     751, -1317, -1317,    81,    81, -1317, -1317,  8604, -1317, -1317,
     971     939,   576, -1317,   939, 10423, -1317, -1317, -1317,  8975,  6415,
     972     968,   976, -1317,  9501, -1317, -1317,   584, -1317,   990,   769,
     973     999,  3014,   124,   827, -1317,    81,    81,   827,   125, -1317,
     974      81,    81,   939, -1317, -1317,    81,    81, -1317,   856,  9652,
     975    1328, 10902,   151,   358,  9652, -1317,  9720, -1317,   827, -1317,
     976    9392, -1317,   147,  7790,  7790,  7790,  1328, -1317,  5708,   982,
     977     891,  1167,   995,   996, -1317,  1011,  4280,   230, -1317,  1103,
     978    1328,  7790,   576,  2250,   576,   648,   671,   856, -1317, -1317,
     979     694,   856, -1317, -1317, -1317,   800, -1317,   856,    48,  9797,
     980   -1317,   621,  1024,   640,  1026, -1317,  1030,    48, -1317, -1317,
     981    4822,    48,  1032,  9570,  1037, -1317,  1585, -1317,   335,   390,
     982     970, -1317,   970,  1023, 10480, -1317,   970, 10902, -1317, -1317,
     983    1034, -1317, -1317, -1317,   576, -1317, 10830,   887, -1317,  7790,
     984     859,  8093, -1317, -1317,   584,  1025,  1036,  1641,  3247, -1317,
     985   -1317,  7515, -1317, -1317,  1039, -1317, -1317,  1043, -1317,  1039,
     986    1048, 10675, 10347,    67,  1027,   133,  1053,  1061,  1068,  1069,
     987   -1317,  1072,  1074,  9362,  6534, -1317, 10347, -1317,   839,  2140,
     988   -1317, -1317, -1317,    81,    81, 10290, 10347,  1070, -1317, -1317,
     989     675, -1317, 10347, -1317, -1317,   644, -1317, -1317, -1317, -1317,
     990     652,   652,   325,   325,   507,   507,   507,   507,   317,   317,
     991     581,   826,   820,   823,   861, 10480,   333, -1317,  9797,  1079,
     992    1080,  1081,   751, -1317, -1317, -1317, -1317, -1317,  9797,   700,
     993    7790, -1317,  9392, -1317,  6891,  8943, -1317,  7824,  6772, -1317,
     994   -1317,   769,  9797,   917,  1082,  1083,  1084,  1087,  1088,  1089,
     995    1091, -1317,  4955,  3014, -1317, -1317, -1317, -1317, -1317, -1317,
     996   -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     997   -1317,   939, -1317, -1317, -1317,   827, -1317, -1317, -1317, -1317,
     998   -1317, -1317, -1317, -1317,  1098, -1317,  1099,  1101, -1317, -1317,
     999      35,  1070,  5708, -1317, -1317, -1317,  4627,  1102, -1317, -1317,
     1000   -1317, -1317,   970,  5944,  1191, -1317, -1317, -1317, -1317,  1094,
     1001      35, -1317, -1317,   939, -1317, -1317,   939,    24,   939, -1317,
     1002   -1317, -1317, -1317, -1317, -1317,  9223, -1317,    48, -1317, -1317,
     1003     432,   441,  9540,  7010,  2348, 10480,  3377, -1317, -1317,  1092,
     1004      94,  1092, -1317,   970, -1317,    81, -1317, -1317,  8748,   931,
     1005   -1317, -1317, -1317,   941,  1116,  1111, -1317, -1317,  1118,  1119,
     1006   -1317,   859,  2430, -1317,   455, -1317,  3247,   827, -1317,  1122,
     1007    7515,  9682,  8604,  1125, -1317, -1317,  1130,  1135,  1124, -1317,
     1008   10480,   166,   222,  1132, -1317,  1138,   576,  1138, -1317, -1317,
     1009    1138,  1137, -1317,  1145,  1147,  1148,  2140, -1317, -1317, -1317,
     1010    4627, -1317, -1317, -1317, -1317,  1143, 10347,  1149,   576, -1317,
     1011   10347, -1317,   576, -1317, -1317, 10347, -1317,   721,   856, -1317,
     1012   -1317, -1317, -1317, -1317, -1317, -1317,   891,   887,  8830, -1317,
     1013   -1317,  7129,  1152, -1317,   731,   856, -1317,   745,   763,   856,
     1014   -1317,   668,  5561, -1317, -1317, -1317,  9797,  9797, -1317,  8166,
     1015    8166, -1317,  1154,  1156,  1153,  1155, -1317,  1168,   460,   196,
     1016    1070, -1317,   576, -1317,  4280, -1317, 10347,   474, -1317,  6296,
     1017    1159,  1170, 10233,  1172,  1175,   -14,     3,    11, 10347,  1179,
     1018      48, 10347, 10347,  1160,  1177,   282,  1161, -1317, -1317, -1317,
     1019    1180, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     1020     970,  1184, 10347, -1317,  9797,  9797,    81,  1188, -1317,  8861,
     1021   -1317, -1317,   809, -1317,  3377, -1317, -1317, -1317, -1317,  1585,
     1022   -1317, -1317,  1185, -1317, -1317, -1317, -1317,  1193,  2430, -1317,
     1023   -1317,  1176, -1317,  1039, -1317, -1317,  2250,  1196, -1317, -1317,
     1024   -1317,   709,  1198, -1317,   133,  1202, 10480,  1186,   133,   133,
     1025    1211,  9253,   789,   856, -1317, -1317,  1011, 10347,  1214,  1143,
     1026     505,   224,  1217, -1317, -1317,  1218,  1217, -1317, -1317,  1226,
     1027   -1317, -1317,   939,  1228,  1230,  6653,  1231,  1232,  1243, -1317,
     1028   -1317,  1246, -1317, -1317,   939, -1317, -1317, -1317, -1317,   939,
     1029   10347, 10347,   887,  1245, -1317, -1317, -1317, -1317, -1317, -1317,
     1030   -1317, -1317, -1317, -1317, -1317, -1317, 10480, 10480,  1247,  1251,
     1031    1217, -1317, -1317,   970, -1317, -1317, -1317,  4468,  9682, 10347,
     1032   10347,  1311, 10347, -1317,  1234, -1317,  1237, -1317,  1239, 10347,
     1033    1241, 10347,  1049,  1244,    26,    81,  9084,   750, -1317, -1317,
     1034    5944,  1267,   481, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     1035   -1317, -1317, 10053, -1317,  8239,  1274, -1317, -1317,  9682,   482,
     1036     512, -1317,  1272,  1259,   800,  1280, -1317,   245, -1317, -1317,
     1037   -1317, -1317,   939,  1279, -1317, -1317,  1287,   385,   444,   576,
     1038    1293, -1317,  1294, -1317,  9797, -1317, -1317, -1317, -1317, -1317,
     1039    1295, -1317,  9797,  9797,  9797, -1317, -1317,  1297, -1317,  1298,
     1040    1282,  1305,   511,  7863,  7978, -1317, -1317,   348, -1317,  1304,
     1041    1310, -1317,  8312,   712,   734,  1308,   739,  6143, -1317, -1317,
     1042   -1317,   515, -1317,   765,  1318,  1320,    48,  1371,   879, -1317,
     1043   -1317, 10347, -1317, 10233, 10347, -1317, -1317, -1317,  1322,  1329,
     1044   -1317, -1317, -1317,  1324, -1317, -1317, -1317, -1317, -1317, -1317,
     1045    9682,   800,   265, -1317,  1309,   800,  9797, -1317, -1317, -1317,
     1046   -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     1047   -1317,  1330,  1331, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     1048    1334, -1317,  1333, -1317, -1317, 10233,   143, 10347, 10233, -1317,
     1049    1338, 10347, -1317,   259,  1354,  1356, -1317, -1317,  1346,  1347,
     1050    1326, -1317,   880, -1317, -1317, -1317,  1328,  2250,  1345,   842,
     1051     364, 10480, -1317,   774, -1317,   576,   576,  1352,  1355,  1357,
     1052    1360, -1317, -1317,  8166,  1358, -1317,  1436, 10480,  1349, -1317,
     1053   -1317, 10145, -1317,   783, -1317,  1350, 10233,  1359, -1317, -1317,
     1054    1378, -1317,  1379, -1317,  1394,  1396, -1317,  1361,  9682, -1317,
     1055   -1317, -1317,   800,   576,  1386,  1367,  1392,  1217,  1217, -1317,
     1056   -1317, -1317, -1317, -1317, 10233,   275, -1317,   384, -1317, -1317,
     1057    7600, -1317, -1317,  1375, 10347, -1317, 10347,  7600,    48,  9570,
     1058      48,  9570,  1393, -1317,  1398, -1317, -1317,  1395,   842, -1317,
     1059     798, -1317, -1317, -1317,  1399,  1401, -1317, 10480, 10480, -1317,
     1060   -1317,   964,   167, -1317, -1317,  1388, -1317,   964, -1317, -1317,
     1061    2461,   576, -1317, -1317,    48,  9570,    48,  9570,  1409,  1390,
     1062     576, -1317, -1317, -1317, -1317, 10145,  1410,   964,  5861, 10347,
     1063   10057,  1412,   964,  1414,  2461,  3613, -1317, -1317, -1317,  1420,
     1064   -1317, -1317, -1317, -1317,  8604, -1317, -1317, -1317,  9924, -1317,
     1065   10145, -1317, -1317,  1402,  9836, -1317, -1317, 10057,    48,  3613,
     1066      48,  1421,  1429,   817, -1317,  9924, -1317, -1317, -1317,  9836,
     1067   -1317, -1317, -1317,    48,    48, -1317, -1317, -1317, -1317, -1317,
     1068   -1317, -1317, -1317
     1069};
     1070
     1071  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
     1072     Performed when YYTABLE does not specify something else to do.  Zero
     1073     means the default is an error.  */
     1074static const yytype_uint16 yydefact[] =
     1075{
     1076     291,   291,   311,   309,   312,   310,   313,   314,   297,   299,
     1077     298,     0,   300,   325,   317,   322,   320,   321,   319,   318,
     1078     323,   324,   329,   326,   327,   328,   544,   544,   544,     0,
     1079       0,     0,   291,   217,   301,   315,   316,     7,   356,     0,
     1080       8,    14,    15,     0,     2,    60,    61,   562,     9,   291,
     1081     522,   520,   244,     3,   451,     3,   257,     0,     3,     3,
     1082       3,   245,     3,     0,     0,     0,   292,   293,   295,   291,
     1083     304,   307,   337,   283,   330,   335,   284,   345,   285,   352,
     1084     349,   359,     0,     0,   360,   286,   470,   474,     3,     3,
     1085       0,     2,   516,   521,   526,   296,     0,     0,   544,   574,
     1086     544,     2,   585,   586,   587,   291,     0,   728,   729,     0,
     1087      12,     0,    13,   291,   267,   268,     0,   292,   287,   288,
     1088     289,   290,   523,   302,   389,   545,   546,   367,   368,    12,
     1089     442,   443,    11,   438,   441,     0,   500,   495,   486,   442,
     1090     443,     0,     0,   525,   218,     0,   291,     0,     0,     0,
     1091       0,     0,     0,     0,     0,   291,   291,     2,     0,   730,
     1092     292,   579,   591,   734,   727,   725,   732,     0,     0,     0,
     1093     251,     2,     0,   529,   436,   437,   435,     0,     0,     0,
     1094       0,   544,     0,   631,   632,     0,     0,   542,   538,   544,
     1095     559,   544,   544,   540,     2,   539,   544,   598,   544,   544,
     1096     601,     0,     0,     0,   291,   291,   309,   357,     2,   291,
     1097     258,   294,   305,   338,   350,   475,     0,     2,     0,   451,
     1098     259,   292,   331,   346,   353,   471,     0,     2,     0,   308,
     1099     332,   339,   340,     0,   347,   351,   354,   358,   443,   291,
     1100     369,   362,   366,     0,   391,   472,   476,     0,     0,     0,
     1101       1,   291,     2,   527,   573,   575,   291,     2,   738,   292,
     1102     741,   542,   542,     0,   292,     0,     0,   270,   544,   540,
     1103       2,   291,     0,     0,   291,   547,     2,   498,     2,   551,
     1104       0,     0,     0,     0,     0,     0,    18,    57,     4,     5,
     1105       6,    16,     0,     0,   291,     2,    62,    63,    64,    65,
     1106      45,    19,    46,    22,    44,    66,   291,     0,    69,    73,
     1107      76,    79,    84,    87,    89,    91,    93,    95,    97,   102,
     1108     492,   748,   449,   491,     0,   447,   448,     0,   563,   578,
     1109     581,   584,   590,   593,   596,   356,     0,     2,   736,     0,
     1110     291,   739,     2,    60,   291,     3,   423,     0,   431,   292,
     1111     291,   304,   330,   284,   345,   352,     3,     3,   405,   409,
     1112     419,   424,   470,   291,   425,   703,   704,   291,   426,   428,
     1113     291,     2,   580,   592,   726,     2,     2,   246,     2,   456,
     1114       0,   454,   453,   452,   138,     2,     2,   248,     2,     2,
     1115     247,     2,   278,     2,   279,     0,   277,     0,     0,     0,
     1116       0,     0,     0,     0,     0,     0,   564,   603,     0,   451,
     1117       2,   558,   567,   657,   560,   561,   530,   291,     2,   597,
     1118     606,   599,   600,     0,   273,   291,   291,   336,   292,     0,
     1119     292,     0,   291,   731,   735,   733,   531,   291,   542,   252,
     1120     260,   306,     0,     2,   532,   291,   496,   333,   334,   280,
     1121     348,   355,     0,   291,     0,   746,   396,     0,   473,   497,
     1122     249,   250,   517,   291,   433,     0,   291,   234,     0,     2,
     1123     236,     0,   292,     0,   254,     2,   255,   275,     0,     0,
     1124       2,   291,   542,   291,   483,   485,   484,     0,     0,   748,
     1125       0,   291,     0,   291,   487,   291,   557,   555,   556,   554,
     1126       0,   549,   552,     0,     0,   291,    52,   291,    66,    47,
     1127     291,    54,   291,   291,    50,    51,     2,   124,     0,     0,
     1128     445,     0,   444,   725,   118,   291,    17,     0,    29,    30,
     1129      35,     2,     0,    35,   108,   109,   110,   111,   112,   113,
     1130     114,   115,   116,   117,   107,     0,    48,    49,     0,     0,
     1131       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1132       0,     0,     0,     0,     0,     0,     0,     0,   104,     2,
     1133     643,   450,   640,   544,   544,   648,   477,   291,     2,   582,
     1134     583,     0,   594,   595,     0,     2,   737,   740,   118,   291,
     1135       0,     2,   705,   292,   709,   700,   701,   707,     0,     2,
     1136       2,   665,   544,   748,   614,   544,   544,   748,   544,   628,
     1137     544,   544,   679,   432,   662,   544,   544,   670,   677,   291,
     1138     427,   292,     0,     0,   291,   715,   292,   720,   748,   712,
     1139     291,   717,   748,   291,   291,   291,     0,   118,     0,    18,
     1140       2,     0,    19,     0,   457,   746,     0,     0,   463,   238,
     1141       0,   291,     0,     0,     0,   542,   566,   570,   572,   602,
     1142     605,   609,   612,   565,   604,     0,   281,   655,     0,   291,
     1143     274,     0,     0,     0,     0,   272,     2,     0,   256,   533,
     1144     291,     0,     0,   291,     2,   361,   381,   370,     0,     0,
     1145     375,   369,   747,     0,     0,   394,     0,   292,     3,   412,
     1146       3,   416,   415,   588,     0,   528,   291,    60,     3,   291,
     1147     431,   292,     3,   425,   426,     2,     0,     0,     0,   482,
     1148     303,   291,   478,   480,     3,     2,     2,     0,   499,     3,
     1149       0,   551,   126,     0,     0,   219,     0,     0,     0,     0,
     1150      36,     0,     0,   118,   291,    20,     0,    21,     0,   689,
     1151     694,   446,   686,   544,   544,     0,   105,     3,     2,    27,
     1152       0,    33,     0,     2,    25,     0,   103,    70,    71,    72,
     1153      74,    75,    77,    78,    82,    83,    80,    81,    85,    86,
     1154      88,    90,    92,    94,    96,     0,     0,   749,   291,     0,
     1155       0,     0,   644,   645,   641,   642,   494,   493,   291,     0,
     1156     291,   711,   291,   716,   292,   291,   659,   291,   291,   702,
     1157     658,     2,   291,     0,     0,     0,     0,     0,     0,     0,
     1158       0,   680,     0,   666,   617,   633,   667,     2,   613,   620,
     1159     429,   615,   616,   430,     2,   627,   636,   629,   630,   663,
     1160     664,   678,   706,   710,   708,   748,   265,     2,   742,     2,
     1161     420,   714,   719,   421,     0,   399,     3,     3,     3,     3,
     1162     451,     3,     0,     2,   465,   462,   747,     0,   458,     2,
     1163     461,   464,     0,   291,   239,   261,     3,   269,   271,     0,
     1164     451,     2,   568,   569,     2,   607,   608,     0,   656,   534,
     1165       3,   342,   341,   344,   343,   291,   535,     0,   536,   369,
     1166       0,     0,   291,   291,     0,     0,   689,   379,   382,   386,
     1167     544,   386,   385,   378,   371,   544,   373,   376,   291,   396,
     1168     390,   101,   397,   746,     0,     0,   434,   237,     0,     0,
     1169       3,     2,   665,   427,     0,   524,     0,   748,   486,     0,
     1170     291,   291,   291,     0,   548,   550,   127,     0,     0,   212,
     1171       0,     0,     0,   220,   221,    53,     0,    55,    58,    59,
     1172       0,     2,   125,     0,     0,     0,   690,   691,   687,   688,
     1173     456,    67,    68,   106,   122,     3,   105,     0,     0,    24,
     1174      35,     3,     0,    32,    99,     0,     3,   647,   651,   654,
     1175     646,     3,   589,     3,   713,   718,     2,    60,   291,     3,
     1176       3,   292,     0,     3,   619,   623,   626,   635,   669,   673,
     1177     676,   291,     3,   618,   634,   668,   291,   291,   422,   291,
     1178     291,   743,     0,     0,     0,     0,   253,     0,   101,     0,
     1179       3,     3,     0,   459,     0,   455,     0,     0,   242,   291,
     1180       0,     0,   126,     0,     0,     0,     0,     0,   126,     0,
     1181       0,   105,   105,    18,     2,     0,     0,     3,   128,   129,
     1182       2,   140,   130,   131,   132,   133,   134,   135,   142,   144,
     1183       0,     0,     0,   282,   291,   291,   544,     0,   537,   291,
     1184     372,   374,     0,   388,   690,   383,   387,   384,   377,   381,
     1185     364,   395,     0,   576,     2,   661,   660,     0,   666,     2,
     1186     479,   481,   501,     3,   509,   510,     0,     2,   505,     3,
     1187       3,     0,     0,   553,   219,     0,     0,     0,   219,     0,
     1188       0,   118,   693,   697,   699,   692,   746,   105,     0,     3,
     1189     658,    39,     3,    37,    34,     0,     3,    98,   100,     0,
     1190       2,   649,   650,     0,     0,   291,     0,     0,     0,     3,
     1191     635,     0,     2,   621,   622,     2,   637,     2,   671,   672,
     1192       0,     0,    60,     0,     3,     3,     3,     3,   407,   406,
     1193     410,     2,     2,   745,   744,   119,     0,     0,     0,     0,
     1194       3,   460,     3,     0,   240,   143,     3,   292,   291,     0,
     1195       0,     0,     0,     2,     0,   188,     0,   186,     0,     0,
     1196       0,     0,     0,     0,     0,   544,   118,     0,   148,   145,
     1197     291,     0,     0,   264,   276,     3,     3,   543,   610,   365,
     1198     380,   393,   291,   263,   291,     0,   512,   489,   291,     0,
     1199       0,   488,   503,     0,     0,     0,   213,     0,   222,    56,
     1200       2,   695,   696,     0,   123,   120,     0,     0,     0,     0,
     1201       0,    23,     0,   652,   291,   577,   262,   721,   722,   723,
     1202       0,   674,   291,   291,   291,     3,     3,     0,   682,     0,
     1203       0,     0,     0,   291,   291,     3,   541,   119,   467,     0,
     1204       0,   243,   292,     0,     0,     0,     0,   291,   189,   187,
     1205     184,     0,   190,     0,     0,     0,     0,   194,   197,   195,
     1206     191,     0,   192,   126,    35,   141,   139,   241,     0,     0,
     1207     414,   418,   417,     0,   506,     2,   507,     2,   508,   502,
     1208     291,   225,     0,   223,     0,   225,   291,    31,   121,     2,
     1209      42,     2,    40,    38,    28,    26,     3,   724,     3,     3,
     1210       3,     0,     0,   681,   683,   624,   638,   266,     2,   404,
     1211       3,   403,     0,   469,   466,   126,     0,     0,   126,     3,
     1212       0,   126,   185,     0,     2,     2,   206,   196,     0,     0,
     1213       0,   137,     0,   571,   611,     2,     0,     0,     2,   226,
     1214       0,     0,   214,     0,     3,     0,     0,     0,     0,     0,
     1215       0,   684,   685,   291,     0,   468,   149,     0,     0,     2,
     1216     162,   126,   151,     0,   179,     0,   126,     0,     2,   153,
     1217       0,     2,     0,     2,     2,     2,   193,    32,   291,   511,
     1218     513,   504,     0,     0,     0,     0,     0,     3,     3,   653,
     1219     625,   639,   675,   408,   126,   155,   158,     0,   157,   161,
     1220       3,   164,   163,     0,   126,   181,   126,     3,     0,   291,
     1221       0,   291,     0,     2,     0,     2,   136,     2,   227,   228,
     1222       0,   224,   215,   698,     0,     0,   150,     0,     0,   160,
     1223     230,   165,     2,   232,   180,     0,   183,   169,   198,     3,
     1224     207,   211,   200,     3,     0,   291,     0,   291,     0,     0,
     1225       0,    43,    41,   156,   159,   126,     0,   166,   291,   126,
     1226     126,     0,   170,     0,     0,   689,   208,   209,   210,     0,
     1227     199,     3,   201,     3,   291,   216,   229,   146,   167,   152,
     1228     126,   233,   182,   177,   175,   171,   154,   126,     0,   690,
     1229       0,     0,     0,     0,   147,   168,   178,   172,   176,   175,
     1230     173,     3,     3,     0,     0,   490,   174,   202,   204,     3,
     1231       3,   203,   205
     1232};
     1233
     1234  /* YYPGOTO[NTERM-NUM].  */
     1235static const yytype_int16 yypgoto[] =
     1236{
     1237   -1317,  4344,  3244, -1317,   633, -1317,   172,   896,  -203, -1317,
     1238     487,  -518,  -482,  -910,  -211,  1511,     0, -1317,  1129,   534,
     1239     537,   615,   556,   984,   981,   988,   980,   989, -1317,     4,
     1240    -451,  4784,  -913, -1317,  -702,   571,    13,  -706,   419, -1317,
     1241     190, -1317,   345,  -964, -1317, -1317,    85, -1317, -1099, -1138,
     1242     197, -1317, -1317, -1317, -1317,    20, -1281, -1317, -1317, -1317,
     1243   -1317, -1317, -1317,   266, -1095,    50, -1317,  -472, -1317,   443,
     1244     239, -1317,   118, -1317,  -294, -1317, -1317, -1317,   496,  -829,
     1245   -1317, -1317,     8,  -952,    28,  2894, -1317, -1317, -1317,  -214,
     1246   -1317,   121,  1028,  -198,  1848,  3592, -1317, -1317,   127,   296,
     1247    1545,  1505, -1317,  1929, -1317, -1317,   137,  2139, -1317,  2574,
     1248     804, -1317, -1317, -1317,  -637, -1317,   886,   889,   490,   670,
     1249      52, -1317, -1317, -1317,   893,   666,  -510, -1317,  -116,    40,
     1250    1073, -1317, -1317,  -889,  -983,   933,  1377,  1006,   -11, -1317,
     1251    1351,   508,  -322,  -183,  -145,   623,   724, -1317,   944, -1317,
     1252    2701,   574,  -443,   875, -1317, -1317,   659, -1317,  -228, -1317,
     1253     -45, -1317, -1317, -1317, -1253,   370, -1317, -1317, -1317,  1120,
     1254   -1317,    33, -1317, -1317,  -828,  -100, -1316,  -170,  2264, -1317,
     1255    1914, -1317,   868, -1317,  -155,   129,  -181,  -180,  -175,     7,
     1256     -41,   -40,   -35,  1507,    37,    53,    57,   -29,  -172,  -163,
     1257    -158,  -150,  -293,  -500,  -490,  -485,  -542,  -284,  -525, -1317,
     1258   -1317,  -499,  1035,  1038,  1040,  1486,  4616,  -563,  -531,  -513,
     1259    -491,  -561, -1317,  -506,  -730,  -727,  -723,  -562,  -311,  -227,
     1260   -1317, -1317,   378,    19,   -93, -1317,  3633,   159,  -611,  -428
     1261};
     1262
     1263  /* YYDEFGOTO[NTERM-NUM].  */
     1264static const yytype_int16 yydefgoto[] =
     1265{
     1266      -1,   812,   467,   300,    47,   133,   134,   301,   302,   303,
     1267     304,   760,   761,  1132,  1133,   305,   380,   307,   308,   309,
     1268     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
     1269    1029,   517,   974,   545,   321,   975,   946,  1056,  1517,  1058,
     1270    1059,  1060,  1061,  1518,  1062,  1063,  1436,  1437,  1400,  1401,
     1271    1402,  1496,  1497,  1501,  1502,  1537,  1538,  1064,  1360,  1065,
     1272    1066,  1297,  1298,  1299,  1479,  1067,   145,   952,   953,   954,
     1273    1380,  1460,  1471,  1472,   468,   469,   873,   874,  1037,    51,
     1274      52,    53,    54,    55,   346,   158,    58,    59,    60,    61,
     1275      62,   348,    64,    65,   264,    67,    68,   274,   350,   351,
     1276      71,    72,    73,   118,    75,   204,   353,   119,    78,   120,
     1277      80,    81,   454,    82,   453,   687,   688,   689,   907,  1085,
     1278     908,    83,    84,   457,   455,   695,   854,   855,   856,   857,
     1279     698,   699,   700,   358,   359,   360,   361,   465,   339,   135,
     1280     136,   521,   323,   170,   644,   645,   646,   647,   648,    85,
     1281     121,    87,   488,   489,   938,   490,   277,   494,   324,    88,
     1282     137,   138,    89,  1320,  1107,  1108,  1109,  1110,    90,    91,
     1283     716,    92,   273,    93,    94,   187,  1031,   678,   411,   125,
     1284      95,   500,   501,   502,   188,   268,   190,   191,   192,   269,
     1285      98,    99,   100,   101,   102,   103,   104,   195,   196,   197,
     1286     198,   199,   824,   604,   605,   606,   607,   200,   609,   610,
     1287     611,   571,   572,   573,   574,   750,   105,   613,   614,   615,
     1288     616,   617,   618,   967,   752,   753,   754,   594,   364,   365,
     1289     366,   367,   325,   164,   107,   108,   109,   369,   693,   568
     1290};
     1291
     1292  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
     1293     positive, shift that token.  If negative, reduce the rule whose
     1294     number is the opposite.  If YYTABLE_NINF, syntax error.  */
     1295static const yytype_int16 yytable[] =
     1296{
     1297      49,   113,   149,   150,   398,   399,   427,    97,   151,   114,
     1298     400,   452,   260,   401,   751,   765,   267,   409,   963,   106,
     1299     106,   964,   402,   382,   383,   965,   947,   403,    56,   115,
     1300     739,   406,    49,   595,   867,   404,   439,  1170,   826,    97,
     1301     356,   829,   470,   147,  1068,  1069,   177,   836,   724,    49,
     1302      50,   106,   729,   972,   918,   603,   161,   843,  1194,   825,
     1303      56,   722,   341,   186,   608,   143,   209,  1378,   818,    49,
     1304     193,   793,  1136,   216,   817,  1196,   226,   219,   504,   122,
     1305     152,  1438,    50,  1198,   398,   399,   819,  1186,   106,  1301,
     1306     400,   474,   476,   401,   210,   261,   153,   220,   262,   814,
     1307     154,   424,   402,   672,   674,   113,   526,   403,   820,   815,
     1308     280,   406,    31,   113,   816,   404,   266,   271,  1195,    31,
     1309      31,    63,  1180,   668,   858,   859,   202,    69,  1199,    96,
     1310    1168,  1169,   123,    31,  1076,  1197,   627,    76,  1203,  1204,
     1311     631,   876,   168,   677,   149,   150,   306,   147,    31,   526,
     1312     151,   681,  1438,    63,   161,   113,   344,   407,  1302,    69,
     1313     209,    96,   171,    31,    31,  1457,   169,   372,   281,    76,
     1314     713,   728,   148,   111,   963,   830,   203,   964,    96,   833,
     1315     912,   965,   252,   446,   410,   186,   186,  1397,  1398,   418,
     1316     741,   410,   189,   161,   719,    96,   357,   948,    96,   930,
     1317     850,   266,   459,   470,   853,   410,   565,   438,   166,    49,
     1318    1185,  -231,  -231,   142,  1244,   291,   161,   814,   480,  1525,
     1319     410,   209,   152,   470,   149,   150,   666,   815,   442,   408,
     1320     151,   470,   816,   827,   834,   600,   600,   407,   153,   306,
     1321     566,  1170,   154,   922,   950,   173,  1540,   587,   526,   440,
     1322     663,    49,   829,   252,   328,   797,   475,  1399,    97,   271,
     1323    1015,   482,  1079,   846,   271,   266,   266,   847,   499,   376,
     1324     106,   113,   166,   161,   475,  1116,    96,   341,   567,    56,
     1325     818,  1014,  -231,  1138,   462,   377,  1002,   253,   144,    96,
     1326     993,  1170,  1176,   990,   306,   655,    70,   526,   819,   155,
     1327     733,    50,  1442,  1397,  1398,   326,   306,   518,   595,  1247,
     1328     146,   814,  1092,   595,   397,   189,   356,   608,  1177,   110,
     1329     820,   815,   570,   670,   663,   734,   816,   147,    70,   675,
     1330      41,    42,  1117,  1495,   372,  1186,   177,  1248,    96,  1500,
     1331     113,   869,  1200,   641,   344,   735,   201,   526,   601,   619,
     1332      96,   181,  1118,   628,   286,  1324,  1483,   632,   758,  1520,
     1333     870,   803,   212,   624,  1527,    41,    42,   624,   435,   826,
     1334     113,  1467,    63,  1408,  1381,  1325,   664,   471,    69,  -287,
     1335      96,  1068,  1069,   416,  1168,  1169,   897,   578,    76,   410,
     1336    1511,   513,  1513,    76,   478,   266,  1442,  1177,   326,   386,
     1337     818,  1442,   110,   852,   389,   186,   436,   555,   556,   356,
     1338    1170,   247,   372,    41,    42,   387,   444,  1018,   819,   391,
     1339     390,  1442,   250,   266,   464,   306,   306,   163,  1442,   266,
     1340     435,   341,   624,   713,   492,   392,   843,   493,   671,   673,
     1341     820,   763,   557,   558,   551,   552,  1156,  1158,   393,   746,
     1342     664,   913,   263,   113,  1083,   252,    96,   110,  1361,  -466,
     1343    1125,  -466,   887,   985,   394,   166,   470,   914,    41,    42,
     1344     848,   266,   357,   356,   849,  1427,  1428,   602,  -466,   266,
     1345    1422,   624,   -10,    49,   519,   880,   372,   718,  1186,  -515,
     1346      97,   163,   927,   113,  1423,  1186,  1329,  1103,  1134,  1115,
     1347    1468,   868,   106,   597,  1433,   306,   915,   113,  -439,  1100,
     1348     306,    56,   306,   306,  1469,  1243,   110,   441,   518,  -440,
     1349     749,   712,   916,   518,   113,   344,   518,    41,    42,   276,
     1350    1013,   909,   951,    50,   189,  1015,  1524,   278,   471,   608,
     1351       2,   206,     4,     5,     6,     7,  1186,    70,   913,   110,
     1352     329,   139,   238,   878,    76,  1331,  1535,   915,   471,   279,
     1353      41,    42,   576,  1539,  1080,   357,   471,   848,   577,   570,
     1354     570,  1099,  -102,  1081,    76,   995,  -102,   306,  1125,   786,
     1355     803,  1359,    76,   912,   326,   326,   239,   434,   624,   344,
     1356    1183,   240,   713,   619,   682,   553,   554,  1183,  1315,   601,
     1357     577,   601,   710,   330,    63,    35,  1184,    36,   331,   845,
     1358      69,  1473,    96,  1307,  1316,  -119,   602,  -119,  1473,   624,
     1359      76,  -119,   370,  1347,   624,   860,   619,  1348,  1317,   357,
     1360     624,   746,   679,   624,   624,   624,  -119,  -119,   111,   875,
     1361     215,   332,  1233,  1013,  1318,   212,  1237,  1362,   110,   434,
     1362     341,   624,   326,   266,   333,  1407,   242,   911,   705,    41,
     1363      42,   252,   328,   410,   110,  1235,   139,   140,   803,  1521,
     1364     334,   326,   522,   559,   560,    41,    42,  1026,     8,     9,
     1365      10,    11,    12,   113,   163,   384,   906,   595,   703,   371,
     1366     176,   215,   356,   375,   704,   519,   720,  1073,   921,   759,
     1367     519,   725,   721,   519,   764,   388,   726,    31,   425,   624,
     1368     932,   619,   408,   730,  1111,   396,   805,   718,   718,   731,
     1369     499,  1033,   426,   398,   399,  1275,  1276,   745,   813,   400,
     1370     602,   891,   401,   746,   215,    34,   326,   746,  1475,   176,
     1371    1476,   402,   176,   113,   344,   581,   403,   410,   749,   749,
     1372     893,   406,   449,   464,   404,   110,   746,   139,   140,   983,
     1373     980,     8,     9,    10,    11,    12,    41,    42,   212,   548,
     1374     527,   528,   529,   431,   963,   549,   550,   964,   844,    70,
     1375     881,   965,   410,   597,   712,   979,  1372,  -363,   176,   984,
     1376      31,   980,   570,  1522,   530,   215,   531,   243,   532,   533,
     1377     624,   471,   624,   884,   998,   410,  -392,   624,   344,   341,
     1378     992,   601,   569,  1160,   410,   910,   704,    76,    34,  1231,
     1379      45,    46,  1355,   601,   877,   577,   879,   471,   746,   460,
     1380    1140,   690,   410,   215,   713,   527,   528,   529,   215,   461,
     1381    1152,    37,   410,    76,  1356,    40,   813,   602,   357,  1358,
     1382     746,   176,    41,    42,  1155,   746,   600,   483,   889,   530,
     1383     569,   531,   410,   532,  1304,   710,  1028,   896,    45,    46,
     1384     214,   898,  1157,   306,   600,  1363,   926,   407,   811,   503,
     1385     600,   746,   291,   522,  1425,   522,    45,    46,   522,  1181,
     1386    1422,   522,   106,  1443,   803,   624,    48,   112,  1240,   746,
     1387     410,    56,   113,   344,   906,   176,   906,   524,  1489,   921,
     1388     507,   951,   176,   713,  1490,   951,   951,   441,   113,   328,
     1389     410,   214,   512,   215,   526,   112,   112,  1545,    48,   663,
     1390    1424,   932,   932,   577,   909,   805,   718,  1368,  1369,    48,
     1391     813,   113,   306,   712,   561,    48,  1435,   562,   748,  1104,
     1392     410,   563,   602,    48,   921,   564,    45,    46,   567,    48,
     1393     106,  1086,    48,  1086,   214,    48,   749,   337,   931,  1105,
     1394     600,   418,   659,   410,  1507,  -436,    45,    46,   112,   112,
     1395     176,   585,     2,   206,     4,     5,     6,     7,   588,  1137,
     1396     480,   328,   410,   212,    63,  1417,   980,   176,   344,    -3,
     1397      69,   176,    48,   637,   215,    48,  1226,   212,  1397,  1398,
     1398      76,   656,    48,   736,   657,   737,  1493,  1435,   738,   624,
     1399     624,   742,   658,  1125,   710,   214,   827,   328,   600,   116,
     1400     660,  1322,   661,  1082,   662,   910,  1330,  1332,  1333,   306,
     1401    1028,   665,   110,    48,   139,   140,   215,    35,   667,    36,
     1402     257,    48,   691,    41,    42,   664,    48,   692,   106,  1167,
     1403     911,   690,   694,   214,   176,   602,   696,    56,   214,  -235,
     1404       2,   206,     4,     5,     6,     7,   732,   159,   743,   113,
     1405     806,    48,    48,   747,   906,   770,   771,  1078,   807,   906,
     1406     772,   773,    37,   755,   174,   175,    40,    48,   932,   228,
     1407     212,   326,   810,    41,    42,    48,   266,  1294,  1295,  1296,
     1408      -3,   821,   -12,   341,    48,   778,   779,    48,  1379,    37,
     1409     921,   624,  1379,    40,   112,   -13,   865,   866,  1120,   371,
     1410      41,    42,   872,   258,   892,    35,   894,    36,   920,   112,
     1411    -519,   159,   895,   112,  -413,   344,   899,    48,   112,   902,
     1412    1131,   935,   942,   214,  1131,   721,    43,   844,   944,   949,
     1413     471,    48,    48,   955,    45,    46,  1188,   215,    48,    70,
     1414     774,   775,   776,   777,   322,    48,    76,   956,   957,   958,
     1415     921,   921,   959,   338,   960,   712,   976,   271,   113,   987,
     1416     988,   989,  1004,  1005,  1006,   215,   219,  1007,  1008,  1009,
     1417     215,  1010,  1283,  1284,  1131,  1286,   113,   106,  1021,  -401,
     1418     306,  -400,  1291,   910,  1293,   210,   220,  1035,   910,  1458,
     1419    1070,   176,   905,    48,   624,  1072,  1093,  1094,   113,   106,
     1420    1095,  1096,  1102,   429,   214,  1112,  1104,   433,    56,   110,
     1421    1202,   139,   140,    48,    48,  1113,   746,   106,  1119,  1121,
     1422      41,    42,   970,   176,  1114,  1122,  1105,  1123,  1124,  1127,
     1423      48,  1130,  1150,  1173,    48,  1174,   710,   322,  1189,   176,
     1424    1171,   215,  1172,   624,   624,   642,   214,  1420,   863,  1190,
     1425    1175,  1192,   271,   176,  1193,   215,  1533,   306,  1201,  1206,
     1426    1205,    48,  1057,  1208,  1213,    -3,   690,   441,  1218,   433,
     1427    1221,    48,   487,  1223,   492,    37,   106,   174,   175,    40,
     1428     440,  1227,  1232,  1350,  1234,    56,    41,    42,  1236,    48,
     1429     113,  1239,   520,   398,   399,    48,  1245,    48,  1104,   400,
     1430    1251,    63,   401,  1249,   159,    70,  1253,    69,  1255,   106,
     1431    1256,   402,   375,  1257,  1258,   710,   403,    76,  1105,   129,
     1432     406,   130,   131,   132,   404,  1259,  1261,  1268,  1285,  1277,
     1433      41,    42,   112,  1278,   176,  1419,  1288,    48,   586,  1289,
     1434    1403,  1290,   592,  1292,   663,    48,  1300,   266,   215,    48,
     1435    1506,   141,  1306,    48,  1313,   921,   112,  1319,   112,  1321,
     1436    1323,   625,  1345,   624,  1327,   629,   701,   214,   338,  1328,
     1437      37,   921,   174,   175,    40,  1334,  1335,  1337,   471,  1343,
     1438    1344,    41,    42,   509,  1188,  1346,  1353,  1357,   113,  1131,
     1439    1131,  1131,  1354,   112,    76,   214,  1104,  1364,   112,  1365,
     1440     214,  1296,  1373,   241,   244,   546,   547,   106,  1375,  1374,
     1441     113,  1382,  1391,  1392,  -402,  1395,  1105,   113,  1406,   113,
     1442    1410,   113,  1412,   322,   322,  1414,  1415,   690,  1416,   106,
     1443    1421,  1191,  1429,   149,   150,  1430,   106,  1431,    56,   151,
     1444    1432,   921,   921,   546,  1348,    56,   407,   112,  1434,  1439,
     1445    1505,   686,  1444,   212,    48,   113,  1366,   113,  1448,  1450,
     1446    1452,  1446,  1454,  1456,   116,    48,  1461,    48,   113,  1462,
     1447     664,   214,  1463,  1484,  1505,  1505,    70,  1474,  1486,   546,
     1448    1488,  1491,   161,  1492,   306,   214,    48,   106,  1514,   487,
     1449    1499,   322,  1515,   487,  1528,  1519,    56,  1526,   176,  1505,
     1450    1530,  1543,    48,   520,  1536,   520,   372,   112,   520,  1544,
     1451     322,   520,  1207,   781,   783,   780,    48,  1129,   112,    48,
     1452     112,   782,   338,  1494,   784,  1305,   162,  1131,  1131,  1546,
     1453    1409,   471,  1238,  1367,  1383,  1477,  1212,  1188,   471,   900,
     1454     194,   213,   901,   217,  1188,   215,   227,    76,   441,  1220,
     1455     232,  1087,    48,    70,    76,  1091,   112,   799,   112,   923,
     1456    1034,   871,   112,  1126,   456,  1459,   937,  1101,  1314,   945,
     1457     112,     0,   701,   715,   789,   322,     0,   790,   214,   791,
     1458       0,     0,     0,    48,    48,   229,   801,     0,   230,   471,
     1459       0,   234,   213,   236,     0,  1188,     0,    48,     0,  1057,
     1460     245,     0,     0,   478,  -288,    76,     0,     0,  1478,     0,
     1461    1482,     8,     9,    10,    11,    12,     0,   842,     0,     0,
     1462       0,     0,   592,  1508,   162,     0,     0,    37,   851,   183,
     1463     184,    40,  1516,     0,     0,   213,     0,   373,    41,    42,
     1464      31,     0,     0,   326,  1510,   412,  1512,   767,   768,   769,
     1465       0,     0,   420,     0,     0,     0,     0,     0,     0,     0,
     1466       0,     0,     0,   162,   904,     0,   410,     0,    34,     0,
     1467       0,     0,    45,    46,     0,     0,     0,    48,     0,     0,
     1468       0,   686,     0,    37,     0,   905,   162,    40,  1541,    48,
     1469    1542,   701,  1371,     0,    41,    42,   213,     0,   443,     0,
     1470     643,   701,     0,  1549,  1550,    37,    70,   183,   184,    40,
     1471       0,     0,   890,    70,     0,   701,    41,    42,     0,   487,
     1472     717,     0,     0,     0,   412,     0,     0,   229,    45,    46,
     1473       0,   215,   642,     0,   213,     0,     0,     0,   112,   213,
     1474       0,   338,   185,     0,  1396,     0,     0,  1404,  -289,     0,
     1475      45,    46,     0,     0,   498,     8,     9,    10,    11,    12,
     1476       0,    48,     0,   506,    70,   508,   511,     0,     0,     0,
     1477      48,     0,    48,   514,   515,   214,     0,     0,   575,   112,
     1478       0,     0,     0,     0,    31,     0,   579,   508,   508,   582,
     1479    1441,     0,     0,     0,   497,  1445,     0,  1481,     0,  1481,
     1480     994,     0,    48,     0,   373,   801,     0,     0,     0,   176,
     1481     702,   723,    34,   727,     0,     0,     0,     0,    66,   117,
     1482       0,     0,   112,  1466,   213,   508,   215,     0,     0,     0,
     1483       0,   986,     0,  1481,     0,  1481,   642,     0,     0,     0,
     1484       0,   991,     0,     0,   112,     0,     0,     0,   112,     0,
     1485      66,     0,     0,   412,   971,  1003,     0,   420,     0,     0,
     1486       0,   508,     0,     0,     0,  -290,   229,   160,   234,     0,
     1487       0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     1488       0,     0,   373,     0,     0,     0,     0,   221,     0,     0,
     1489       0,     0,     0,   801,     0,     0,     0,     0,   112,    74,
     1490     338,    31,     0,     0,     0,   213,     0,  1534,     0,     0,
     1491     126,   126,   126,  1534,     0,     0,   686,     0,     0,   701,
     1492     701,     0,   213,   259,  1534,     0,     0,     0,  1534,    34,
     1493       0,    74,     0,     0,   412,     0,   112,     0,   487,  1106,
     1494     322,     0,     0,     0,     0,     0,     0,   213,     0,     0,
     1495      48,     0,     0,     0,     0,    48,   229,     0,     0,     0,
     1496       0,   214,   864,     0,     0,   327,     0,     0,   222,     0,
     1497       0,     0,    48,   259,   349,     0,     0,   701,   701,   176,
     1498       0,     0,   126,     0,   126,     0,   534,   535,   536,   537,
     1499     538,   539,   540,   541,   542,   543,   842,     0,     0,     0,
     1500       0,     0,     0,     0,   405,     0,     0,     0,     0,   275,
     1501       0,   917,     0,   919,     0,     0,   702,   456,     0,   423,
     1502     544,     0,   428,   430,     0,   575,   575,   160,     0,   508,
     1503     508,   508,   508,   508,   508,   508,   508,   508,   508,   508,
     1504     508,   508,   508,   508,   508,   508,   508,     0,   447,   112,
     1505       0,     0,   450,     0,   451,   352,   214,     0,     0,  1165,
     1506    1166,     0,     0,   458,     0,   126,     0,     0,   213,    66,
     1507       0,     0,    48,   126,   472,   126,   126,   686,     0,     0,
     1508     126,     0,   126,   126,   479,     0,     0,     0,     0,     0,
     1509       0,    37,   430,   183,   184,    40,   213,   546,     0,     0,
     1510       0,   213,    41,    42,     0,     0,     0,     0,     0,    77,
     1511       0,     0,   882,   112,   112,   112,   885,  1215,  1216,   801,
     1512       8,     9,    10,    11,    12,  1311,     0,     0,   599,   448,
     1513     600,     0,     0,     0,     0,   702,    45,    46,   509,     0,
     1514       0,    77,     0,     0,     0,   702,     0,     0,     0,    31,
     1515      74,     0,   126,     0,     0,    74,     0,   701,   259,   702,
     1516       0,     0,   593,     0,     0,   701,   701,   701,   621,     0,
     1517       0,     0,   213,     0,     0,   508,     0,    34,   223,     0,
     1518       0,   626,     0,     0,     0,   626,   213,   643,   259,     0,
     1519       0,     0,     0,  1038,     0,     0,     0,     0,     0,     0,
     1520       0,     0,     0,     0,   338,     0,   498,     0,     0,     0,
     1521       0,     0,     8,     9,    10,    11,    12,     0,     0,   748,
     1522       0,   410,     0,     0,     0,     0,  1106,    45,    46,   701,
     1523       0,     0,     0,     0,  1088,   472,   508,     0,     0,     0,
     1524       0,    31,    48,    48,     0,     0,   497,     0,   575,   222,
     1525     349,   112,   112,     0,     0,   472,     0,     0,     0,     0,
     1526     124,   127,   128,   472,     0,   354,   508,     0,     0,    34,
     1527       0,     0,     0,     0,    37,     0,   183,   184,    40,   213,
     1528       0,   697,     0,     0,   430,    41,    42,     0,     0,   112,
     1529       0,   643,    37,     0,   183,   184,    40,  1336,     0,   711,
     1530       0,    66,     0,    41,    42,  1338,  1339,  1340,     0,   430,
     1531       0,   185,     0,   430,     0,     0,    74,     0,  1106,    45,
     1532      46,     0,     0,     0,     0,     0,     0,     0,     0,   265,
     1533       0,   352,   254,     0,   255,     0,    74,    45,    46,     0,
     1534       0,     0,   259,   349,    74,     0,    48,   112,     0,     0,
     1535       0,     0,     0,     0,     0,     0,   112,     0,     0,     0,
     1536      77,     0,   352,   702,   702,    77,   412,     0,     0,  1384,
     1537      48,    48,     0,     0,     0,     0,     0,     0,     0,     0,
     1538     352,     0,    74,     0,     0,     0,   508,     0,   792,     0,
     1539      37,  1038,   183,   184,    40,    48,     0,     0,     0,     0,
     1540       0,    41,    42,     0,     0,     0,   626,   804,     0,     0,
     1541       8,     9,    10,    11,    12,   395,  1106,     0,     0,   823,
     1542       0,   702,   702,     0,   352,   414,   415,   904,     0,   410,
     1543     419,   508,   421,   422,     0,    45,    46,   593,     0,    31,
     1544       0,     0,   593,  1141,     0,     0,     0,  1480,   626,  1480,
     1545       0,   349,   349,   349,     0,     0,     0,   126,   126,   223,
     1546    1153,     0,     0,     0,     0,     0,   508,    34,     0,   349,
     1547       0,     0,     0,     0,     0,     0,   213,     0,     0,   508,
     1548       0,     0,     0,  1480,     0,  1480,   126,   697,   352,   126,
     1549     126,     0,   126,     0,   126,   126,     0,     0,   472,   126,
     1550     126,     0,     0,    37,  1281,   183,   184,    40,     0,   931,
     1551       0,   600,   322,     0,    41,    42,     0,    45,    46,     0,
     1552     508,     0,     0,     0,   472,     0,    77,   349,     0,     0,
     1553       0,     0,   352,   352,   352,     0,   936,     0,   412,   430,
     1554    1504,   354,   410,     0,    79,     0,    77,     0,    45,    46,
     1555     352,     0,     0,     0,    77,     0,     0,     0,     0,     0,
     1556       0,   259,   711,     0,     0,     0,     0,   966,   352,  1312,
     1557       0,     0,   354,     0,     0,     0,    79,     0,  1241,    74,
     1558       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1559     354,     0,    77,     0,     0,     0,     0,   508,     0,     0,
     1560       0,   702,     0,     0,     0,    74,   697,     0,   352,   702,
     1561     702,   702,     0,   224,     0,     0,   697,     0,   349,     0,
     1562     626,     0,     0,  1001,     0,   626,   804,     0,     0,     0,
     1563     697,     0,     0,     0,   354,     0,     0,   126,   126,     0,
     1564    1012,     0,     0,   352,     0,     0,     0,     0,     0,     0,
     1565       0,     0,     0,     0,     0,     0,     0,   508,   508,     0,
     1566       0,     0,   213,     0,     0,     0,     0,     0,     0,     0,
     1567       0,    86,     0,   702,     0,     0,     0,     0,     0,     0,
     1568       0,     0,     0,   282,   283,     0,   284,   352,     0,     0,
     1569       0,    66,     0,     0,     0,     0,     0,   352,   354,   352,
     1570     355,     0,     0,    86,   222,     0,     0,   352,     0,     0,
     1571       0,   352,   285,   626,     0,     0,     0,     0,   286,     0,
     1572     259,   711,   287,     0,  1084,   288,   289,   290,   291,    41,
     1573      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
     1574     225,     0,   354,   354,   354,     0,     0,     0,     0,     0,
     1575    1098,     0,     0,     0,     0,   505,     0,   213,   430,   117,
     1576     354,     0,     0,    45,    46,   296,   297,   298,   299,     0,
     1577       0,     0,    74,     0,     0,     0,     0,     0,   354,     0,
     1578       0,     0,     0,     0,     0,     0,     0,     0,     0,    77,
     1579       0,     0,     0,     0,   126,    79,     0,     0,     0,   126,
     1580      79,     0,   352,     0,     0,     0,     0,   794,   795,     0,
     1581       0,     0,     0,     0,     0,    77,   593,     0,   354,     0,
     1582       0,     0,     0,     0,     0,     0,     0,   362,     0,   428,
     1583       0,     0,     0,     0,   697,   697,   828,   349,   349,   831,
     1584     832,     0,   835,     0,   837,   838,     0,     0,     0,   839,
     1585     840,     0,     0,   354,     0,     0,     0,  1187,     0,     0,
     1586       0,     0,   508,     0,    57,    57,     0,     0,     0,     0,
     1587       0,     0,     0,     0,     0,     0,     0,     0,   508,     0,
     1588       0,     0,     0,     0,     8,     9,    10,    11,    12,     0,
     1589       0,     0,   697,   697,   224,     0,    57,   354,     0,     0,
     1590       0,     0,     0,     0,     0,     0,     0,   354,     0,   354,
     1591       0,     0,     0,    31,   223,   352,   352,   354,   352,   352,
     1592       0,   354,    86,     0,     0,     0,     0,    86,     0,     0,
     1593      57,     0,     0,    57,     0,     0,     0,     0,    74,   626,
     1594       0,    34,     0,     0,     0,     0,    37,     0,   508,   508,
     1595      40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
     1596     126,    79,     0,   711,     0,     0,     0,     0,     0,     0,
     1597       0,     0,     0,   352,   352,     0,   355,     0,     0,     0,
     1598       0,    79,    77,    43,     0,     0,     0,   968,   969,    79,
     1599       0,    45,    46,     0,     8,     9,    10,    11,    12,     0,
     1600       0,     0,     0,     0,     0,     0,  1282,   355,     0,     0,
     1601       0,     0,   354,     0,     0,     0,     0,     0,     0,     0,
     1602     347,   225,     0,    31,   259,   355,     0,    79,    66,     0,
     1603       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1604     697,     0,   711,     0,   352,     0,   117,     0,     0,     0,
     1605       0,    34,     0,     0,     0,     0,    37,     0,   183,   184,
     1606      40,     0,     0,     0,     0,     0,     0,    41,    42,   355,
     1607       0,     0,   697,     0,     0,     0,     0,     0,     0,     0,
     1608     697,   697,   697,     0,     0,    57,     0,   222,    86,   126,
     1609       0,   349,   349,   599,     0,   600,     0,     0,     0,     0,
     1610       0,    45,    46,   362,     0,  1187,     0,     0,    86,    74,
     1611       0,     0,     0,     0,     0,    57,    86,     0,     0,     0,
     1612       0,   352,     0,   352,     0,   354,   354,     0,   354,   354,
     1613       0,     0,     0,   355,   362,     0,     0,     0,   117,     0,
     1614       0,     0,     0,     0,   697,     0,     0,     0,    77,  1089,
     1615       0,     0,   362,   352,    86,     0,     0,     0,     0,     0,
     1616       0,   352,   352,   352,     0,     0,     0,     0,     0,     0,
     1617       0,     0,   352,   352,     0,     0,     0,   355,   355,   355,
     1618       0,     0,     0,   354,   354,     0,    74,     0,     0,     0,
     1619       0,     0,     0,     0,     0,   355,   362,     0,     0,     0,
     1620       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1621       0,   349,     0,   355,     0,     0,     0,     0,     0,     0,
     1622       0,     0,     0,     0,    79,   352,     0,     8,     9,    10,
     1623      11,    12,     0,     0,     0,     0,   117,     0,     0,     0,
     1624       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1625      79,     0,     0,   355,   354,     0,    31,     0,  1187,     0,
     1626     362,     0,     0,     0,     0,  1187,     0,   167,     0,   172,
     1627       0,     0,   178,   179,   180,     0,   182,     0,     0,     0,
     1628       0,     0,     0,     0,    34,     0,     0,     0,   355,    37,
     1629     233,     0,   352,    40,     0,     0,   347,   223,     0,     0,
     1630      41,    42,   248,   249,   362,   362,   362,     0,     0,     0,
     1631    1217,     0,     0,     0,     0,     0,  1187,     0,     0,    77,
     1632       0,     0,   362,  1529,     0,     0,   717,     0,     0,     0,
     1633       0,   354,   355,   354,    45,    46,     0,     0,     0,    74,
     1634     362,     0,   355,     0,   355,     0,    74,    57,     0,   224,
     1635       0,    86,   355,     0,     0,     0,   355,     8,     9,    10,
     1636      11,    12,     0,   354,     0,     0,     0,     0,     0,     0,
     1637       0,   354,   354,   354,     0,     0,     0,    86,     0,     0,
     1638     362,     0,   354,   354,     0,     0,    31,     0,     0,   347,
     1639       0,     0,     0,     0,     0,     0,    77,    74,     0,     0,
     1640       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1641       0,     0,     0,     0,    34,   362,     0,    79,     0,    37,
     1642       0,   183,   184,    40,     0,     0,     0,     0,     0,     0,
     1643      41,    42,     0,     0,     0,   354,     0,     0,     0,  1303,
     1644       0,     0,     0,     0,     0,     0,     0,   355,     0,     0,
     1645       0,     0,     0,   347,     0,     0,   904,     0,   410,   362,
     1646       0,     0,     0,     0,    45,    46,     0,     0,     0,   362,
     1647       0,   362,     0,     0,     0,     0,   225,     0,     0,   362,
     1648       0,     0,     0,   362,     0,     0,     0,     0,     0,     0,
     1649       0,     0,     0,     0,     0,     0,     0,   347,   347,   347,
     1650       0,     0,   354,     0,     0,     0,     0,     0,     0,     0,
     1651       0,     0,     0,     0,     0,   347,     0,     0,     1,     2,
     1652       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     1653      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     1654      23,    24,    25,     0,    86,    26,    27,    28,    29,    77,
     1655       0,    30,     0,     0,    31,    32,    77,   590,     0,   598,
     1656     355,   355,     0,   355,   355,     0,     0,     0,     0,     0,
     1657     622,   623,     0,   347,   362,     0,     0,     0,     0,    33,
     1658       0,     0,    34,    79,    35,     0,    36,    37,     0,    38,
     1659      39,    40,     0,     8,     9,    10,    11,    12,    41,    42,
     1660       0,     0,     0,     0,     0,     0,     0,    77,     0,     0,
     1661       0,     0,     0,     0,     0,     0,     0,     0,   355,   355,
     1662       0,     0,    31,     0,    43,     0,    44,     0,   211,     0,
     1663    -518,     0,    45,    46,     0,     0,     0,   231,     0,   235,
     1664       0,   237,     0,     0,     0,     0,     0,     0,   246,     0,
     1665      34,     0,   165,     0,     0,    37,     0,   183,   184,    40,
     1666       0,     0,     0,     0,   347,     0,    41,    42,     0,   218,
     1667       0,     0,   347,     0,     8,     9,    10,    11,    12,   211,
     1668       0,   235,   237,   246,     0,     0,     0,   362,   362,   355,
     1669     362,   362,  1504,     0,   410,     0,     0,     0,     0,     0,
     1670      45,    46,     0,    31,     0,     0,     0,     0,     0,     0,
     1671      86,     0,     0,     0,     0,     0,   165,     0,     0,     0,
     1672     272,     0,   211,     0,     0,     0,     0,     0,     0,     0,
     1673       0,    34,   224,     0,     0,     0,    37,    57,   183,   184,
     1674      40,     0,     0,     0,     0,   362,   362,    41,    42,   165,
     1675       0,     0,     0,     0,    79,     0,     0,     0,     0,   368,
     1676       0,     0,     0,   374,     0,     0,   355,     0,   355,     0,
     1677       0,     0,     0,   265,     0,     0,     0,     0,     0,     0,
     1678       0,    45,    46,   211,     0,   235,   237,   246,     0,     0,
     1679       0,     0,     0,     0,     0,     0,     0,     0,   355,     0,
     1680       0,     0,     0,     0,     0,    57,   355,   355,   355,     0,
     1681       0,     0,   165,     0,     0,     0,   362,   355,   355,     0,
     1682       0,   211,     0,     0,   218,     0,   211,     0,     0,     0,
     1683       0,    79,     0,     0,     0,     0,     0,     0,     0,     0,
     1684       0,   496,   165,     0,     0,     0,     0,     0,     0,     0,
     1685       0,     0,     0,     0,     0,     0,     0,     0,     0,   225,
     1686       0,     0,     0,     0,     0,     0,     0,   374,     0,     0,
     1687     355,     0,     0,     0,   165,     0,     0,     0,     0,     0,
     1688       0,    86,     0,   347,   347,     0,     0,     0,     0,   211,
     1689       0,     0,     0,   362,     0,   362,     0,   523,     0,     0,
     1690       0,     0,     0,    57,     0,     0,     0,     0,     0,   165,
     1691       0,   211,   924,     0,   925,     0,   235,   237,     0,     0,
     1692       0,   928,   929,     0,   246,   362,   934,     0,     0,     0,
     1693       0,     0,     0,   362,   362,   362,     0,   355,   939,     0,
     1694       0,     0,     0,   943,   362,   362,     0,   596,     0,     0,
     1695       0,     0,   620,     0,     0,     0,     0,     0,    86,     0,
     1696       0,     0,     0,     0,     0,     0,     0,   211,     0,     0,
     1697       0,   977,     0,     0,     0,     0,     0,     0,     0,     0,
     1698       0,     0,     0,     0,    79,   211,     0,     0,     0,     0,
     1699     211,    79,   211,     0,     0,     0,     0,   362,     0,     0,
     1700       0,     0,     0,     0,     0,     0,     0,     0,     0,   211,
     1701       0,     0,   211,   211,     0,     0,     0,     0,     0,     0,
     1702     211,     0,     0,     0,     0,     0,     0,     0,   165,   165,
     1703       0,     0,     0,     0,   211,   368,     0,     0,     0,     0,
     1704       0,   211,    79,     0,     0,     0,     0,     0,     0,     0,
     1705       0,    57,    57,     0,     0,     0,   523,     0,     0,     0,
     1706       0,     0,     0,     0,   362,     0,     0,     0,     0,     0,
     1707    1022,  1023,  1024,  1025,    57,  1027,     0,     0,     0,     0,
     1708       0,     0,     0,     0,   714,     0,     0,     0,     0,     0,
     1709    1071,     0,    57,     0,     0,     0,   165,     0,     0,     0,
     1710       0,     0,     0,     0,  1077,     0,     0,     0,   523,     0,
     1711     523,    86,     0,   523,     0,   165,   523,     0,    86,     0,
     1712       0,     0,     0,     0,     0,     0,     0,     0,   368,     0,
     1713       0,     0,     0,     0,     0,     0,     0,   347,   347,     0,
     1714       0,     0,     0,     0,  1097,     0,    57,     0,     0,     0,
     1715       0,    57,     0,     0,     0,   211,     0,     0,     0,     0,
     1716       0,     0,     0,     0,     0,     0,     0,     0,     0,    86,
     1717       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1718     165,     0,     0,   211,    57,     0,     0,     0,   211,  1128,
     1719       0,     0,   368,     0,     0,  1135,   809,     0,     0,     0,
     1720    1139,     0,     0,     0,     0,  1143,     0,  1144,     0,     0,
     1721       0,  1146,     0,  1147,  1148,     0,     0,  1151,     0,     0,
     1722       0,     0,   596,     0,     0,     0,  1163,   596,     0,     0,
     1723       0,     0,     0,     0,     0,     0,   368,   368,   368,     0,
     1724       0,     0,     0,     0,  1178,  1179,     0,     0,     0,     0,
     1725       0,     0,     0,     0,   368,     0,     0,   347,     0,   211,
     1726       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1727       0,  1209,     0,   211,  1211,     0,     0,     0,     0,     0,
     1728       0,     0,    57,     0,     0,     0,   523,   282,   283,     0,
     1729     284,     0,     0,   496,     0,     0,     0,     0,     0,     0,
     1730       0,     0,     0,     0,    57,     0,     0,     0,     0,     0,
     1731       0,    57,   368,     0,   933,     0,   285,  1225,     0,     0,
     1732       0,     0,   286,  1229,  1230,     0,   287,     0,     0,   288,
     1733     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     1734       0,     0,     0,  1246,     0,     0,  1250,   714,     0,     0,
     1735    1252,     0,     0,     0,   211,     0,     0,     0,   156,   294,
     1736       0,   378,    57,  1260,   379,     0,   211,    45,    46,   296,
     1737     297,   298,   299,     0,     0,     0,  1267,     0,  1269,  1270,
     1738    1271,  1272,     0,     0,     0,   211,     0,     0,     0,     0,
     1739       0,     0,     0,     0,  1279,     0,  1280,     0,     0,     0,
     1740     172,     0,     0,   368,     0,   251,     0,   620,     0,     0,
     1741       0,   368,     0,     0,     0,   256,     0,     0,     0,     0,
     1742       0,     0,     0,     0,     0,     0,     0,     0,     0,  1308,
     1743    1309,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1744       0,   205,     2,   206,     4,     5,     6,     7,     8,     9,
     1745      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     1746      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     1747      28,   156,     0,     0,     0,     0,     0,    31,     0,  1341,
     1748    1342,     0,     0,     0,     0,   385,     0,     0,     0,  1352,
     1749       0,     0,     0,     0,     0,     0,     0,     0,   211,     0,
     1750       0,     0,     0,     0,     0,    34,   714,    35,   417,    36,
     1751       0,     0,   207,    39,     0,     0,     0,     0,     0,     0,
     1752       0,   523,   432,     0,     0,     0,     0,     0,   211,     0,
     1753       0,   437,     0,   282,   283,     0,   284,     0,     0,     0,
     1754       0,   445,     0,     0,     0,   165,     0,     0,     0,   208,
     1755    1387,     0,  1388,  1389,  1390,    45,    46,     0,     0,     0,
     1756       0,     0,   285,   211,  1394,     0,   463,     0,   286,     0,
     1757       0,   473,   287,  1405,   211,   288,   289,   290,   291,    41,
     1758      42,     0,   292,   293,   481,     0,     0,     0,     0,     0,
     1759     491,     0,   495,     0,     0,     0,     0,     0,  1426,     0,
     1760       0,   596,     0,     0,     0,   294,     0,   378,     0,   525,
     1761       0,     0,     0,    45,    46,   296,   297,   298,   299,     0,
     1762       0,     0,   368,   368,     0,     0,   785,     0,     0,     0,
     1763       0,     0,     0,     0,   282,   283,     0,   284,     0,     0,
     1764       0,  1464,  1465,     0,     0,     0,   211,     0,     0,     0,
     1765       0,   584,     0,     0,  1470,     0,   589,     0,     0,     0,
     1766     211,  1470,     0,   285,     0,     0,     0,     0,     0,   639,
     1767       0,   139,   140,   287,     0,     0,   288,   289,   290,   291,
     1768      41,    42,   523,   292,   293,   634,     0,     0,     0,   635,
     1769     636,     0,   638,  1503,     0,     0,     0,  1509,     0,   649,
     1770     650,     0,   651,   652,     0,   653,   294,   654,   640,     0,
     1771     641,   379,     0,     0,    45,    46,   296,   297,   298,   299,
     1772       0,     0,     0,     0,   584,  1531,     0,  1532,     0,     0,
     1773       0,     0,   669,     0,     0,     0,     0,     0,     0,     0,
     1774       0,   340,   363,     0,     0,     0,     0,     0,   714,   211,
     1775       0,     0,     0,     0,     0,  1547,  1548,   680,     0,     0,
     1776       0,     0,     0,  1551,  1552,     0,     0,     0,     0,     0,
     1777       0,     0,     0,     0,     0,   413,     0,     0,     0,     0,
     1778       0,     0,   413,   706,     0,     0,     0,     0,     0,   709,
     1779     218,     0,     0,     0,   463,   466,     2,   206,     4,     5,
     1780       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     1781      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     1782       0,     0,    26,    27,    28,     0,     0,   714,     0,     0,
     1783     744,    31,     0,     0,     0,     0,     0,     0,     0,     0,
     1784       0,     0,     0,     0,   211,   762,     0,     0,     0,     0,
     1785       0,     0,     0,     0,   413,     0,     0,     0,     0,    34,
     1786       0,    35,     0,    36,     0,     0,    38,    39,     0,     0,
     1787       0,     0,     0,     0,     0,     0,   368,   368,     0,     0,
     1788       0,     0,     0,   788,     0,   218,     0,     0,     0,     0,
     1789       0,     0,   798,     0,     0,     0,     0,     0,     0,   800,
     1790     320,     0,     0,     0,     0,   808,    -3,     0,   413,     0,
     1791     345,     0,     0,     0,   822,     0,   413,   580,     0,   413,
     1792     583,     0,   381,   381,     0,     0,     0,     0,     0,     0,
     1793     363,     0,  1011,     0,   612,     8,     9,    10,    11,    12,
     1794       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1795       0,     0,     0,   630,   862,     0,   340,     0,     0,     0,
     1796       0,     0,   282,   283,    31,   284,     0,     0,     0,     0,
     1797       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1798       0,     0,     0,   413,     0,     0,     0,   413,     0,     0,
     1799     808,   285,    34,   320,     0,     0,   368,   286,   903,     0,
     1800       0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     1801       0,   292,   293,     0,     0,     0,     0,   477,   363,     0,
     1802       0,     0,     0,     0,     0,     0,     0,     0,     0,   251,
     1803       0,     0,     0,     0,   294,     0,   378,     0,     0,   940,
     1804     941,     0,   343,    46,   296,   297,   298,   299,     0,     0,
     1805       0,     0,   523,     0,   523,     0,     0,     0,     0,     0,
     1806       0,     0,     0,     0,   413,     0,     0,   363,     0,     0,
     1807       0,     0,   978,     0,     0,     0,     0,   982,     0,     0,
     1808       0,     0,     0,     0,     0,     0,     0,     0,   523,     0,
     1809     523,   211,     0,     0,     0,     0,     0,     0,     0,     0,
     1810       0,     0,     0,     0,     0,     0,   413,     0,     0,     0,
     1811     340,   363,     0,     0,     0,     0,     0,   165,     0,     0,
     1812       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1813       0,     0,     0,   381,     0,     0,     0,     0,     0,     0,
     1814       0,  1016,     0,     0,     0,     0,     0,     0,  1017,     0,
     1815       0,     0,     0,     0,     0,   413,   413,     0,     0,     0,
     1816       0,  1019,     0,  1020,     0,     0,     0,     0,     0,     0,
     1817       0,     0,     0,     0,   802,   363,     0,  1032,     0,     0,
     1818       0,     0,     0,  1036,     0,   612,     0,   612,   612,     0,
     1819       0,     0,     0,     0,   612,  1074,     0,     0,  1075,     0,
     1820       0,     0,     0,     0,   841,   363,     0,     0,     0,     0,
     1821     363,     0,     0,     0,     0,     0,     0,     0,     0,   363,
     1822     363,   363,     0,     0,     0,     0,     0,   708,     0,     0,
     1823       0,     0,     0,     0,     0,     0,     0,   363,     0,     0,
     1824       0,     0,   413,   883,     0,     0,   413,   886,     0,     0,
     1825       0,     0,     0,   888,     0,     0,     0,     0,     0,     0,
     1826       0,     0,     0,     0,     0,     0,   740,     0,     0,     0,
     1827       0,     0,   413,     0,     0,   589,     0,     0,     0,   757,
     1828       0,     0,     0,     0,   740,     0,     0,   740,     0,     0,
     1829       0,     0,     0,     0,     0,   363,   612,     0,     0,   766,
     1830       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1831    1145,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1832       0,   787,     0,     0,     0,     0,     0,     0,     0,   340,
     1833     363,   796,     0,     0,   413,   413,     0,     0,   345,     0,
     1834       0,     0,     0,   757,     0,     0,     0,     0,     0,     0,
     1835       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     1836      18,    19,    20,    21,    22,    23,    24,    25,   525,     0,
     1837      26,    27,    28,     0,  1210,     0,     0,     0,   413,    31,
     1838       0,     0,     0,     0,     0,     0,   363,     0,     0,     0,
     1839       0,     0,   861,   802,   363,     0,     0,   612,     0,   612,
     1840     381,     0,     0,     0,     0,     0,     0,    34,  1222,   612,
     1841       0,     0,    37,  1224,    38,    39,    40,     0,     0,     0,
     1842       0,  1228,     0,    41,    42,     0,     8,     9,    10,    11,
     1843      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     1844      22,    23,    24,    25,  -291,     0,     0,     0,     0,    43,
     1845       0,   157,     0,     0,  1254,    31,     0,    45,    46,     0,
     1846       0,     0,     0,     0,     0,     0,  1262,     0,     0,  1263,
     1847       0,  1264,     0,     0,     0,     0,     0,     0,     0,     0,
     1848       0,   802,     0,    34,     0,  1273,  1274,     0,   340,   363,
     1849     413,     0,   413,     0,  -291,     0,   413,     0,   757,     0,
     1850     962,     0,     0,     0,     0,     0,     0,  1287,     0,     0,
     1851     973,     0,     0,     0,     0,     0,   981,   612,   612,     0,
     1852       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     1853      18,    19,    20,    21,    22,    23,    24,    25,  1161,     0,
     1854       0,     8,     9,    10,    11,    12,     0,     0,     0,    31,
     1855       0,     0,   413,     0,  1326,     0,     0,     0,   999,  1000,
     1856       0,     0,   345,     0,     0,     0,     0,     0,   282,   283,
     1857      31,   284,     0,   413,  1142,     0,   345,    34,     0,     0,
     1858       0,     0,     0,     0,   363,     0,     0,     0,     0,     0,
     1859     413,  1154,     0,   612,   612,  1159,     0,   285,    34,     0,
     1860       0,     0,     0,   286,     0,   363,   363,   287,     0,     0,
     1861     288,   289,   290,   291,    41,    42,  1030,   292,   293,     0,
     1862     381,     0,     0,     0,     0,     0,     0,     0,     0,  1376,
     1863       0,  1377,     0,     0,     0,     0,     0,     0,     0,     0,
     1864     294,     0,   378,  1385,     0,  1386,     0,     0,  1162,    46,
     1865     296,   297,   298,   299,     0,     0,     0,   345,     0,     0,
     1866       0,     0,  1393,     0,     0,     0,     0,     0,   413,     0,
     1867     413,     0,     0,     0,     0,   413,     0,     0,  1411,  1413,
     1868       0,     0,     0,     0,   612,     0,     0,     0,     0,  1418,
     1869       0,     0,  1228,     0,     0,     0,   320,     0,     0,     0,
     1870       0,     0,     0,     0,     0,     0,     0,   802,   413,  1242,
     1871       0,     0,     0,  1440,     0,   282,   283,     0,   284,     0,
     1872       0,     0,  1447,     0,   381,  1449,     0,  1451,  1453,  1455,
     1873     973,   363,     0,     0,   740,     0,     0,     0,     0,     0,
     1874       0,     0,     0,     0,   285,     0,     0,     0,     0,     0,
     1875     286,     0,     0,     0,   287,  1149,     0,   288,   289,   290,
     1876     291,    41,    42,     0,   292,   293,  1164,  1485,     0,  1487,
     1877       0,  1228,     0,     0,     0,     0,     0,     0,     0,     0,
     1878       0,     0,     0,     0,     0,     0,  1498,   294,   381,   378,
     1879    1182,     0,   340,     0,   756,    45,    46,   296,   297,   298,
     1880     299,     0,     0,     0,     0,   973,   973,     0,     0,     0,
     1881     363,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1882       0,     0,     0,     0,     0,     0,  1214,     0,     0,     0,
     1883       0,     0,     0,     0,     1,     2,   206,     4,     5,     6,
     1884       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     1885      17,    18,    19,    20,    21,    22,    23,    24,    25,   363,
     1886     363,    26,    27,    28,    29,     0,     0,    30,     0,     0,
     1887      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1888       0,   973,     0,     0,     0,     0,     0,     0,     0,     0,
     1889       0,     0,     0,     0,     0,     0,     0,     0,    34,   861,
     1890      35,     0,    36,     0,     0,    38,    39,     0,     0,     0,
     1891       0,     0,     0,     0,  1265,  1266,     0,     1,     2,   206,
     1892       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     1893      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     1894      24,    25,    44,     0,    26,    27,    28,    29,    45,    46,
     1895      30,   282,   283,    31,  1039,  1040,     0,  1041,     0,     0,
     1896    1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,     0,     0,
     1897       0,  1050,     0,     0,     0,  1051,  1052,     0,    33,   363,
     1898     285,    34,     0,    35,     0,    36,  1053,     0,    38,    39,
     1899     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     1900     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     1901       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1902       0,     0,     0,   294,     0,  1054,     0,     0,   171,     0,
     1903       0,    45,    46,   296,   297,   298,   299,     0,     0,     0,
     1904       0,  1055,     0,     0,     0,     0,  -126,     0,     0,     0,
     1905       0,     0,     0,     0,     0,  1370,     0,     0,   740,     0,
     1906       0,     0,     0,     0,     0,     0,   413,     0,     0,     0,
     1907       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1908       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1909     413,   413,     0,     0,     0,     0,     0,     0,     0,     0,
     1910       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1911       0,     0,     0,     0,     0,   413,     1,     2,   206,     4,
     1912       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     1913      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     1914      25,     0,     0,    26,    27,    28,    29,     0,     0,    30,
     1915     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
     1916      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     1917      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
     1918      34,     0,    35,    31,    36,   286,     0,    38,    39,   287,
     1919       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     1920     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1921       0,    34,     0,     0,     0,     0,    37,     0,    38,    39,
     1922      40,     0,   294,     0,  1054,     0,     0,    41,    42,     0,
     1923      45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
     1924       0,     0,     0,     0,     0,  -126,     0,     0,     0,     0,
     1925       0,     0,     0,    43,     0,    44,     0,     0,     0,     0,
     1926       0,    45,    46,     0,     0,     0,     0,     0,   320,     1,
     1927       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     1928      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     1929      22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
     1930       0,     0,    30,   282,   283,    31,   284,     8,     9,    10,
     1931      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     1932      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     1933       0,     0,   285,    34,     0,    35,    31,    36,   286,     0,
     1934      38,    39,   287,     0,     0,   288,   289,   290,   291,    41,
     1935      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
     1936       0,     0,     0,     0,    34,     0,     0,     0,     0,   110,
     1937       0,    38,    39,     0,     0,   294,     0,    44,     0,     0,
     1938      41,    42,     0,    45,    46,   296,   297,   298,   299,     2,
     1939     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     1940      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     1941      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     1942       0,     0,   282,   283,    31,   284,     0,     0,     0,     8,
     1943       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     1944      19,    20,    21,    22,    23,    24,    25,  -292,     0,     0,
     1945       0,   285,    34,     0,    35,     0,    36,   286,    31,    38,
     1946      39,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     1947       0,   292,   293,     0,     0,     0,     0,     0,     0,     0,
     1948       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
     1949       0,     0,     0,     0,   294,     0,   342,  -292,     0,     0,
     1950       0,   756,   343,    46,   296,   297,   298,   299,     2,   206,
     1951       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     1952      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     1953      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     1954       0,   282,   283,    31,   284,     8,     9,    10,    11,    12,
     1955      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     1956      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     1957     285,    34,     0,    35,    31,    36,   286,     0,    38,    39,
     1958     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     1959     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     1960       0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
     1961      39,     0,     0,   294,     0,   961,     0,     0,     0,     0,
     1962     756,   343,    46,   296,   297,   298,   299,     2,   206,     4,
     1963       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     1964      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     1965      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     1966     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
     1967      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     1968      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
     1969      34,     0,    35,    31,    36,   286,     0,    38,    39,   287,
     1970       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     1971     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1972       0,    34,     0,     0,     0,     0,     0,     0,   207,    39,
     1973       0,     0,   294,     0,   961,     0,     0,     0,     0,   756,
     1974      45,    46,   296,   297,   298,   299,     2,   206,     4,     5,
     1975       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     1976      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     1977       0,     0,    26,    27,    28,     0,     0,     0,     0,   282,
     1978     283,    31,   284,     0,     0,     0,     0,     0,     0,     0,
     1979       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1980       0,     0,     0,     0,     0,     0,     0,     0,   285,    34,
     1981       0,    35,     0,    36,   286,     0,    38,    39,   287,     0,
     1982       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
     1983       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1984       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1985       0,   294,     0,   342,     0,     0,     0,     0,     0,   343,
     1986      46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
     1987       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     1988      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     1989       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
     1990      31,   284,     0,     0,     0,     0,     0,     0,     0,     0,
     1991       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1992       0,     0,     0,     0,     0,     0,     0,   285,    34,     0,
     1993      35,     0,    36,   286,     0,   207,    39,   287,     0,     0,
     1994     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
     1995       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1996       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1997     294,     0,   996,     0,     0,     0,     0,     0,   997,    46,
     1998     296,   297,   298,   299,     2,   206,     4,     5,     6,     7,
     1999       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2000      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2001      26,    27,    28,     0,     0,     0,     0,   282,   283,    31,
     2002     284,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2003       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2004       0,     0,     0,     0,     0,     0,   285,    34,     0,    35,
     2005       0,    36,   286,     0,    38,    39,   287,     0,     0,   288,
     2006     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2007       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2008       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
     2009       0,   961,     0,     0,     0,     0,     0,   343,    46,   296,
     2010     297,   298,   299,     2,   206,     4,     5,     6,     7,     8,
     2011       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2012      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2013      27,    28,     0,     0,     0,     0,   282,   283,    31,   284,
     2014       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2015       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2016       0,     0,     0,     0,     0,   285,    34,     0,    35,     0,
     2017      36,   286,     0,   207,    39,   287,     0,     0,   288,   289,
     2018     290,   291,    41,    42,     0,   292,   293,     0,     0,     0,
     2019       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2020       0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
     2021     378,     0,     0,     0,     0,     0,    45,    46,   296,   297,
     2022     298,   299,  -514,     0,     0,     1,     2,     3,     4,     5,
     2023       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2024      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2025       0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
     2026       0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
     2027       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2028       0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
     2029       0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
     2030       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
     2031       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2032       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2033       0,    43,     0,    44,     0,     0,     0,     0,     0,    45,
     2034      46,     1,     2,     3,     4,     5,     6,     7,     8,     9,
     2035      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2036      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2037      28,    29,     0,     0,    30,     0,     0,    31,    32,     0,
     2038       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2039       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2040       0,     0,    33,     0,     0,    34,     0,    35,     0,    36,
     2041      37,     0,    38,    39,    40,     0,     0,     0,     0,     0,
     2042       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
     2043       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2044       0,     0,     0,     0,     0,     0,     0,    43,     0,    44,
     2045       0,     0,     0,     0,     0,    45,    46,   205,     2,   206,
     2046       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2047      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2048      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2049       0,     0,     0,    31,     0,     8,     9,    10,    11,    12,
     2050      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2051      23,    24,    25,     0,     0,    26,    27,    28,   484,   485,
     2052     486,    34,     0,    35,    31,    36,    37,     0,   207,    39,
     2053      40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
     2054       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2055       0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
     2056      39,     0,     0,    43,     0,   208,     0,     0,     0,     0,
     2057       0,    45,    46,     1,     2,   206,     4,     5,     6,     7,
     2058       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2059      18,    19,    20,    21,    22,    23,    24,    25,  -291,     0,
     2060      26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
     2061       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2062       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2063       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
     2064       0,    36,     0,     0,    38,    39,     0,     0,  -291,     2,
     2065     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2066      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2067      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2068       0,    44,     0,     0,    31,     0,     0,    45,    46,     0,
     2069       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2070       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2071       0,     0,    34,     0,    35,     0,    36,    37,     0,   207,
     2072      39,    40,     0,     0,     0,     0,     0,     0,    41,    42,
     2073       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2074       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2075       0,     0,     0,     0,    43,     0,   208,     0,     0,     0,
     2076       0,     0,    45,    46,     2,   206,     4,     5,     6,     7,
     2077       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2078      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2079      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2080       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2081      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2082      24,    25,     0,     0,    26,    27,    28,    34,     0,    35,
     2083       0,    36,     0,    31,    38,    39,     0,     2,   206,     4,
     2084       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2085      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2086      25,    34,     0,    26,    27,    28,     0,     0,    38,    39,
     2087    -398,   676,    31,     0,     0,     0,     0,    45,    46,     0,
     2088       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2089       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2090      34,     0,    35,   633,    36,   337,     0,    38,    39,     0,
     2091       0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
     2092       0,     0,     0,     0,     0,     0,     0,     0,     0,  1349,
     2093       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2094       0,     0,     0,     0,   676,     0,     0,     0,     0,     0,
     2095      45,    46,     2,   206,     4,     5,     6,     7,     8,     9,
     2096      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2097      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2098      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
     2099       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2100      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2101       0,    26,    27,    28,     0,    34,     0,    35,     0,    36,
     2102      31,   683,    38,    39,     0,     0,     0,     0,     0,     0,
     2103       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2104       0,     0,     0,     0,  1351,     0,     0,     0,    34,     0,
     2105       0,     0,     0,     0,     0,    38,    39,     0,     0,   676,
     2106       0,     0,     0,     0,     0,    45,    46,     2,   206,     4,
     2107       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2108      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2109      25,     0,   684,    26,    27,    28,   685,     0,    45,    46,
     2110       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2111       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2112       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2113      34,     0,    35,     0,    36,     0,     0,   207,    39,     0,
     2114       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     2115      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2116      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2117       0,     0,     0,     0,   270,    31,     0,     0,     0,     0,
     2118      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
     2119       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2120       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2121      38,    39,     0,     2,   206,     4,     5,     6,     7,     8,
     2122       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2123      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2124      27,    28,     0,     0,     0,     0,     0,   676,    31,     0,
     2125       0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
     2126       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2127       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
     2128      36,     0,     0,    38,    39,     0,     2,   206,     4,     5,
     2129       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2130      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2131       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2132     591,    31,     0,     0,     0,     0,    45,    46,     0,     0,
     2133       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2134       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2135       0,    35,     0,    36,     0,     0,   207,    39,     8,     9,
     2136      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2137      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2138      28,     0,     0,     0,     0,   282,   283,    31,   284,     0,
     2139       0,     0,     0,   208,     0,     0,     0,     0,     0,    45,
     2140      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2141       0,     0,     0,     0,   285,    34,     0,     0,     0,     0,
     2142     286,     0,    38,    39,   287,     0,     0,   288,   289,   290,
     2143     291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
     2144       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2145       0,     0,     0,     0,     0,     0,     0,   294,     0,   516,
     2146       0,     0,   171,     0,     0,    45,    46,   296,   297,   298,
     2147     299,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2148      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2149       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
     2150      31,   284,     8,     9,    10,    11,    12,    13,    14,    15,
     2151      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2152       0,     0,    26,    27,    28,     0,     0,   285,    34,     0,
     2153       0,    31,     0,   286,     0,    38,    39,   287,     0,     0,
     2154     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
     2155       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2156       0,     0,     0,     0,    37,     0,   335,   336,    40,     0,
     2157     294,   -35,   295,     0,     0,    41,    42,     0,    45,    46,
     2158     296,   297,   298,   299,     8,     9,    10,    11,    12,    13,
     2159      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2160      24,    25,     0,   337,    26,    27,    28,     0,     0,    45,
     2161      46,   282,   283,    31,   284,     8,     9,    10,    11,    12,
     2162      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2163      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2164     285,    34,     0,     0,    31,     0,   286,     0,    38,    39,
     2165     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     2166     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     2167       0,     0,    34,     0,     0,     0,     0,   110,     0,    38,
     2168      39,     0,     0,   294,     0,   295,     0,     0,    41,    42,
     2169       0,    45,    46,   296,   297,   298,   299,     8,     9,    10,
     2170      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2171      21,    22,    23,    24,    25,     0,    44,    26,    27,    28,
     2172       0,     0,    45,    46,   282,   283,    31,   284,     8,     9,
     2173      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2174      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2175      28,     0,     0,   285,    34,     0,     0,    31,   683,   286,
     2176       0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
     2177      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
     2178       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2179       0,     0,    38,    39,     0,     0,   294,     0,   157,     0,
     2180       0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
     2181       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2182      18,    19,    20,    21,    22,    23,    24,    25,     0,   684,
     2183      26,    27,    28,  1090,     0,    45,    46,   282,   283,    31,
     2184     284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2185      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2186       0,    26,    27,    28,     0,     0,   285,    34,     0,     0,
     2187      31,   683,   286,     0,    38,    39,   287,     0,     0,   288,
     2188     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2189       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2190       0,     0,     0,     0,     0,    38,    39,     0,     0,   294,
     2191       0,   591,     0,     0,     0,     0,     0,    45,    46,   296,
     2192     297,   298,   299,     8,     9,    10,    11,    12,    13,    14,
     2193      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2194      25,     0,   684,    26,    27,    28,  1219,     0,    45,    46,
     2195     282,   283,    31,   284,     0,     8,     9,    10,    11,    12,
     2196      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2197      23,    24,    25,  -291,     0,    26,    27,    28,     0,   285,
     2198      34,     0,     0,     0,    31,   286,     0,    38,    39,   287,
     2199       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2200     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2201       0,     0,    34,     0,     0,     0,     0,    37,     0,   335,
     2202     336,    40,   294,  -291,   378,     0,     0,     0,    41,    42,
     2203      45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
     2204       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2205       0,     0,     0,     0,   633,     0,   337,     0,     0,     0,
     2206       0,     0,    45,    46,     8,     9,    10,    11,    12,    13,
     2207      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2208      24,    25,  -291,     0,    26,    27,    28,     0,     0,     0,
     2209       0,     0,     0,    31,     8,     9,    10,    11,    12,    13,
     2210      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2211      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2212       0,    34,     0,    31,     0,     0,    37,     0,   335,   336,
     2213      40,     0,  -291,     0,     0,     0,     0,    41,    42,     0,
     2214       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2215       0,    34,     0,     0,     0,     0,    37,     0,   207,    39,
     2216      40,     0,     0,     0,     0,   337,     0,    41,    42,     0,
     2217       0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
     2218       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2219       0,     0,     0,    43,     0,   270,     0,     0,     0,     0,
     2220       0,    45,    46,     8,     9,    10,    11,    12,    13,    14,
     2221      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2222      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2223       0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
     2224      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2225      25,  -291,     0,    26,    27,    28,     0,     0,     0,     0,
     2226      34,     0,    31,     0,     0,    37,     0,   335,   336,    40,
     2227       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
     2228       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2229      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2230       0,  -291,   633,     0,   337,     0,     0,     0,     0,     0,
     2231      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
     2232       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2233       0,     0,   633,     0,   337,     0,     0,     0,     0,     0,
     2234      45,    46,     8,     9,    10,    11,    12,    13,    14,    15,
     2235      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2236    -291,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2237       0,    31,     8,     9,    10,    11,    12,    13,    14,    15,
     2238      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2239       0,     0,    26,    27,    28,     0,     0,     0,     0,    34,
     2240       0,    31,     0,     0,     0,     0,    38,    39,     0,     0,
     2241    -291,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2242      17,    18,    19,    20,    21,    22,    23,    24,    25,    34,
     2243       0,    26,    27,    28,     0,     0,    38,    39,     0,     0,
     2244      31,     0,     0,   337,     0,     0,     0,     0,     0,    45,
     2245      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2246       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2247       0,     0,     0,   257,     0,    38,    39,     0,     0,    45,
     2248      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2249      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2250       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
     2251      31,     0,   157,     0,     0,     0,     0,     0,    45,    46,
     2252       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2253      18,    19,    20,    21,    22,    23,    24,    25,    34,     0,
     2254      26,    27,    28,     0,     0,   207,    39,     0,     0,    31,
     2255       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2256      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2257      26,    27,    28,     0,     0,     0,     0,    34,     0,    31,
     2258       0,     0,   270,     0,    38,    39,     0,     0,    45,    46,
     2259       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2260       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
     2261       0,     0,     0,     0,    38,    39,     0,     0,     0,     0,
     2262       0,   337,     0,     0,     0,     0,     0,    45,    46,     0,
     2263       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2264      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2265       0,   684,    26,    27,    28,     0,     0,    45,    46,     0,
     2266       0,    31,     8,     9,    10,    11,    12,    13,    14,    15,
     2267      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2268       0,     0,    26,    27,    28,     0,     0,     0,     0,    34,
     2269       0,    31,     0,     0,     0,     0,    38,    39,     0,     0,
     2270       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2271      18,    19,    20,    21,    22,    23,    24,    25,     0,    34,
     2272      26,    27,    28,     0,     0,     0,    38,    39,     0,    31,
     2273       0,     0,     0,   591,     0,     0,     0,     0,     0,    45,
     2274      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2275       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
     2276       0,     0,     0,    44,   207,    39,     0,     0,     0,    45,
     2277      46,     2,   206,     4,     5,     6,     7,     8,     9,    10,
     2278      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2279      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2280       0,     0,     0,     0,     0,     0,    31,    45,    46,     0,
     2281       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2282       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2283       0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
     2284       0,    38,    39,   282,   283,     0,   284,  1040,     0,  1041,
     2285       0,     0,  1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,
     2286       0,     0,  1523,  1050,     0,     0,     0,  1051,  1052,     0,
     2287      33,     0,   285,     0,     0,     0,     0,  -411,  1053,     0,
     2288       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
     2289      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
     2290       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2291       0,     0,     0,     0,     0,   294,     0,   378,     0,     0,
     2292     171,     0,     0,    45,    46,   296,   297,   298,   299,     0,
     2293       0,   282,   283,  1055,   284,  1040,     0,  1041,  -126,     0,
     2294    1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,     0,     0,
     2295       0,  1050,     0,     0,     0,  1051,  1052,     0,    33,     0,
     2296     285,     0,     0,     0,     0,     0,  1053,     0,     0,     0,
     2297     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     2298     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     2299       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2300       0,     0,     0,   294,     0,   378,     0,     0,   171,     0,
     2301       0,    45,    46,   296,   297,   298,   299,     0,     0,     0,
     2302       0,  1055,     0,     0,     0,     0,  -126,     2,   206,     4,
     2303       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2304      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2305      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2306       0,     0,    31,     0,   282,   283,     0,   284,  1040,     0,
     2307    1041,  1397,  1398,  1042,  1043,  1044,  1045,  1046,  1047,  1048,
     2308    1049,     0,     0,  1523,  1050,     0,     0,     0,  1051,  1052,
     2309      34,    33,    35,   285,    36,     0,     0,    38,    39,  1053,
     2310       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
     2311      41,    42,     0,   292,   293,     0,     0,     0,     0,  1310,
     2312       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2313       0,     0,     0,     0,     0,     0,   294,     0,   378,     0,
     2314       0,   171,     0,     0,    45,    46,   296,   297,   298,   299,
     2315       0,     0,   282,   283,  1055,   284,  1040,     0,  1041,  1397,
     2316    1398,  1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,     0,
     2317       0,     0,  1050,     0,     0,     0,  1051,  1052,     0,    33,
     2318       0,   285,     0,     0,     0,     0,     0,  1053,     0,     0,
     2319       0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     2320       0,   292,   293,     0,     0,     0,     0,     0,     0,     0,
     2321       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2322       0,     0,     0,     0,   294,     0,   378,     0,     0,   171,
     2323       0,     0,    45,    46,   296,   297,   298,   299,     0,     0,
     2324     282,   283,  1055,   284,  1040,     0,  1041,     0,     0,  1042,
     2325    1043,  1044,  1045,  1046,  1047,  1048,  1049,     0,     0,     0,
     2326    1050,     0,     0,     0,  1051,  1052,     0,    33,     0,   285,
     2327       0,     0,     0,     0,     0,  1053,     0,     0,     0,   287,
     2328       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2329     293,     0,     0,     0,     0,     0,     0,   282,   283,     0,
     2330     284,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2331       0,     0,   294,     0,   378,     0,     0,   171,     0,     0,
     2332      45,    46,   296,   297,   298,   299,   285,     0,     0,     0,
     2333    1055,     0,   286,     0,     0,     0,   287,     0,     0,   288,
     2334     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2335       0,     0,     0,     0,   282,   283,     0,   284,     0,     0,
     2336       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
     2337       0,   378,     0,     0,   970,     0,     0,    45,    46,   296,
     2338     297,   298,   299,   285,     0,     0,     0,     0,     0,   286,
     2339       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
     2340      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
     2341       0,   282,   283,     0,   284,     0,     0,     0,     0,     0,
     2342       0,     0,     0,     0,     0,     0,   294,     0,   378,     0,
     2343     282,   283,     0,   284,    45,    46,   296,   297,   298,   299,
     2344     285,     0,     0,     0,     0,     0,   286,     0,     0,     0,
     2345     287,     0,     0,   288,   289,   290,   291,    41,    42,   285,
     2346     292,   293,     0,     0,     0,   286,     0,     0,     0,   287,
     2347       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2348     293,     0,     0,   294,     0,   378,     0,   282,   283,     0,
     2349     284,   707,    46,   296,   297,   298,   299,     0,     0,     0,
     2350       0,     0,   294,     0,   378,     0,   282,   283,     0,   284,
     2351     343,    46,   296,   297,   298,   299,   285,     0,     0,     0,
     2352       0,     0,   286,     0,     0,     0,   287,     0,     0,   288,
     2353     289,   290,   291,    41,    42,   285,   292,   293,     0,     0,
     2354       0,   286,     0,     0,     0,   287,     0,     0,   288,   289,
     2355     290,   291,    41,    42,     0,   292,   293,     0,     0,   294,
     2356       0,     0,     0,   282,   283,     0,   284,    45,    46,   296,
     2357     297,   298,   299,     0,     0,     0,     0,     0,   510,     0,
     2358       0,     0,     0,     0,     0,     0,    45,    46,   296,   297,
     2359     298,   299,   285,     0,     0,     0,     0,     0,   286,     0,
     2360       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
     2361      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
     2362       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2363       0,     0,     0,     0,     0,   513,     0,     0,     0,     0,
     2364       0,     0,     0,    45,    46,   296,   297,   298,   299,     2,
     2365     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2366      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2367      23,    24,    25,     0,     0,     0,     0,     0,     0,     0,
     2368       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
     2369       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2370       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2371       0,     0,    34,     0,    35,     0,    36,    37,     0,   174,
     2372     175,    40,     0,     0,     0,     0,     0,     0,    41,    42,
     2373     205,     2,   206,     4,     5,     6,     7,     8,     9,    10,
     2374      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2375      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2376       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
     2377       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2378       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2379       0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
     2380       0,   207,    39,   466,     2,   206,     4,     5,     6,     7,
     2381       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2382      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2383      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2384       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2385       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2386       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
     2387       0,    36,     0,     0,    38,    39,     2,   206,     4,     5,
     2388       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2389      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2390       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2391       0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
     2392       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2393       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2394       0,    35,     0,    36,     0,     0,   207,    39
     2395};
     2396
     2397static const yytype_int16 yycheck[] =
     2398{
     2399       0,     1,    43,    43,   185,   185,   204,     0,    43,     1,
     2400     185,   239,   105,   185,   520,   533,   116,   187,   748,     0,
     2401       1,   748,   185,   168,   169,   748,   732,   185,     0,     1,
     2402     512,   186,    32,   344,   645,   185,   219,  1020,   601,    32,
     2403     156,   602,   256,    43,   873,   873,    57,   608,   491,    49,
     2404       0,    32,   495,   755,   691,   348,    49,   619,    72,   601,
     2405      32,   489,   155,    63,   348,    32,    66,  1320,   599,    69,
     2406      63,   570,   982,    66,   599,    72,    69,    69,   281,    82,
     2407      43,  1397,    32,    72,   265,   265,   599,  1039,    69,    63,
     2408     265,   261,   262,   265,    66,   106,    43,    69,   109,   599,
     2409      43,   201,   265,   425,   426,   105,    82,   265,   599,   599,
     2410      51,   266,    39,   113,   599,   265,   116,   117,   132,    39,
     2411      39,     0,  1032,   417,   634,   635,    28,     0,   117,     0,
     2412    1019,  1020,   109,    39,   110,   132,   363,     0,  1051,  1052,
     2413     367,   651,   107,   437,   185,   185,   146,   147,    39,    82,
     2414     185,   445,  1468,    32,   147,   155,   156,   186,   132,    32,
     2415     160,    32,   114,    39,    39,  1418,   131,   160,   109,    32,
     2416     481,   493,    43,     1,   904,   603,    78,   904,    49,   607,
     2417     686,   904,   109,   228,   111,   185,   186,    44,    45,   109,
     2418     512,   111,    63,   186,   487,    66,   156,   130,    69,   709,
     2419     628,   201,   247,   417,   632,   111,    95,   218,    49,   209,
     2420    1039,    44,    45,   109,  1127,    82,   209,   717,   109,  1500,
     2421     111,   221,   185,   437,   265,   265,   409,   717,   221,    64,
     2422     265,   445,   717,   109,   109,   111,   111,   266,   185,   239,
     2423     129,  1224,   185,   694,   111,    55,  1527,   340,    82,   221,
     2424     405,   251,   813,   109,   110,   577,   109,   114,   251,   259,
     2425     823,   272,   899,   112,   264,   265,   266,   116,   279,   116,
     2426     251,   271,   113,   266,   109,   109,   147,   370,   131,   251,
     2427     811,   823,   115,   985,   251,   132,   811,    97,    11,   160,
     2428     800,  1274,    96,   792,   294,   395,     0,    82,   811,   112,
     2429     503,   251,  1401,    44,    45,   146,   306,   294,   619,    85,
     2430     109,   811,   923,   624,   185,   186,   432,   601,   122,    72,
     2431     811,   811,   322,   423,   479,   110,   811,   327,    32,   429,
     2432      83,    84,   110,  1471,   327,  1287,   347,   113,   209,  1477,
     2433     340,   111,  1048,   113,   344,   130,     3,    82,   348,   349,
     2434     221,   116,   130,   364,    72,   110,  1451,   368,   111,  1497,
     2435     130,   588,    66,   363,  1502,    83,    84,   367,   209,   932,
     2436     370,    96,   251,   114,   109,   130,   405,   256,   251,     3,
     2437     251,  1210,  1210,   193,  1273,  1274,   680,   109,   251,   111,
     2438    1485,   109,  1487,   256,   265,   395,  1495,   122,   239,   116,
     2439     931,  1500,    72,   630,   116,   405,   216,    90,    91,   525,
     2440    1393,   116,   405,    83,    84,   132,   226,   845,   931,   116,
     2441     132,  1520,     0,   423,   252,   425,   426,    49,  1527,   429,
     2442     271,   524,   432,   744,   128,   132,   998,   131,   425,   426,
     2443     931,   111,   125,   126,   119,   120,  1007,  1008,   116,   116,
     2444     479,   116,   131,   453,   905,   109,   327,    72,  1287,   111,
     2445     966,   113,   665,   130,   132,   306,   680,   132,    83,    84,
     2446     112,   471,   432,   589,   116,  1385,  1386,   348,   130,   479,
     2447     116,   481,   109,   483,   294,   655,   479,   487,  1440,     0,
     2448     483,   113,   706,   493,   130,  1447,   111,   940,   980,   950,
     2449     116,   646,   483,   344,  1393,   505,   116,   507,   109,   937,
     2450     510,   483,   512,   513,   130,  1126,    72,   221,   505,   109,
     2451     520,   481,   132,   510,   524,   525,   513,    83,    84,   109,
     2452     823,   686,   735,   483,   405,  1098,  1500,   109,   417,   823,
     2453       4,     5,     6,     7,     8,     9,  1498,   251,   116,    72,
     2454     110,    74,    75,   653,   417,   111,  1520,   116,   437,   109,
     2455      83,    84,   110,  1527,   132,   525,   445,   112,   116,   569,
     2456     570,   116,   112,   132,   437,   802,   116,   577,  1084,   566,
     2457     807,  1287,   445,  1089,   425,   426,   109,   209,   588,   589,
     2458     116,   114,   903,   593,   110,    88,    89,   116,   116,   599,
     2459     116,   601,   481,   110,   483,    69,   132,    71,   110,   620,
     2460     483,  1440,   483,   132,   132,   110,   487,   112,  1447,   619,
     2461     483,   116,   112,   112,   624,   636,   626,   116,   116,   589,
     2462     630,   116,   442,   633,   634,   635,   131,   132,   466,   650,
     2463      66,   110,  1114,   936,   132,   349,  1118,   132,    72,   271,
     2464     743,   651,   493,   653,   110,  1361,    82,   686,   468,    83,
     2465      84,   109,   110,   111,    72,  1116,    74,    75,   895,  1498,
     2466     110,   512,   294,    92,    93,    83,    84,   860,    10,    11,
     2467      12,    13,    14,   683,   306,   115,   686,   998,   110,   109,
     2468      57,   117,   808,   109,   116,   505,   110,   880,   694,   527,
     2469     510,   109,   116,   513,   532,   109,   114,    39,   109,   709,
     2470     710,   711,    64,   110,   942,   132,   589,   717,   718,   116,
     2471     731,   866,   109,   904,   904,  1176,  1177,   110,   599,   904,
     2472     601,   110,   904,   116,   160,    67,   577,   116,  1444,   106,
     2473    1446,   904,   109,   743,   744,   109,   904,   111,   748,   749,
     2474     110,   906,   132,   581,   904,    72,   116,    74,    75,   115,
     2475     116,    10,    11,    12,    13,    14,    83,    84,   472,   117,
     2476      85,    86,    87,   112,  1504,   123,   124,  1504,   619,   483,
     2477     109,  1504,   111,   624,   744,   110,  1304,   114,   155,   785,
     2478      39,   116,   792,  1499,   109,   221,   111,   114,   113,   114,
     2479     800,   680,   802,   109,   804,   111,   114,   807,   808,   902,
     2480     110,   811,   109,  1011,   111,   686,   116,   680,    67,   110,
     2481     117,   118,   110,   823,   652,   116,   654,   706,   116,   132,
     2482     109,   453,   111,   259,  1145,    85,    86,    87,   264,   132,
     2483     109,    72,   111,   706,   110,    76,   717,   718,   808,   110,
     2484     116,   218,    83,    84,   109,   116,   111,   114,   668,   109,
     2485     109,   111,   111,   113,   114,   744,   862,   677,   117,   118,
     2486      66,   681,   109,   873,   111,   110,   704,   906,   109,   109,
     2487     111,   116,    82,   505,   110,   507,   117,   118,   510,  1034,
     2488     116,   513,   873,   110,  1121,   895,     0,     1,   109,   116,
     2489     111,   873,   902,   903,   904,   272,   906,   112,   110,   905,
     2490     109,  1114,   279,  1224,   116,  1118,  1119,   621,   918,   110,
     2491     111,   117,   109,   349,    82,    29,    30,   110,    32,  1084,
     2492    1381,   931,   932,   116,  1089,   808,   936,    58,    59,    43,
     2493     811,   941,   942,   903,   118,    49,  1397,   127,   109,   941,
     2494     111,   128,   823,    57,   950,    94,   117,   118,   131,    63,
     2495     941,   909,    66,   911,   160,    69,   966,   111,   109,   941,
     2496     111,   109,   110,   111,  1480,   109,   117,   118,    82,    83,
     2497     347,   109,     4,     5,     6,     7,     8,     9,   112,   985,
     2498     109,   110,   111,   697,   873,   115,   116,   364,   998,   112,
     2499     873,   368,   106,   112,   430,   109,  1106,   711,    44,    45,
     2500     873,   110,   116,   505,   110,   507,  1467,  1468,   510,  1019,
     2501    1020,   513,   110,  1529,   903,   221,   109,   110,   111,     1,
     2502     110,  1234,   110,   904,   110,   906,  1247,  1248,  1249,  1039,
     2503    1036,   109,    72,   147,    74,    75,   472,    69,   112,    71,
     2504     111,   155,   114,    83,    84,  1084,   160,   116,  1039,  1019,
     2505    1089,   683,   131,   259,   431,   936,   114,  1039,   264,   114,
     2506       4,     5,     6,     7,     8,     9,   109,    49,   112,  1079,
     2507     112,   185,   186,   110,  1084,   551,   552,   897,   112,  1089,
     2508     553,   554,    72,   110,    74,    75,    76,   201,  1098,    33,
     2509     804,   942,   112,    83,    84,   209,  1106,    58,    59,    60,
     2510     132,   112,   130,  1206,   218,   559,   560,   221,  1321,    72,
     2511    1116,  1121,  1325,    76,   228,   130,   130,   116,   956,   109,
     2512      83,    84,    29,   105,   110,    69,   110,    71,   115,   243,
     2513     115,   113,   112,   247,   110,  1145,   114,   251,   252,   112,
     2514     978,   115,   109,   349,   982,   116,   109,   998,   110,   132,
     2515    1039,   265,   266,   110,   117,   118,  1039,   593,   272,   873,
     2516     555,   556,   557,   558,   146,   279,  1039,   116,   110,   110,
     2517    1176,  1177,   110,   155,   110,  1145,   116,  1187,  1188,   110,
     2518     110,   110,   110,   110,   110,   621,  1188,   110,   110,   110,
     2519     626,   110,  1189,  1190,  1032,  1192,  1206,  1188,   110,   110,
     2520    1210,   110,  1199,  1084,  1201,  1187,  1188,   115,  1089,  1422,
     2521      29,   588,   130,   327,  1224,   131,   110,   116,  1228,  1210,
     2522     112,   112,   110,   205,   430,   110,  1228,   209,  1210,    72,
     2523    1050,    74,    75,   347,   348,   110,   116,  1228,   116,   112,
     2524      83,    84,   114,   620,   130,   110,  1228,   110,   110,   116,
     2525     364,   112,   110,   110,   368,   110,  1145,   239,   109,   636,
     2526     116,   697,   116,  1273,  1274,   379,   472,  1377,   111,   109,
     2527     112,   109,  1282,   650,   109,   711,  1514,  1287,   109,   112,
     2528     130,   395,   873,   132,   110,   115,   918,  1001,   110,   271,
     2529     115,   405,   274,   110,   128,    72,  1287,    74,    75,    76,
     2530    1282,   115,   114,  1273,   112,  1287,    83,    84,   132,   423,
     2531    1320,   110,   294,  1504,  1504,   429,   112,   431,  1320,  1504,
     2532     112,  1210,  1504,   116,   306,  1039,   110,  1210,   110,  1320,
     2533     110,  1504,   109,   112,   112,  1224,  1504,  1210,  1320,    72,
     2534    1505,    74,    75,    76,  1504,   112,   110,   112,    47,   112,
     2535      83,    84,   466,   112,   731,  1376,   132,   471,   340,   132,
     2536    1357,   132,   344,   132,  1529,   479,   132,  1377,   804,   483,
     2537    1480,    30,   115,   487,   110,  1381,   490,   115,   492,   130,
     2538     110,   363,   110,  1393,   115,   367,   463,   593,   370,   112,
     2539      72,  1397,    74,    75,    76,   112,   112,   112,  1287,   112,
     2540     112,    83,    84,   284,  1287,   110,   112,   109,  1418,  1247,
     2541    1248,  1249,   112,   527,  1287,   621,  1418,   109,   532,   109,
     2542     626,    60,   110,    82,    83,   306,   307,  1418,   114,   110,
     2543    1440,   132,   112,   112,   110,   112,  1418,  1447,   110,  1449,
     2544      96,  1451,    96,   425,   426,   109,   109,  1079,   132,  1440,
     2545     115,  1042,   110,  1504,  1504,   110,  1447,   110,  1440,  1504,
     2546     110,  1467,  1468,   344,   116,  1447,  1505,   581,    42,   130,
     2547    1480,   453,   132,  1187,   588,  1485,  1296,  1487,   110,   110,
     2548      96,   132,    96,   132,   466,   599,   110,   601,  1498,   132,
     2549    1529,   697,   110,   110,  1504,  1505,  1210,   132,   110,   380,
     2550     115,   112,  1505,   112,  1514,   711,   620,  1498,   109,   491,
     2551     132,   493,   132,   495,   110,   115,  1498,   115,   895,  1529,
     2552     110,   110,   636,   505,   132,   507,  1529,   641,   510,   110,
     2553     512,   513,  1055,   562,   564,   561,   650,   976,   652,   653,
     2554     654,   563,   524,  1468,   565,  1210,    49,  1385,  1386,  1539,
     2555    1363,  1440,  1119,  1297,  1325,  1447,  1070,  1440,  1447,   683,
     2556      63,    66,   683,    66,  1447,  1001,    69,  1440,  1282,  1089,
     2557      75,   911,   686,  1287,  1447,   919,   690,   581,   692,   696,
     2558     866,   647,   696,   970,   243,  1423,   721,   938,  1228,   731,
     2559     704,    -1,   669,   483,   569,   577,    -1,   569,   804,   569,
     2560      -1,    -1,    -1,   717,   718,    70,   588,    -1,    73,  1498,
     2561      -1,    76,   117,    78,    -1,  1498,    -1,   731,    -1,  1210,
     2562      85,    -1,    -1,  1504,     3,  1498,    -1,    -1,  1448,    -1,
     2563    1450,    10,    11,    12,    13,    14,    -1,   619,    -1,    -1,
     2564      -1,    -1,   624,  1481,   147,    -1,    -1,    72,   630,    74,
     2565      75,    76,  1490,    -1,    -1,   160,    -1,   160,    83,    84,
     2566      39,    -1,    -1,  1514,  1484,   189,  1486,   548,   549,   550,
     2567      -1,    -1,   196,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2568      -1,    -1,    -1,   186,   109,    -1,   111,    -1,    67,    -1,
     2569      -1,    -1,   117,   118,    -1,    -1,    -1,   811,    -1,    -1,
     2570      -1,   683,    -1,    72,    -1,   130,   209,    76,  1528,   823,
     2571    1530,   788,  1303,    -1,    83,    84,   221,    -1,   221,    -1,
     2572     379,   798,    -1,  1543,  1544,    72,  1440,    74,    75,    76,
     2573      -1,    -1,   669,  1447,    -1,   812,    83,    84,    -1,   721,
     2574     109,    -1,    -1,    -1,   268,    -1,    -1,   212,   117,   118,
     2575      -1,  1187,   866,    -1,   259,    -1,    -1,    -1,   872,   264,
     2576      -1,   743,   109,    -1,  1355,    -1,    -1,  1358,     3,    -1,
     2577     117,   118,    -1,    -1,   279,    10,    11,    12,    13,    14,
     2578      -1,   895,    -1,   282,  1498,   284,   285,    -1,    -1,    -1,
     2579     904,    -1,   906,   292,   293,  1001,    -1,    -1,   322,   913,
     2580      -1,    -1,    -1,    -1,    39,    -1,   330,   306,   307,   333,
     2581    1401,    -1,    -1,    -1,   279,  1406,    -1,  1449,    -1,  1451,
     2582     802,    -1,   936,    -1,   327,   807,    -1,    -1,    -1,  1206,
     2583     463,   490,    67,   492,    -1,    -1,    -1,    -1,     0,     1,
     2584      -1,    -1,   956,  1434,   349,   344,  1282,    -1,    -1,    -1,
     2585      -1,   788,    -1,  1485,    -1,  1487,   970,    -1,    -1,    -1,
     2586      -1,   798,    -1,    -1,   978,    -1,    -1,    -1,   982,    -1,
     2587      32,    -1,    -1,   397,   755,   812,    -1,   401,    -1,    -1,
     2588      -1,   380,    -1,    -1,    -1,     3,   351,    49,   353,    -1,
     2589      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     2590      -1,    -1,   405,    -1,    -1,    -1,    -1,    69,    -1,    -1,
     2591      -1,    -1,    -1,   895,    -1,    -1,    -1,    -1,  1032,     0,
     2592     902,    39,    -1,    -1,    -1,   430,    -1,  1518,    -1,    -1,
     2593      26,    27,    28,  1524,    -1,    -1,   918,    -1,    -1,  1016,
     2594    1017,    -1,   447,   105,  1535,    -1,    -1,    -1,  1539,    67,
     2595      -1,    32,    -1,    -1,   478,    -1,  1070,    -1,   940,   941,
     2596     942,    -1,    -1,    -1,    -1,    -1,    -1,   472,    -1,    -1,
     2597    1084,    -1,    -1,    -1,    -1,  1089,   441,    -1,    -1,    -1,
     2598      -1,  1187,   641,    -1,    -1,   147,    -1,    -1,    69,    -1,
     2599      -1,    -1,  1106,   155,   156,    -1,    -1,  1074,  1075,  1376,
     2600      -1,    -1,    98,    -1,   100,    -1,    97,    98,    99,   100,
     2601     101,   102,   103,   104,   105,   106,   998,    -1,    -1,    -1,
     2602      -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,    -1,   125,
     2603      -1,   690,    -1,   692,    -1,    -1,   669,   696,    -1,   201,
     2604     131,    -1,   204,   205,    -1,   569,   570,   209,    -1,   548,
     2605     549,   550,   551,   552,   553,   554,   555,   556,   557,   558,
     2606     559,   560,   561,   562,   563,   564,   565,    -1,   230,  1183,
     2607      -1,    -1,   234,    -1,   236,   156,  1282,    -1,    -1,  1016,
     2608    1017,    -1,    -1,   245,    -1,   181,    -1,    -1,   593,   251,
     2609      -1,    -1,  1206,   189,   256,   191,   192,  1079,    -1,    -1,
     2610     196,    -1,   198,   199,   266,    -1,    -1,    -1,    -1,    -1,
     2611      -1,    72,   274,    74,    75,    76,   621,   998,    -1,    -1,
     2612      -1,   626,    83,    84,    -1,    -1,    -1,    -1,    -1,     0,
     2613      -1,    -1,   656,  1247,  1248,  1249,   660,  1074,  1075,  1121,
     2614      10,    11,    12,    13,    14,  1222,    -1,    -1,   109,   230,
     2615     111,    -1,    -1,    -1,    -1,   788,   117,   118,  1039,    -1,
     2616      -1,    32,    -1,    -1,    -1,   798,    -1,    -1,    -1,    39,
     2617     251,    -1,   268,    -1,    -1,   256,    -1,  1254,   340,   812,
     2618      -1,    -1,   344,    -1,    -1,  1262,  1263,  1264,   350,    -1,
     2619      -1,    -1,   697,    -1,    -1,   694,    -1,    67,    69,    -1,
     2620      -1,   363,    -1,    -1,    -1,   367,   711,   866,   370,    -1,
     2621      -1,    -1,    -1,   872,    -1,    -1,    -1,    -1,    -1,    -1,
     2622      -1,    -1,    -1,    -1,  1206,    -1,   731,    -1,    -1,    -1,
     2623      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,   109,
     2624      -1,   111,    -1,    -1,    -1,    -1,  1228,   117,   118,  1326,
     2625      -1,    -1,    -1,    -1,   913,   417,   755,    -1,    -1,    -1,
     2626      -1,    39,  1376,  1377,    -1,    -1,   731,    -1,   792,   350,
     2627     432,  1385,  1386,    -1,    -1,   437,    -1,    -1,    -1,    -1,
     2628      26,    27,    28,   445,    -1,   156,   785,    -1,    -1,    67,
     2629      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,   804,
     2630      -1,   463,    -1,    -1,   466,    83,    84,    -1,    -1,  1423,
     2631      -1,   970,    72,    -1,    74,    75,    76,  1254,    -1,   481,
     2632      -1,   483,    -1,    83,    84,  1262,  1263,  1264,    -1,   491,
     2633      -1,   109,    -1,   495,    -1,    -1,   417,    -1,  1320,   117,
     2634     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     2635      -1,   432,    98,    -1,   100,    -1,   437,   117,   118,    -1,
     2636      -1,    -1,   524,   525,   445,    -1,  1480,  1481,    -1,    -1,
     2637      -1,    -1,    -1,    -1,    -1,    -1,  1490,    -1,    -1,    -1,
     2638     251,    -1,   463,  1016,  1017,   256,   910,    -1,    -1,  1326,
     2639    1504,  1505,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2640     481,    -1,   483,    -1,    -1,    -1,   905,    -1,   570,    -1,
     2641      72,  1070,    74,    75,    76,  1529,    -1,    -1,    -1,    -1,
     2642      -1,    83,    84,    -1,    -1,    -1,   588,   589,    -1,    -1,
     2643      10,    11,    12,    13,    14,   181,  1418,    -1,    -1,   601,
     2644      -1,  1074,  1075,    -1,   525,   191,   192,   109,    -1,   111,
     2645     196,   950,   198,   199,    -1,   117,   118,   619,    -1,    39,
     2646      -1,    -1,   624,   987,    -1,    -1,    -1,  1449,   630,  1451,
     2647      -1,   633,   634,   635,    -1,    -1,    -1,   573,   574,   350,
     2648    1004,    -1,    -1,    -1,    -1,    -1,   985,    67,    -1,   651,
     2649      -1,    -1,    -1,    -1,    -1,    -1,  1001,    -1,    -1,   998,
     2650      -1,    -1,    -1,  1485,    -1,  1487,   602,   669,   589,   605,
     2651     606,    -1,   608,    -1,   610,   611,    -1,    -1,   680,   615,
     2652     616,    -1,    -1,    72,  1183,    74,    75,    76,    -1,   109,
     2653      -1,   111,  1514,    -1,    83,    84,    -1,   117,   118,    -1,
     2654    1039,    -1,    -1,    -1,   706,    -1,   417,   709,    -1,    -1,
     2655      -1,    -1,   633,   634,   635,    -1,   718,    -1,  1082,   721,
     2656     109,   432,   111,    -1,     0,    -1,   437,    -1,   117,   118,
     2657     651,    -1,    -1,    -1,   445,    -1,    -1,    -1,    -1,    -1,
     2658      -1,   743,   744,    -1,    -1,    -1,    -1,   749,   669,  1222,
     2659      -1,    -1,   463,    -1,    -1,    -1,    32,    -1,  1122,   680,
     2660      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2661     481,    -1,   483,    -1,    -1,    -1,    -1,  1116,    -1,    -1,
     2662      -1,  1254,    -1,    -1,    -1,   706,   788,    -1,   709,  1262,
     2663    1263,  1264,    -1,    69,    -1,    -1,   798,    -1,   800,    -1,
     2664     802,    -1,    -1,   805,    -1,   807,   808,    -1,    -1,    -1,
     2665     812,    -1,    -1,    -1,   525,    -1,    -1,   753,   754,    -1,
     2666     822,    -1,    -1,   744,    -1,    -1,    -1,    -1,    -1,    -1,
     2667      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1176,  1177,    -1,
     2668      -1,    -1,  1187,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2669      -1,     0,    -1,  1326,    -1,    -1,    -1,    -1,    -1,    -1,
     2670      -1,    -1,    -1,    37,    38,    -1,    40,   788,    -1,    -1,
     2671      -1,   873,    -1,    -1,    -1,    -1,    -1,   798,   589,   800,
     2672     156,    -1,    -1,    32,   805,    -1,    -1,   808,    -1,    -1,
     2673      -1,   812,    66,   895,    -1,    -1,    -1,    -1,    72,    -1,
     2674     902,   903,    76,    -1,   906,    79,    80,    81,    82,    83,
     2675      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     2676      69,    -1,   633,   634,   635,    -1,    -1,    -1,    -1,    -1,
     2677     932,    -1,    -1,    -1,    -1,   109,    -1,  1282,   940,   941,
     2678     651,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
     2679      -1,    -1,   873,    -1,    -1,    -1,    -1,    -1,   669,    -1,
     2680      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   680,
     2681      -1,    -1,    -1,    -1,   910,   251,    -1,    -1,    -1,   915,
     2682     256,    -1,   903,    -1,    -1,    -1,    -1,   573,   574,    -1,
     2683      -1,    -1,    -1,    -1,    -1,   706,   998,    -1,   709,    -1,
     2684      -1,    -1,    -1,    -1,    -1,    -1,    -1,   156,    -1,  1011,
     2685      -1,    -1,    -1,    -1,  1016,  1017,   602,  1019,  1020,   605,
     2686     606,    -1,   608,    -1,   610,   611,    -1,    -1,    -1,   615,
     2687     616,    -1,    -1,   744,    -1,    -1,    -1,  1039,    -1,    -1,
     2688      -1,    -1,  1381,    -1,     0,     1,    -1,    -1,    -1,    -1,
     2689      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1397,    -1,
     2690      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,
     2691      -1,    -1,  1074,  1075,   350,    -1,    32,   788,    -1,    -1,
     2692      -1,    -1,    -1,    -1,    -1,    -1,    -1,   798,    -1,   800,
     2693      -1,    -1,    -1,    39,   805,  1016,  1017,   808,  1019,  1020,
     2694      -1,   812,   251,    -1,    -1,    -1,    -1,   256,    -1,    -1,
     2695      66,    -1,    -1,    69,    -1,    -1,    -1,    -1,  1039,  1121,
     2696      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,  1467,  1468,
     2697      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
     2698    1076,   417,    -1,  1145,    -1,    -1,    -1,    -1,    -1,    -1,
     2699      -1,    -1,    -1,  1074,  1075,    -1,   432,    -1,    -1,    -1,
     2700      -1,   437,   873,   109,    -1,    -1,    -1,   753,   754,   445,
     2701      -1,   117,   118,    -1,    10,    11,    12,    13,    14,    -1,
     2702      -1,    -1,    -1,    -1,    -1,    -1,  1188,   463,    -1,    -1,
     2703      -1,    -1,   903,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2704     156,   350,    -1,    39,  1206,   481,    -1,   483,  1210,    -1,
     2705      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2706    1222,    -1,  1224,    -1,  1145,    -1,  1228,    -1,    -1,    -1,
     2707      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     2708      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,   525,
     2709      -1,    -1,  1254,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2710    1262,  1263,  1264,    -1,    -1,   221,    -1,  1188,   417,  1205,
     2711      -1,  1273,  1274,   109,    -1,   111,    -1,    -1,    -1,    -1,
     2712      -1,   117,   118,   432,    -1,  1287,    -1,    -1,   437,  1210,
     2713      -1,    -1,    -1,    -1,    -1,   251,   445,    -1,    -1,    -1,
     2714      -1,  1222,    -1,  1224,    -1,  1016,  1017,    -1,  1019,  1020,
     2715      -1,    -1,    -1,   589,   463,    -1,    -1,    -1,  1320,    -1,
     2716      -1,    -1,    -1,    -1,  1326,    -1,    -1,    -1,  1039,   915,
     2717      -1,    -1,   481,  1254,   483,    -1,    -1,    -1,    -1,    -1,
     2718      -1,  1262,  1263,  1264,    -1,    -1,    -1,    -1,    -1,    -1,
     2719      -1,    -1,  1273,  1274,    -1,    -1,    -1,   633,   634,   635,
     2720      -1,    -1,    -1,  1074,  1075,    -1,  1287,    -1,    -1,    -1,
     2721      -1,    -1,    -1,    -1,    -1,   651,   525,    -1,    -1,    -1,
     2722      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2723      -1,  1393,    -1,   669,    -1,    -1,    -1,    -1,    -1,    -1,
     2724      -1,    -1,    -1,    -1,   680,  1326,    -1,    10,    11,    12,
     2725      13,    14,    -1,    -1,    -1,    -1,  1418,    -1,    -1,    -1,
     2726      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2727     706,    -1,    -1,   709,  1145,    -1,    39,    -1,  1440,    -1,
     2728     589,    -1,    -1,    -1,    -1,  1447,    -1,    53,    -1,    55,
     2729      -1,    -1,    58,    59,    60,    -1,    62,    -1,    -1,    -1,
     2730      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,   744,    72,
     2731      76,    -1,  1393,    76,    -1,    -1,   432,  1188,    -1,    -1,
     2732      83,    84,    88,    89,   633,   634,   635,    -1,    -1,    -1,
     2733    1076,    -1,    -1,    -1,    -1,    -1,  1498,    -1,    -1,  1210,
     2734      -1,    -1,   651,  1505,    -1,    -1,   109,    -1,    -1,    -1,
     2735      -1,  1222,   788,  1224,   117,   118,    -1,    -1,    -1,  1440,
     2736     669,    -1,   798,    -1,   800,    -1,  1447,   483,    -1,   805,
     2737      -1,   680,   808,    -1,    -1,    -1,   812,    10,    11,    12,
     2738      13,    14,    -1,  1254,    -1,    -1,    -1,    -1,    -1,    -1,
     2739      -1,  1262,  1263,  1264,    -1,    -1,    -1,   706,    -1,    -1,
     2740     709,    -1,  1273,  1274,    -1,    -1,    39,    -1,    -1,   525,
     2741      -1,    -1,    -1,    -1,    -1,    -1,  1287,  1498,    -1,    -1,
     2742      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2743      -1,    -1,    -1,    -1,    67,   744,    -1,   873,    -1,    72,
     2744      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
     2745      83,    84,    -1,    -1,    -1,  1326,    -1,    -1,    -1,  1205,
     2746      -1,    -1,    -1,    -1,    -1,    -1,    -1,   903,    -1,    -1,
     2747      -1,    -1,    -1,   589,    -1,    -1,   109,    -1,   111,   788,
     2748      -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,   798,
     2749      -1,   800,    -1,    -1,    -1,    -1,   805,    -1,    -1,   808,
     2750      -1,    -1,    -1,   812,    -1,    -1,    -1,    -1,    -1,    -1,
     2751      -1,    -1,    -1,    -1,    -1,    -1,    -1,   633,   634,   635,
     2752      -1,    -1,  1393,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2753      -1,    -1,    -1,    -1,    -1,   651,    -1,    -1,     3,     4,
     2754       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2755      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2756      25,    26,    27,    -1,   873,    30,    31,    32,    33,  1440,
     2757      -1,    36,    -1,    -1,    39,    40,  1447,   343,    -1,   345,
     2758    1016,  1017,    -1,  1019,  1020,    -1,    -1,    -1,    -1,    -1,
     2759     356,   357,    -1,   709,   903,    -1,    -1,    -1,    -1,    64,
     2760      -1,    -1,    67,  1039,    69,    -1,    71,    72,    -1,    74,
     2761      75,    76,    -1,    10,    11,    12,    13,    14,    83,    84,
     2762      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1498,    -1,    -1,
     2763      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1074,  1075,
     2764      -1,    -1,    39,    -1,   109,    -1,   111,    -1,    66,    -1,
     2765     115,    -1,   117,   118,    -1,    -1,    -1,    75,    -1,    77,
     2766      -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    86,    -1,
     2767      67,    -1,    49,    -1,    -1,    72,    -1,    74,    75,    76,
     2768      -1,    -1,    -1,    -1,   800,    -1,    83,    84,    -1,    66,
     2769      -1,    -1,   808,    -1,    10,    11,    12,    13,    14,   117,
     2770      -1,   119,   120,   121,    -1,    -1,    -1,  1016,  1017,  1145,
     2771    1019,  1020,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     2772     117,   118,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     2773    1039,    -1,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,
     2774     117,    -1,   160,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2775      -1,    67,  1188,    -1,    -1,    -1,    72,   873,    74,    75,
     2776      76,    -1,    -1,    -1,    -1,  1074,  1075,    83,    84,   146,
     2777      -1,    -1,    -1,    -1,  1210,    -1,    -1,    -1,    -1,   156,
     2778      -1,    -1,    -1,   160,    -1,    -1,  1222,    -1,  1224,    -1,
     2779      -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
     2780      -1,   117,   118,   221,    -1,   223,   224,   225,    -1,    -1,
     2781      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1254,    -1,
     2782      -1,    -1,    -1,    -1,    -1,   941,  1262,  1263,  1264,    -1,
     2783      -1,    -1,   209,    -1,    -1,    -1,  1145,  1273,  1274,    -1,
     2784      -1,   259,    -1,    -1,   221,    -1,   264,    -1,    -1,    -1,
     2785      -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2786      -1,   279,   239,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2787      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1188,
     2788      -1,    -1,    -1,    -1,    -1,    -1,    -1,   264,    -1,    -1,
     2789    1326,    -1,    -1,    -1,   271,    -1,    -1,    -1,    -1,    -1,
     2790      -1,  1210,    -1,  1019,  1020,    -1,    -1,    -1,    -1,   327,
     2791      -1,    -1,    -1,  1222,    -1,  1224,    -1,   294,    -1,    -1,
     2792      -1,    -1,    -1,  1039,    -1,    -1,    -1,    -1,    -1,   306,
     2793      -1,   349,   698,    -1,   700,    -1,   354,   355,    -1,    -1,
     2794      -1,   707,   708,    -1,   362,  1254,   712,    -1,    -1,    -1,
     2795      -1,    -1,    -1,  1262,  1263,  1264,    -1,  1393,   724,    -1,
     2796      -1,    -1,    -1,   729,  1273,  1274,    -1,   344,    -1,    -1,
     2797      -1,    -1,   349,    -1,    -1,    -1,    -1,    -1,  1287,    -1,
     2798      -1,    -1,    -1,    -1,    -1,    -1,    -1,   405,    -1,    -1,
     2799      -1,   757,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2800      -1,    -1,    -1,    -1,  1440,   423,    -1,    -1,    -1,    -1,
     2801     428,  1447,   430,    -1,    -1,    -1,    -1,  1326,    -1,    -1,
     2802      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   447,
     2803      -1,    -1,   450,   451,    -1,    -1,    -1,    -1,    -1,    -1,
     2804     458,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   425,   426,
     2805      -1,    -1,    -1,    -1,   472,   432,    -1,    -1,    -1,    -1,
     2806      -1,   479,  1498,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2807      -1,  1187,  1188,    -1,    -1,    -1,   453,    -1,    -1,    -1,
     2808      -1,    -1,    -1,    -1,  1393,    -1,    -1,    -1,    -1,    -1,
     2809     856,   857,   858,   859,  1210,   861,    -1,    -1,    -1,    -1,
     2810      -1,    -1,    -1,    -1,   481,    -1,    -1,    -1,    -1,    -1,
     2811     876,    -1,  1228,    -1,    -1,    -1,   493,    -1,    -1,    -1,
     2812      -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,   505,    -1,
     2813     507,  1440,    -1,   510,    -1,   512,   513,    -1,  1447,    -1,
     2814      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,    -1,
     2815      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1273,  1274,    -1,
     2816      -1,    -1,    -1,    -1,   930,    -1,  1282,    -1,    -1,    -1,
     2817      -1,  1287,    -1,    -1,    -1,   593,    -1,    -1,    -1,    -1,
     2818      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1498,
     2819      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2820     577,    -1,    -1,   621,  1320,    -1,    -1,    -1,   626,   975,
     2821      -1,    -1,   589,    -1,    -1,   981,   593,    -1,    -1,    -1,
     2822     986,    -1,    -1,    -1,    -1,   991,    -1,   993,    -1,    -1,
     2823      -1,   997,    -1,   999,  1000,    -1,    -1,  1003,    -1,    -1,
     2824      -1,    -1,   619,    -1,    -1,    -1,  1012,   624,    -1,    -1,
     2825      -1,    -1,    -1,    -1,    -1,    -1,   633,   634,   635,    -1,
     2826      -1,    -1,    -1,    -1,  1030,  1031,    -1,    -1,    -1,    -1,
     2827      -1,    -1,    -1,    -1,   651,    -1,    -1,  1393,    -1,   697,
     2828      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2829      -1,  1057,    -1,   711,  1060,    -1,    -1,    -1,    -1,    -1,
     2830      -1,    -1,  1418,    -1,    -1,    -1,   683,    37,    38,    -1,
     2831      40,    -1,    -1,   731,    -1,    -1,    -1,    -1,    -1,    -1,
     2832      -1,    -1,    -1,    -1,  1440,    -1,    -1,    -1,    -1,    -1,
     2833      -1,  1447,   709,    -1,   711,    -1,    66,  1103,    -1,    -1,
     2834      -1,    -1,    72,  1109,  1110,    -1,    76,    -1,    -1,    79,
     2835      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     2836      -1,    -1,    -1,  1129,    -1,    -1,  1132,   744,    -1,    -1,
     2837    1136,    -1,    -1,    -1,   792,    -1,    -1,    -1,    44,   109,
     2838      -1,   111,  1498,  1149,   114,    -1,   804,   117,   118,   119,
     2839     120,   121,   122,    -1,    -1,    -1,  1162,    -1,  1164,  1165,
     2840    1166,  1167,    -1,    -1,    -1,   823,    -1,    -1,    -1,    -1,
     2841      -1,    -1,    -1,    -1,  1180,    -1,  1182,    -1,    -1,    -1,
     2842    1186,    -1,    -1,   800,    -1,    91,    -1,   804,    -1,    -1,
     2843      -1,   808,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,
     2844      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1215,
     2845    1216,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2846      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     2847      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2848      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     2849      32,   157,    -1,    -1,    -1,    -1,    -1,    39,    -1,  1265,
     2850    1266,    -1,    -1,    -1,    -1,   171,    -1,    -1,    -1,  1275,
     2851      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   936,    -1,
     2852      -1,    -1,    -1,    -1,    -1,    67,   903,    69,   194,    71,
     2853      -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
     2854      -1,   918,   208,    -1,    -1,    -1,    -1,    -1,   966,    -1,
     2855      -1,   217,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
     2856      -1,   227,    -1,    -1,    -1,   942,    -1,    -1,    -1,   111,
     2857    1336,    -1,  1338,  1339,  1340,   117,   118,    -1,    -1,    -1,
     2858      -1,    -1,    66,  1001,  1350,    -1,   252,    -1,    72,    -1,
     2859      -1,   257,    76,  1359,  1012,    79,    80,    81,    82,    83,
     2860      84,    -1,    86,    87,   270,    -1,    -1,    -1,    -1,    -1,
     2861     276,    -1,   278,    -1,    -1,    -1,    -1,    -1,  1384,    -1,
     2862      -1,   998,    -1,    -1,    -1,   109,    -1,   111,    -1,   295,
     2863      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
     2864      -1,    -1,  1019,  1020,    -1,    -1,   130,    -1,    -1,    -1,
     2865      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
     2866      -1,  1427,  1428,    -1,    -1,    -1,  1084,    -1,    -1,    -1,
     2867      -1,   337,    -1,    -1,  1440,    -1,   342,    -1,    -1,    -1,
     2868    1098,  1447,    -1,    66,    -1,    -1,    -1,    -1,    -1,    72,
     2869      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     2870      83,    84,  1079,    86,    87,   371,    -1,    -1,    -1,   375,
     2871     376,    -1,   378,  1479,    -1,    -1,    -1,  1483,    -1,   385,
     2872     386,    -1,   388,   389,    -1,   391,   109,   393,   111,    -1,
     2873     113,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
     2874      -1,    -1,    -1,    -1,   410,  1511,    -1,  1513,    -1,    -1,
     2875      -1,    -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2876      -1,   155,   156,    -1,    -1,    -1,    -1,    -1,  1145,  1187,
     2877      -1,    -1,    -1,    -1,    -1,  1541,  1542,   443,    -1,    -1,
     2878      -1,    -1,    -1,  1549,  1550,    -1,    -1,    -1,    -1,    -1,
     2879      -1,    -1,    -1,    -1,    -1,   189,    -1,    -1,    -1,    -1,
     2880      -1,    -1,   196,   469,    -1,    -1,    -1,    -1,    -1,   475,
     2881    1187,    -1,    -1,    -1,   480,     3,     4,     5,     6,     7,
     2882       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2883      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2884      -1,    -1,    30,    31,    32,    -1,    -1,  1224,    -1,    -1,
     2885     516,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2886      -1,    -1,    -1,    -1,  1282,   531,    -1,    -1,    -1,    -1,
     2887      -1,    -1,    -1,    -1,   268,    -1,    -1,    -1,    -1,    67,
     2888      -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,
     2889      -1,    -1,    -1,    -1,    -1,    -1,  1273,  1274,    -1,    -1,
     2890      -1,    -1,    -1,   569,    -1,  1282,    -1,    -1,    -1,    -1,
     2891      -1,    -1,   578,    -1,    -1,    -1,    -1,    -1,    -1,   585,
     2892     146,    -1,    -1,    -1,    -1,   591,   114,    -1,   322,    -1,
     2893     156,    -1,    -1,    -1,   600,    -1,   330,   331,    -1,   333,
     2894     334,    -1,   168,   169,    -1,    -1,    -1,    -1,    -1,    -1,
     2895     344,    -1,     7,    -1,   348,    10,    11,    12,    13,    14,
     2896      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2897      -1,    -1,    -1,   367,   640,    -1,   370,    -1,    -1,    -1,
     2898      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     2899      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2900      -1,    -1,    -1,   397,    -1,    -1,    -1,   401,    -1,    -1,
     2901     676,    66,    67,   239,    -1,    -1,  1393,    72,   684,    -1,
     2902      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     2903      -1,    86,    87,    -1,    -1,    -1,    -1,   263,   432,    -1,
     2904      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   715,
     2905      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   725,
     2906     726,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     2907      -1,    -1,  1449,    -1,  1451,    -1,    -1,    -1,    -1,    -1,
     2908      -1,    -1,    -1,    -1,   478,    -1,    -1,   481,    -1,    -1,
     2909      -1,    -1,   758,    -1,    -1,    -1,    -1,   763,    -1,    -1,
     2910      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1485,    -1,
     2911    1487,  1529,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2912      -1,    -1,    -1,    -1,    -1,    -1,   520,    -1,    -1,    -1,
     2913     524,   525,    -1,    -1,    -1,    -1,    -1,  1514,    -1,    -1,
     2914      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2915      -1,    -1,    -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,
     2916      -1,   827,    -1,    -1,    -1,    -1,    -1,    -1,   834,    -1,
     2917      -1,    -1,    -1,    -1,    -1,   569,   570,    -1,    -1,    -1,
     2918      -1,   847,    -1,   849,    -1,    -1,    -1,    -1,    -1,    -1,
     2919      -1,    -1,    -1,    -1,   588,   589,    -1,   863,    -1,    -1,
     2920      -1,    -1,    -1,   869,    -1,   599,    -1,   601,   602,    -1,
     2921      -1,    -1,    -1,    -1,   608,   881,    -1,    -1,   884,    -1,
     2922      -1,    -1,    -1,    -1,   618,   619,    -1,    -1,    -1,    -1,
     2923     624,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   633,
     2924     634,   635,    -1,    -1,    -1,    -1,    -1,   473,    -1,    -1,
     2925      -1,    -1,    -1,    -1,    -1,    -1,    -1,   651,    -1,    -1,
     2926      -1,    -1,   656,   657,    -1,    -1,   660,   661,    -1,    -1,
     2927      -1,    -1,    -1,   667,    -1,    -1,    -1,    -1,    -1,    -1,
     2928      -1,    -1,    -1,    -1,    -1,    -1,   512,    -1,    -1,    -1,
     2929      -1,    -1,   686,    -1,    -1,   961,    -1,    -1,    -1,   525,
     2930      -1,    -1,    -1,    -1,   530,    -1,    -1,   533,    -1,    -1,
     2931      -1,    -1,    -1,    -1,    -1,   709,   710,    -1,    -1,   545,
     2932      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2933     996,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2934      -1,   567,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   743,
     2935     744,   577,    -1,    -1,   748,   749,    -1,    -1,   584,    -1,
     2936      -1,    -1,    -1,   589,    -1,    -1,    -1,    -1,    -1,    -1,
     2937      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2938      20,    21,    22,    23,    24,    25,    26,    27,  1054,    -1,
     2939      30,    31,    32,    -1,  1060,    -1,    -1,    -1,   792,    39,
     2940      -1,    -1,    -1,    -1,    -1,    -1,   800,    -1,    -1,    -1,
     2941      -1,    -1,   638,   807,   808,    -1,    -1,   811,    -1,   813,
     2942     646,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1094,   823,
     2943      -1,    -1,    72,  1099,    74,    75,    76,    -1,    -1,    -1,
     2944      -1,  1107,    -1,    83,    84,    -1,    10,    11,    12,    13,
     2945      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2946      24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,   109,
     2947      -1,   111,    -1,    -1,  1140,    39,    -1,   117,   118,    -1,
     2948      -1,    -1,    -1,    -1,    -1,    -1,  1152,    -1,    -1,  1155,
     2949      -1,  1157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2950      -1,   895,    -1,    67,    -1,  1171,  1172,    -1,   902,   903,
     2951     904,    -1,   906,    -1,    78,    -1,   910,    -1,   744,    -1,
     2952     746,    -1,    -1,    -1,    -1,    -1,    -1,  1193,    -1,    -1,
     2953     756,    -1,    -1,    -1,    -1,    -1,   762,   931,   932,    -1,
     2954      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2955      20,    21,    22,    23,    24,    25,    26,    27,     7,    -1,
     2956      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,    39,
     2957      -1,    -1,   966,    -1,  1240,    -1,    -1,    -1,   804,   805,
     2958      -1,    -1,   808,    -1,    -1,    -1,    -1,    -1,    37,    38,
     2959      39,    40,    -1,   987,   988,    -1,   822,    67,    -1,    -1,
     2960      -1,    -1,    -1,    -1,   998,    -1,    -1,    -1,    -1,    -1,
     2961    1004,  1005,    -1,  1007,  1008,  1009,    -1,    66,    67,    -1,
     2962      -1,    -1,    -1,    72,    -1,  1019,  1020,    76,    -1,    -1,
     2963      79,    80,    81,    82,    83,    84,   862,    86,    87,    -1,
     2964     866,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1315,
     2965      -1,  1317,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2966     109,    -1,   111,  1329,    -1,  1331,    -1,    -1,   117,   118,
     2967     119,   120,   121,   122,    -1,    -1,    -1,   903,    -1,    -1,
     2968      -1,    -1,  1348,    -1,    -1,    -1,    -1,    -1,  1082,    -1,
     2969    1084,    -1,    -1,    -1,    -1,  1089,    -1,    -1,  1364,  1365,
     2970      -1,    -1,    -1,    -1,  1098,    -1,    -1,    -1,    -1,  1375,
     2971      -1,    -1,  1378,    -1,    -1,    -1,   942,    -1,    -1,    -1,
     2972      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1121,  1122,  1123,
     2973      -1,    -1,    -1,  1399,    -1,    37,    38,    -1,    40,    -1,
     2974      -1,    -1,  1408,    -1,   970,  1411,    -1,  1413,  1414,  1415,
     2975     976,  1145,    -1,    -1,   980,    -1,    -1,    -1,    -1,    -1,
     2976      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
     2977      72,    -1,    -1,    -1,    76,  1001,    -1,    79,    80,    81,
     2978      82,    83,    84,    -1,    86,    87,  1012,  1453,    -1,  1455,
     2979      -1,  1457,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2980      -1,    -1,    -1,    -1,    -1,    -1,  1472,   109,  1034,   111,
     2981    1036,    -1,  1206,    -1,   116,   117,   118,   119,   120,   121,
     2982     122,    -1,    -1,    -1,    -1,  1051,  1052,    -1,    -1,    -1,
     2983    1224,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2984      -1,    -1,    -1,    -1,    -1,    -1,  1072,    -1,    -1,    -1,
     2985      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
     2986       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2987      19,    20,    21,    22,    23,    24,    25,    26,    27,  1273,
     2988    1274,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
     2989      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2990      -1,  1127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2991      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1145,
     2992      69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
     2993      -1,    -1,    -1,    -1,  1160,  1161,    -1,     3,     4,     5,
     2994       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2995      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2996      26,    27,   111,    -1,    30,    31,    32,    33,   117,   118,
     2997      36,    37,    38,    39,    40,    41,    -1,    43,    -1,    -1,
     2998      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
     2999      -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,  1393,
     3000      66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
     3001      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3002      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3003      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3004      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
     3005      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
     3006      -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,
     3007      -1,    -1,    -1,    -1,    -1,  1301,    -1,    -1,  1304,    -1,
     3008      -1,    -1,    -1,    -1,    -1,    -1,  1480,    -1,    -1,    -1,
     3009      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3010      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3011    1504,  1505,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3012      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3013      -1,    -1,    -1,    -1,    -1,  1529,     3,     4,     5,     6,
     3014       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3015      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3016      27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,
     3017      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
     3018      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3019      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
     3020      67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
     3021      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3022      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3023      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     3024      76,    -1,   109,    -1,   111,    -1,    -1,    83,    84,    -1,
     3025     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
     3026      -1,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,    -1,
     3027      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3028      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,  1514,     3,
     3029       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3030      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3031      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
     3032      -1,    -1,    36,    37,    38,    39,    40,    10,    11,    12,
     3033      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3034      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3035      -1,    -1,    66,    67,    -1,    69,    39,    71,    72,    -1,
     3036      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3037      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3038      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,
     3039      -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3040      83,    84,    -1,   117,   118,   119,   120,   121,   122,     4,
     3041       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3042      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3043      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3044      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    10,
     3045      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3046      21,    22,    23,    24,    25,    26,    27,    28,    -1,    -1,
     3047      -1,    66,    67,    -1,    69,    -1,    71,    72,    39,    74,
     3048      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3049      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3050      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
     3051      -1,    -1,    -1,    -1,   109,    -1,   111,    78,    -1,    -1,
     3052      -1,   116,   117,   118,   119,   120,   121,   122,     4,     5,
     3053       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3054      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3055      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3056      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3057      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3058      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3059      66,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
     3060      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3061      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3062      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3063      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3064     116,   117,   118,   119,   120,   121,   122,     4,     5,     6,
     3065       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3066      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3067      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3068      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
     3069      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3070      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
     3071      67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
     3072      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3073      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3074      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     3075      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,
     3076     117,   118,   119,   120,   121,   122,     4,     5,     6,     7,
     3077       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3078      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3079      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
     3080      38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3081      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3082      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
     3083      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
     3084      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3085      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3086      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3087      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3088     118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
     3089       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3090      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3091      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
     3092      39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3093      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3094      -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
     3095      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
     3096      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3097      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3098      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3099     109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
     3100     119,   120,   121,   122,     4,     5,     6,     7,     8,     9,
     3101      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3102      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3103      30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
     3104      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3105      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3106      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,
     3107      -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,    79,
     3108      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3109      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3110      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3111      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
     3112     120,   121,   122,     4,     5,     6,     7,     8,     9,    10,
     3113      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3114      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3115      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3116      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3117      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3118      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
     3119      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3120      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3121      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3122      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3123     111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
     3124     121,   122,     0,    -1,    -1,     3,     4,     5,     6,     7,
     3125       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3126      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3127      -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
     3128      -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3129      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3130      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
     3131      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
     3132      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
     3133      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3134      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3135      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3136     118,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3137      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3138      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3139      32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,    -1,
     3140      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3141      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3142      -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,    71,
     3143      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
     3144      -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3145      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3146      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     3147      -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,
     3148       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3149      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3150      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3151      -1,    -1,    -1,    39,    -1,    10,    11,    12,    13,    14,
     3152      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3153      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    34,
     3154      35,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
     3155      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
     3156      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3157      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3158      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3159      -1,   117,   118,     3,     4,     5,     6,     7,     8,     9,
     3160      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3161      20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
     3162      30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
     3163      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3164      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3165      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     3166      -1,    71,    -1,    -1,    74,    75,    -1,    -1,    78,     4,
     3167       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3168      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3169      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3170      -1,   111,    -1,    -1,    39,    -1,    -1,   117,   118,    -1,
     3171      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3172      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3173      -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3174      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
     3175      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3176      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3177      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3178      -1,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
     3179      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3180      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3181      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3182      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
     3183      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3184      26,    27,    -1,    -1,    30,    31,    32,    67,    -1,    69,
     3185      -1,    71,    -1,    39,    74,    75,    -1,     4,     5,     6,
     3186       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3187      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3188      27,    67,    -1,    30,    31,    32,    -1,    -1,    74,    75,
     3189     110,   111,    39,    -1,    -1,    -1,    -1,   117,   118,    -1,
     3190      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3191      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3192      67,    -1,    69,   109,    71,   111,    -1,    74,    75,    -1,
     3193      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3194      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,
     3195      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3196      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3197     117,   118,     4,     5,     6,     7,     8,     9,    10,    11,
     3198      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3199      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3200      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
     3201      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3202      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3203      -1,    30,    31,    32,    -1,    67,    -1,    69,    -1,    71,
     3204      39,    40,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
     3205      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3206      -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,    67,    -1,
     3207      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   111,
     3208      -1,    -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,
     3209       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3210      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3211      27,    -1,   111,    30,    31,    32,   115,    -1,   117,   118,
     3212      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3213      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3214      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3215      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
     3216       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3217      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3218      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3219      -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,
     3220     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3221      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3222      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
     3223      74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
     3224      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3225      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3226      31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,
     3227      -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
     3228      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3229      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
     3230      71,    -1,    -1,    74,    75,    -1,     4,     5,     6,     7,
     3231       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3232      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3233      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3234     111,    39,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,
     3235      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3236      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3237      -1,    69,    -1,    71,    -1,    -1,    74,    75,    10,    11,
     3238      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3239      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3240      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
     3241      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3242     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3243      -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,    -1,
     3244      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3245      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
     3246      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3247      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     3248      -1,    -1,   114,    -1,    -1,   117,   118,   119,   120,   121,
     3249     122,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3250      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3251      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
     3252      39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
     3253      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3254      -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
     3255      -1,    39,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
     3256      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3257      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3258      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,
     3259     109,   110,   111,    -1,    -1,    83,    84,    -1,   117,   118,
     3260     119,   120,   121,   122,    10,    11,    12,    13,    14,    15,
     3261      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3262      26,    27,    -1,   111,    30,    31,    32,    -1,    -1,   117,
     3263     118,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3264      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3265      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3266      66,    67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,
     3267      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3268      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3269      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3270      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    83,    84,
     3271      -1,   117,   118,   119,   120,   121,   122,    10,    11,    12,
     3272      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3273      23,    24,    25,    26,    27,    -1,   111,    30,    31,    32,
     3274      -1,    -1,   117,   118,    37,    38,    39,    40,    10,    11,
     3275      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3276      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3277      32,    -1,    -1,    66,    67,    -1,    -1,    39,    40,    72,
     3278      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     3279      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3280      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3281      -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
     3282      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3283      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3284      20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
     3285      30,    31,    32,   115,    -1,   117,   118,    37,    38,    39,
     3286      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3287      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3288      -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,
     3289      39,    40,    72,    -1,    74,    75,    76,    -1,    -1,    79,
     3290      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3291      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3292      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
     3293      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
     3294     120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
     3295      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3296      27,    -1,   111,    30,    31,    32,   115,    -1,   117,   118,
     3297      37,    38,    39,    40,    -1,    10,    11,    12,    13,    14,
     3298      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3299      25,    26,    27,    28,    -1,    30,    31,    32,    -1,    66,
     3300      67,    -1,    -1,    -1,    39,    72,    -1,    74,    75,    76,
     3301      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3302      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3303      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3304      75,    76,   109,    78,   111,    -1,    -1,    -1,    83,    84,
     3305     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
     3306      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3307      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3308      -1,    -1,   117,   118,    10,    11,    12,    13,    14,    15,
     3309      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3310      26,    27,    28,    -1,    30,    31,    32,    -1,    -1,    -1,
     3311      -1,    -1,    -1,    39,    10,    11,    12,    13,    14,    15,
     3312      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3313      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3314      -1,    67,    -1,    39,    -1,    -1,    72,    -1,    74,    75,
     3315      76,    -1,    78,    -1,    -1,    -1,    -1,    83,    84,    -1,
     3316      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3317      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     3318      76,    -1,    -1,    -1,    -1,   111,    -1,    83,    84,    -1,
     3319      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3320      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3321      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3322      -1,   117,   118,    10,    11,    12,    13,    14,    15,    16,
     3323      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3324      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3325      -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
     3326      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3327      27,    28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3328      67,    -1,    39,    -1,    -1,    72,    -1,    74,    75,    76,
     3329      -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
     3330      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3331      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     3332      -1,    78,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3333     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3334      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3335      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3336     117,   118,    10,    11,    12,    13,    14,    15,    16,    17,
     3337      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3338      28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3339      -1,    39,    10,    11,    12,    13,    14,    15,    16,    17,
     3340      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3341      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,
     3342      -1,    39,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
     3343      78,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3344      19,    20,    21,    22,    23,    24,    25,    26,    27,    67,
     3345      -1,    30,    31,    32,    -1,    -1,    74,    75,    -1,    -1,
     3346      39,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3347     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3348      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3349      -1,    -1,    -1,   111,    -1,    74,    75,    -1,    -1,   117,
     3350     118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3351      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3352      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
     3353      39,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
     3354      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3355      20,    21,    22,    23,    24,    25,    26,    27,    67,    -1,
     3356      30,    31,    32,    -1,    -1,    74,    75,    -1,    -1,    39,
     3357      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3358      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3359      30,    31,    32,    -1,    -1,    -1,    -1,    67,    -1,    39,
     3360      -1,    -1,   111,    -1,    74,    75,    -1,    -1,   117,   118,
     3361      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3362      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3363      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
     3364      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,    -1,
     3365      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3366      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3367      -1,   111,    30,    31,    32,    -1,    -1,   117,   118,    -1,
     3368      -1,    39,    10,    11,    12,    13,    14,    15,    16,    17,
     3369      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3370      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,
     3371      -1,    39,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
     3372      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3373      20,    21,    22,    23,    24,    25,    26,    27,    -1,    67,
     3374      30,    31,    32,    -1,    -1,    -1,    74,    75,    -1,    39,
     3375      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3376     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3377      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3378      -1,    -1,    -1,   111,    74,    75,    -1,    -1,    -1,   117,
     3379     118,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3380      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3381      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3382      -1,    -1,    -1,    -1,    -1,    -1,    39,   117,   118,    -1,
     3383      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3384      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3385      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
     3386      -1,    74,    75,    37,    38,    -1,    40,    41,    -1,    43,
     3387      -1,    -1,    46,    47,    48,    49,    50,    51,    52,    53,
     3388      -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,
     3389      64,    -1,    66,    -1,    -1,    -1,    -1,   110,    72,    -1,
     3390      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3391      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3392      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3393      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3394     114,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
     3395      -1,    37,    38,   127,    40,    41,    -1,    43,   132,    -1,
     3396      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
     3397      -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
     3398      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
     3399      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3400      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3401      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3402      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
     3403      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
     3404      -1,   127,    -1,    -1,    -1,    -1,   132,     4,     5,     6,
     3405       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3406      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3407      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3408      -1,    -1,    39,    -1,    37,    38,    -1,    40,    41,    -1,
     3409      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
     3410      53,    -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,
     3411      67,    64,    69,    66,    71,    -1,    -1,    74,    75,    72,
     3412      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3413      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    96,
     3414      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3415      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
     3416      -1,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3417      -1,    -1,    37,    38,   127,    40,    41,    -1,    43,    44,
     3418      45,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
     3419      -1,    -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
     3420      -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     3421      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3422      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3423      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3424      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
     3425      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3426      37,    38,   127,    40,    41,    -1,    43,    -1,    -1,    46,
     3427      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,
     3428      57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
     3429      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3430      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3431      87,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
     3432      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3433      -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
     3434     117,   118,   119,   120,   121,   122,    66,    -1,    -1,    -1,
     3435     127,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3436      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3437      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
     3438      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3439      -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
     3440     120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,
     3441      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3442      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3443      -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
     3444      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
     3445      37,    38,    -1,    40,   117,   118,   119,   120,   121,   122,
     3446      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
     3447      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    66,
     3448      86,    87,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3449      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3450      87,    -1,    -1,   109,    -1,   111,    -1,    37,    38,    -1,
     3451      40,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
     3452      -1,    -1,   109,    -1,   111,    -1,    37,    38,    -1,    40,
     3453     117,   118,   119,   120,   121,   122,    66,    -1,    -1,    -1,
     3454      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3455      80,    81,    82,    83,    84,    66,    86,    87,    -1,    -1,
     3456      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
     3457      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,   109,
     3458      -1,    -1,    -1,    37,    38,    -1,    40,   117,   118,   119,
     3459     120,   121,   122,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3460      -1,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
     3461     121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     3462      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3463      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3464      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3465      -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,
     3466      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     4,
     3467       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3468      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3469      25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3470      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
     3471      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3472      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3473      -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3474      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
     3475       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3476      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3477      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3478      -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
     3479      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3480      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3481      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
     3482      -1,    74,    75,     3,     4,     5,     6,     7,     8,     9,
     3483      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3484      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3485      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3486      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3487      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3488      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     3489      -1,    71,    -1,    -1,    74,    75,     4,     5,     6,     7,
     3490       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3491      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3492      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3493      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3494      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3495      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3496      -1,    69,    -1,    71,    -1,    -1,    74,    75
     3497};
     3498
     3499  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
     3500     symbol of state STATE-NUM.  */
     3501static const yytype_uint16 yystos[] =
     3502{
     3503       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3504      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3505      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
     3506      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
     3507      76,    83,    84,   109,   111,   117,   118,   137,   140,   149,
     3508     198,   212,   213,   214,   215,   216,   217,   218,   219,   220,
     3509     221,   222,   223,   224,   225,   226,   227,   228,   229,   231,
     3510     232,   233,   234,   235,   236,   237,   239,   240,   241,   242,
     3511     243,   244,   246,   254,   255,   282,   283,   284,   292,   295,
     3512     301,   302,   304,   306,   307,   313,   318,   322,   323,   324,
     3513     325,   326,   327,   328,   329,   349,   366,   367,   368,   369,
     3514      72,   139,   140,   149,   215,   217,   225,   227,   236,   240,
     3515     242,   283,    82,   109,   311,   312,   313,   311,   311,    72,
     3516      74,    75,    76,   138,   139,   272,   273,   293,   294,    74,
     3517      75,   273,   109,   304,    11,   199,   109,   149,   318,   323,
     3518     324,   325,   327,   328,   329,   112,   134,   111,   218,   225,
     3519     227,   322,   326,   365,   366,   369,   370,   135,   107,   131,
     3520     276,   114,   135,   173,    74,    75,   137,   271,   135,   135,
     3521     135,   116,   135,    74,    75,   109,   149,   308,   317,   318,
     3522     319,   320,   321,   322,   326,   330,   331,   332,   333,   334,
     3523     340,     3,    28,    78,   238,     3,     5,    74,   111,   149,
     3524     217,   228,   232,   234,   243,   284,   322,   326,   369,   215,
     3525     217,   227,   236,   240,   242,   283,   322,   326,    33,   233,
     3526     233,   228,   234,   135,   233,   228,   233,   228,    75,   109,
     3527     114,   273,   284,   114,   273,   233,   228,   116,   135,   135,
     3528       0,   134,   109,   173,   311,   311,   134,   111,   225,   227,
     3529     367,   271,   271,   131,   227,   109,   149,   308,   318,   322,
     3530     111,   149,   369,   305,   230,   313,   109,   289,   109,   109,
     3531      51,   109,    37,    38,    40,    66,    72,    76,    79,    80,
     3532      81,    82,    86,    87,   109,   111,   119,   120,   121,   122,
     3533     136,   140,   141,   142,   143,   148,   149,   150,   151,   152,
     3534     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
     3535     164,   167,   225,   275,   291,   365,   370,   227,   110,   110,
     3536     110,   110,   110,   110,   110,    74,    75,   111,   225,   271,
     3537     349,   367,   111,   117,   149,   164,   217,   218,   224,   227,
     3538     231,   232,   236,   239,   240,   242,   261,   262,   266,   267,
     3539     268,   269,   283,   349,   361,   362,   363,   364,   369,   370,
     3540     112,   109,   322,   326,   369,   109,   116,   132,   111,   114,
     3541     149,   164,   277,   277,   115,   134,   116,   132,   109,   116,
     3542     132,   116,   132,   116,   132,   311,   132,   318,   319,   320,
     3543     321,   331,   332,   333,   334,   227,   317,   330,    64,   310,
     3544     111,   311,   348,   349,   311,   311,   173,   134,   109,   311,
     3545     348,   311,   311,   227,   308,   109,   109,   226,   227,   225,
     3546     227,   112,   134,   225,   365,   370,   173,   134,   271,   276,
     3547     217,   232,   322,   326,   173,   134,   293,   227,   236,   132,
     3548     227,   227,   291,   247,   245,   257,   273,   256,   227,   293,
     3549     132,   132,   304,   134,   139,   270,     3,   135,   207,   208,
     3550     222,   224,   227,   134,   310,   109,   310,   164,   318,   227,
     3551     109,   134,   271,   114,    33,    34,    35,   225,   285,   286,
     3552     288,   134,   128,   131,   290,   134,   228,   233,   234,   271,
     3553     314,   315,   316,   109,   141,   109,   148,   109,   148,   151,
     3554     109,   148,   109,   109,   148,   148,   111,   164,   169,   173,
     3555     225,   274,   365,   369,   112,   134,    82,    85,    86,    87,
     3556     109,   111,   113,   114,    97,    98,    99,   100,   101,   102,
     3557     103,   104,   105,   106,   131,   166,   151,   151,   117,   123,
     3558     124,   119,   120,    88,    89,    90,    91,   125,   126,    92,
     3559      93,   118,   127,   128,    94,    95,   129,   131,   372,   109,
     3560     149,   344,   345,   346,   347,   348,   110,   116,   109,   348,
     3561     349,   109,   348,   349,   134,   109,   225,   367,   112,   134,
     3562     135,   111,   225,   227,   360,   361,   369,   370,   135,   109,
     3563     111,   149,   318,   335,   336,   337,   338,   339,   340,   341,
     3564     342,   343,   349,   350,   351,   352,   353,   354,   355,   149,
     3565     369,   227,   135,   135,   149,   225,   227,   362,   271,   225,
     3566     349,   362,   271,   109,   134,   134,   134,   112,   134,    72,
     3567     111,   113,   140,   273,   277,   278,   279,   280,   281,   134,
     3568     134,   134,   134,   134,   134,   308,   110,   110,   110,   110,
     3569     110,   110,   110,   317,   330,   109,   276,   112,   207,   134,
     3570     308,   169,   275,   169,   275,   308,   111,   207,   310,   173,
     3571     134,   207,   110,    40,   111,   115,   225,   248,   249,   250,
     3572     365,   114,   116,   371,   131,   258,   114,   227,   263,   264,
     3573     265,   268,   269,   110,   116,   173,   134,   117,   164,   134,
     3574     224,   227,   262,   361,   369,   302,   303,   109,   149,   335,
     3575     110,   116,   372,   273,   285,   109,   114,   273,   275,   285,
     3576     110,   116,   109,   141,   110,   130,   274,   274,   274,   145,
     3577     164,   275,   274,   112,   134,   110,   116,   110,   109,   149,
     3578     348,   356,   357,   358,   359,   110,   116,   164,   111,   139,
     3579     144,   145,   134,   111,   139,   144,   164,   151,   151,   151,
     3580     152,   152,   153,   153,   154,   154,   154,   154,   155,   155,
     3581     156,   157,   158,   159,   160,   130,   169,   164,   134,   345,
     3582     346,   347,   227,   344,   311,   311,   164,   275,   134,   270,
     3583     134,   225,   349,   362,   227,   231,   112,   112,   134,   369,
     3584     112,   109,   134,   318,   336,   337,   338,   341,   351,   352,
     3585     353,   112,   134,   227,   335,   339,   350,   109,   311,   354,
     3586     372,   311,   311,   372,   109,   311,   354,   311,   311,   311,
     3587     311,   349,   225,   360,   370,   271,   112,   116,   112,   116,
     3588     372,   225,   362,   372,   259,   260,   261,   262,   259,   259,
     3589     271,   164,   134,   111,   273,   130,   116,   371,   277,   111,
     3590     130,   281,    29,   209,   210,   271,   259,   139,   308,   139,
     3591     310,   109,   348,   349,   109,   348,   349,   141,   349,   173,
     3592     263,   110,   110,   110,   110,   112,   173,   207,   173,   114,
     3593     249,   250,   112,   134,   109,   130,   149,   251,   253,   317,
     3594     318,   330,   356,   116,   132,   116,   132,   273,   247,   273,
     3595     115,   162,   163,   257,   135,   135,   139,   222,   135,   135,
     3596     259,   109,   149,   369,   135,   115,   227,   286,   287,   135,
     3597     134,   134,   109,   135,   110,   315,   169,   170,   130,   132,
     3598     111,   141,   200,   201,   202,   110,   116,   110,   110,   110,
     3599     110,   111,   164,   357,   358,   359,   227,   356,   311,   311,
     3600     114,   151,   167,   164,   165,   168,   116,   135,   134,   110,
     3601     116,   164,   134,   115,   162,   130,   263,   110,   110,   110,
     3602     344,   263,   110,   259,   225,   362,   111,   117,   149,   164,
     3603     164,   227,   341,   263,   110,   110,   110,   110,   110,   110,
     3604     110,     7,   227,   335,   339,   350,   134,   134,   372,   134,
     3605     134,   110,   135,   135,   135,   135,   276,   135,   162,   163,
     3606     164,   309,   134,   277,   279,   115,   134,   211,   273,    40,
     3607      41,    43,    46,    47,    48,    49,    50,    51,    52,    53,
     3608      57,    61,    62,    72,   111,   127,   170,   171,   172,   173,
     3609     174,   175,   177,   178,   190,   192,   193,   198,   212,   307,
     3610      29,   135,   131,   276,   134,   134,   110,   135,   173,   247,
     3611     132,   132,   318,   163,   227,   252,   253,   252,   273,   311,
     3612     115,   258,   371,   110,   116,   112,   112,   135,   227,   116,
     3613     372,   289,   110,   285,   215,   217,   225,   297,   298,   299,
     3614     300,   291,   110,   110,   130,   163,   109,   110,   130,   116,
     3615     139,   112,   110,   110,   110,   356,   278,   116,   135,   168,
     3616     112,   139,   146,   147,   145,   135,   146,   162,   167,   135,
     3617     109,   348,   349,   135,   135,   134,   135,   135,   135,   164,
     3618     110,   135,   109,   348,   349,   109,   354,   109,   354,   349,
     3619     226,     7,   117,   135,   164,   263,   263,   262,   266,   266,
     3620     267,   116,   116,   110,   110,   112,    96,   122,   135,   135,
     3621     146,   277,   164,   116,   132,   212,   216,   227,   231,   109,
     3622     109,   171,   109,   109,    72,   132,    72,   132,    72,   117,
     3623     170,   109,   173,   165,   165,   130,   112,   143,   132,   135,
     3624     134,   135,   211,   110,   164,   263,   263,   311,   110,   115,
     3625     251,   115,   134,   110,   134,   135,   308,   115,   134,   135,
     3626     135,   110,   114,   200,   112,   163,   132,   200,   202,   110,
     3627     109,   348,   349,   371,   165,   112,   135,    85,   113,   116,
     3628     135,   112,   135,   110,   134,   110,   110,   112,   112,   112,
     3629     135,   110,   134,   134,   134,   164,   164,   135,   112,   135,
     3630     135,   135,   135,   134,   134,   163,   163,   112,   112,   135,
     3631     135,   273,   227,   169,   169,    47,   169,   134,   132,   132,
     3632     132,   169,   132,   169,    58,    59,    60,   194,   195,   196,
     3633     132,    63,   132,   311,   114,   175,   115,   132,   135,   135,
     3634      96,   268,   269,   110,   298,   116,   132,   116,   132,   115,
     3635     296,   130,   141,   110,   110,   130,   134,   115,   112,   111,
     3636     147,   111,   147,   147,   112,   112,   263,   112,   263,   263,
     3637     263,   135,   135,   112,   112,   110,   110,   112,   116,    96,
     3638     262,    96,   135,   112,   112,   110,   110,   109,   110,   170,
     3639     191,   212,   132,   110,   109,   109,   173,   196,    58,    59,
     3640     164,   171,   144,   110,   110,   114,   134,   134,   297,   141,
     3641     203,   109,   132,   203,   263,   134,   134,   135,   135,   135,
     3642     135,   112,   112,   134,   135,   112,   171,    44,    45,   114,
     3643     181,   182,   183,   169,   171,   135,   110,   170,   114,   183,
     3644      96,   134,    96,   134,   109,   109,   132,   115,   134,   271,
     3645     308,   115,   116,   130,   163,   110,   135,   146,   146,   110,
     3646     110,   110,   110,   266,    42,   163,   179,   180,   309,   130,
     3647     134,   171,   181,   110,   132,   171,   132,   134,   110,   134,
     3648     110,   134,    96,   134,    96,   134,   132,   297,   141,   139,
     3649     204,   110,   132,   110,   135,   135,   171,    96,   116,   130,
     3650     135,   205,   206,   212,   132,   170,   170,   205,   173,   197,
     3651     225,   365,   173,   197,   110,   134,   110,   134,   115,   110,
     3652     116,   112,   112,   163,   179,   182,   184,   185,   134,   132,
     3653     182,   186,   187,   135,   109,   149,   308,   356,   139,   135,
     3654     173,   197,   173,   197,   109,   132,   139,   171,   176,   115,
     3655     182,   212,   170,    56,   176,   189,   115,   182,   110,   227,
     3656     110,   135,   135,   291,   171,   176,   132,   188,   189,   176,
     3657     189,   173,   173,   110,   110,   110,   188,   135,   135,   173,
     3658     173,   135,   135
     3659};
     3660
     3661  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
    12373662static const yytype_uint16 yyr1[] =
    12383663{
     
    12683693     225,   226,   226,   227,   227,   228,   228,   229,   229,   229,
    12693694     229,   229,   230,   229,   231,   231,   231,   232,   232,   233,
    1270      234,   234,   234,   234,   234,   234,   234,   234,   235,   235,
    1271      235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
    1272      235,   236,   236,   236,   236,   236,   237,   237,   238,   238,
    1273      238,   238,   239,   239,   239,   239,   240,   240,   240,   240,
    1274      241,   241,   241,   242,   242,   242,   242,   243,   243,   243,
    1275      244,   244,   245,   245,   246,   245,   245,   245,   247,   247,
    1276      248,   248,   249,   249,   249,   249,   250,   250,   250,   250,
    1277      251,   251,   252,   252,   252,   252,   252,   253,   253,   254,
    1278      255,   256,   256,   257,   256,   258,   258,   259,   259,   260,
    1279      260,   261,   261,   261,   261,   261,   262,   262,   262,   262,
    1280      263,   263,   264,   264,   265,   265,   266,   266,   266,   266,
    1281      267,   267,   267,   267,   267,   268,   268,   268,   268,   268,
    1282      269,   269,   270,   270,   271,   271,   272,   272,   272,   273,
    1283      273,   273,   274,   274,   274,   275,   275,   275,   276,   276,
    1284      276,   276,   277,   277,   277,   278,   278,   279,   279,   279,
    1285      279,   279,   280,   280,   281,   281,   282,   282,   282,   282,
    1286      282,   283,   283,   283,   283,   284,   284,   284,   285,   286,
    1287      286,   288,   287,   287,   289,   289,   289,   290,   290,   291,
    1288      291,   291,   292,   292,   292,   292,   293,   293,   293,   294,
    1289      294,   295,   295,   296,   297,   296,   298,   298,   299,   299,
    1290      300,   300,   300,   301,   301,   302,   302,   303,   303,   304,
    1291      304,   305,   305,   305,   306,   305,   305,   307,   307,   307,
    1292      308,   308,   308,   308,   308,   308,   308,   308,   308,   309,
    1293      309,   309,   310,   311,   311,   312,   312,   313,   313,   314,
    1294      315,   315,   316,   316,   316,   317,   317,   317,   317,   318,
    1295      318,   318,   318,   319,   319,   320,   320,   320,   321,   321,
    1296      321,   321,   322,   322,   323,   323,   323,   324,   324,   324,
    1297      325,   325,   325,   326,   326,   326,   327,   327,   327,   328,
    1298      328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
    1299      331,   331,   332,   332,   333,   333,   333,   334,   334,   334,
    1300      334,   335,   335,   335,   336,   336,   336,   336,   337,   337,
    1301      337,   338,   338,   338,   338,   339,   339,   339,   340,   340,
    1302      340,   340,   341,   341,   342,   342,   342,   343,   343,   344,
    1303      344,   345,   345,   345,   346,   346,   346,   346,   346,   347,
    1304      347,   347,   347,   348,   348,   348,   349,   349,   349,   350,
    1305      350,   350,   350,   351,   351,   351,   352,   352,   352,   352,
    1306      352,   353,   353,   353,   353,   354,   354,   354,   355,   355,
    1307      355,   356,   356,   356,   356,   356,   356,   357,   357,   357,
    1308      358,   358,   358,   358,   358,   359,   359,   359,   359,   360,
    1309      360,   361,   361,   361,   362,   362,   363,   363,   363,   363,
    1310      363,   363,   364,   364,   364,   364,   364,   364,   364,   364,
    1311      364,   364,   365,   365,   365,   365,   366,   366,   366,   367,
    1312      367,   368,   368,   368,   368,   368,   368,   369,   369,   369,
    1313      369,   369,   369,   370,   371,   371,   371,   372,   372,   373,
    1314      373
     3695     233,   233,   233,   233,   233,   233,   233,   234,   234,   234,
     3696     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
     3697     235,   235,   235,   235,   235,   236,   236,   237,   237,   237,
     3698     237,   238,   238,   238,   238,   239,   239,   239,   239,   240,
     3699     240,   240,   241,   241,   241,   241,   242,   242,   242,   243,
     3700     243,   244,   244,   245,   244,   244,   244,   246,   246,   247,
     3701     247,   248,   248,   248,   248,   249,   249,   249,   249,   250,
     3702     250,   251,   251,   251,   251,   251,   252,   252,   253,   254,
     3703     255,   255,   256,   255,   257,   257,   258,   258,   259,   259,
     3704     260,   260,   260,   260,   260,   261,   261,   261,   261,   262,
     3705     262,   263,   263,   264,   264,   265,   265,   265,   265,   266,
     3706     266,   266,   266,   266,   267,   267,   267,   267,   267,   268,
     3707     268,   269,   269,   270,   270,   271,   271,   271,   272,   272,
     3708     272,   273,   273,   273,   274,   274,   274,   275,   275,   275,
     3709     275,   276,   276,   276,   277,   277,   278,   278,   278,   278,
     3710     278,   279,   279,   280,   280,   281,   281,   281,   281,   281,
     3711     282,   282,   282,   282,   283,   283,   283,   284,   285,   285,
     3712     287,   286,   286,   288,   288,   288,   289,   289,   290,   290,
     3713     290,   291,   291,   291,   291,   292,   292,   292,   293,   293,
     3714     294,   294,   295,   296,   295,   297,   297,   298,   298,   299,
     3715     299,   299,   300,   300,   301,   301,   302,   302,   303,   303,
     3716     304,   304,   304,   305,   304,   304,   306,   306,   306,   307,
     3717     307,   307,   307,   307,   307,   307,   307,   307,   308,   308,
     3718     308,   309,   310,   310,   311,   311,   312,   312,   313,   314,
     3719     314,   315,   315,   315,   316,   316,   316,   316,   317,   317,
     3720     317,   317,   318,   318,   319,   319,   319,   320,   320,   320,
     3721     320,   321,   321,   322,   322,   322,   323,   323,   323,   324,
     3722     324,   324,   325,   325,   325,   326,   326,   326,   327,   327,
     3723     327,   328,   328,   328,   329,   329,   329,   330,   330,   330,
     3724     330,   331,   331,   332,   332,   332,   333,   333,   333,   333,
     3725     334,   334,   334,   335,   335,   335,   335,   336,   336,   336,
     3726     337,   337,   337,   337,   338,   338,   338,   339,   339,   339,
     3727     339,   340,   340,   341,   341,   341,   342,   342,   343,   343,
     3728     344,   344,   344,   345,   345,   345,   345,   345,   346,   346,
     3729     346,   346,   347,   347,   347,   348,   348,   348,   349,   349,
     3730     349,   349,   350,   350,   350,   351,   351,   351,   351,   351,
     3731     352,   352,   352,   352,   353,   353,   353,   354,   354,   354,
     3732     355,   355,   355,   355,   355,   355,   356,   356,   356,   357,
     3733     357,   357,   357,   357,   358,   358,   358,   358,   359,   359,
     3734     360,   360,   360,   361,   361,   362,   362,   362,   362,   362,
     3735     362,   363,   363,   363,   363,   363,   363,   363,   363,   363,
     3736     363,   364,   364,   364,   364,   365,   365,   365,   366,   366,
     3737     367,   367,   367,   367,   367,   367,   368,   368,   368,   368,
     3738     368,   368,   369,   370,   370,   370,   371,   371,   372,   372
    13153739};
    13163740
    1317 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
     3741  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
    13183742static const yytype_uint8 yyr2[] =
    13193743{
     
    13513775       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    13523776       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1353        1,     1,     2,     2,     3,     3,     1,     3,     1,     2,
    1354        2,     2,     4,     4,     4,     4,     1,     2,     2,     3,
    1355        1,     2,     2,     1,     2,     2,     3,     1,     2,     2,
    1356        1,     1,     4,     2,     0,     6,     7,     2,     2,     2,
    1357        0,     2,     2,     3,     2,     3,     1,     2,     3,     2,
    1358        2,     4,     0,     1,     2,     2,     1,     0,     1,     2,
    1359        2,     5,     2,     0,     7,     2,     4,     0,     2,     0,
    1360        1,     1,     1,     5,     5,     5,     1,     5,     5,     9,
    1361        1,     5,     0,     1,     1,     5,     1,     1,     5,     5,
    1362        1,     3,     3,     4,     1,     1,     1,     1,     2,     1,
    1363        3,     3,     1,     2,     1,     3,     1,     1,     1,     1,
    1364        1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
    1365        1,     2,     0,     2,     2,     1,     4,     0,     1,     2,
    1366        3,     4,     2,     2,     1,     2,     2,     5,     5,     7,
    1367        6,     1,     2,     2,     3,     1,     2,     2,     4,     2,
    1368        4,     0,     4,     2,     1,     1,     1,     0,     2,     5,
    1369        5,    13,     1,     1,     3,     3,     2,     3,     3,     2,
    1370        4,     1,     6,     9,     0,    11,     1,     3,     3,     3,
    1371        1,     1,     5,     2,     5,     0,     1,     1,     3,     0,
    1372        1,     1,     1,     1,     0,     6,     2,     1,     2,     4,
    1373        2,     3,     3,     3,     4,     5,     5,     5,     6,     1,
    1374        1,     1,     3,     0,     5,     0,     1,     1,     2,     6,
    1375        1,     3,     0,     1,     4,     1,     1,     1,     1,     2,
    1376        1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
    1377        4,     3,     8,     3,     2,     1,     2,     6,     8,     3,
    1378        2,     3,     3,     4,     4,     3,     1,     1,     1,     4,
    1379        6,     3,     2,     3,     3,     4,     4,     3,     2,     1,
     3777       1,     2,     2,     3,     3,     1,     3,     1,     2,     2,
     3778       2,     4,     4,     4,     4,     1,     2,     2,     3,     1,
     3779       2,     2,     1,     2,     2,     3,     1,     2,     2,     1,
     3780       1,     4,     2,     0,     6,     7,     2,     2,     2,     0,
     3781       2,     2,     3,     2,     3,     1,     2,     3,     2,     2,
     3782       4,     0,     1,     2,     2,     1,     0,     1,     2,     2,
     3783       5,     2,     0,     7,     2,     4,     0,     2,     0,     1,
     3784       1,     1,     5,     5,     5,     1,     5,     5,     9,     1,
     3785       5,     0,     1,     1,     5,     1,     1,     5,     5,     1,
     3786       3,     3,     4,     1,     1,     1,     1,     2,     1,     3,
     3787       3,     1,     2,     1,     3,     1,     1,     1,     1,     1,
     3788       1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
     3789       2,     0,     2,     2,     1,     4,     0,     1,     2,     3,
     3790       4,     2,     2,     1,     2,     2,     5,     5,     7,     6,
     3791       1,     2,     2,     3,     1,     2,     2,     4,     2,     4,
     3792       0,     4,     2,     1,     1,     1,     0,     2,     5,     5,
     3793      13,     1,     1,     3,     3,     2,     3,     3,     2,     4,
     3794       1,     6,     9,     0,    11,     1,     3,     3,     3,     1,
     3795       1,     5,     2,     5,     0,     1,     1,     3,     0,     1,
     3796       1,     1,     1,     0,     6,     2,     1,     2,     4,     2,
     3797       3,     3,     3,     4,     5,     5,     5,     6,     1,     1,
     3798       1,     3,     0,     5,     0,     1,     1,     2,     6,     1,
     3799       3,     0,     1,     4,     1,     1,     1,     1,     2,     1,
    13803800       2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
    1381        3,     6,     8,     3,     2,     1,     2,     2,     2,     3,
    1382        3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
    1383        2,     2,     1,     1,     2,     3,     3,     2,     4,     6,
    1384        8,     1,     2,     2,     1,     2,     2,     3,     3,     1,
    1385        4,     4,     3,     5,     8,     3,     2,     3,     1,     5,
    1386        5,     6,     6,     1,     2,     2,     1,     2,     2,     3,
    1387        3,     1,     4,     4,     3,     5,     8,     3,     1,     2,
    1388        1,     2,     6,     5,     6,     7,     7,     1,     2,     2,
    1389        1,     2,     2,     3,     3,     1,     4,     4,     3,     8,
    1390        3,     1,     1,     2,     1,     1,     2,     3,     2,     3,
    1391        2,     3,     3,     2,     4,     3,     2,     3,     2,     4,
    1392        3,     2,     6,     6,     6,     7,     1,     2,     1,     1,
    1393        1,     2,     3,     2,     3,     2,     3,     3,     4,     2,
    1394        3,     4,     2,     5,     5,     6,     6,     0,     1,     0,
    1395        2
     3801       3,     8,     3,     2,     1,     2,     6,     8,     3,     2,
     3802       3,     3,     4,     4,     3,     1,     1,     1,     4,     6,
     3803       3,     2,     3,     3,     4,     4,     3,     2,     1,     2,
     3804       2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
     3805       6,     8,     3,     2,     1,     2,     2,     2,     3,     3,
     3806       2,     4,     4,     3,     6,     8,     3,     2,     1,     2,
     3807       2,     1,     1,     2,     3,     3,     2,     4,     6,     8,
     3808       1,     2,     2,     1,     2,     2,     3,     3,     1,     4,
     3809       4,     3,     5,     8,     3,     2,     3,     1,     5,     5,
     3810       6,     6,     1,     2,     2,     1,     2,     2,     3,     3,
     3811       1,     4,     4,     3,     5,     8,     3,     1,     2,     1,
     3812       2,     6,     5,     6,     7,     7,     1,     2,     2,     1,
     3813       2,     2,     3,     3,     1,     4,     4,     3,     8,     3,
     3814       1,     1,     2,     1,     1,     2,     3,     2,     3,     2,
     3815       3,     3,     2,     4,     3,     2,     3,     2,     4,     3,
     3816       2,     6,     6,     6,     7,     1,     2,     1,     1,     1,
     3817       2,     3,     2,     3,     2,     3,     3,     4,     2,     3,
     3818       4,     2,     5,     5,     6,     6,     0,     1,     0,     2
    13963819};
    13973820
    1398 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
    1399    Performed when YYTABLE doesn't specify something else to do.  Zero
    1400    means the default is an error.  */
    1401 static const yytype_uint16 yydefact[] =
    1402 {
    1403      291,   291,   312,   310,   313,   311,   314,   315,   297,   299,
    1404      298,     0,   300,   326,   318,   323,   321,   322,   320,   319,
    1405      324,   325,   330,   327,   328,   329,   545,   545,   545,     0,
    1406        0,     0,   291,   217,   301,   316,   317,     7,   357,     0,
    1407        8,    14,    15,     0,     2,    60,    61,   563,     9,   291,
    1408      523,   521,   244,     3,   452,     3,   257,     0,     3,     3,
    1409        3,   245,     3,     0,     0,     0,   292,   293,   295,   291,
    1410      304,   307,   309,   338,   283,   331,   336,   284,   346,   285,
    1411      353,   350,   360,     0,     0,   361,   286,   471,   475,     3,
    1412        3,     0,     2,   517,   522,   527,   296,     0,     0,   545,
    1413      575,   545,     2,   586,   587,   588,   291,     0,   729,   730,
    1414        0,    12,     0,    13,   291,   267,   268,     0,   292,   287,
    1415      288,   289,   290,   524,   302,   390,   546,   547,   368,   369,
    1416       12,   443,   444,    11,   439,   442,     0,   501,   496,   487,
    1417      443,   444,     0,     0,   526,   218,     0,   291,     0,     0,
    1418        0,     0,     0,     0,     0,     0,   291,   291,     2,     0,
    1419      731,   292,   580,   592,   735,   728,   726,   733,     0,     0,
    1420        0,   251,     2,     0,   530,   437,   438,   436,     0,     0,
    1421        0,     0,   545,     0,   632,   633,     0,     0,   543,   539,
    1422      545,   560,   545,   545,   541,     2,   540,   545,   599,   545,
    1423      545,   602,     0,     0,     0,   291,   291,   310,   358,     2,
    1424      291,   258,   294,   305,   339,   351,   476,     0,     2,     0,
    1425      452,   259,   292,   332,   347,   354,   472,     0,     2,     0,
    1426      308,   333,   340,   341,     0,   348,   352,   355,   359,   444,
    1427      291,   370,   363,   367,     0,   392,   473,   477,     0,     0,
    1428        0,     1,   291,     2,   528,   574,   576,   291,     2,   739,
    1429      292,   742,   543,   543,     0,   292,     0,     0,   270,   545,
    1430      541,     2,   291,     0,     0,   291,   548,     2,   499,     2,
    1431      552,     0,     0,     0,     0,     0,     0,    18,    57,     4,
    1432        5,     6,    16,     0,     0,   291,     2,    62,    63,    64,
    1433       65,    45,    19,    46,    22,    44,    66,   291,     0,    69,
    1434       73,    76,    79,    84,    87,    89,    91,    93,    95,    97,
    1435      102,   493,   749,   450,   492,     0,   448,   449,     0,   564,
    1436      579,   582,   585,   591,   594,   597,   357,     0,     2,   737,
    1437        0,   291,   740,     2,    60,   291,     3,   424,     0,   432,
    1438      292,   291,   304,   331,   284,   346,   353,     3,     3,   406,
    1439      410,   420,   425,   471,   291,   426,   704,   705,   291,   427,
    1440      429,   291,     2,   581,   593,   727,     2,     2,   246,     2,
    1441      457,     0,   455,   454,   453,   138,     2,     2,   248,     2,
    1442        2,   247,     2,   278,     2,   279,     0,   277,     0,     0,
    1443        0,     0,     0,     0,     0,     0,     0,   565,   604,     0,
    1444      452,     2,   559,   568,   658,   561,   562,   531,   291,     2,
    1445      598,   607,   600,   601,     0,   273,   291,   291,   337,   292,
    1446        0,   292,     0,   291,   732,   736,   734,   532,   291,   543,
    1447      252,   260,   306,     0,     2,   533,   291,   497,   334,   335,
    1448      280,   349,   356,     0,   291,     0,   747,   397,     0,   474,
    1449      498,   249,   250,   518,   291,   434,     0,   291,   234,     0,
    1450        2,   236,     0,   292,     0,   254,     2,   255,   275,     0,
    1451        0,     2,   291,   543,   291,   484,   486,   485,     0,     0,
    1452      749,     0,   291,     0,   291,   488,   291,   558,   556,   557,
    1453      555,     0,   550,   553,     0,     0,   291,    52,   291,    66,
    1454       47,   291,    54,   291,   291,    50,    51,     2,   124,     0,
    1455        0,   446,     0,   445,   726,   118,   291,    17,     0,    29,
    1456       30,    35,     2,     0,    35,   108,   109,   110,   111,   112,
    1457      113,   114,   115,   116,   117,   107,     0,    48,    49,     0,
    1458        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1459        0,     0,     0,     0,     0,     0,     0,     0,     0,   104,
    1460        2,   644,   451,   641,   545,   545,   649,   478,   291,     2,
    1461      583,   584,     0,   595,   596,     0,     2,   738,   741,   118,
    1462      291,     0,     2,   706,   292,   710,   701,   702,   708,     0,
    1463        2,     2,   666,   545,   749,   615,   545,   545,   749,   545,
    1464      629,   545,   545,   680,   433,   663,   545,   545,   671,   678,
    1465      291,   428,   292,     0,     0,   291,   716,   292,   721,   749,
    1466      713,   291,   718,   749,   291,   291,   291,     0,   118,     0,
    1467       18,     2,     0,    19,     0,   458,   747,     0,     0,   464,
    1468      238,     0,   291,     0,     0,     0,   543,   567,   571,   573,
    1469      603,   606,   610,   613,   566,   605,     0,   281,   656,     0,
    1470      291,   274,     0,     0,     0,     0,   272,     2,     0,   256,
    1471      534,   291,     0,     0,   291,     2,   362,   382,   371,     0,
    1472        0,   376,   370,   748,     0,     0,   395,     0,   292,     3,
    1473      413,     3,   417,   416,   589,     0,   529,   291,    60,     3,
    1474      291,   432,   292,     3,   426,   427,     2,     0,     0,     0,
    1475      483,   303,   291,   479,   481,     3,     2,     2,     0,   500,
    1476        3,     0,   552,   126,     0,     0,   219,     0,     0,     0,
    1477        0,    36,     0,     0,   118,   291,    20,     0,    21,     0,
    1478      690,   695,   447,   687,   545,   545,     0,   105,     3,     2,
    1479       27,     0,    33,     0,     2,    25,     0,   103,    70,    71,
    1480       72,    74,    75,    77,    78,    82,    83,    80,    81,    85,
    1481       86,    88,    90,    92,    94,    96,     0,     0,   750,   291,
    1482        0,     0,     0,   645,   646,   642,   643,   495,   494,   291,
    1483        0,   291,   712,   291,   717,   292,   291,   660,   291,   291,
    1484      703,   659,     2,   291,     0,     0,     0,     0,     0,     0,
    1485        0,     0,   681,     0,   667,   618,   634,   668,     2,   614,
    1486      621,   430,   616,   617,   431,     2,   628,   637,   630,   631,
    1487      664,   665,   679,   707,   711,   709,   749,   265,     2,   743,
    1488        2,   421,   715,   720,   422,     0,   400,     3,     3,     3,
    1489        3,   452,     3,     0,     2,   466,   463,   748,     0,   459,
    1490        2,   462,   465,     0,   291,   239,   261,     3,   269,   271,
    1491        0,   452,     2,   569,   570,     2,   608,   609,     0,   657,
    1492      535,     3,   343,   342,   345,   344,   291,   536,     0,   537,
    1493      370,     0,     0,   291,   291,     0,     0,   690,   380,   383,
    1494      387,   545,   387,   386,   379,   372,   545,   374,   377,   291,
    1495      397,   391,   101,   398,   747,     0,     0,   435,   237,     0,
    1496        0,     3,     2,   666,   428,     0,   525,     0,   749,   487,
    1497        0,   291,   291,   291,     0,   549,   551,   127,     0,     0,
    1498      212,     0,     0,     0,   220,   221,    53,     0,    55,    58,
    1499       59,     0,     2,   125,     0,     0,     0,   691,   692,   688,
    1500      689,   457,    67,    68,   106,   122,     3,   105,     0,     0,
    1501       24,    35,     3,     0,    32,    99,     0,     3,   648,   652,
    1502      655,   647,     3,   590,     3,   714,   719,     2,    60,   291,
    1503        3,     3,   292,     0,     3,   620,   624,   627,   636,   670,
    1504      674,   677,   291,     3,   619,   635,   669,   291,   291,   423,
    1505      291,   291,   744,     0,     0,     0,     0,   253,     0,   101,
    1506        0,     3,     3,     0,   460,     0,   456,     0,     0,   242,
    1507      291,     0,     0,   126,     0,     0,     0,     0,     0,   126,
    1508        0,     0,   105,   105,    18,     2,     0,     0,     3,   128,
    1509      129,     2,   140,   130,   131,   132,   133,   134,   135,   142,
    1510      144,     0,     0,     0,   282,   291,   291,   545,     0,   538,
    1511      291,   373,   375,     0,   389,   691,   384,   388,   385,   378,
    1512      382,   365,   396,     0,   577,     2,   662,   661,     0,   667,
    1513        2,   480,   482,   502,     3,   510,   511,     0,     2,   506,
    1514        3,     3,     0,     0,   554,   219,     0,     0,     0,   219,
    1515        0,     0,   118,   694,   698,   700,   693,   747,   105,     0,
    1516        3,   659,    39,     3,    37,    34,     0,     3,    98,   100,
    1517        0,     2,   650,   651,     0,     0,   291,     0,     0,     0,
    1518        3,   636,     0,     2,   622,   623,     2,   638,     2,   672,
    1519      673,     0,     0,    60,     0,     3,     3,     3,     3,   408,
    1520      407,   411,     2,     2,   746,   745,   119,     0,     0,     0,
    1521        0,     3,   461,     3,     0,   240,   143,     3,   292,   291,
    1522        0,     0,     0,     0,     2,     0,   188,     0,   186,     0,
    1523        0,     0,     0,     0,     0,     0,   545,   118,     0,   148,
    1524      145,   291,     0,     0,   264,   276,     3,     3,   544,   611,
    1525      366,   381,   394,   291,   263,   291,     0,   513,   490,   291,
    1526        0,     0,   489,   504,     0,     0,     0,   213,     0,   222,
    1527       56,     2,   696,   697,     0,   123,   120,     0,     0,     0,
    1528        0,     0,    23,     0,   653,   291,   578,   262,   722,   723,
    1529      724,     0,   675,   291,   291,   291,     3,     3,     0,   683,
    1530        0,     0,     0,     0,   291,   291,     3,   542,   119,   468,
    1531        0,     0,   243,   292,     0,     0,     0,     0,   291,   189,
    1532      187,   184,     0,   190,     0,     0,     0,     0,   194,   197,
    1533      195,   191,     0,   192,   126,    35,   141,   139,   241,     0,
    1534        0,   415,   419,   418,     0,   507,     2,   508,     2,   509,
    1535      503,   291,   225,     0,   223,     0,   225,   291,    31,   121,
    1536        2,    42,     2,    40,    38,    28,    26,     3,   725,     3,
    1537        3,     3,     0,     0,   682,   684,   625,   639,   266,     2,
    1538      405,     3,   404,     0,   470,   467,   126,     0,     0,   126,
    1539        3,     0,   126,   185,     0,     2,     2,   206,   196,     0,
    1540        0,     0,   137,     0,   572,   612,     2,     0,     0,     2,
    1541      226,     0,     0,   214,     0,     3,     0,     0,     0,     0,
    1542        0,     0,   685,   686,   291,     0,   469,   149,     0,     0,
    1543        2,   162,   126,   151,     0,   179,     0,   126,     0,     2,
    1544      153,     0,     2,     0,     2,     2,     2,   193,    32,   291,
    1545      512,   514,   505,     0,     0,     0,     0,     0,     3,     3,
    1546      654,   626,   640,   676,   409,   126,   155,   158,     0,   157,
    1547      161,     3,   164,   163,     0,   126,   181,   126,     3,     0,
    1548      291,     0,   291,     0,     2,     0,     2,   136,     2,   227,
    1549      228,     0,   224,   215,   699,     0,     0,   150,     0,     0,
    1550      160,   230,   165,     2,   232,   180,     0,   183,   169,   198,
    1551        3,   207,   211,   200,     3,     0,   291,     0,   291,     0,
    1552        0,     0,    43,    41,   156,   159,   126,     0,   166,   291,
    1553      126,   126,     0,   170,     0,     0,   690,   208,   209,   210,
    1554        0,   199,     3,   201,     3,   291,   216,   229,   146,   167,
    1555      152,   126,   233,   182,   177,   175,   171,   154,   126,     0,
    1556      691,     0,     0,     0,     0,   147,   168,   178,   172,   176,
    1557      175,   173,     3,     3,     0,     0,   491,   174,   202,   204,
    1558        3,     3,   203,   205
    1559 };
    1560 
    1561 /* YYDEFGOTO[NTERM-NUM].  */
    1562 static const yytype_int16 yydefgoto[] =
    1563 {
    1564       -1,   813,   468,   301,    47,   134,   135,   302,   303,   304,
    1565      305,   761,   762,  1133,  1134,   306,   381,   308,   309,   310,
    1566      311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
    1567     1030,   518,   975,   546,   322,   976,   947,  1057,  1518,  1059,
    1568     1060,  1061,  1062,  1519,  1063,  1064,  1437,  1438,  1401,  1402,
    1569     1403,  1497,  1498,  1502,  1503,  1538,  1539,  1065,  1361,  1066,
    1570     1067,  1298,  1299,  1300,  1480,  1068,   146,   953,   954,   955,
    1571     1381,  1461,  1472,  1473,   469,   470,   874,   875,  1038,    51,
    1572       52,    53,    54,    55,   347,   159,    58,    59,    60,    61,
    1573       62,   349,    64,    65,   265,    67,    68,   275,   351,   352,
    1574       71,    72,    73,    74,   119,    76,   205,   354,   120,    79,
    1575      121,    81,    82,   455,    83,   454,   688,   689,   690,   908,
    1576     1086,   909,    84,    85,   458,   456,   696,   855,   856,   857,
    1577      858,   699,   700,   701,   359,   360,   361,   362,   466,   340,
    1578      136,   137,   522,   324,   171,   645,   646,   647,   648,   649,
    1579       86,   122,    88,   489,   490,   939,   491,   278,   495,   325,
    1580       89,   138,   139,    90,  1321,  1108,  1109,  1110,  1111,    91,
    1581       92,   717,    93,   274,    94,    95,   188,  1032,   679,   412,
    1582      126,    96,   501,   502,   503,   189,   269,   191,   192,   193,
    1583      270,    99,   100,   101,   102,   103,   104,   105,   196,   197,
    1584      198,   199,   200,   825,   605,   606,   607,   608,   201,   610,
    1585      611,   612,   572,   573,   574,   575,   751,   106,   614,   615,
    1586      616,   617,   618,   619,   968,   753,   754,   755,   595,   365,
    1587      366,   367,   368,   326,   165,   108,   109,   110,   370,   694,
    1588      569
    1589 };
    1590 
    1591 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    1592    STATE-NUM.  */
    1593 #define YYPACT_NINF -1310
    1594 static const yytype_int16 yypact[] =
    1595 {
    1596     7316,  8697, -1310,    16, -1310, -1310, -1310, -1310, -1310, -1310,
    1597    -1310,    22, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
    1598    -1310, -1310, -1310, -1310, -1310, -1310,   101,   101,   101,  1152,
    1599      941,    64,  7548,   141, -1310, -1310, -1310, -1310, -1310,    87,
    1600    -1310, -1310, -1310,   868,   134, -1310, -1310, -1310, -1310,  9158,
    1601    -1310, -1310, -1310, -1310,   149,   144, -1310,  1337, -1310, -1310,
    1602    -1310, -1310,   139,   935,   260,   102,  2892, -1310, -1310,  9196,
    1603      790, -1310, -1310, -1310,   904,   293,  5512,   547,   778,   904,
    1604     1166, -1310, -1310,   554,   624, -1310,   904,  1343, -1310,   187,
    1605    -1310,   308,   336, -1310, -1310, -1310, -1310,   251,   144,   101,
    1606    -1310,   101, -1310, -1310, -1310, -1310,  8923,  1337, -1310, -1310,
    1607     1337, -1310,   337, -1310,  9043, -1310, -1310,  1053,  9381, -1310,
    1608     1729,  1729,  1729, -1310, -1310, -1310,   101, -1310, -1310, -1310,
    1609      410,   413,   418, -1310, -1310, -1310,   433, -1310, -1310, -1310,
    1610    -1310, -1310,   468,   477, -1310, -1310,    37,  8666,  2607,   742,
    1611      369,   496,   509,   523,   530,   535,  8584,  6836,   536,   546,
    1612    -1310,  9234, -1310, -1310, -1310, -1310,   561, -1310,   245,  4633,
    1613     4633, -1310,   562,   361, -1310, -1310, -1310, -1310,   574,   383,
    1614      408,   429,   101,   577, -1310, -1310,   935,  3015,   664, -1310,
    1615       86, -1310,   101,   101,   144, -1310, -1310,    89, -1310,   101,
    1616      101, -1310,  3541,   634,   653,  1729,  6748, -1310, -1310,   623,
    1617     9158, -1310, -1310,   904, -1310, -1310, -1310,   144, -1310,  1337,
    1618      149, -1310,  7737, -1310,  1729,  1729,  1729,   144, -1310,  1152,
    1619    -1310,  5996, -1310, -1310,   642,  1729, -1310,  1729, -1310,    87,
    1620     8666, -1310,   672, -1310,   941,   697,  1729, -1310,  1152,   699,
    1621      702, -1310,  7548,   567, -1310, -1310, -1310,  9125, -1310, -1310,
    1622     4167, -1310,   664,    10,  5116,  9381,  1053,  3541, -1310,    94,
    1623    -1310, -1310,  9043,  1337,   715, 10741, -1310, -1310,    11, -1310,
    1624    10483,   740,   772, 10231,   759, 10288, 10307, -1310,   763, -1310,
    1625    -1310, -1310, -1310, 10364, 10364,  8440,   765, -1310, -1310, -1310,
    1626    -1310, -1310, -1310,   799, -1310,   616,  2256,  8779, 10288, -1310,
    1627      475,   860,   810,   276,   913,   766,   767,   793,   832,    41,
    1628    -1310, -1310,   807,   704, -1310,   331, -1310, -1310,  2607, -1310,
    1629    -1310,   242,   835, -1310,   421,   835,   841,    87, -1310, -1310,
    1630      846,  8923, -1310,   847,   857,  8892, -1310, -1310,  1352,  2069,
    1631     8155,  6748,   904, -1310,   904,  1729,  1729, -1310, -1310, -1310,
    1632    -1310, -1310, -1310,  1729,  8923,  1337, -1310, -1310,  9419,  1457,
    1633    -1310,  7886, -1310, -1310, -1310, -1310, -1310, -1310, -1310,   875,
    1634    10098, 10288, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
    1635    -1310, -1310, -1310, -1310, -1310, -1310,  1053, -1310,   928,   862,
    1636      891,   893,  1023,   916,   937,   951,  3015, -1310, -1310,   942,
    1637      149,   958, -1310, -1310,   970, -1310, -1310, -1310,  9125, -1310,
    1638    -1310, -1310, -1310, -1310,  3541, -1310,  8666,  8666, -1310,  1729,
    1639     1053,  6867,  1337,  8228, -1310, -1310, -1310, -1310,  9125,    10,
    1640    -1310, -1310,   904,   144, -1310, -1310,  9125, -1310,  6513, -1310,
    1641    -1310,  1729,  1729,   382,  5342,   969,   972,   960,  1031,  1729,
    1642    -1310, -1310, -1310, -1310,  9605, -1310,   450,  6629, -1310,   144,
    1643     1033, -1310,  1053, 10565, 10155, -1310, -1310, -1310, -1310,  1039,
    1644     3541, -1310,  8301,   664,  7432, -1310, -1310, -1310,   984,   626,
    1645      807,   941, 10741,   606,  9043, -1310, 10741, -1310, -1310, -1310,
    1646    -1310,   690, -1310,  1044,   772,   255,  8440, -1310,  9457, -1310,
    1647    -1310,  8440, -1310,  8553,  8440, -1310, -1310,  1042, -1310,   722,
    1648     1047,   818,  1048, -1310, -1310,  9310,  6479, -1310,   321, -1310,
    1649    -1310,  5116, -1310,   602,  5116, -1310, -1310, -1310, -1310, -1310,
    1650    -1310, -1310, -1310, -1310, -1310, -1310,  5116, -1310, -1310, 10288,
    1651    10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288,
    1652    10288, 10288, 10288, 10288, 10288, 10288, 10288,  2426,  5116, -1310,
    1653      704,   830, -1310, -1310,   101,   101, -1310, -1310,  8666, -1310,
    1654    -1310,   970,   567, -1310,   970, 10212, -1310, -1310, -1310,  4524,
    1655     6479,  1049,  1054, -1310,  9381, -1310, -1310,   561, -1310,  1056,
    1656      774,  1073,  2515,    95,   807, -1310,   101,   101,   807,    98,
    1657    -1310,   101,   101,   970, -1310, -1310,   101,   101, -1310,   835,
    1658     9490,  1337, 10710,   283,   326,  9490, -1310,  4167, -1310,   807,
    1659    -1310,  8923, -1310,    80,  7852,  7852,  7852,  1337, -1310,  4787,
    1660     1065,   875,   744,  1066,  1067, -1310,  1070,  4633,   333, -1310,
    1661     1134,  1337,  7852,   567,  1053,   567,   664,   494,   835, -1310,
    1662    -1310,   584,   835, -1310, -1310, -1310,   772, -1310,   835,   144,
    1663     9605, -1310,   737,  1083,   750,  1090, -1310,  1089,   144, -1310,
    1664    -1310,  9125,   144,  1088,  9457,  1092, -1310,  1677, -1310,   441,
    1665      448,   941, -1310,   941,  1091, 10288, -1310,   941, 10710, -1310,
    1666    -1310,  1098, -1310, -1310, -1310,   567, -1310, 10638,   857, -1310,
    1667     7852,   853,  8155, -1310, -1310,   561,  1095,  1097,   984,  3316,
    1668    -1310, -1310, 10741, -1310, -1310,  1099, -1310, -1310,  1105, -1310,
    1669     1099,  1111, 10483,  5116,    62,  1102,   167,  1113,  1121,  1129,
    1670     1130, -1310,  1131,  1132,  9348,  6598, -1310,  5116, -1310,   818,
    1671      978, -1310, -1310, -1310,   101,   101,  5540,  5116,  1135, -1310,
    1672    -1310,   757, -1310,  5116, -1310, -1310,   914, -1310, -1310, -1310,
    1673    -1310,   475,   475,   860,   860,   810,   810,   810,   810,   276,
    1674      276,   913,   766,   767,   793,   832, 10288,   282, -1310,  9605,
    1675     1136,  1137,  1140,   830, -1310, -1310, -1310, -1310, -1310,  9605,
    1676      779,  7852, -1310,  8923, -1310,  6955,  9005, -1310,  7886,  6836,
    1677    -1310, -1310,   774,  9605,  1063,  1142,  1143,  1145,  1146,  1147,
    1678     1148,  1154, -1310,  3759,  2515, -1310, -1310, -1310, -1310, -1310,
    1679    -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
    1680    -1310, -1310,   970, -1310, -1310, -1310,   807, -1310, -1310, -1310,
    1681    -1310, -1310, -1310, -1310, -1310,  1156, -1310,  1159,  1160, -1310,
    1682    -1310,   149,  1135,  4787, -1310, -1310, -1310, 10098,  1157, -1310,
    1683    -1310, -1310, -1310,   941,  6225,  1247, -1310, -1310, -1310, -1310,
    1684     1150,   149, -1310, -1310,   970, -1310, -1310,   970,   137,   970,
    1685    -1310, -1310, -1310, -1310, -1310, -1310,  9272, -1310,   144, -1310,
    1686    -1310,   451,   452,  9419,  7074,  2178, 10288,  3429, -1310, -1310,
    1687     1149,    39,  1149, -1310,   941, -1310,   101, -1310, -1310,  8073,
    1688      960, -1310, -1310, -1310,   972,  1168,  1169, -1310, -1310,  1170,
    1689     1172, -1310,   853,  1305, -1310,   359, -1310,  3316,   807, -1310,
    1690     1177, 10741,  9528,  8666,  1180, -1310, -1310,  1175,  1182,  1164,
    1691    -1310, 10288,    56,   233,  1179, -1310,  1183,   567,  1183, -1310,
    1692    -1310,  1183,  1184, -1310,  1189,  1190,  1192,   978, -1310, -1310,
    1693    -1310, 10098, -1310, -1310, -1310, -1310,  1188,  5116,  1193,   567,
    1694    -1310,  5116, -1310,   567, -1310, -1310,  5116, -1310,   595,   835,
    1695    -1310, -1310, -1310, -1310, -1310, -1310, -1310,   875,   857,  8892,
    1696    -1310, -1310,  7193,  1196, -1310,   622,   835, -1310,   644,   649,
    1697      835, -1310,  1729,  4053, -1310, -1310, -1310,  9605,  9605, -1310,
    1698     8228,  8228, -1310,  1194,  1195,  1198,  1199, -1310,  1200,   531,
    1699       27,  1135, -1310,   567, -1310,  4633, -1310,  5116,   453, -1310,
    1700     6359,  1213,  1217, 10041,  1222,  1223,    43,    49,   106,  5116,
    1701     1228,   144,  5116,  5116,  1208,  1237,   142,  1218, -1310, -1310,
    1702    -1310,  1236, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
    1703    -1310,   941,  1249,  5116, -1310,  9605,  9605,   101,  1252, -1310,
    1704     8810, -1310, -1310,   987, -1310,  3429, -1310, -1310, -1310, -1310,
    1705     1677, -1310, -1310,  1253, -1310, -1310, -1310, -1310,  1254,  1305,
    1706    -1310, -1310,  1239, -1310,  1099, -1310, -1310,  1053,  1258, -1310,
    1707    -1310, -1310,   806,  1262, -1310,   167,  1267, 10288,  1248,   167,
    1708      167,  1273,  9310,   693,   835, -1310, -1310,  1070,  5116,  1274,
    1709     1188,   208,   157,  1269, -1310, -1310,  1278,  1269, -1310, -1310,
    1710     1282, -1310, -1310,   970,  1286,  1288,  6717,  1287,  1289,  1291,
    1711    -1310, -1310,  1290, -1310, -1310,   970, -1310, -1310, -1310, -1310,
    1712      970,  5116,  5116,   857,  1292, -1310, -1310, -1310, -1310, -1310,
    1713    -1310, -1310, -1310, -1310, -1310, -1310, -1310, 10288, 10288,  1294,
    1714     1295,  1269, -1310, -1310,   941, -1310, -1310, -1310,  5073,  9528,
    1715     5116,  5116,  1370,  5116, -1310,  1298, -1310,  1299, -1310,  1302,
    1716     5116,  1306,  5116,  1123,  1307,    30,   101,  5821,  1435, -1310,
    1717    -1310,  6225,  1303,   456, -1310, -1310, -1310, -1310, -1310, -1310,
    1718    -1310, -1310, -1310,  9861, -1310,  8301,  1330, -1310, -1310,  9528,
    1719      463,   481, -1310,  1328,  1314,   772,  1341, -1310,   306, -1310,
    1720    -1310, -1310, -1310,   970,  1332, -1310, -1310,  1342,   753,   834,
    1721      567,  1345, -1310,  1350, -1310,  9605, -1310, -1310, -1310, -1310,
    1722    -1310,  1351, -1310,  9605,  9605,  9605, -1310, -1310,  1359, -1310,
    1723     1362,  1365,  1366,   557,  7925,  8040, -1310, -1310,   420, -1310,
    1724     1368,  1371, -1310,  8374,   815,   844,  1346,   866,  6094, -1310,
    1725    -1310, -1310,   485, -1310,   888,  1369,  1375,   144,  1417,  1051,
    1726    -1310, -1310,  5116, -1310, 10041,  5116, -1310, -1310, -1310,  1377,
    1727     1379, -1310, -1310, -1310,  1376, -1310, -1310, -1310, -1310, -1310,
    1728    -1310,  9528,   772,   195, -1310,  1353,   772,  9605, -1310, -1310,
    1729    -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
    1730    -1310, -1310,  1384,  1388, -1310, -1310, -1310, -1310, -1310, -1310,
    1731    -1310,  1394, -1310,  1397, -1310, -1310, 10041,   217,  5116, 10041,
    1732    -1310,  1400,  5116, -1310,   289,  1421,  1423, -1310, -1310,  1403,
    1733     1415,  1393, -1310,  1001, -1310, -1310, -1310,  1337,  1053,  1412,
    1734      799,   323, 10288, -1310,   953, -1310,   567,   567,  1418,  1425,
    1735     1426,  1428, -1310, -1310,  8228,  1427, -1310,  1497, 10288,  1420,
    1736    -1310, -1310,  9953, -1310,   955, -1310,  1419, 10041,  1424, -1310,
    1737    -1310,  1442, -1310,  1445, -1310,  1461,  1462, -1310,  1430,  9528,
    1738    -1310, -1310, -1310,   772,   567,  1453,  1436,  1459,  1269,  1269,
    1739    -1310, -1310, -1310, -1310, -1310, 10041,   204, -1310,   370, -1310,
    1740    -1310,  3684, -1310, -1310,  1439,  5116, -1310,  5116,  3684,   144,
    1741     9457,   144,  9457,  1463, -1310,  1465, -1310, -1310,  1464,   799,
    1742    -1310,   968, -1310, -1310, -1310,  1460,  1466, -1310, 10288, 10288,
    1743    -1310, -1310,  1075,   122, -1310, -1310,  1444, -1310,  1075, -1310,
    1744    -1310,  2191,   567, -1310, -1310,   144,  9457,   144,  9457,  1472,
    1745     1450,   567, -1310, -1310, -1310, -1310,  9953,  1469,  1075,  7664,
    1746     5116,  9865,  1470,  1075,  1479,  2191,  3509, -1310, -1310, -1310,
    1747     1482, -1310, -1310, -1310, -1310,  8666, -1310, -1310, -1310,  9732,
    1748    -1310,  9953, -1310, -1310,  1468,  9644, -1310, -1310,  9865,   144,
    1749     3509,   144,  1484,  1486,   976, -1310,  9732, -1310, -1310, -1310,
    1750     9644, -1310, -1310, -1310,   144,   144, -1310, -1310, -1310, -1310,
    1751    -1310, -1310, -1310, -1310
    1752 };
    1753 
    1754 /* YYPGOTO[NTERM-NUM].  */
    1755 static const yytype_int16 yypgoto[] =
    1756 {
    1757    -1310,  4585,  3220, -1310,  1680, -1310,    79,   965,  -162, -1310,
    1758      542,  -525,  -472,  -928,   -58,  5006,     0, -1310,   115,   571,
    1759      588,   220,   578,  1041,  1045,  1037,  1040,  1043, -1310,   682,
    1760     -568,  4467,  -949, -1310,  -743,   627,  -136,  -680,   399, -1310,
    1761      364, -1310,   400, -1052, -1310, -1310,   143, -1310, -1280, -1058,
    1762      249, -1310, -1310, -1310, -1310,    74, -1199, -1310, -1310, -1310,
    1763    -1310, -1310, -1310,   317, -1213,    36, -1310,  -398, -1310,   501,
    1764      296, -1310,   175, -1310,  -322, -1310, -1310, -1310,   558,  -827,
    1765    -1310, -1310,    14,  -963,    60,  1949, -1310, -1310, -1310,   -66,
    1766    -1310,    19,  1219,  -202,  1852,  4238, -1310, -1310,    54,    75,
    1767      689,  -242,  1416, -1310,  1975, -1310, -1310,   158,  2131, -1310,
    1768     2701,  1038, -1310, -1310, -1310,  -621, -1310,   944,   946,   541,
    1769      713,  -254, -1310, -1310, -1310,   938,   714,  -169, -1310,  -117,
    1770     -134,  1167, -1310, -1310,  -857,  -878,   837,   910,  1055,    25,
    1771    -1310,   900,   597,   -39,  -190,  -145,   668,   773, -1310,   993,
    1772    -1310,  2728,  1561,  -434,   920, -1310, -1310,   708, -1310,  -238,
    1773    -1310,   241, -1310, -1310, -1310, -1226,   414, -1310, -1310, -1310,
    1774     1165, -1310,    35, -1310, -1310,  -830,  -111, -1309,  -151,  3288,
    1775    -1310,  3069, -1310,   921, -1310,  -170,   169,  -182,  -181,  -166,
    1776        7,   -35,   -33,   -32,   813,     2,    29,    44,  -122,  -165,
    1777     -164,  -158,  -153,  -314,  -519,  -491,  -490,  -538,  -301,  -501,
    1778    -1310, -1310,  -512,  1078,  1084,  1085,  2540,  5063,  -571,  -588,
    1779     -558,  -543,  -557, -1310,  -503,  -733,  -723,  -722,  -570,  -311,
    1780     -274, -1310, -1310,   240,   176,   -77, -1310,  3991,   136,  -632,
    1781     -222
    1782 };
    1783 
    1784 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    1785    positive, shift that token.  If negative, reduce the rule which
    1786    number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1787 #define YYTABLE_NINF -521
    1788 static const yytype_int16 yytable[] =
    1789 {
    1790       49,   114,   453,   428,   399,   400,   268,    98,   150,   766,
    1791      151,   152,   819,   973,   868,   115,   964,   407,   752,    63,
    1792      401,   402,   403,   358,   383,   384,   965,   966,   404,   261,
    1793      440,   827,    49,   405,   596,   604,    50,   410,   498,    98,
    1794      357,   740,   820,   148,  1070,   153,   830,  1069,   609,    49,
    1795      844,    63,   837,   948,    69,  1137,   162,   821,   725,   794,
    1796       56,   116,   730,   187,   826,   408,   210,   144,    50,    49,
    1797      194,   919,   154,   217,   409,    70,   227,  1187,    31,   342,
    1798      112,   815,   178,   220,   399,   400,    69,   155,   281,  1439,
    1799      628,   425,    56,  1302,   632,  1379,   669,   407,   123,   818,
    1800      401,   402,   403,  1204,  1205,  1181,   114,    70,   404,   816,
    1801      817,   475,   477,   405,   114,  1195,   678,   267,   272,   476,
    1802      505,  1197,  1443,  1177,   682,    31,   211,   923,    31,   221,
    1803      203,   124,   262,    31,    31,   263,   566,    31,   527,   493,
    1804       31,   213,   494,  1171,   527,   408,   282,   307,   148,  1178,
    1805      411,   150,   145,   151,   152,   162,   114,   345,    77,   519,
    1806     1439,   210,  1303,  1169,  1170,  1117,  -231,  -231,   373,    97,
    1807      567,   714,   964,   143,   720,  1196,   107,   107,  1199,  1245,
    1808      204,  1198,   965,   966,   913,   167,   187,   187,   153,   476,
    1809       77,   471,   949,  1458,   162,   253,   147,   411,   419,   815,
    1810      411,    97,   267,   481,   828,   411,   601,   835,   107,   601,
    1811       49,   568,   149,  1186,   287,   154,  1443,   162,    97,   527,
    1812      667,  1443,   210,  1200,   819,    41,    42,   816,   817,   443,
    1813      155,   150,   190,   151,   152,    97,   664,  -231,    97,  1484,
    1814      307,  1443,  1248,  1139,   439,   107,   156,  1077,  1443,   292,
    1815      167,   514,    49,  1016,   820,   182,   169,   830,   172,    98,
    1816      272,  1398,  1399,   202,   588,   272,   267,   267,   723,   821,
    1817     1249,    63,   114,  1512,   162,  1514,   472,   527,   951,  1080,
    1818      170,   991,   441,   327,   665,   656,  1015,   463,    50,   164,
    1819      672,   674,  1093,   815,   342,   307,  -287,   442,   483,   358,
    1820     1468,   609,  1526,   248,  1382,   500,    69,   307,   251,   596,
    1821      664,  1003,    56,   671,   596,   804,   357,    97,  -119,   676,
    1822     -119,   816,   817,   571,  -119,  1187,  1178,    70,   148,  1541,
    1823       97,  1400,   465,  1398,  1399,   373,  -516,   527,  1084,  -119,
    1824     -119,   114,   734,  1118,   819,   345,   436,  1171,   713,   602,
    1825      620,   579,   471,   411,   164,   398,   190,   853,   665,   898,
    1826      253,   377,   827,  1119,   625,   735,   556,   557,   625,  1201,
    1827      519,   114,   471,   178,   820,   519,   327,   378,   519,    97,
    1828      471,  1070,   831,  1116,  1069,   736,   834,   673,   675,   821,
    1829      629,    97,   358,   111,   633,   847,   267,  1171,   747,   848,
    1830      510,   558,   559,  1409,    41,    42,   187,   851,   436,   357,
    1831       77,   854,   986,   373,  1496,    77,  1325,  1169,  1170,   174,
    1832     1501,    97,   547,   548,   267,   213,   307,   307,   107,   844,
    1833      267,   787,   759,   625,   714,   479,  1326,   472,   849,  1423,
    1834     1521,   577,   850,   167,   870,  1528,   642,   578,   342,  1525,
    1835      435,  1157,  1159,  1424,   114,   729,   358,   472,  1428,  1429,
    1836      547,  1362,   254,   871,  1126,   472,   859,   860,   264,  1536,
    1837      447,   849,   267,   357,   742,  1100,  1540,   387,  1187,   330,
    1838      267,   598,   625,   877,    49,  1187,  1469,   373,   719,   460,
    1839      498,    98,   683,   388,   114,  1244,   547,    97,   578,   390,
    1840     1470,   711,   869,    63,   888,   881,   307,  1104,   114,  1135,
    1841     1014,   307,   435,   307,   307,   391,  1171,   910,   603,   -10,
    1842       50,   750,  -440,   609,   392,   114,   345,  -441,  1016,   996,
    1843      582,  -467,   411,  -467,   804,   523,  1187,  1434,    69,   798,
    1844      393,   931,   277,   879,    56,   394,   112,   164,   213,  1236,
    1845     -467,     2,   207,     4,     5,     6,     7,   914,   417,    70,
    1846      704,   395,   327,   327,   916,   912,   705,   914,   916,  1184,
    1847      571,   571,  1184,   915,   952,   190,    77,   279,   307,  1316,
    1848      917,   437,  1126,  1081,  1082,  1185,   280,   913,  1308,   625,
    1849      345,   445,   549,   714,   620,  1317,    77,  1318,   550,   551,
    1850      602,   747,   602,   882,    77,   411,   331,   760,  1360,  1276,
    1851     1277,   713,   765,  1319,  1474,   471,    35,  1363,    36,   332,
    1852      625,  1474,   804,  1014,  1019,   625,   111,   620,   140,   239,
    1853      327,   625,   994,   333,   625,   625,   625,    41,    42,   111,
    1854      334,   928,    77,  -102,   806,   335,   846,  -102,   371,   327,
    1855       41,    42,   625,    97,   267,   372,  1087,   603,  1087,   520,
    1856      107,   465,   861,   240,   768,   769,   770,   342,   241,  1348,
    1857      376,  1027,  1522,  1349,   111,   358,   876,   385,   111,    -3,
    1858      140,   141,  1408,   389,   114,    41,    42,   907,   596,    41,
    1859       42,  1074,   357,   885,   691,   411,   111,   442,   140,   141,
    1860      472,   528,   529,   530,  1141,  1112,   411,    41,    42,   397,
    1861      625,   933,   620,   764,   327,   726,  1101,  1234,   719,   719,
    1862      727,  1238,  1034,   399,   400,   531,   472,   532,   409,   533,
    1863      534,  1153,   878,   411,   880,   432,   721,   407,   244,   401,
    1864      402,   403,   722,   426,   114,   345,   523,   404,   523,   750,
    1865      750,   523,   405,  1156,   523,   601,   845,   500,  1158,   230,
    1866      601,   598,   427,   231,   711,  1476,   235,  1477,   237,   814,
    1867      713,   603,   964,   213,   450,   246,   775,   776,   777,   778,
    1868     1373,  -288,   965,   966,   927,   408,  -364,   213,     8,     9,
    1869       10,    11,    12,   571,     2,   207,     4,     5,     6,     7,
    1870      731,   625,  1241,   625,   411,   999,   732,   680,   625,   345,
    1871     1161,  -393,   602,   570,  1425,   411,   111,    31,   140,   141,
    1872     1523,    45,    46,   229,   602,   111,   342,    41,    42,   484,
    1873     1436,   461,   746,   706,   462,   714,    41,    42,   747,    77,
    1874        8,     9,    10,    11,    12,    34,    37,   892,   804,   504,
    1875       40,   253,   329,   747,   292,   864,   911,    41,    42,    35,
    1876      894,    36,   163,   806,  1330,    77,   747,   980,   508,    31,
    1877      520,   972,   513,   981,   307,   520,   195,   525,   520,   218,
    1878      213,   527,   228,   812,   562,   601,  1168,   814,   603,   993,
    1879     1182,    45,    46,    63,   563,   705,   625,    34,   554,   555,
    1880     1494,  1436,   230,   114,   345,   907,   111,   907,     2,   207,
    1881        4,     5,     6,     7,   714,   664,  1232,    41,    42,   114,
    1882      910,   564,   578,   711,   691,  1356,   565,   749,    69,   411,
    1883      142,   747,   933,   933,    56,    45,    46,   719,   568,   570,
    1884       37,   411,   114,   307,    40,  1332,   338,    45,    46,    70,
    1885     -437,    41,    42,   952,  1357,   586,  1105,   952,   952,   589,
    1886      747,   163,   932,   665,   601,    48,   113,   750,   912,    -3,
    1887       45,    46,   657,    35,   374,    36,  1359,    43,  1508,   552,
    1888      553,   814,   747,   242,   245,    45,    46,   638,     8,     9,
    1889       10,    11,    12,   603,   113,   113,  1227,    48,  1364,   345,
    1890      163,   658,  1106,   659,   747,   560,   561,    37,    48,   184,
    1891      185,    40,   713,   111,    48,   140,   141,    31,    41,    42,
    1892      625,   625,    48,   163,    41,    42,   661,  1126,    48,   984,
    1893      981,    48,    77,   890,    48,   444,  1121,   253,   329,   411,
    1894      307,   230,   897,   235,   186,    34,   899,   662,   113,   113,
    1895      107,   666,    45,    46,  1284,  1285,    37,  1287,  1132,   472,
    1896       40,   663,  1132,  1426,  1292,  1444,  1294,    41,    42,  1423,
    1897      668,   747,    48,  1323,  1083,    48,   911,   442,  1490,   327,
    1898      114,   258,    48,   692,  1491,   907,  1546,   749,   693,   411,
    1899      907,   695,   578,   718,  1189,    45,    46,   329,   411,   933,
    1900       56,    45,    46,   737,   215,   738,   603,   267,   739,  1369,
    1901     1370,   743,  1132,    48,   547,    70,  1418,   981,   107,  1398,
    1902     1399,    48,   625,   771,   772,    37,    48,   184,   185,    40,
    1903      342,   230,   419,   660,   411,   845,    41,    42,   779,   780,
    1904     1351,   374,   773,   774,   457,   697,   345,  -235,   481,   329,
    1905      411,    48,    48,   733,   744,   510,   215,   748,   756,   691,
    1906     1380,   807,   266,   873,  1380,   711,   808,    48,   811,  -289,
    1907       45,    46,   828,   329,   601,    48,     8,     9,    10,    11,
    1908       12,  1295,  1296,  1297,    48,   822,   867,    48,   272,   114,
    1909     1331,  1333,  1334,   893,   113,   -12,   -13,   866,    77,   215,
    1910      895,   896,   900,   220,   903,    31,   921,   114,  -414,   113,
    1911     -520,   307,   936,   113,   943,   722,   107,    48,   113,   374,
    1912      117,   945,  1404,   956,   130,   625,   131,   132,   133,   114,
    1913       63,    48,    48,    34,   950,    41,    42,   957,    48,   958,
    1914      959,   960,   961,  1105,   711,    48,   988,   989,   211,   221,
    1915      990,   977,  1005,  1006,   911,  1007,  1008,  1009,  1010,   911,
    1916      215,  1459,  1079,   213,  1011,    69,  1022,  1421,   160,  -402,
    1917     -401,    56,  1036,  1058,   625,   625,  1071,  1534,  1094,   906,
    1918      644,  1073,  1096,   272,  1097,  1095,    70,  1103,   307,  1106,
    1919     1113,   747,  1114,    48,  1115,  1120,  1122,   971,   215,  1123,
    1920     1124,   702,  1125,   215,  1128,  1131,  1151,   472,  1174,  1175,
    1921     1172,  1173,  1176,    48,    48,     8,     9,    10,    11,    12,
    1922      691,   114,  1190,   399,   400,   259,  1191,  1132,  1132,  1132,
    1923       48,  1193,  1194,   160,    48,  1105,   407,  1202,  1206,   401,
    1924      402,   403,  1189,   441,    31,   643,  -290,   404,    56,  1207,
    1925     1209,    -3,   405,     8,     9,    10,    11,    12,   442,  1214,
    1926      664,    48,  1219,    70,  1224,   107,   323,   493,  1222,    77,
    1927     1507,    48,    34,  1228,   703,   339,  1233,   922,   267,  1235,
    1928     1237,  1106,    31,  1240,   408,  1250,  1246,   107,   215,    48,
    1929     1252,   724,  1254,   728,   625,    48,  1256,    48,  1257,  1258,
    1930     1262,  1259,  1420,  1260,  1269,   107,  1278,  1279,   665,    37,
    1931       34,   175,   176,    40,   932,  1203,   601,  1286,  1307,   114,
    1932       41,    42,    45,    46,    37,   430,   175,   176,    40,   434,
    1933     1289,  1290,   113,  1105,  1291,    41,    42,    48,  1293,  1301,
    1934     1314,   114,  1192,  1320,  1322,    48,    77,  1328,   114,    48,
    1935      114,  1324,   114,    48,  1329,  1358,   113,  1335,   113,   323,
    1936      472,   372,  1336,  1338,   107,  1132,  1132,   472,   985,   215,
    1937      150,  1344,   151,   152,  1345,  1346,  1347,  1297,  1365,  1106,
    1938     1354,  1506,   214,  1355,  1366,  1383,   114,  1374,   114,  1375,
    1939     1376,   434,   233,   113,   488,  1189,  1392,   107,   113,   114,
    1940     1393,    56,  1189,  1460,  -403,  1506,  1506,   702,    56,  1396,
    1941     1407,   215,  1415,   162,   521,   307,    70,  1411,   472,  1413,
    1942      528,   529,   530,    70,  1416,  1417,   160,  1422,  1430,    37,
    1943     1506,   175,   176,    40,   214,  1431,  1432,   373,  1433,  1435,
    1944       41,    42,   865,  1349,   531,  1029,   532,   113,   533,  1305,
    1945     1440,  1445,  1449,  1189,    48,  1451,  1447,  1453,  1455,    56,
    1946      587,  1509,  1457,  1462,   593,    48,   376,    48,  1463,  1464,
    1947     1517,  1475,  1492,  1485,    70,  1487,  1500,   214,  1493,  1489,
    1948      703,  1515,  1516,   626,  1520,  1527,    48,   630,   922,  1529,
    1949      339,   918,  1531,   920,  1544,   107,  1545,   457,  1208,    77,
    1950     1537,   783,    48,   781,  1130,   784,    77,   113,   782,   785,
    1951     1058,  1306,  1495,  1410,  1547,  1368,    48,   107,   113,    48,
    1952      113,  1239,  1384,  1478,   107,  1088,   702,   216,   901,  1213,
    1953      902,  1221,   215,   922,  1092,   924,   702,   800,   214,  1127,
    1954     1035,   872,   938,  1315,   243,   323,   323,  1102,   790,   716,
    1955      702,   327,    48,   946,   791,   792,   113,    77,   113,     0,
    1956      215,  1367,   113,     0,     0,   215,     0,     0,  1138,     0,
    1957      113,     0,     0,   687,   479,   107,   214,     0,     0,   216,
    1958        0,   214,     0,    48,    48,     0,   117,     0,     0,     0,
    1959     1482,     0,  1482,     0,     0,     0,   499,    48,     0,   703,
    1960        0,     0,     0,  1372,     0,     0,     0,     0,     0,   703,
    1961        0,   488,     0,   323,     0,   488,     0,     0,     0,  1029,
    1962        0,     0,   216,   703,     0,   521,  1482,   521,  1482,     0,
    1963      521,     0,   323,   521,     0,     0,   215,   177,     0,     8,
    1964        9,    10,    11,    12,   339,     0,     0,     0,     0,    37,
    1965      215,   184,   185,    40,     0,  1397,     0,     0,  1405,     0,
    1966       41,    42,     0,     0,     0,     0,   214,   644,    31,     0,
    1967        0,     0,     0,  1039,     0,     0,     0,    48,     0,     0,
    1968        0,     0,     0,   216,     0,     0,   905,   177,   411,    48,
    1969      177,     0,     0,     0,    45,    46,    34,   323,     0,   922,
    1970        0,  1442,     0,     0,     0,     0,  1446,   906,   802,     0,
    1971        0,     0,     0,  1479,  1089,  1483,     0,     0,     0,     0,
    1972        0,   216,     0,     0,     0,     0,   216,     0,     0,     0,
    1973        0,     0,   643,     0,  1467,     0,   177,   891,   113,   843,
    1974        0,     0,     0,   215,   593,     0,     0,   214,     0,  1511,
    1975      852,  1513,    66,   118,   702,   702,     0,     0,     0,   922,
    1976      922,    48,     0,     0,   214,     0,     0,     0,     0,     0,
    1977       48,   644,    48,     0,     0,     0,     0,     0,     0,   113,
    1978        0,     0,     0,     0,    66,     0,     0,     0,     0,   214,
    1979        0,     0,     0,  1542,     0,  1543,     0,     0,     0,   177,
    1980        0,   161,    48,   687,     0,     0,     0,     0,  1550,  1551,
    1981        0,   216,   702,   702,     0,     0,     0,     0,  1535,     0,
    1982        0,   222,   113,     0,  1535,     0,     0,   703,   703,     0,
    1983        0,     0,     0,     0,     0,  1535,   643,     0,     0,  1535,
    1984        0,   488,     0,     0,   113,     0,     0,     0,   113,    57,
    1985       57,     0,     0,   177,     0,     0,   987,     0,   260,     0,
    1986      177,     0,     0,   339,     0,     0,   992,     0,     0,     0,
    1987        0,  1039,     0,     0,     0,    75,     0,     0,     0,     0,
    1988     1004,    57,     0,     0,     0,   703,   703,     0,     0,     0,
    1989        0,     0,   216,     0,     0,     0,     0,     0,   113,     0,
    1990      328,     0,     0,     0,     0,     0,     0,    75,   260,   350,
    1991      214,     0,     0,     0,     0,    57,     0,     0,    57,     0,
    1992        0,     0,   995,     0,     0,     0,     0,   802,   177,     0,
    1993        0,     0,     0,     0,   216,     0,   113,     0,   214,   406,
    1994      215,     0,     0,   214,   223,   177,     0,     0,     0,   177,
    1995       48,     0,     0,     0,   424,    48,     0,   429,   431,     0,
    1996     1312,     0,   161,     0,   922,     0,     0,     0,     0,     0,
    1997        0,     0,    48,     0,     0,     0,     0,     0,     0,     0,
    1998      922,     0,     0,   448,  1282,     0,     0,   451,     0,   452,
    1999        0,     0,   702,     0,     0,     0,     0,     0,   459,     0,
    2000      702,   702,   702,     0,    66,     0,   348,     0,     0,   473,
    2001        0,     0,   177,     0,   214,   802,     0,     0,     0,   480,
    2002        0,     0,   339,     0,     0,     0,     0,   431,   214,     0,
    2003        0,    78,   353,  1313,     0,     0,     0,     0,   687,     0,
    2004        0,    37,     0,   184,   185,    40,     0,     0,   499,   113,
    2005      922,   922,    41,    42,     0,   216,     0,     0,     0,     0,
    2006      488,  1107,   323,    78,   702,   703,     0,     0,     0,     0,
    2007        0,    57,    48,   703,   703,   703,     0,     0,   600,     0,
    2008      601,     0,     0,   216,  1166,  1167,    45,    46,   216,     0,
    2009        0,     0,     0,   260,     0,     0,     0,   594,     0,     0,
    2010      224,    57,     0,   622,     0,     0,   449,     0,     0,     0,
    2011        0,     0,     0,   113,   113,   113,   627,     0,   843,     0,
    2012      627,   214,     0,   260,     0,     0,   215,    75,     0,     0,
    2013        0,     0,    75,     0,     0,     0,     0,   703,     0,     0,
    2014        0,     0,  1216,  1217,     0,     0,     0,     0,     0,     0,
    2015       37,     0,   184,   185,    40,     0,     0,     0,     0,   216,
    2016        0,    41,    42,    37,     0,   184,   185,    40,     0,   177,
    2017      473,     0,     0,   216,    41,    42,     0,     0,     0,     0,
    2018        0,     0,     0,     0,     0,   350,     0,   905,   355,   411,
    2019      473,     0,     0,     0,     0,    45,    46,     0,   473,   687,
    2020     1505,   177,   411,     0,     0,     0,     0,     0,    45,    46,
    2021        0,     0,     0,     0,     0,     0,   698,   177,     0,   431,
    2022        0,   215,     0,     0,     0,     0,   223,     0,     0,     0,
    2023        0,   177,     0,     0,   712,     0,    66,     0,     0,     0,
    2024        0,   802,    48,    48,   431,     0,     0,     0,   431,     0,
    2025        0,   113,   113,   535,   536,   537,   538,   539,   540,   541,
    2026      542,   543,   544,     0,     0,     0,   216,     0,     0,     0,
    2027        0,     0,     0,     0,     0,     0,     0,   260,   350,     0,
    2028        0,     0,   348,    78,     0,     0,     0,   545,    78,   113,
    2029        0,     0,     0,    75,     0,     0,     0,     0,     0,     0,
    2030        0,     0,     0,     0,     0,     0,     0,     0,   353,     0,
    2031        0,     0,   177,    75,     0,     0,     0,     0,   214,     0,
    2032        0,    75,  1337,   793,     0,     0,   339,     0,     0,     0,
    2033     1339,  1340,  1341,    57,     0,     0,     0,     0,     0,   353,
    2034        0,   627,   805,     0,     0,     0,    48,   113,  1107,     0,
    2035        0,     0,     0,     0,   824,     0,   113,   353,     0,    75,
    2036        0,     0,     0,   283,   284,     0,   285,     0,     0,     0,
    2037       48,    48,   594,     0,     0,   348,     0,   594,     0,     0,
    2038        0,     0,   224,   627,     0,     0,   350,   350,   350,     0,
    2039        0,     0,   286,     0,  1385,    48,     0,     0,   287,     0,
    2040        0,   353,   288,     0,   350,   289,   290,   291,   292,    41,
    2041       42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
    2042        0,     0,   698,     0,     0,     8,     9,    10,    11,    12,
    2043        0,     0,     0,   473,     0,   295,     0,   379,     0,   348,
    2044     1107,     0,     0,    45,    46,   297,   298,   299,   300,    78,
    2045        0,     0,     0,     0,    31,     0,   786,     0,     0,   473,
    2046        0,     0,   350,   216,   355,   353,     0,     0,     0,    78,
    2047        0,   937,     0,     0,   431,     0,   177,    78,     0,     0,
    2048        0,     0,    34,   348,   348,   348,     0,    37,     0,   184,
    2049      185,    40,     0,     0,     0,   355,   260,   712,    41,    42,
    2050        0,   348,   967,     0,   214,     0,     0,     0,     0,   353,
    2051      353,   353,     0,   355,     0,    78,     0,     8,     9,    10,
    2052       11,    12,     0,     0,   600,     0,   601,   353,     0,     0,
    2053        0,     0,    45,    46,     0,     0,     0,     0,  1107,     0,
    2054        0,   698,     0,     0,     0,   353,    31,     0,     0,     0,
    2055        0,   698,     0,   350,     0,   627,    75,   355,  1002,   348,
    2056      627,   805,     0,     0,     0,   698,     0,     0,     0,  1481,
    2057        0,  1481,     0,     0,    34,  1013,     0,     0,     0,    37,
    2058        0,     0,    75,    40,     0,   353,     0,     0,     0,     0,
    2059       41,    42,     0,     0,     0,     0,     0,     0,     0,   214,
    2060        0,    80,     0,     0,     0,  1481,     0,  1481,     0,     0,
    2061        0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
    2062      353,   355,     0,     0,    45,    46,    66,     0,    87,     0,
    2063      413,     0,     0,    80,   323,     0,     0,   421,     0,     0,
    2064        0,     0,     0,     0,     0,     0,     0,     0,   627,   216,
    2065      348,     0,     0,     0,     0,   260,   712,     0,   348,  1085,
    2066       87,     0,     0,     0,   353,   355,   355,   355,     0,     0,
    2067      225,     0,     0,     0,   353,     0,   353,     0,     0,     0,
    2068        0,   223,     0,   355,   353,  1099,     0,     0,   353,     0,
    2069        0,     0,     0,   431,   118,     0,     0,   226,     0,     0,
    2070        0,   355,     0,     0,     0,     0,     0,     0,     0,   413,
    2071        0,     0,    78,     0,     0,     0,     0,     0,     0,     0,
    2072        0,     0,     0,    57,     0,     0,     0,     0,     0,     0,
    2073        0,     0,     0,     0,     0,     0,     0,     0,    78,     0,
    2074        0,   355,     0,     0,   216,     0,     0,     0,     0,    75,
    2075        0,   594,     0,     0,     0,     0,     0,     0,   356,     0,
    2076        0,     0,     0,   576,   429,     0,     0,     0,     0,   698,
    2077      698,   580,   350,   350,   583,     0,   355,     0,     0,   353,
    2078        0,     0,     0,     0,     0,   363,     0,   177,     0,     0,
    2079        0,    57,  1188,     0,     0,   206,     2,   207,     4,     5,
    2080        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2081       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2082      355,     0,    26,    27,    28,     0,     0,   698,   698,     0,
    2083      355,    31,   355,     0,     0,     0,     0,   224,   413,     0,
    2084      355,     0,   421,     0,   355,     0,     0,     0,     0,     0,
    2085        0,     0,     0,    80,     0,     0,     0,     0,    80,    34,
    2086        0,    35,     0,    36,    37,     0,   208,    39,    40,   348,
    2087      348,     0,     0,     0,   627,    41,    42,     0,     0,     0,
    2088       87,     0,     0,     0,     0,    87,     0,     0,     0,    57,
    2089        0,     0,   353,   353,     0,   353,   353,     0,   712,     0,
    2090        0,    43,     0,   209,     0,    78,     0,     0,     0,    45,
    2091       46,     0,     0,     0,     0,    75,     0,     0,     0,   413,
    2092        0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    2093        0,     0,     0,     0,     0,   355,     0,     0,     0,     0,
    2094        0,  1283,     0,     0,     0,     0,     0,     0,     0,     0,
    2095      353,   353,   225,     0,    31,     0,     0,   177,     0,   260,
    2096        0,     0,     0,    66,     0,     0,     0,     0,     0,     0,
    2097        0,     0,     0,     0,     0,   698,     0,   712,     0,   226,
    2098        0,   118,    34,     0,     0,     0,     0,    37,     0,   184,
    2099      185,    40,     0,     0,     0,   127,   127,   127,    41,    42,
    2100        0,     0,     0,     0,     0,     0,     0,   698,     0,     0,
    2101      576,   576,     0,     0,     0,   698,   698,   698,     0,    80,
    2102        0,   353,     0,     0,   186,     0,   350,   350,     0,     0,
    2103        0,     0,    45,    46,   356,     0,     0,    57,    57,    80,
    2104     1188,     0,     0,     0,     0,     0,    87,    80,   355,   355,
    2105        0,   355,   355,     0,     0,     0,     0,     0,     0,     0,
    2106       57,   363,     0,     0,   223,   356,    87,     0,   127,     0,
    2107      127,    78,     0,   118,    87,     0,     0,     0,    57,   698,
    2108        0,     0,     0,   356,     0,    80,    75,     0,     0,     0,
    2109        0,     0,   363,     0,     0,   276,     0,   883,   353,     0,
    2110      353,   886,     0,     0,     0,     0,   355,   355,     0,     0,
    2111      363,     0,    87,     0,     0,     0,     0,     0,     0,     0,
    2112        0,     0,     0,   348,   348,     0,     0,   356,     0,     0,
    2113      353,     0,    57,     0,     0,     0,     0,    57,   353,   353,
    2114      353,     0,     0,     0,     0,     0,   350,     0,     0,   353,
    2115      353,   127,     0,     0,   363,     0,     0,     0,     0,   127,
    2116        0,   127,   127,    75,     0,     0,   127,     0,   127,   127,
    2117       57,   118,     0,   168,     0,   173,     0,   355,   179,   180,
    2118      181,     0,   183,     0,     0,     0,     0,     0,     0,     0,
    2119        0,   356,     0,  1188,     0,     0,     0,   234,     0,     0,
    2120     1188,     0,   353,     0,     0,     0,     0,     0,     0,   249,
    2121      250,     0,     0,     0,   125,   128,   129,     0,   363,     0,
    2122      224,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    2123       12,     0,     0,   576,     0,   356,   356,   356,   127,     0,
    2124        0,     0,    78,   348,     0,     0,     0,     0,     0,     0,
    2125        0,  1188,     0,   356,   355,    31,   355,     0,  1530,     0,
    2126        0,     0,   363,   363,   363,     0,     0,     0,    57,   353,
    2127        0,   356,     0,     0,     0,     0,     0,     0,     0,     0,
    2128      363,     0,    80,    34,     0,     0,   355,   255,    37,   256,
    2129       57,     0,    40,     0,   355,   355,   355,    57,   363,    41,
    2130       42,     0,     0,     0,     0,   355,   355,     0,    80,    87,
    2131        0,   356,     0,     0,     0,     0,    75,     0,     0,    78,
    2132        0,     0,     0,    75,     0,   718,     0,     0,     0,     0,
    2133        0,     0,     0,    45,    46,    87,     0,     0,   363,     8,
    2134        9,    10,    11,    12,     0,     0,   356,     0,    57,     0,
    2135        0,   413,     0,     0,     0,     0,     0,     0,   355,     0,
    2136        0,     0,     0,     0,     0,     0,     0,     0,    31,     0,
    2137      396,     0,     0,   363,    75,     0,     0,     0,     0,     0,
    2138      415,   416,     0,     0,     0,   420,     0,   422,   423,     0,
    2139      356,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2140      356,    37,   356,   184,   185,    40,     0,   225,     0,     0,
    2141      356,     0,    41,    42,   356,     0,     0,   363,     0,     8,
    2142        9,    10,    11,    12,     0,   355,     0,   363,  1142,   363,
    2143        0,     0,     0,     0,   226,     0,     0,   363,   905,     0,
    2144      411,   363,     0,     0,     0,  1154,    45,    46,    31,     0,
    2145        0,     8,     9,    10,    11,    12,     0,     0,     0,     0,
    2146        0,     0,     0,     0,   591,     0,   599,     0,     0,     0,
    2147        0,     0,    78,     0,     0,    80,    34,   623,   624,    78,
    2148       31,    37,     0,   184,   185,    40,     0,     0,     0,     0,
    2149        0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
    2150        0,     0,    87,     0,     0,   356,     0,     0,    34,     0,
    2151        0,     0,     0,    37,     0,   184,   185,    40,  1505,     0,
    2152      411,     0,     0,   413,    41,    42,    45,    46,     0,     0,
    2153       78,     0,   363,     0,     0,     0,     0,     0,     0,     0,
    2154        0,     0,     0,   127,   127,     0,     0,     0,     0,     0,
    2155      266,     0,     0,     0,     0,     0,     0,     0,    45,    46,
    2156        0,     0,     0,  1242,     0,     0,     0,     0,     0,     0,
    2157        0,     0,   127,     0,     0,   127,   127,     0,   127,     0,
    2158      127,   127,     0,     0,     0,   127,   127,     1,     2,   207,
    2159        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2160       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2161       24,    25,  -291,     0,    26,    27,    28,    29,   356,   356,
    2162       30,   356,   356,    31,     0,     0,     0,     0,     0,     0,
    2163        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2164        0,    80,     0,     0,     0,   363,   363,     0,   363,   363,
    2165        0,    34,     0,    35,     0,    36,     0,     0,    38,    39,
    2166        0,     0,  -291,     0,     0,     0,  1012,     0,    87,     8,
    2167        9,    10,    11,    12,     0,     0,   356,   356,     0,     0,
    2168        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2169        0,     0,     0,     0,     0,    44,   283,   284,    31,   285,
    2170        0,    45,    46,   363,   363,     0,     0,     0,     0,     0,
    2171        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2172        0,     0,     0,   127,   127,   286,    34,     0,     0,     0,
    2173        0,   287,     0,     0,     0,   288,     0,     0,   289,   290,
    2174      291,   292,    41,    42,     0,   293,   294,   356,     0,     0,
    2175        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2176        0,     0,   795,   796,     0,     0,     0,     0,   295,     0,
    2177      379,     0,     0,     0,   363,     0,   344,    46,   297,   298,
    2178      299,   300,     0,     0,     0,     0,     0,     0,     0,     0,
    2179      225,   829,     0,     0,   832,   833,     0,   836,     0,   838,
    2180      839,     0,     0,     0,   840,   841,     0,     0,     0,     0,
    2181        0,     0,    80,     0,     0,     0,     0,   226,     0,   925,
    2182        0,   926,     0,     0,   356,     0,   356,     0,   929,   930,
    2183        0,     0,     0,   935,     0,     0,     0,     0,     0,    87,
    2184        0,     0,     0,     0,     0,   940,     0,     0,     0,     0,
    2185      944,   363,     0,   363,     0,     0,   356,     0,     0,     0,
    2186        0,     0,     0,     0,   356,   356,   356,     0,     0,     0,
    2187        0,     0,     0,     0,     0,   356,   356,     0,   978,     0,
    2188      127,     0,     0,   363,     0,   127,     0,     0,     0,    80,
    2189        0,   363,   363,   363,     0,     0,     0,     0,     0,     0,
    2190        0,     0,   363,   363,     0,     0,     0,     0,     0,     0,
    2191        0,     0,     0,     0,     0,     0,    87,     0,     0,     0,
    2192        0,     0,     0,     0,     0,     0,     0,     0,   356,     0,
    2193        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2194      166,     0,   969,   970,     0,     0,     0,     0,     0,     0,
    2195        0,     0,     0,     0,     0,   363,     0,   219,     0,     0,
    2196     1162,     0,     0,     8,     9,    10,    11,    12,     0,     0,
    2197        0,     0,     0,     0,     0,     0,     0,  1023,  1024,  1025,
    2198     1026,     0,  1028,     0,     0,     0,     0,     0,     0,     0,
    2199      283,   284,    31,   285,     0,   356,     0,  1072,     0,     0,
    2200        0,     0,     0,     0,     0,   166,     0,     0,     0,   273,
    2201        0,  1078,     0,     0,     0,     0,     0,     0,     0,   286,
    2202       34,     0,   363,     0,     0,   287,     0,     0,     0,   288,
    2203        0,     0,   289,   290,   291,   292,    41,    42,   166,   293,
    2204      294,     0,    80,     0,     0,     0,   127,     0,   369,    80,
    2205        0,  1098,   375,     0,     0,     0,     0,     0,     0,     0,
    2206        0,     0,   295,     0,   379,     0,     0,     0,     0,    87,
    2207     1163,    46,   297,   298,   299,   300,    87,     8,     9,    10,
    2208       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2209       21,    22,    23,    24,    25,     0,  1129,    26,    27,    28,
    2210       80,   166,  1136,     0,  1090,     0,    31,  1140,     0,     0,
    2211        0,     0,  1144,   219,  1145,     0,     0,     0,  1147,     0,
    2212     1148,  1149,     0,     0,  1152,     0,     0,    87,     0,     0,
    2213        0,   166,     0,  1164,    34,     0,     0,     0,     0,     0,
    2214        0,   208,    39,     0,     0,     0,     0,     0,     0,     0,
    2215        0,  1179,  1180,     0,     0,     0,   375,     0,     0,     0,
    2216        0,     0,     0,   166,     0,     0,     0,     0,     0,     0,
    2217        0,     0,     0,     0,     0,   127,     0,     0,  1210,     0,
    2218        0,  1212,     0,     0,    45,    46,   524,     0,     0,     0,
    2219        0,     0,     0,     0,     0,     0,     0,     0,   166,     0,
    2220        0,     0,     0,     0,   212,     0,     0,     0,     0,     0,
    2221        0,     0,     0,     0,   232,     0,   236,     0,   238,     0,
    2222        0,     0,     0,     0,  1226,   247,     0,     0,     0,     0,
    2223     1230,  1231,     0,     0,     0,     0,   597,     0,     0,     0,
    2224        0,   621,     0,     0,     0,     0,     0,     0,     0,     0,
    2225     1247,     0,     0,  1251,     0,     0,   212,  1253,   236,   238,
    2226      247,     0,     0,     0,     0,  1218,     0,     0,     0,     0,
    2227     1261,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2228        0,     0,     0,  1268,     0,  1270,  1271,  1272,  1273,     0,
    2229        0,     0,     0,     0,     0,     0,     0,     0,     0,   212,
    2230        0,  1280,     0,  1281,     0,     0,     0,   173,     0,     0,
    2231        0,     0,     0,     0,     0,     0,     0,   166,   166,     0,
    2232        0,     0,     0,     0,   369,     0,     0,     0,     0,     0,
    2233        0,     0,     0,     0,     0,     0,  1309,  1310,     0,     0,
    2234        0,     0,     0,     0,     0,   524,     0,     0,     0,     0,
    2235        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2236      212,     0,   236,   238,   247,     0,     0,     0,     0,     0,
    2237        0,     0,     0,   715,     0,     0,     0,     0,     0,     0,
    2238        0,     0,     0,     0,     0,   166,  1342,  1343,     0,     0,
    2239        0,     0,     0,     0,  1304,     0,  1353,   524,   212,   524,
    2240        0,     0,   524,   212,   166,   524,     0,     0,     0,     0,
    2241        0,     0,     0,     0,     0,     0,     0,   369,   497,     0,
    2242        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2243        0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
    2244       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2245       24,    25,  -291,     0,    26,    27,    28,  1388,     0,  1389,
    2246     1390,  1391,     0,    31,     0,     0,   212,     0,     0,   166,
    2247        0,  1395,     0,     0,     0,     0,     0,     0,     0,     0,
    2248     1406,   369,     0,     0,     0,   810,     0,     0,   212,     0,
    2249        0,    34,     0,   236,   238,     0,    37,     0,   336,   337,
    2250       40,   247,  -291,     0,     0,  1427,     0,    41,    42,     0,
    2251        0,   597,     0,     0,   321,     0,   597,     0,     0,     0,
    2252        0,     0,     0,     0,   346,   369,   369,   369,     0,   157,
    2253        0,     0,     0,   634,     0,   338,   382,   382,     0,     0,
    2254        0,    45,    46,   369,   212,     0,     0,     0,  1465,  1466,
    2255        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2256        0,  1471,   212,     0,     0,     0,     0,   212,  1471,   212,
    2257      283,   284,     0,   285,     0,   524,     0,   252,     0,     0,
    2258        0,     0,     0,     0,     0,     0,   212,   257,     0,   212,
    2259      212,     0,     0,     0,     0,     0,     0,   212,     0,   286,
    2260     1504,   369,     0,   934,  1510,   287,     0,   321,     0,   288,
    2261        0,   212,   289,   290,   291,   292,    41,    42,   212,   293,
    2262      294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2263        0,   478,  1532,     0,  1533,     0,   715,     0,     0,     0,
    2264        0,     0,   295,   157,   379,     0,     0,   380,     0,     0,
    2265       45,    46,   297,   298,   299,   300,     0,   386,     0,     0,
    2266        0,     0,  1548,  1549,     0,     0,     0,     0,     0,     0,
    2267     1552,  1553,     0,     0,     0,     0,     0,     0,     0,     0,
    2268      418,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2269        0,     0,   369,     0,   433,     0,   621,     0,     0,     0,
    2270      369,     0,     0,   438,     0,     0,     0,     0,     0,     0,
    2271        0,     0,     0,   446,     0,     0,     0,     0,     0,     0,
    2272        0,     0,     0,     0,   283,   284,     0,   285,     0,     0,
    2273        0,     0,   212,     0,     0,     0,     0,     0,   464,     0,
    2274        0,     0,     0,   474,     0,     0,     0,   382,     0,     0,
    2275        0,     0,     0,   286,     0,     0,   482,     0,     0,   287,
    2276      212,     0,   492,   288,   496,   212,   289,   290,   291,   292,
    2277       41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    2278        0,   526,     0,     0,     0,     0,     0,     0,     0,     0,
    2279        0,     0,     0,     0,     0,   715,   295,     0,   379,     0,
    2280        0,     0,     0,   757,    45,    46,   297,   298,   299,   300,
    2281      524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2282        0,     0,     0,   585,     0,     0,     0,     0,   590,     0,
    2283        0,     0,     0,     0,   166,     0,   212,     0,     0,     0,
    2284        0,   709,     0,     0,     0,     0,     0,     0,     0,     0,
    2285      212,     0,     0,     0,     0,     0,     0,   635,     0,     0,
    2286        0,   636,   637,     0,   639,     0,     0,     0,     0,     0,
    2287      497,   650,   651,     0,   652,   653,     0,   654,     0,   655,
    2288      741,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2289      597,     0,     0,   758,     0,     0,   585,     0,   741,     0,
    2290        0,   741,     0,     0,   670,     0,     0,     0,     0,     0,
    2291        0,   369,   369,   767,     0,     0,     0,     0,     0,     0,
    2292        0,     0,     0,     0,     0,     0,     0,     0,     0,   681,
    2293        0,   212,     0,     0,     0,   788,     0,     0,     0,     0,
    2294        0,     0,     0,   212,     0,   797,     0,     0,     0,     0,
    2295        0,     0,   346,     0,     0,   707,     0,   758,     0,     0,
    2296        0,   710,   212,     0,     0,     0,   464,     0,     0,     0,
    2297        0,   524,     0,     0,     0,     0,   206,     2,   207,     4,
    2298        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2299       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2300       25,     0,   745,    26,    27,    28,   862,     0,     0,     0,
    2301        0,     0,    31,     0,   382,     0,     0,   763,     0,     0,
    2302        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2303        0,     0,     0,     0,     0,     0,     0,   715,     0,     0,
    2304       34,     0,    35,     0,    36,     0,     0,   208,    39,     0,
    2305        0,     0,     0,   283,   284,   789,   285,     0,     0,     0,
    2306        0,     0,     0,     0,   799,     0,     0,     0,     0,     0,
    2307        0,   801,     0,     0,     0,   212,     0,   809,     0,   219,
    2308        0,     0,   286,     0,   209,     0,   823,     0,   287,     0,
    2309       45,    46,   288,     0,     0,   289,   290,   291,   292,    41,
    2310       42,     0,   293,   294,     0,   212,     0,     0,     0,     0,
    2311        0,     0,   758,     0,   963,     0,   715,     0,     0,   341,
    2312      364,     0,     0,     0,   974,   295,   863,   379,     0,     0,
    2313      982,     0,     0,    45,    46,   297,   298,   299,   300,     0,
    2314      212,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2315        0,   212,     0,   414,     0,     0,     0,     0,     0,     0,
    2316      414,     0,   809,     0,     0,   369,   369,     0,     0,     0,
    2317      904,     0,  1000,  1001,   219,     0,   346,     0,     0,     0,
    2318        0,     0,     0,     0,     0,     0,     0,     0,     0,   507,
    2319      346,   509,   512,     0,     0,     0,     0,     0,     0,   515,
    2320      516,   252,     0,     0,     0,     0,     0,     0,     0,     0,
    2321        0,   941,   942,   509,   509,     0,     0,     0,     0,     0,
    2322        0,     0,     0,   212,     0,     0,     0,     0,     0,     0,
    2323     1031,     0,   414,     0,   382,     0,     0,   212,     0,     0,
    2324        0,     0,     0,     0,   979,     0,     0,     0,     0,   983,
    2325        0,   509,     8,     9,    10,    11,    12,    13,    14,    15,
    2326       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2327        0,   346,    26,    27,    28,     0,     0,     0,     0,     0,
    2328        0,    31,   684,     0,     0,   369,   414,   509,     0,     0,
    2329        0,     0,     0,     0,   414,   581,     0,   414,   584,     0,
    2330        0,     0,     0,     0,     0,     0,     0,     0,   364,    34,
    2331      321,     0,   613,  1017,     0,     0,    38,    39,     0,     0,
    2332     1018,     0,     0,     0,     0,     0,   212,     0,     0,     0,
    2333        0,   631,     0,  1020,   341,  1021,     0,     0,   382,     0,
    2334        0,   524,     0,   524,   974,     0,     0,     0,   741,  1033,
    2335        0,     0,     0,   685,     0,  1037,     0,   686,     0,    45,
    2336       46,   414,     0,     0,     0,   414,     0,  1075,     0,  1150,
    2337     1076,     0,     0,     0,     0,     0,     0,   524,     0,   524,
    2338     1165,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2339        0,     0,     0,     0,     0,     0,   364,     0,     0,     0,
    2340        0,     0,   382,     0,  1183,     0,   166,     0,     0,     0,
    2341        0,     0,     0,     0,     0,     0,     0,     0,     0,   974,
    2342      974,   212,     8,     9,    10,    11,    12,    13,    14,    15,
    2343       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2344     1215,     0,   414,     0,     0,   364,     0,   590,     0,     0,
    2345        0,    31,     0,     0,     0,   509,   509,   509,   509,   509,
    2346      509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
    2347      509,   509,   509,     0,     0,     0,     0,   283,   284,    34,
    2348      285,     0,  1146,     0,   414,     0,     0,     0,   341,   364,
    2349        0,     0,     0,     0,     0,   974,     0,     0,     0,     0,
    2350        0,     0,     0,     0,     0,     0,   286,     0,     0,     0,
    2351        0,     0,   287,   862,     0,     0,   288,     0,     0,   289,
    2352      290,   291,   292,    41,    42,     0,   293,   294,  1266,  1267,
    2353        0,     0,     0,   414,   414,     0,     0,     0,     0,     0,
    2354      526,     0,     0,     0,     0,     0,  1211,     0,     0,   295,
    2355        0,   379,   803,   364,   971,     0,     0,    45,    46,   297,
    2356      298,   299,   300,   613,     0,   613,   613,     0,     0,     0,
    2357        0,     0,   613,     0,     0,     0,     0,     0,     0,     0,
    2358     1223,     0,   842,   364,     0,  1225,     0,     0,   364,     0,
    2359        0,     0,     0,  1229,     0,     0,     0,   364,   364,   364,
    2360        0,   509,     0,     0,     0,     0,     0,     0,     0,     0,
    2361        0,     0,     0,     0,     0,   364,     0,     0,     0,     0,
    2362      414,   884,     0,     0,   414,   887,  1255,     0,     0,     0,
    2363        0,   889,     0,     0,     0,     0,     0,     0,  1263,     0,
    2364        0,  1264,     0,  1265,     0,     0,     0,     0,     0,     0,
    2365      414,     0,     0,     0,     0,     0,     0,  1274,  1275,     0,
    2366        0,     0,   509,     0,     0,     0,     0,     0,   212,  1371,
    2367        0,     0,   741,   364,   613,     0,     0,     0,     0,  1288,
    2368        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2369        0,     0,   509,     0,     0,     0,     0,     0,     0,     0,
    2370        0,     0,     0,     0,     0,     0,     0,   341,   364,     0,
    2371        0,     0,   414,   414,     0,     0,     0,     0,     0,     0,
    2372        0,     0,     0,     0,     0,     0,  1327,     0,     0,     0,
    2373        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2374       17,    18,    19,    20,    21,    22,    23,    24,    25,  -291,
    2375        0,    26,    27,    28,     0,     0,   414,     0,     0,     0,
    2376       31,     0,     0,     0,   364,     0,     0,     0,     0,     0,
    2377        0,   803,   364,     0,     0,   613,     0,   613,     0,     0,
    2378        0,     0,     0,     0,     0,     0,     0,   613,    34,     0,
    2379        0,     0,     0,    37,     0,   336,   337,    40,     0,  -291,
    2380        0,  1377,     0,  1378,    41,    42,     0,     0,     0,     0,
    2381        0,     0,   509,     0,     0,  1386,     0,  1387,     0,     0,
    2382        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2383        0,     0,   338,     0,  1394,     0,     0,     0,    45,    46,
    2384        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2385     1412,  1414,     0,     0,     0,     0,     0,   509,     0,   803,
    2386        0,  1419,     0,     0,  1229,     0,   341,   364,   414,     0,
    2387      414,     0,     0,     0,   414,     0,     0,     0,     0,     0,
    2388        0,     0,   321,     0,     0,  1441,     0,     0,     0,     0,
    2389        0,     0,   509,     0,  1448,   613,   613,  1450,     0,  1452,
    2390     1454,  1456,     0,     0,     0,   509,     8,     9,    10,    11,
    2391       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2392       22,    23,    24,    25,  -291,     0,     0,     0,     0,     0,
    2393      414,     0,     0,     0,     0,    31,     0,     0,     0,  1486,
    2394        0,  1488,     0,  1229,     0,     0,   509,     0,     0,     0,
    2395        0,   414,  1143,     0,     0,     0,     0,     0,  1499,     0,
    2396        0,     0,   364,    34,     0,     0,     0,     0,   414,  1155,
    2397        0,   613,   613,  1160,  -291,     0,     0,     0,     0,     0,
    2398        0,     0,     0,   364,   364,     0,     0,     0,     0,     0,
    2399        0,     0,     0,     0,     0,     0,     0,     1,     2,   207,
    2400        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2401       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2402       24,    25,     0,   509,    26,    27,    28,    29,     0,     0,
    2403       30,   283,   284,    31,   285,     0,     0,     0,     0,     0,
    2404        0,     0,     0,     0,     0,     0,   414,     0,   414,     0,
    2405        0,     0,     0,   414,     0,     0,     0,     0,     0,     0,
    2406      286,    34,   613,    35,     0,    36,   287,     0,    38,    39,
    2407      288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
    2408      293,   294,     0,   509,   509,   803,   414,  1243,     0,     0,
    2409        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2410        0,     0,     0,   295,     0,  1055,     0,     0,     0,   364,
    2411        0,    45,    46,   297,   298,   299,   300,     0,     0,     0,
    2412        0,     0,     0,     0,     0,     0,  -126,     0,     1,     2,
    2413      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2414       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2415       23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
    2416        0,    30,   283,   284,    31,  1040,  1041,     0,  1042,     0,
    2417      341,  1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,
    2418        0,     0,  1051,     0,     0,     0,  1052,  1053,   364,    33,
    2419        0,   286,    34,     0,    35,     0,    36,  1054,     0,    38,
    2420       39,   288,     0,     0,   289,   290,   291,   292,    41,    42,
    2421        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    2422        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2423        0,     0,     0,     0,   295,     0,  1055,   364,   364,   172,
    2424        0,     0,    45,    46,   297,   298,   299,   300,     0,     0,
    2425        0,     0,  1056,     0,     0,     0,     0,  -126,     0,     0,
    2426        0,     0,     1,     2,   207,     4,     5,     6,     7,     8,
    2427        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2428       19,    20,    21,    22,    23,    24,    25,     0,   509,    26,
    2429       27,    28,    29,     0,     0,    30,   283,   284,    31,   285,
    2430        0,     0,     0,     0,   509,     0,     0,     0,     0,     0,
    2431        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2432        0,     0,     0,     0,     0,   286,    34,     0,    35,     0,
    2433       36,   287,     0,    38,    39,   288,     0,     0,   289,   290,
    2434      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2435        0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
    2436        0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
    2437       44,     0,     0,     0,   509,   509,    45,    46,   297,   298,
    2438      299,   300,     0,     2,   207,     4,     5,     6,     7,     8,
    2439        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2440       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2441       27,    28,     0,     0,     0,     0,   283,   284,    31,   285,
    2442        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2443       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2444       25,  -292,     0,     0,   414,   286,    34,     0,    35,     0,
    2445       36,   287,    31,    38,    39,   288,     0,     0,   289,   290,
    2446      291,   292,    41,    42,     0,   293,   294,     0,   414,   414,
    2447        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2448       34,     0,     0,     0,     0,     0,     0,     0,   295,     0,
    2449      343,  -292,     0,   414,     0,   757,   344,    46,   297,   298,
    2450      299,   300,     2,   207,     4,     5,     6,     7,     8,     9,
    2451       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2452       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2453       28,     0,     0,     0,     0,   283,   284,    31,   285,     8,
    2454        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2455       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2456       27,    28,     0,     0,   286,    34,     0,    35,    31,    36,
    2457      287,     0,    38,    39,   288,     0,     0,   289,   290,   291,
    2458      292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
    2459        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2460        0,   111,     0,    38,    39,     0,     0,   295,     0,   962,
    2461        0,     0,    41,    42,   757,   344,    46,   297,   298,   299,
    2462      300,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2463       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2464       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2465        0,     0,     0,     0,   283,   284,    31,   285,     8,     9,
    2466       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2467       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2468       28,     0,     0,   286,    34,     0,    35,    31,    36,   287,
    2469        0,    38,    39,   288,     0,     0,   289,   290,   291,   292,
    2470       41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    2471        0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2472        0,     0,    38,    39,     0,     0,   295,     0,   962,     0,
    2473        0,     0,     0,   757,    45,    46,   297,   298,   299,   300,
    2474        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2475       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2476       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2477        0,     0,     0,   283,   284,    31,   285,     8,     9,    10,
    2478       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2479       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2480        0,     0,   286,    34,     0,    35,    31,    36,   287,     0,
    2481       38,    39,   288,     0,     0,   289,   290,   291,   292,    41,
    2482       42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
    2483        0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
    2484        0,   208,    39,     0,     0,   295,     0,   343,     0,     0,
    2485        0,     0,     0,   344,    46,   297,   298,   299,   300,     2,
    2486      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2487       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2488       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2489        0,     0,   283,   284,    31,   285,     0,     0,     0,     0,
    2490        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2491        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2492        0,   286,    34,     0,    35,     0,    36,   287,     0,   208,
    2493       39,   288,     0,     0,   289,   290,   291,   292,    41,    42,
    2494        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    2495        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2496        0,     0,     0,     0,   295,     0,   997,     0,     0,     0,
    2497        0,     0,   998,    46,   297,   298,   299,   300,     2,   207,
    2498        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2499       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2500       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2501        0,   283,   284,    31,   285,     0,     0,     0,     0,     0,
    2502        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2503        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2504      286,    34,     0,    35,     0,    36,   287,     0,    38,    39,
    2505      288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
    2506      293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
    2507        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2508        0,     0,     0,   295,     0,   962,     0,     0,     0,     0,
    2509        0,   344,    46,   297,   298,   299,   300,     2,   207,     4,
    2510        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2511       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2512       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2513      283,   284,    31,   285,     0,     0,     0,     0,     0,     0,
    2514        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2515        0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
    2516       34,     0,    35,     0,    36,   287,     0,   208,    39,   288,
    2517        0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
    2518      294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2519        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2520        0,     0,   295,     0,   379,     0,     0,     0,     0,     0,
    2521       45,    46,   297,   298,   299,   300,  -515,     0,     0,     1,
    2522        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    2523       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2524       22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
    2525        0,     0,    30,     0,     0,    31,    32,     0,     0,     0,
    2526        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2527        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2528       33,     0,     0,    34,     0,    35,     0,    36,    37,     0,
    2529       38,    39,    40,     0,     0,     0,     0,     0,     0,    41,
    2530       42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2531        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2532        0,     0,     0,     0,     0,    43,     0,    44,     0,     0,
    2533        0,     0,     0,    45,    46,     1,     2,     3,     4,     5,
    2534        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2535       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2536        0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
    2537        0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
    2538        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2539        0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
    2540        0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
    2541        0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
    2542        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2543        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2544        0,    43,     0,    44,     0,     0,     0,  -519,     0,    45,
    2545       46,     1,     2,     3,     4,     5,     6,     7,     8,     9,
    2546       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2547       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2548       28,    29,     0,     0,    30,     0,     0,    31,    32,     0,
    2549        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2550        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2551        0,     0,    33,     0,     0,    34,     0,    35,     0,    36,
    2552       37,     0,    38,    39,    40,     0,     0,     0,     0,     0,
    2553        0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
    2554        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2555        0,     0,     0,     0,     0,     0,     0,    43,     0,    44,
    2556        0,     0,     0,     0,     0,    45,    46,     1,     2,   207,
    2557        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2558       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2559       24,    25,     0,     0,    26,    27,    28,    29,     0,     0,
    2560       30,     0,     0,    31,     0,     0,     0,     0,     0,     0,
    2561        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2562        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2563        0,    34,     0,    35,     0,    36,     0,     0,    38,    39,
    2564        0,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2565       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2566       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2567        0,     0,     0,     0,     0,    44,    31,     0,     0,     0,
    2568        0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
    2569        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2570        0,     0,     0,     0,    34,     0,    35,     0,    36,    37,
    2571        0,   208,    39,    40,     0,     0,     0,     0,     0,     0,
    2572       41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
    2573        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2574        0,     0,     0,     0,     0,     0,    43,     0,   209,     0,
    2575        0,     0,     0,     0,    45,    46,     2,   207,     4,     5,
    2576        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2577       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2578        0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
    2579        0,    31,     0,     0,     0,     0,     8,     9,    10,    11,
    2580       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2581       22,    23,    24,    25,     0,     0,    26,    27,    28,    34,
    2582        0,    35,     0,    36,     0,    31,    38,    39,     0,     2,
    2583      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2584       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2585       23,    24,    25,    34,     0,    26,    27,    28,     0,     0,
    2586       38,    39,  -399,   677,    31,     0,     0,     0,     0,    45,
    2587       46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2588        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2589        0,     0,    34,     0,    35,   634,    36,   338,     0,    38,
    2590       39,     0,     0,    45,    46,     0,     0,     0,     0,     0,
    2591        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2592        0,  1350,     0,     0,     0,     0,     0,     0,     0,     0,
    2593        0,     0,     0,     0,     0,     0,   677,     0,     0,     0,
    2594        0,     0,    45,    46,     2,   207,     4,     5,     6,     7,
    2595        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2596       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2597       26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
    2598        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2599       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2600       25,     0,     0,    26,    27,    28,     0,    34,     0,    35,
    2601        0,    36,    31,   684,    38,    39,     0,     0,     0,     0,
    2602        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2603        0,     0,     0,     0,     0,     0,  1352,     0,     0,     0,
    2604       34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
    2605        0,   677,     0,     0,     0,     0,     0,    45,    46,     2,
    2606      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2607       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2608       23,    24,    25,     0,   685,    26,    27,    28,  1091,     0,
    2609       45,    46,     0,     0,    31,     0,     0,     0,     0,     0,
    2610        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2611        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2612        0,     0,    34,     0,    35,     0,    36,     0,     0,   208,
    2613       39,     0,     2,   207,     4,     5,     6,     7,     8,     9,
    2614       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2615       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2616       28,     0,     0,     0,     0,     0,   271,    31,     0,     0,
    2617        0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
    2618        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2619        0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2620        0,     0,    38,    39,     0,     2,   207,     4,     5,     6,
    2621        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2622       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2623        0,    26,    27,    28,     0,     0,     0,     0,     0,   677,
    2624       31,     0,     0,     0,     0,    45,    46,     0,     0,     0,
    2625        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2626        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2627       35,     0,    36,     0,     0,    38,    39,     0,     2,   207,
    2628        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2629       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2630       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2631        0,     0,   592,    31,     0,     0,     0,     0,    45,    46,
    2632        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2633        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2634        0,    34,     0,    35,     0,    36,     0,     0,   208,    39,
    2635        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2636       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2637       26,    27,    28,     0,     0,     0,     0,   283,   284,    31,
    2638      285,     0,     0,     0,     0,   209,     0,     0,     0,     0,
    2639        0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
    2640        0,     0,     0,     0,     0,     0,   286,    34,     0,     0,
    2641        0,     0,   287,     0,    38,    39,   288,     0,     0,   289,
    2642      290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
    2643        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2644        0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
    2645        0,   517,     0,     0,   172,     0,     0,    45,    46,   297,
    2646      298,   299,   300,     8,     9,    10,    11,    12,    13,    14,
    2647       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2648       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2649      283,   284,    31,   285,     8,     9,    10,    11,    12,    13,
    2650       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2651       24,    25,     0,     0,    26,    27,    28,     0,     0,   286,
    2652       34,     0,     0,    31,     0,   287,     0,    38,    39,   288,
    2653        0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
    2654      294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2655        0,    34,     0,     0,     0,     0,    37,     0,   336,   337,
    2656       40,     0,   295,   -35,   296,     0,     0,    41,    42,     0,
    2657       45,    46,   297,   298,   299,   300,     8,     9,    10,    11,
    2658       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2659       22,    23,    24,    25,     0,   338,    26,    27,    28,     0,
    2660        0,    45,    46,   283,   284,    31,   285,     8,     9,    10,
    2661       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2662       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2663        0,     0,   286,    34,     0,     0,    31,     0,   287,     0,
    2664       38,    39,   288,     0,     0,   289,   290,   291,   292,    41,
    2665       42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
    2666        0,     0,     0,     0,    34,     0,     0,     0,     0,   111,
    2667        0,    38,    39,     0,     0,   295,     0,   296,     0,     0,
    2668       41,    42,     0,    45,    46,   297,   298,   299,   300,     8,
    2669        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2670       19,    20,    21,    22,    23,    24,    25,     0,    44,    26,
    2671       27,    28,     0,     0,    45,    46,   283,   284,    31,   285,
    2672        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2673       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2674       26,    27,    28,     0,     0,   286,    34,     0,     0,    31,
    2675      684,   287,     0,    38,    39,   288,     0,     0,   289,   290,
    2676      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2677        0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
    2678        0,     0,     0,     0,    38,    39,     0,     0,   295,     0,
    2679      158,     0,     0,     0,     0,     0,    45,    46,   297,   298,
    2680      299,   300,     8,     9,    10,    11,    12,    13,    14,    15,
    2681       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2682        0,   685,    26,    27,    28,  1220,     0,    45,    46,   283,
    2683      284,    31,   285,     8,     9,    10,    11,    12,    13,    14,
    2684       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2685       25,     0,     0,    26,    27,    28,     0,     0,   286,    34,
    2686        0,     0,    31,     0,   287,     0,    38,    39,   288,     0,
    2687        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2688        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2689       34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
    2690        0,   295,     0,   592,     0,     0,     0,     0,     0,    45,
    2691       46,   297,   298,   299,   300,     8,     9,    10,    11,    12,
    2692       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2693       23,    24,    25,     0,   258,    26,    27,    28,     0,     0,
    2694       45,    46,   283,   284,    31,   285,     0,     0,     0,     0,
    2695        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2696       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2697       25,   286,    34,    26,    27,    28,     0,   287,     0,    38,
    2698       39,   288,    31,     0,   289,   290,   291,   292,    41,    42,
    2699        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    2700        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2701       34,     0,     0,     0,   295,     0,   379,    38,    39,     0,
    2702        0,     0,    45,    46,   297,   298,   299,   300,   467,     2,
    2703      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2704       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2705       23,    24,    25,     0,   158,    26,    27,    28,     0,     0,
    2706       45,    46,     0,     0,    31,     0,     0,     0,     8,     9,
    2707       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2708       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2709       28,     0,    34,     0,    35,     0,    36,    31,     0,    38,
    2710       39,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    2711       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2712       22,    23,    24,    25,     0,    34,    26,    27,    28,     0,
    2713       37,     0,    38,    39,    40,    31,     0,     0,     0,    -3,
    2714        0,    41,    42,     0,     8,     9,    10,    11,    12,    13,
    2715       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2716       24,    25,     0,    34,    26,    27,    28,    43,    37,   158,
    2717       38,    39,    40,    31,     0,    45,    46,     0,     0,    41,
    2718       42,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2719       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2720        0,    34,    26,    27,    28,    43,    37,    44,   208,    39,
    2721       40,    31,     0,    45,    46,     0,     0,    41,    42,     0,
    2722        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2723       18,    19,    20,    21,    22,    23,    24,    25,  -291,    34,
    2724       26,    27,    28,    43,    37,   271,   336,   337,    40,    31,
    2725        0,    45,    46,     0,     0,    41,    42,     0,     8,     9,
    2726       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2727       20,    21,    22,    23,    24,    25,  -291,    34,    26,    27,
    2728       28,   634,     0,   338,    38,    39,     0,    31,  -291,    45,
    2729       46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2730       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2731        0,    26,    27,    28,     0,    34,     0,     0,     0,   634,
    2732       31,   338,    38,    39,     0,     0,  -291,    45,    46,     8,
    2733        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2734       19,    20,    21,    22,    23,    24,    25,     0,    34,    26,
    2735       27,    28,     0,     0,     0,   208,    39,     0,    31,   338,
    2736        0,     0,     0,     0,     0,    45,    46,     8,     9,    10,
    2737       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2738       21,    22,    23,    24,    25,     0,    34,    26,    27,    28,
    2739        0,     0,   271,    38,    39,     0,    31,     0,    45,    46,
    2740        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2741       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2742       26,    27,    28,     0,    34,     0,     0,     0,     0,    31,
    2743      338,    38,    39,     0,     0,     0,    45,    46,     8,     9,
    2744       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2745       20,    21,    22,    23,    24,    25,     0,    34,    26,    27,
    2746       28,     0,     0,     0,    38,    39,     0,    31,   685,     0,
    2747        0,     0,     0,     0,    45,    46,     0,     0,     0,     0,
    2748        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2749        0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
    2750        0,   592,    38,    39,     0,     0,     0,    45,    46,     2,
    2751      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2752       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2753       23,    24,    25,     0,     0,    26,    27,    28,     0,    44,
    2754        0,     0,     0,     0,    31,    45,    46,     0,     0,     0,
    2755        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2756        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2757        0,     0,    34,     0,    35,     0,    36,     0,     0,    38,
    2758       39,   283,   284,     0,   285,  1041,     0,  1042,     0,     0,
    2759     1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,     0,
    2760     1524,  1051,     0,     0,     0,  1052,  1053,     0,    33,     0,
    2761      286,     0,     0,     0,     0,  -412,  1054,     0,     0,     0,
    2762      288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
    2763      293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
    2764        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2765        0,     0,     0,   295,     0,   379,     0,     0,   172,     0,
    2766        0,    45,    46,   297,   298,   299,   300,     0,     0,   283,
    2767      284,  1056,   285,  1041,     0,  1042,  -126,     0,  1043,  1044,
    2768     1045,  1046,  1047,  1048,  1049,  1050,     0,     0,     0,  1051,
    2769        0,     0,     0,  1052,  1053,     0,    33,     0,   286,     0,
    2770        0,     0,     0,     0,  1054,     0,     0,     0,   288,     0,
    2771        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2772        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2773        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2774        0,   295,     0,   379,     0,     0,   172,     0,     0,    45,
    2775       46,   297,   298,   299,   300,     0,     0,     0,     0,  1056,
    2776        0,     0,     0,     0,  -126,     2,   207,     4,     5,     6,
    2777        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2778       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2779        0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
    2780       31,     0,   283,   284,     0,   285,  1041,     0,  1042,  1398,
    2781     1399,  1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,
    2782        0,  1524,  1051,     0,     0,     0,  1052,  1053,    34,    33,
    2783       35,   286,    36,     0,     0,    38,    39,  1054,     0,     0,
    2784        0,   288,     0,     0,   289,   290,   291,   292,    41,    42,
    2785        0,   293,   294,     0,     0,     0,     0,  1311,     0,     0,
    2786        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2787        0,     0,     0,     0,   295,     0,   379,     0,     0,   172,
    2788        0,     0,    45,    46,   297,   298,   299,   300,     0,     0,
    2789      283,   284,  1056,   285,  1041,     0,  1042,  1398,  1399,  1043,
    2790     1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,     0,     0,
    2791     1051,     0,     0,     0,  1052,  1053,     0,    33,     0,   286,
    2792        0,     0,     0,     0,     0,  1054,     0,     0,     0,   288,
    2793        0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
    2794      294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2795        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2796        0,     0,   295,     0,   379,     0,     0,   172,     0,     0,
    2797       45,    46,   297,   298,   299,   300,     0,     0,   283,   284,
    2798     1056,   285,  1041,     0,  1042,     0,     0,  1043,  1044,  1045,
    2799     1046,  1047,  1048,  1049,  1050,     0,     0,     0,  1051,     0,
    2800        0,     0,  1052,  1053,     0,    33,     0,   286,     0,     0,
    2801        0,     0,     0,  1054,     0,     0,     0,   288,     0,     0,
    2802      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2803        0,     0,     0,     0,     0,   283,   284,     0,   285,     0,
    2804        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2805      295,     0,   379,     0,     0,   172,     0,     0,    45,    46,
    2806      297,   298,   299,   300,   286,     0,     0,     0,  1056,     0,
    2807      640,     0,   140,   141,   288,     0,     0,   289,   290,   291,
    2808      292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
    2809        0,     0,   283,   284,     0,   285,     0,     0,     0,     0,
    2810        0,     0,     0,     0,     0,     0,     0,   295,     0,   641,
    2811        0,   642,   380,     0,     0,    45,    46,   297,   298,   299,
    2812      300,   286,     0,     0,     0,     0,     0,   287,     0,     0,
    2813        0,   288,     0,     0,   289,   290,   291,   292,    41,    42,
    2814        0,   293,   294,     0,     0,     0,     0,     0,     0,   283,
    2815      284,     0,   285,     0,     0,     0,     0,     0,     0,     0,
    2816        0,     0,     0,     0,   295,     0,   379,     0,   283,   284,
    2817        0,   285,   708,    46,   297,   298,   299,   300,   286,     0,
    2818        0,     0,     0,     0,   287,     0,     0,     0,   288,     0,
    2819        0,   289,   290,   291,   292,    41,    42,   286,   293,   294,
    2820        0,     0,     0,   287,     0,     0,     0,   288,     0,     0,
    2821      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2822        0,   295,     0,   379,     0,   283,   284,     0,   285,   344,
    2823       46,   297,   298,   299,   300,     0,     0,     0,     0,     0,
    2824      506,     0,     0,     0,   283,   284,     0,   285,    45,    46,
    2825      297,   298,   299,   300,   286,     0,     0,     0,     0,     0,
    2826      287,     0,     0,     0,   288,     0,     0,   289,   290,   291,
    2827      292,    41,    42,   286,   293,   294,     0,     0,     0,   287,
    2828        0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
    2829       41,    42,     0,   293,   294,     0,     0,   295,     0,     0,
    2830        0,   283,   284,     0,   285,    45,    46,   297,   298,   299,
    2831      300,     0,     0,     0,     0,     0,   511,     0,     0,     0,
    2832        0,     0,     0,     0,    45,    46,   297,   298,   299,   300,
    2833      286,     0,     0,     0,     0,     0,   287,     0,     0,     0,
    2834      288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
    2835      293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
    2836        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2837        0,     0,     0,   514,     0,     0,     0,     0,     0,     0,
    2838        0,    45,    46,   297,   298,   299,   300,     2,   207,     4,
    2839        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2840       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2841       25,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2842        0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
    2843        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2844        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2845       34,     0,    35,     0,    36,    37,     0,   175,   176,    40,
    2846        0,     0,     0,     0,     0,     0,    41,    42,   206,     2,
    2847      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2848       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2849       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2850        0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
    2851        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2852        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2853        0,     0,    34,     0,    35,     0,    36,     0,     0,   208,
    2854       39,   467,     2,   207,     4,     5,     6,     7,     8,     9,
    2855       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2856       20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
    2857       28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
    2858        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2859        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2860        0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
    2861        0,     0,    38,    39,     2,   207,     4,     5,     6,     7,
    2862        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2863       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2864       26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
    2865        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2866       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2867        0,    26,    27,    28,   485,   486,   487,    34,     0,    35,
    2868       31,    36,     0,     0,   208,    39,     0,     0,     0,     0,
    2869        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2870        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2871        0,     0,     0,     0,     0,    38,    39
    2872 };
    2873 
    2874 #define yypact_value_is_default(yystate) \
    2875   ((yystate) == (-1310))
    2876 
    2877 #define yytable_value_is_error(yytable_value) \
    2878   YYID (0)
    2879 
    2880 static const yytype_int16 yycheck[] =
    2881 {
    2882        0,     1,   240,   205,   186,   186,   117,     0,    43,   534,
    2883       43,    43,   600,   756,   646,     1,   749,   187,   521,     0,
    2884      186,   186,   186,   157,   169,   170,   749,   749,   186,   106,
    2885      220,   602,    32,   186,   345,   349,     0,   188,   280,    32,
    2886      157,   513,   600,    43,   874,    43,   603,   874,   349,    49,
    2887      620,    32,   609,   733,     0,   983,    49,   600,   492,   571,
    2888        0,     1,   496,    63,   602,   187,    66,    32,    32,    69,
    2889       63,   692,    43,    66,    64,     0,    69,  1040,    39,   156,
    2890        1,   600,    57,    69,   266,   266,    32,    43,    51,  1398,
    2891      364,   202,    32,    63,   368,  1321,   418,   267,    82,   600,
    2892      266,   266,   266,  1052,  1053,  1033,   106,    32,   266,   600,
    2893      600,   262,   263,   266,   114,    72,   438,   117,   118,   109,
    2894      282,    72,  1402,    96,   446,    39,    66,   695,    39,    69,
    2895       28,   109,   107,    39,    39,   110,    95,    39,    82,   128,
    2896       39,    66,   131,  1021,    82,   267,   109,   147,   148,   122,
    2897      111,   186,    11,   186,   186,   148,   156,   157,     0,   295,
    2898     1469,   161,   132,  1020,  1021,   109,    44,    45,   161,     0,
    2899      129,   482,   905,   109,   488,   132,     0,     1,    72,  1128,
    2900       78,   132,   905,   905,   687,    49,   186,   187,   186,   109,
    2901       32,   257,   130,  1419,   187,   109,   109,   111,   109,   718,
    2902      111,    32,   202,   109,   109,   111,   111,   109,    32,   111,
    2903      210,   131,    43,  1040,    72,   186,  1496,   210,    49,    82,
    2904      410,  1501,   222,   117,   812,    83,    84,   718,   718,   222,
    2905      186,   266,    63,   266,   266,    66,   406,   115,    69,  1452,
    2906      240,  1521,    85,   986,   219,    69,   112,   110,  1528,    82,
    2907      114,   109,   252,   824,   812,   116,   107,   814,   114,   252,
    2908      260,    44,    45,     3,   341,   265,   266,   267,   490,   812,
    2909      113,   252,   272,  1486,   267,  1488,   257,    82,   111,   900,
    2910      131,   793,   222,   147,   406,   396,   824,   252,   252,    49,
    2911      426,   427,   924,   812,   371,   295,     3,   222,   273,   433,
    2912       96,   602,  1501,   116,   109,   280,   252,   307,     0,   620,
    2913      480,   812,   252,   424,   625,   589,   433,   148,   110,   430,
    2914      112,   812,   812,   323,   116,  1288,   122,   252,   328,  1528,
    2915      161,   114,   253,    44,    45,   328,     0,    82,   906,   131,
    2916      132,   341,   504,   110,   932,   345,   210,  1225,   482,   349,
    2917      350,   109,   418,   111,   114,   186,   187,   631,   480,   681,
    2918      109,   116,   933,   130,   364,   110,    90,    91,   368,  1049,
    2919      506,   371,   438,   348,   932,   511,   240,   132,   514,   210,
    2920      446,  1211,   604,   951,  1211,   130,   608,   426,   427,   932,
    2921      365,   222,   526,    72,   369,   112,   396,  1275,   116,   116,
    2922      285,   125,   126,   114,    83,    84,   406,   629,   272,   526,
    2923      252,   633,   130,   406,  1472,   257,   110,  1274,  1275,    55,
    2924     1478,   252,   307,   308,   424,   350,   426,   427,   252,   999,
    2925      430,   567,   111,   433,   745,   266,   130,   418,   112,   116,
    2926     1498,   110,   116,   307,   111,  1503,   113,   116,   525,  1501,
    2927      210,  1008,  1009,   130,   454,   494,   590,   438,  1386,  1387,
    2928      345,  1288,    98,   130,   967,   446,   635,   636,   131,  1521,
    2929      229,   112,   472,   590,   513,   116,  1528,   116,  1441,   110,
    2930      480,   345,   482,   652,   484,  1448,   116,   480,   488,   248,
    2931      732,   484,   110,   132,   494,  1127,   381,   328,   116,   116,
    2932      130,   482,   647,   484,   666,   656,   506,   941,   508,   981,
    2933      824,   511,   272,   513,   514,   132,  1394,   687,   349,   109,
    2934      484,   521,   109,   824,   116,   525,   526,   109,  1099,   803,
    2935      109,   111,   111,   113,   808,   295,  1499,  1394,   484,   578,
    2936      132,   710,   109,   654,   484,   116,   467,   307,   473,  1117,
    2937      130,     4,     5,     6,     7,     8,     9,   116,   194,   484,
    2938      110,   132,   426,   427,   116,   687,   116,   116,   116,   116,
    2939      570,   571,   116,   132,   736,   406,   418,   109,   578,   116,
    2940      132,   217,  1085,   132,   132,   132,   109,  1090,   132,   589,
    2941      590,   227,   117,   904,   594,   132,   438,   116,   123,   124,
    2942      600,   116,   602,   109,   446,   111,   110,   528,  1288,  1177,
    2943     1178,   745,   533,   132,  1441,   681,    69,   132,    71,   110,
    2944      620,  1448,   896,   937,   846,   625,    72,   627,    74,    75,
    2945      494,   631,   801,   110,   634,   635,   636,    83,    84,    72,
    2946      110,   707,   484,   112,   590,   110,   621,   116,   112,   513,
    2947       83,    84,   652,   484,   654,   109,   910,   488,   912,   295,
    2948      484,   582,   637,   109,   549,   550,   551,   744,   114,   112,
    2949      109,   861,  1499,   116,    72,   809,   651,   115,    72,   132,
    2950       74,    75,  1362,   109,   684,    83,    84,   687,   999,    83,
    2951       84,   881,   809,   109,   454,   111,    72,   622,    74,    75,
    2952      681,    85,    86,    87,   109,   943,   111,    83,    84,   132,
    2953      710,   711,   712,   111,   578,   109,   938,  1115,   718,   719,
    2954      114,  1119,   867,   905,   905,   109,   707,   111,    64,   113,
    2955      114,   109,   653,   111,   655,   112,   110,   907,   114,   905,
    2956      905,   905,   116,   109,   744,   745,   506,   905,   508,   749,
    2957      750,   511,   905,   109,   514,   111,   620,   732,   109,    70,
    2958      111,   625,   109,    74,   745,  1445,    77,  1447,    79,   600,
    2959      904,   602,  1505,   698,   132,    86,   556,   557,   558,   559,
    2960     1305,     3,  1505,  1505,   705,   907,   114,   712,    10,    11,
    2961       12,    13,    14,   793,     4,     5,     6,     7,     8,     9,
    2962      110,   801,   109,   803,   111,   805,   116,   443,   808,   809,
    2963     1012,   114,   812,   109,  1382,   111,    72,    39,    74,    75,
    2964     1500,   117,   118,    33,   824,    72,   903,    83,    84,   114,
    2965     1398,   132,   110,   469,   132,  1146,    83,    84,   116,   681,
    2966       10,    11,    12,    13,    14,    67,    72,   110,  1122,   109,
    2967       76,   109,   110,   116,    82,   111,   687,    83,    84,    69,
    2968      110,    71,    49,   809,   111,   707,   116,   110,   109,    39,
    2969      506,   756,   109,   116,   874,   511,    63,   112,   514,    66,
    2970      805,    82,    69,   109,   118,   111,  1020,   718,   719,   110,
    2971     1035,   117,   118,   874,   127,   116,   896,    67,    88,    89,
    2972     1468,  1469,   213,   903,   904,   905,    72,   907,     4,     5,
    2973        6,     7,     8,     9,  1225,  1085,   110,    83,    84,   919,
    2974     1090,   128,   116,   904,   684,   110,    94,   109,   874,   111,
    2975       30,   116,   932,   933,   874,   117,   118,   937,   131,   109,
    2976       72,   111,   942,   943,    76,   111,   111,   117,   118,   874,
    2977      109,    83,    84,  1115,   110,   109,   942,  1119,  1120,   112,
    2978      116,   148,   109,  1085,   111,     0,     1,   967,  1090,   112,
    2979      117,   118,   110,    69,   161,    71,   110,   109,  1481,   119,
    2980      120,   812,   116,    83,    84,   117,   118,   112,    10,    11,
    2981       12,    13,    14,   824,    29,    30,  1107,    32,   110,   999,
    2982      187,   110,   942,   110,   116,    92,    93,    72,    43,    74,
    2983       75,    76,  1146,    72,    49,    74,    75,    39,    83,    84,
    2984     1020,  1021,    57,   210,    83,    84,   110,  1530,    63,   115,
    2985      116,    66,   874,   669,    69,   222,   957,   109,   110,   111,
    2986     1040,   352,   678,   354,   109,    67,   682,   110,    83,    84,
    2987      874,   109,   117,   118,  1190,  1191,    72,  1193,   979,  1040,
    2988       76,   110,   983,   110,  1200,   110,  1202,    83,    84,   116,
    2989      112,   116,   107,  1235,   905,   110,   907,  1002,   110,   943,
    2990     1080,   111,   117,   114,   116,  1085,   110,   109,   116,   111,
    2991     1090,   131,   116,   109,  1040,   117,   118,   110,   111,  1099,
    2992     1040,   117,   118,   506,    66,   508,   937,  1107,   511,    58,
    2993       59,   514,  1033,   148,   999,  1040,   115,   116,   942,    44,
    2994       45,   156,  1122,   552,   553,    72,   161,    74,    75,    76,
    2995     1207,   442,   109,   110,   111,   999,    83,    84,   560,   561,
    2996     1274,   328,   554,   555,   244,   114,  1146,   114,   109,   110,
    2997      111,   186,   187,   109,   112,  1040,   118,   110,   110,   919,
    2998     1322,   112,   109,    29,  1326,  1146,   112,   202,   112,     3,
    2999      117,   118,   109,   110,   111,   210,    10,    11,    12,    13,
    3000       14,    58,    59,    60,   219,   112,   116,   222,  1188,  1189,
    3001     1248,  1249,  1250,   110,   229,   130,   130,   130,  1040,   161,
    3002      110,   112,   114,  1189,   112,    39,   115,  1207,   110,   244,
    3003      115,  1211,   115,   248,   109,   116,  1040,   252,   253,   406,
    3004        1,   110,  1358,   110,    72,  1225,    74,    75,    76,  1229,
    3005     1211,   266,   267,    67,   132,    83,    84,   116,   273,   110,
    3006      110,   110,   110,  1229,  1225,   280,   110,   110,  1188,  1189,
    3007      110,   116,   110,   110,  1085,   110,   110,   110,   110,  1090,
    3008      222,  1423,   898,  1188,   110,  1211,   110,  1378,    49,   110,
    3009      110,  1211,   115,   874,  1274,  1275,    29,  1515,   110,   130,
    3010      380,   131,   112,  1283,   112,   116,  1211,   110,  1288,  1229,
    3011      110,   116,   110,   328,   130,   116,   112,   114,   260,   110,
    3012      110,   464,   110,   265,   116,   112,   110,  1288,   110,   110,
    3013      116,   116,   112,   348,   349,    10,    11,    12,    13,    14,
    3014     1080,  1321,   109,  1505,  1505,   106,   109,  1248,  1249,  1250,
    3015      365,   109,   109,   114,   369,  1321,  1506,   109,   130,  1505,
    3016     1505,  1505,  1288,  1283,    39,   380,     3,  1505,  1288,   112,
    3017      132,   115,  1505,    10,    11,    12,    13,    14,  1283,   110,
    3018     1530,   396,   110,  1288,   110,  1189,   147,   128,   115,  1211,
    3019     1481,   406,    67,   115,   464,   156,   114,   695,  1378,   112,
    3020      132,  1321,    39,   110,  1506,   116,   112,  1211,   350,   424,
    3021      112,   491,   110,   493,  1394,   430,   110,   432,   110,   112,
    3022      110,   112,  1377,   112,   112,  1229,   112,   112,  1530,    72,
    3023       67,    74,    75,    76,   109,  1051,   111,    47,   115,  1419,
    3024       83,    84,   117,   118,    72,   206,    74,    75,    76,   210,
    3025      132,   132,   467,  1419,   132,    83,    84,   472,   132,   132,
    3026      110,  1441,  1043,   115,   130,   480,  1288,   115,  1448,   484,
    3027     1450,   110,  1452,   488,   112,   109,   491,   112,   493,   240,
    3028     1441,   109,   112,   112,  1288,  1386,  1387,  1448,   786,   431,
    3029     1505,   112,  1505,  1505,   112,   110,   110,    60,   109,  1419,
    3030      112,  1481,    66,   112,   109,   132,  1486,   110,  1488,   110,
    3031      114,   272,    76,   528,   275,  1441,   112,  1321,   533,  1499,
    3032      112,  1441,  1448,  1424,   110,  1505,  1506,   670,  1448,   112,
    3033      110,   473,   109,  1506,   295,  1515,  1441,    96,  1499,    96,
    3034       85,    86,    87,  1448,   109,   132,   307,   115,   110,    72,
    3035     1530,    74,    75,    76,   118,   110,   110,  1530,   110,    42,
    3036       83,    84,   642,   116,   109,   863,   111,   582,   113,   114,
    3037      130,   132,   110,  1499,   589,   110,   132,    96,    96,  1499,
    3038      341,  1482,   132,   110,   345,   600,   109,   602,   132,   110,
    3039     1491,   132,   112,   110,  1499,   110,   132,   161,   112,   115,
    3040      670,   109,   132,   364,   115,   115,   621,   368,   906,   110,
    3041      371,   691,   110,   693,   110,  1419,   110,   697,  1056,  1441,
    3042      132,   564,   637,   562,   977,   565,  1448,   642,   563,   566,
    3043     1211,  1211,  1469,  1364,  1540,  1298,   651,  1441,   653,   654,
    3044      655,  1120,  1326,  1448,  1448,   912,   789,    66,   684,  1071,
    3045      684,  1090,   594,   951,   920,   697,   799,   582,   222,   971,
    3046      867,   648,   722,  1229,    83,   426,   427,   939,   570,   484,
    3047      813,  1515,   687,   732,   570,   570,   691,  1499,   693,    -1,
    3048      622,  1297,   697,    -1,    -1,   627,    -1,    -1,   986,    -1,
    3049      705,    -1,    -1,   454,  1505,  1499,   260,    -1,    -1,   118,
    3050       -1,   265,    -1,   718,   719,    -1,   467,    -1,    -1,    -1,
    3051     1450,    -1,  1452,    -1,    -1,    -1,   280,   732,    -1,   789,
    3052       -1,    -1,    -1,  1304,    -1,    -1,    -1,    -1,    -1,   799,
    3053       -1,   492,    -1,   494,    -1,   496,    -1,    -1,    -1,  1037,
    3054       -1,    -1,   161,   813,    -1,   506,  1486,   508,  1488,    -1,
    3055      511,    -1,   513,   514,    -1,    -1,   698,    57,    -1,    10,
    3056       11,    12,    13,    14,   525,    -1,    -1,    -1,    -1,    72,
    3057      712,    74,    75,    76,    -1,  1356,    -1,    -1,  1359,    -1,
    3058       83,    84,    -1,    -1,    -1,    -1,   350,   867,    39,    -1,
    3059       -1,    -1,    -1,   873,    -1,    -1,    -1,   812,    -1,    -1,
    3060       -1,    -1,    -1,   222,    -1,    -1,   109,   107,   111,   824,
    3061      110,    -1,    -1,    -1,   117,   118,    67,   578,    -1,  1117,
    3062       -1,  1402,    -1,    -1,    -1,    -1,  1407,   130,   589,    -1,
    3063       -1,    -1,    -1,  1449,   914,  1451,    -1,    -1,    -1,    -1,
    3064       -1,   260,    -1,    -1,    -1,    -1,   265,    -1,    -1,    -1,
    3065       -1,    -1,   867,    -1,  1435,    -1,   156,   670,   873,   620,
    3066       -1,    -1,    -1,   805,   625,    -1,    -1,   431,    -1,  1485,
    3067      631,  1487,     0,     1,  1017,  1018,    -1,    -1,    -1,  1177,
    3068     1178,   896,    -1,    -1,   448,    -1,    -1,    -1,    -1,    -1,
    3069      905,   971,   907,    -1,    -1,    -1,    -1,    -1,    -1,   914,
    3070       -1,    -1,    -1,    -1,    32,    -1,    -1,    -1,    -1,   473,
    3071       -1,    -1,    -1,  1529,    -1,  1531,    -1,    -1,    -1,   219,
    3072       -1,    49,   937,   684,    -1,    -1,    -1,    -1,  1544,  1545,
    3073       -1,   350,  1075,  1076,    -1,    -1,    -1,    -1,  1519,    -1,
    3074       -1,    69,   957,    -1,  1525,    -1,    -1,  1017,  1018,    -1,
    3075       -1,    -1,    -1,    -1,    -1,  1536,   971,    -1,    -1,  1540,
    3076       -1,   722,    -1,    -1,   979,    -1,    -1,    -1,   983,     0,
    3077        1,    -1,    -1,   273,    -1,    -1,   789,    -1,   106,    -1,
    3078      280,    -1,    -1,   744,    -1,    -1,   799,    -1,    -1,    -1,
    3079       -1,  1071,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
    3080      813,    32,    -1,    -1,    -1,  1075,  1076,    -1,    -1,    -1,
    3081       -1,    -1,   431,    -1,    -1,    -1,    -1,    -1,  1033,    -1,
    3082      148,    -1,    -1,    -1,    -1,    -1,    -1,    32,   156,   157,
    3083      594,    -1,    -1,    -1,    -1,    66,    -1,    -1,    69,    -1,
    3084       -1,    -1,   803,    -1,    -1,    -1,    -1,   808,   348,    -1,
    3085       -1,    -1,    -1,    -1,   473,    -1,  1071,    -1,   622,   187,
    3086     1002,    -1,    -1,   627,    69,   365,    -1,    -1,    -1,   369,
    3087     1085,    -1,    -1,    -1,   202,  1090,    -1,   205,   206,    -1,
    3088     1223,    -1,   210,    -1,  1382,    -1,    -1,    -1,    -1,    -1,
    3089       -1,    -1,  1107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3090     1398,    -1,    -1,   231,  1184,    -1,    -1,   235,    -1,   237,
    3091       -1,    -1,  1255,    -1,    -1,    -1,    -1,    -1,   246,    -1,
    3092     1263,  1264,  1265,    -1,   252,    -1,   157,    -1,    -1,   257,
    3093       -1,    -1,   432,    -1,   698,   896,    -1,    -1,    -1,   267,
    3094       -1,    -1,   903,    -1,    -1,    -1,    -1,   275,   712,    -1,
    3095       -1,     0,   157,  1223,    -1,    -1,    -1,    -1,   919,    -1,
    3096       -1,    72,    -1,    74,    75,    76,    -1,    -1,   732,  1184,
    3097     1468,  1469,    83,    84,    -1,   594,    -1,    -1,    -1,    -1,
    3098      941,   942,   943,    32,  1327,  1255,    -1,    -1,    -1,    -1,
    3099       -1,   222,  1207,  1263,  1264,  1265,    -1,    -1,   109,    -1,
    3100      111,    -1,    -1,   622,  1017,  1018,   117,   118,   627,    -1,
    3101       -1,    -1,    -1,   341,    -1,    -1,    -1,   345,    -1,    -1,
    3102       69,   252,    -1,   351,    -1,    -1,   231,    -1,    -1,    -1,
    3103       -1,    -1,    -1,  1248,  1249,  1250,   364,    -1,   999,    -1,
    3104      368,   805,    -1,   371,    -1,    -1,  1188,   252,    -1,    -1,
    3105       -1,    -1,   257,    -1,    -1,    -1,    -1,  1327,    -1,    -1,
    3106       -1,    -1,  1075,  1076,    -1,    -1,    -1,    -1,    -1,    -1,
    3107       72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,   698,
    3108       -1,    83,    84,    72,    -1,    74,    75,    76,    -1,   589,
    3109      418,    -1,    -1,   712,    83,    84,    -1,    -1,    -1,    -1,
    3110       -1,    -1,    -1,    -1,    -1,   433,    -1,   109,   157,   111,
    3111      438,    -1,    -1,    -1,    -1,   117,   118,    -1,   446,  1080,
    3112      109,   621,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
    3113       -1,    -1,    -1,    -1,    -1,    -1,   464,   637,    -1,   467,
    3114       -1,  1283,    -1,    -1,    -1,    -1,   351,    -1,    -1,    -1,
    3115       -1,   651,    -1,    -1,   482,    -1,   484,    -1,    -1,    -1,
    3116       -1,  1122,  1377,  1378,   492,    -1,    -1,    -1,   496,    -1,
    3117       -1,  1386,  1387,    97,    98,    99,   100,   101,   102,   103,
    3118      104,   105,   106,    -1,    -1,    -1,   805,    -1,    -1,    -1,
    3119       -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,   526,    -1,
    3120       -1,    -1,   433,   252,    -1,    -1,    -1,   131,   257,  1424,
    3121       -1,    -1,    -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,
    3122       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,
    3123       -1,    -1,   732,   438,    -1,    -1,    -1,    -1,  1002,    -1,
    3124       -1,   446,  1255,   571,    -1,    -1,  1207,    -1,    -1,    -1,
    3125     1263,  1264,  1265,   484,    -1,    -1,    -1,    -1,    -1,   464,
    3126       -1,   589,   590,    -1,    -1,    -1,  1481,  1482,  1229,    -1,
    3127       -1,    -1,    -1,    -1,   602,    -1,  1491,   482,    -1,   484,
    3128       -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
    3129     1505,  1506,   620,    -1,    -1,   526,    -1,   625,    -1,    -1,
    3130       -1,    -1,   351,   631,    -1,    -1,   634,   635,   636,    -1,
    3131       -1,    -1,    66,    -1,  1327,  1530,    -1,    -1,    72,    -1,
    3132       -1,   526,    76,    -1,   652,    79,    80,    81,    82,    83,
    3133       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3134       -1,    -1,   670,    -1,    -1,    10,    11,    12,    13,    14,
    3135       -1,    -1,    -1,   681,    -1,   109,    -1,   111,    -1,   590,
    3136     1321,    -1,    -1,   117,   118,   119,   120,   121,   122,   418,
    3137       -1,    -1,    -1,    -1,    39,    -1,   130,    -1,    -1,   707,
    3138       -1,    -1,   710,  1002,   433,   590,    -1,    -1,    -1,   438,
    3139       -1,   719,    -1,    -1,   722,    -1,   896,   446,    -1,    -1,
    3140       -1,    -1,    67,   634,   635,   636,    -1,    72,    -1,    74,
    3141       75,    76,    -1,    -1,    -1,   464,   744,   745,    83,    84,
    3142       -1,   652,   750,    -1,  1188,    -1,    -1,    -1,    -1,   634,
    3143      635,   636,    -1,   482,    -1,   484,    -1,    10,    11,    12,
    3144       13,    14,    -1,    -1,   109,    -1,   111,   652,    -1,    -1,
    3145       -1,    -1,   117,   118,    -1,    -1,    -1,    -1,  1419,    -1,
    3146       -1,   789,    -1,    -1,    -1,   670,    39,    -1,    -1,    -1,
    3147       -1,   799,    -1,   801,    -1,   803,   681,   526,   806,   710,
    3148      808,   809,    -1,    -1,    -1,   813,    -1,    -1,    -1,  1450,
    3149       -1,  1452,    -1,    -1,    67,   823,    -1,    -1,    -1,    72,
    3150       -1,    -1,   707,    76,    -1,   710,    -1,    -1,    -1,    -1,
    3151       83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1283,
    3152       -1,     0,    -1,    -1,    -1,  1486,    -1,  1488,    -1,    -1,
    3153       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    3154      745,   590,    -1,    -1,   117,   118,   874,    -1,     0,    -1,
    3155      190,    -1,    -1,    32,  1515,    -1,    -1,   197,    -1,    -1,
    3156       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   896,  1188,
    3157      801,    -1,    -1,    -1,    -1,   903,   904,    -1,   809,   907,
    3158       32,    -1,    -1,    -1,   789,   634,   635,   636,    -1,    -1,
    3159       69,    -1,    -1,    -1,   799,    -1,   801,    -1,    -1,    -1,
    3160       -1,   806,    -1,   652,   809,   933,    -1,    -1,   813,    -1,
    3161       -1,    -1,    -1,   941,   942,    -1,    -1,    69,    -1,    -1,
    3162       -1,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   269,
    3163       -1,    -1,   681,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3164       -1,    -1,    -1,   874,    -1,    -1,    -1,    -1,    -1,    -1,
    3165       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   707,    -1,
    3166       -1,   710,    -1,    -1,  1283,    -1,    -1,    -1,    -1,   874,
    3167       -1,   999,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,
    3168       -1,    -1,    -1,   323,  1012,    -1,    -1,    -1,    -1,  1017,
    3169     1018,   331,  1020,  1021,   334,    -1,   745,    -1,    -1,   904,
    3170       -1,    -1,    -1,    -1,    -1,   157,    -1,  1207,    -1,    -1,
    3171       -1,   942,  1040,    -1,    -1,     3,     4,     5,     6,     7,
    3172        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3173       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3174      789,    -1,    30,    31,    32,    -1,    -1,  1075,  1076,    -1,
    3175      799,    39,   801,    -1,    -1,    -1,    -1,   806,   398,    -1,
    3176      809,    -1,   402,    -1,   813,    -1,    -1,    -1,    -1,    -1,
    3177       -1,    -1,    -1,   252,    -1,    -1,    -1,    -1,   257,    67,
    3178       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,  1020,
    3179     1021,    -1,    -1,    -1,  1122,    83,    84,    -1,    -1,    -1,
    3180      252,    -1,    -1,    -1,    -1,   257,    -1,    -1,    -1,  1040,
    3181       -1,    -1,  1017,  1018,    -1,  1020,  1021,    -1,  1146,    -1,
    3182       -1,   109,    -1,   111,    -1,   874,    -1,    -1,    -1,   117,
    3183      118,    -1,    -1,    -1,    -1,  1040,    -1,    -1,    -1,   479,
    3184       -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3185       -1,    -1,    -1,    -1,    -1,   904,    -1,    -1,    -1,    -1,
    3186       -1,  1189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3187     1075,  1076,   351,    -1,    39,    -1,    -1,  1377,    -1,  1207,
    3188       -1,    -1,    -1,  1211,    -1,    -1,    -1,    -1,    -1,    -1,
    3189       -1,    -1,    -1,    -1,    -1,  1223,    -1,  1225,    -1,   351,
    3190       -1,  1229,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
    3191       75,    76,    -1,    -1,    -1,    26,    27,    28,    83,    84,
    3192       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1255,    -1,    -1,
    3193      570,   571,    -1,    -1,    -1,  1263,  1264,  1265,    -1,   418,
    3194       -1,  1146,    -1,    -1,   109,    -1,  1274,  1275,    -1,    -1,
    3195       -1,    -1,   117,   118,   433,    -1,    -1,  1188,  1189,   438,
    3196     1288,    -1,    -1,    -1,    -1,    -1,   418,   446,  1017,  1018,
    3197       -1,  1020,  1021,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3198     1211,   433,    -1,    -1,  1189,   464,   438,    -1,    99,    -1,
    3199      101,  1040,    -1,  1321,   446,    -1,    -1,    -1,  1229,  1327,
    3200       -1,    -1,    -1,   482,    -1,   484,  1211,    -1,    -1,    -1,
    3201       -1,    -1,   464,    -1,    -1,   126,    -1,   657,  1223,    -1,
    3202     1225,   661,    -1,    -1,    -1,    -1,  1075,  1076,    -1,    -1,
    3203      482,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3204       -1,    -1,    -1,  1274,  1275,    -1,    -1,   526,    -1,    -1,
    3205     1255,    -1,  1283,    -1,    -1,    -1,    -1,  1288,  1263,  1264,
    3206     1265,    -1,    -1,    -1,    -1,    -1,  1394,    -1,    -1,  1274,
    3207     1275,   182,    -1,    -1,   526,    -1,    -1,    -1,    -1,   190,
    3208       -1,   192,   193,  1288,    -1,    -1,   197,    -1,   199,   200,
    3209     1321,  1419,    -1,    53,    -1,    55,    -1,  1146,    58,    59,
    3210       60,    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3211       -1,   590,    -1,  1441,    -1,    -1,    -1,    77,    -1,    -1,
    3212     1448,    -1,  1327,    -1,    -1,    -1,    -1,    -1,    -1,    89,
    3213       90,    -1,    -1,    -1,    26,    27,    28,    -1,   590,    -1,
    3214     1189,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3215       14,    -1,    -1,   793,    -1,   634,   635,   636,   269,    -1,
    3216       -1,    -1,  1211,  1394,    -1,    -1,    -1,    -1,    -1,    -1,
    3217       -1,  1499,    -1,   652,  1223,    39,  1225,    -1,  1506,    -1,
    3218       -1,    -1,   634,   635,   636,    -1,    -1,    -1,  1419,  1394,
    3219       -1,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3220      652,    -1,   681,    67,    -1,    -1,  1255,    99,    72,   101,
    3221     1441,    -1,    76,    -1,  1263,  1264,  1265,  1448,   670,    83,
    3222       84,    -1,    -1,    -1,    -1,  1274,  1275,    -1,   707,   681,
    3223       -1,   710,    -1,    -1,    -1,    -1,  1441,    -1,    -1,  1288,
    3224       -1,    -1,    -1,  1448,    -1,   109,    -1,    -1,    -1,    -1,
    3225       -1,    -1,    -1,   117,   118,   707,    -1,    -1,   710,    10,
    3226       11,    12,    13,    14,    -1,    -1,   745,    -1,  1499,    -1,
    3227       -1,   911,    -1,    -1,    -1,    -1,    -1,    -1,  1327,    -1,
    3228       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
    3229      182,    -1,    -1,   745,  1499,    -1,    -1,    -1,    -1,    -1,
    3230      192,   193,    -1,    -1,    -1,   197,    -1,   199,   200,    -1,
    3231      789,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3232      799,    72,   801,    74,    75,    76,    -1,   806,    -1,    -1,
    3233      809,    -1,    83,    84,   813,    -1,    -1,   789,    -1,    10,
    3234       11,    12,    13,    14,    -1,  1394,    -1,   799,   988,   801,
    3235       -1,    -1,    -1,    -1,   806,    -1,    -1,   809,   109,    -1,
    3236      111,   813,    -1,    -1,    -1,  1005,   117,   118,    39,    -1,
    3237       -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
    3238       -1,    -1,    -1,    -1,   344,    -1,   346,    -1,    -1,    -1,
    3239       -1,    -1,  1441,    -1,    -1,   874,    67,   357,   358,  1448,
    3240       39,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
    3241       -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
    3242       -1,    -1,   874,    -1,    -1,   904,    -1,    -1,    67,    -1,
    3243       -1,    -1,    -1,    72,    -1,    74,    75,    76,   109,    -1,
    3244      111,    -1,    -1,  1083,    83,    84,   117,   118,    -1,    -1,
    3245     1499,    -1,   904,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3246       -1,    -1,    -1,   574,   575,    -1,    -1,    -1,    -1,    -1,
    3247      109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,   118,
    3248       -1,    -1,    -1,  1123,    -1,    -1,    -1,    -1,    -1,    -1,
    3249       -1,    -1,   603,    -1,    -1,   606,   607,    -1,   609,    -1,
    3250      611,   612,    -1,    -1,    -1,   616,   617,     3,     4,     5,
    3251        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3252       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3253       26,    27,    28,    -1,    30,    31,    32,    33,  1017,  1018,
    3254       36,  1020,  1021,    39,    -1,    -1,    -1,    -1,    -1,    -1,
    3255       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3256       -1,  1040,    -1,    -1,    -1,  1017,  1018,    -1,  1020,  1021,
    3257       -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
    3258       -1,    -1,    78,    -1,    -1,    -1,     7,    -1,  1040,    10,
    3259       11,    12,    13,    14,    -1,    -1,  1075,  1076,    -1,    -1,
    3260       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3261       -1,    -1,    -1,    -1,    -1,   111,    37,    38,    39,    40,
    3262       -1,   117,   118,  1075,  1076,    -1,    -1,    -1,    -1,    -1,
    3263       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3264       -1,    -1,    -1,   754,   755,    66,    67,    -1,    -1,    -1,
    3265       -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
    3266       81,    82,    83,    84,    -1,    86,    87,  1146,    -1,    -1,
    3267       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3268       -1,    -1,   574,   575,    -1,    -1,    -1,    -1,   109,    -1,
    3269      111,    -1,    -1,    -1,  1146,    -1,   117,   118,   119,   120,
    3270      121,   122,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3271     1189,   603,    -1,    -1,   606,   607,    -1,   609,    -1,   611,
    3272      612,    -1,    -1,    -1,   616,   617,    -1,    -1,    -1,    -1,
    3273       -1,    -1,  1211,    -1,    -1,    -1,    -1,  1189,    -1,   699,
    3274       -1,   701,    -1,    -1,  1223,    -1,  1225,    -1,   708,   709,
    3275       -1,    -1,    -1,   713,    -1,    -1,    -1,    -1,    -1,  1211,
    3276       -1,    -1,    -1,    -1,    -1,   725,    -1,    -1,    -1,    -1,
    3277      730,  1223,    -1,  1225,    -1,    -1,  1255,    -1,    -1,    -1,
    3278       -1,    -1,    -1,    -1,  1263,  1264,  1265,    -1,    -1,    -1,
    3279       -1,    -1,    -1,    -1,    -1,  1274,  1275,    -1,   758,    -1,
    3280      911,    -1,    -1,  1255,    -1,   916,    -1,    -1,    -1,  1288,
    3281       -1,  1263,  1264,  1265,    -1,    -1,    -1,    -1,    -1,    -1,
    3282       -1,    -1,  1274,  1275,    -1,    -1,    -1,    -1,    -1,    -1,
    3283       -1,    -1,    -1,    -1,    -1,    -1,  1288,    -1,    -1,    -1,
    3284       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1327,    -1,
    3285       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3286       49,    -1,   754,   755,    -1,    -1,    -1,    -1,    -1,    -1,
    3287       -1,    -1,    -1,    -1,    -1,  1327,    -1,    66,    -1,    -1,
    3288        7,    -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,
    3289       -1,    -1,    -1,    -1,    -1,    -1,    -1,   857,   858,   859,
    3290      860,    -1,   862,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3291       37,    38,    39,    40,    -1,  1394,    -1,   877,    -1,    -1,
    3292       -1,    -1,    -1,    -1,    -1,   114,    -1,    -1,    -1,   118,
    3293       -1,   891,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
    3294       67,    -1,  1394,    -1,    -1,    72,    -1,    -1,    -1,    76,
    3295       -1,    -1,    79,    80,    81,    82,    83,    84,   147,    86,
    3296       87,    -1,  1441,    -1,    -1,    -1,  1077,    -1,   157,  1448,
    3297       -1,   931,   161,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3298       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,  1441,
    3299      117,   118,   119,   120,   121,   122,  1448,    10,    11,    12,
    3300       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3301       23,    24,    25,    26,    27,    -1,   976,    30,    31,    32,
    3302     1499,   210,   982,    -1,   916,    -1,    39,   987,    -1,    -1,
    3303       -1,    -1,   992,   222,   994,    -1,    -1,    -1,   998,    -1,
    3304     1000,  1001,    -1,    -1,  1004,    -1,    -1,  1499,    -1,    -1,
    3305       -1,   240,    -1,  1013,    67,    -1,    -1,    -1,    -1,    -1,
    3306       -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3307       -1,  1031,  1032,    -1,    -1,    -1,   265,    -1,    -1,    -1,
    3308       -1,    -1,    -1,   272,    -1,    -1,    -1,    -1,    -1,    -1,
    3309       -1,    -1,    -1,    -1,    -1,  1206,    -1,    -1,  1058,    -1,
    3310       -1,  1061,    -1,    -1,   117,   118,   295,    -1,    -1,    -1,
    3311       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   307,    -1,
    3312       -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
    3313       -1,    -1,    -1,    -1,    76,    -1,    78,    -1,    80,    -1,
    3314       -1,    -1,    -1,    -1,  1104,    87,    -1,    -1,    -1,    -1,
    3315     1110,  1111,    -1,    -1,    -1,    -1,   345,    -1,    -1,    -1,
    3316       -1,   350,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3317     1130,    -1,    -1,  1133,    -1,    -1,   118,  1137,   120,   121,
    3318      122,    -1,    -1,    -1,    -1,  1077,    -1,    -1,    -1,    -1,
    3319     1150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3320       -1,    -1,    -1,  1163,    -1,  1165,  1166,  1167,  1168,    -1,
    3321       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   161,
    3322       -1,  1181,    -1,  1183,    -1,    -1,    -1,  1187,    -1,    -1,
    3323       -1,    -1,    -1,    -1,    -1,    -1,    -1,   426,   427,    -1,
    3324       -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,    -1,    -1,
    3325       -1,    -1,    -1,    -1,    -1,    -1,  1216,  1217,    -1,    -1,
    3326       -1,    -1,    -1,    -1,    -1,   454,    -1,    -1,    -1,    -1,
    3327       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3328      222,    -1,   224,   225,   226,    -1,    -1,    -1,    -1,    -1,
    3329       -1,    -1,    -1,   482,    -1,    -1,    -1,    -1,    -1,    -1,
    3330       -1,    -1,    -1,    -1,    -1,   494,  1266,  1267,    -1,    -1,
    3331       -1,    -1,    -1,    -1,  1206,    -1,  1276,   506,   260,   508,
    3332       -1,    -1,   511,   265,   513,   514,    -1,    -1,    -1,    -1,
    3333       -1,    -1,    -1,    -1,    -1,    -1,    -1,   526,   280,    -1,
    3334       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3335       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
    3336       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3337       26,    27,    28,    -1,    30,    31,    32,  1337,    -1,  1339,
    3338     1340,  1341,    -1,    39,    -1,    -1,   328,    -1,    -1,   578,
    3339       -1,  1351,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3340     1360,   590,    -1,    -1,    -1,   594,    -1,    -1,   350,    -1,
    3341       -1,    67,    -1,   355,   356,    -1,    72,    -1,    74,    75,
    3342       76,   363,    78,    -1,    -1,  1385,    -1,    83,    84,    -1,
    3343       -1,   620,    -1,    -1,   147,    -1,   625,    -1,    -1,    -1,
    3344       -1,    -1,    -1,    -1,   157,   634,   635,   636,    -1,    44,
    3345       -1,    -1,    -1,   109,    -1,   111,   169,   170,    -1,    -1,
    3346       -1,   117,   118,   652,   406,    -1,    -1,    -1,  1428,  1429,
    3347       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3348       -1,  1441,   424,    -1,    -1,    -1,    -1,   429,  1448,   431,
    3349       37,    38,    -1,    40,    -1,   684,    -1,    92,    -1,    -1,
    3350       -1,    -1,    -1,    -1,    -1,    -1,   448,   102,    -1,   451,
    3351      452,    -1,    -1,    -1,    -1,    -1,    -1,   459,    -1,    66,
    3352     1480,   710,    -1,   712,  1484,    72,    -1,   240,    -1,    76,
    3353       -1,   473,    79,    80,    81,    82,    83,    84,   480,    86,
    3354       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3355       -1,   264,  1512,    -1,  1514,    -1,   745,    -1,    -1,    -1,
    3356       -1,    -1,   109,   158,   111,    -1,    -1,   114,    -1,    -1,
    3357      117,   118,   119,   120,   121,   122,    -1,   172,    -1,    -1,
    3358       -1,    -1,  1542,  1543,    -1,    -1,    -1,    -1,    -1,    -1,
    3359     1550,  1551,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3360      195,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3361       -1,    -1,   801,    -1,   209,    -1,   805,    -1,    -1,    -1,
    3362      809,    -1,    -1,   218,    -1,    -1,    -1,    -1,    -1,    -1,
    3363       -1,    -1,    -1,   228,    -1,    -1,    -1,    -1,    -1,    -1,
    3364       -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
    3365       -1,    -1,   594,    -1,    -1,    -1,    -1,    -1,   253,    -1,
    3366       -1,    -1,    -1,   258,    -1,    -1,    -1,   380,    -1,    -1,
    3367       -1,    -1,    -1,    66,    -1,    -1,   271,    -1,    -1,    72,
    3368      622,    -1,   277,    76,   279,   627,    79,    80,    81,    82,
    3369       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3370       -1,   296,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3371       -1,    -1,    -1,    -1,    -1,   904,   109,    -1,   111,    -1,
    3372       -1,    -1,    -1,   116,   117,   118,   119,   120,   121,   122,
    3373      919,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3374       -1,    -1,    -1,   338,    -1,    -1,    -1,    -1,   343,    -1,
    3375       -1,    -1,    -1,    -1,   943,    -1,   698,    -1,    -1,    -1,
    3376       -1,   474,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3377      712,    -1,    -1,    -1,    -1,    -1,    -1,   372,    -1,    -1,
    3378       -1,   376,   377,    -1,   379,    -1,    -1,    -1,    -1,    -1,
    3379      732,   386,   387,    -1,   389,   390,    -1,   392,    -1,   394,
    3380      513,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3381      999,    -1,    -1,   526,    -1,    -1,   411,    -1,   531,    -1,
    3382       -1,   534,    -1,    -1,   419,    -1,    -1,    -1,    -1,    -1,
    3383       -1,  1020,  1021,   546,    -1,    -1,    -1,    -1,    -1,    -1,
    3384       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   444,
    3385       -1,   793,    -1,    -1,    -1,   568,    -1,    -1,    -1,    -1,
    3386       -1,    -1,    -1,   805,    -1,   578,    -1,    -1,    -1,    -1,
    3387       -1,    -1,   585,    -1,    -1,   470,    -1,   590,    -1,    -1,
    3388       -1,   476,   824,    -1,    -1,    -1,   481,    -1,    -1,    -1,
    3389       -1,  1080,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
    3390        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3391       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3392       27,    -1,   517,    30,    31,    32,   639,    -1,    -1,    -1,
    3393       -1,    -1,    39,    -1,   647,    -1,    -1,   532,    -1,    -1,
    3394       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3395       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1146,    -1,    -1,
    3396       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
    3397       -1,    -1,    -1,    37,    38,   570,    40,    -1,    -1,    -1,
    3398       -1,    -1,    -1,    -1,   579,    -1,    -1,    -1,    -1,    -1,
    3399       -1,   586,    -1,    -1,    -1,   937,    -1,   592,    -1,  1188,
    3400       -1,    -1,    66,    -1,   111,    -1,   601,    -1,    72,    -1,
    3401      117,   118,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3402       84,    -1,    86,    87,    -1,   967,    -1,    -1,    -1,    -1,
    3403       -1,    -1,   745,    -1,   747,    -1,  1225,    -1,    -1,   156,
    3404      157,    -1,    -1,    -1,   757,   109,   641,   111,    -1,    -1,
    3405      763,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
    3406     1002,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3407       -1,  1013,    -1,   190,    -1,    -1,    -1,    -1,    -1,    -1,
    3408      197,    -1,   677,    -1,    -1,  1274,  1275,    -1,    -1,    -1,
    3409      685,    -1,   805,   806,  1283,    -1,   809,    -1,    -1,    -1,
    3410       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   283,
    3411      823,   285,   286,    -1,    -1,    -1,    -1,    -1,    -1,   293,
    3412      294,   716,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3413       -1,   726,   727,   307,   308,    -1,    -1,    -1,    -1,    -1,
    3414       -1,    -1,    -1,  1085,    -1,    -1,    -1,    -1,    -1,    -1,
    3415      863,    -1,   269,    -1,   867,    -1,    -1,  1099,    -1,    -1,
    3416       -1,    -1,    -1,    -1,   759,    -1,    -1,    -1,    -1,   764,
    3417       -1,   345,    10,    11,    12,    13,    14,    15,    16,    17,
    3418       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3419       -1,   904,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
    3420       -1,    39,    40,    -1,    -1,  1394,   323,   381,    -1,    -1,
    3421       -1,    -1,    -1,    -1,   331,   332,    -1,   334,   335,    -1,
    3422       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,    67,
    3423      943,    -1,   349,   828,    -1,    -1,    74,    75,    -1,    -1,
    3424      835,    -1,    -1,    -1,    -1,    -1,  1188,    -1,    -1,    -1,
    3425       -1,   368,    -1,   848,   371,   850,    -1,    -1,   971,    -1,
    3426       -1,  1450,    -1,  1452,   977,    -1,    -1,    -1,   981,   864,
    3427       -1,    -1,    -1,   111,    -1,   870,    -1,   115,    -1,   117,
    3428      118,   398,    -1,    -1,    -1,   402,    -1,   882,    -1,  1002,
    3429      885,    -1,    -1,    -1,    -1,    -1,    -1,  1486,    -1,  1488,
    3430     1013,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3431       -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,
    3432       -1,    -1,  1035,    -1,  1037,    -1,  1515,    -1,    -1,    -1,
    3433       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1052,
    3434     1053,  1283,    10,    11,    12,    13,    14,    15,    16,    17,
    3435       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3436     1073,    -1,   479,    -1,    -1,   482,    -1,   962,    -1,    -1,
    3437       -1,    39,    -1,    -1,    -1,   549,   550,   551,   552,   553,
    3438      554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
    3439      564,   565,   566,    -1,    -1,    -1,    -1,    37,    38,    67,
    3440       40,    -1,   997,    -1,   521,    -1,    -1,    -1,   525,   526,
    3441       -1,    -1,    -1,    -1,    -1,  1128,    -1,    -1,    -1,    -1,
    3442       -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,
    3443       -1,    -1,    72,  1146,    -1,    -1,    76,    -1,    -1,    79,
    3444       80,    81,    82,    83,    84,    -1,    86,    87,  1161,  1162,
    3445       -1,    -1,    -1,   570,   571,    -1,    -1,    -1,    -1,    -1,
    3446     1055,    -1,    -1,    -1,    -1,    -1,  1061,    -1,    -1,   109,
    3447       -1,   111,   589,   590,   114,    -1,    -1,   117,   118,   119,
    3448      120,   121,   122,   600,    -1,   602,   603,    -1,    -1,    -1,
    3449       -1,    -1,   609,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3450     1095,    -1,   619,   620,    -1,  1100,    -1,    -1,   625,    -1,
    3451       -1,    -1,    -1,  1108,    -1,    -1,    -1,   634,   635,   636,
    3452       -1,   695,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3453       -1,    -1,    -1,    -1,    -1,   652,    -1,    -1,    -1,    -1,
    3454      657,   658,    -1,    -1,   661,   662,  1141,    -1,    -1,    -1,
    3455       -1,   668,    -1,    -1,    -1,    -1,    -1,    -1,  1153,    -1,
    3456       -1,  1156,    -1,  1158,    -1,    -1,    -1,    -1,    -1,    -1,
    3457      687,    -1,    -1,    -1,    -1,    -1,    -1,  1172,  1173,    -1,
    3458       -1,    -1,   756,    -1,    -1,    -1,    -1,    -1,  1530,  1302,
    3459       -1,    -1,  1305,   710,   711,    -1,    -1,    -1,    -1,  1194,
    3460       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3461       -1,    -1,   786,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3462       -1,    -1,    -1,    -1,    -1,    -1,    -1,   744,   745,    -1,
    3463       -1,    -1,   749,   750,    -1,    -1,    -1,    -1,    -1,    -1,
    3464       -1,    -1,    -1,    -1,    -1,    -1,  1241,    -1,    -1,    -1,
    3465       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3466       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    3467       -1,    30,    31,    32,    -1,    -1,   793,    -1,    -1,    -1,
    3468       39,    -1,    -1,    -1,   801,    -1,    -1,    -1,    -1,    -1,
    3469       -1,   808,   809,    -1,    -1,   812,    -1,   814,    -1,    -1,
    3470       -1,    -1,    -1,    -1,    -1,    -1,    -1,   824,    67,    -1,
    3471       -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    78,
    3472       -1,  1316,    -1,  1318,    83,    84,    -1,    -1,    -1,    -1,
    3473       -1,    -1,   906,    -1,    -1,  1330,    -1,  1332,    -1,    -1,
    3474       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3475       -1,    -1,   111,    -1,  1349,    -1,    -1,    -1,   117,   118,
    3476       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3477     1365,  1366,    -1,    -1,    -1,    -1,    -1,   951,    -1,   896,
    3478       -1,  1376,    -1,    -1,  1379,    -1,   903,   904,   905,    -1,
    3479      907,    -1,    -1,    -1,   911,    -1,    -1,    -1,    -1,    -1,
    3480       -1,    -1,  1515,    -1,    -1,  1400,    -1,    -1,    -1,    -1,
    3481       -1,    -1,   986,    -1,  1409,   932,   933,  1412,    -1,  1414,
    3482     1415,  1416,    -1,    -1,    -1,   999,    10,    11,    12,    13,
    3483       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3484       24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,
    3485      967,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,  1454,
    3486       -1,  1456,    -1,  1458,    -1,    -1,  1040,    -1,    -1,    -1,
    3487       -1,   988,   989,    -1,    -1,    -1,    -1,    -1,  1473,    -1,
    3488       -1,    -1,   999,    67,    -1,    -1,    -1,    -1,  1005,  1006,
    3489       -1,  1008,  1009,  1010,    78,    -1,    -1,    -1,    -1,    -1,
    3490       -1,    -1,    -1,  1020,  1021,    -1,    -1,    -1,    -1,    -1,
    3491       -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
    3492        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3493       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3494       26,    27,    -1,  1117,    30,    31,    32,    33,    -1,    -1,
    3495       36,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
    3496       -1,    -1,    -1,    -1,    -1,    -1,  1083,    -1,  1085,    -1,
    3497       -1,    -1,    -1,  1090,    -1,    -1,    -1,    -1,    -1,    -1,
    3498       66,    67,  1099,    69,    -1,    71,    72,    -1,    74,    75,
    3499       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3500       86,    87,    -1,  1177,  1178,  1122,  1123,  1124,    -1,    -1,
    3501       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3502       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,  1146,
    3503       -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
    3504       -1,    -1,    -1,    -1,    -1,    -1,   132,    -1,     3,     4,
    3505        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3506       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3507       25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
    3508       -1,    36,    37,    38,    39,    40,    41,    -1,    43,    -1,
    3509     1207,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
    3510       -1,    -1,    57,    -1,    -1,    -1,    61,    62,  1225,    64,
    3511       -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    3512       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3513       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3514       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3515       -1,    -1,    -1,    -1,   109,    -1,   111,  1274,  1275,   114,
    3516       -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3517       -1,    -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,
    3518       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3519       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3520       21,    22,    23,    24,    25,    26,    27,    -1,  1382,    30,
    3521       31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
    3522       -1,    -1,    -1,    -1,  1398,    -1,    -1,    -1,    -1,    -1,
    3523       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3524       -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
    3525       71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3526       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3527       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1394,    -1,    -1,
    3528       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3529      111,    -1,    -1,    -1,  1468,  1469,   117,   118,   119,   120,
    3530      121,   122,    -1,     4,     5,     6,     7,     8,     9,    10,
    3531       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3532       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3533       31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    3534       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3535       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3536       27,    28,    -1,    -1,  1481,    66,    67,    -1,    69,    -1,
    3537       71,    72,    39,    74,    75,    76,    -1,    -1,    79,    80,
    3538       81,    82,    83,    84,    -1,    86,    87,    -1,  1505,  1506,
    3539       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3540       67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3541      111,    78,    -1,  1530,    -1,   116,   117,   118,   119,   120,
    3542      121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
    3543       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3544       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3545       32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    10,
    3546       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3547       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3548       31,    32,    -1,    -1,    66,    67,    -1,    69,    39,    71,
    3549       72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
    3550       82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    3551       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3552       -1,    72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,
    3553       -1,    -1,    83,    84,   116,   117,   118,   119,   120,   121,
    3554      122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3555       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3556       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3557       -1,    -1,    -1,    -1,    37,    38,    39,    40,    10,    11,
    3558       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3559       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3560       32,    -1,    -1,    66,    67,    -1,    69,    39,    71,    72,
    3561       -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
    3562       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
    3563       -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3564       -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
    3565       -1,    -1,    -1,   116,   117,   118,   119,   120,   121,   122,
    3566        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3567       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3568       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3569       -1,    -1,    -1,    37,    38,    39,    40,    10,    11,    12,
    3570       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3571       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3572       -1,    -1,    66,    67,    -1,    69,    39,    71,    72,    -1,
    3573       74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3574       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3575       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
    3576       -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3577       -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     4,
    3578        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3579       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3580       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3581       -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    3582       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3583       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3584       -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    3585       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3586       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3587       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3588       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3589       -1,    -1,   117,   118,   119,   120,   121,   122,     4,     5,
    3590        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3591       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3592       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    3593       -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
    3594       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3595       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3596       66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
    3597       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3598       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3599       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3600       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
    3601       -1,   117,   118,   119,   120,   121,   122,     4,     5,     6,
    3602        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3603       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3604       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3605       37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    3606       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3607       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
    3608       67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
    3609       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3610       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3611       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3612       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3613      117,   118,   119,   120,   121,   122,     0,    -1,    -1,     3,
    3614        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3615       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3616       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
    3617       -1,    -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,
    3618       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3619       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3620       64,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
    3621       74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    3622       84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3623       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3624       -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3625       -1,    -1,    -1,   117,   118,     3,     4,     5,     6,     7,
    3626        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3627       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3628       -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
    3629       -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3630       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3631       -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
    3632       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3633       -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
    3634       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3635       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3636       -1,   109,    -1,   111,    -1,    -1,    -1,   115,    -1,   117,
    3637      118,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3638       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3639       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3640       32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,    -1,
    3641       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3642       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3643       -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,    71,
    3644       72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
    3645       -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3646       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3647       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3648       -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,
    3649        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3650       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3651       26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
    3652       36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
    3653       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3654       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3655       -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
    3656       -1,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3657       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3658       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3659       -1,    -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,
    3660       -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3661       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3662       -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,
    3663       -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
    3664       83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3665       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3666       -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
    3667       -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,     7,
    3668        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3669       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3670       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
    3671       -1,    39,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3672       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3673       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    67,
    3674       -1,    69,    -1,    71,    -1,    39,    74,    75,    -1,     4,
    3675        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3676       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3677       25,    26,    27,    67,    -1,    30,    31,    32,    -1,    -1,
    3678       74,    75,   110,   111,    39,    -1,    -1,    -1,    -1,   117,
    3679      118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3680       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3681       -1,    -1,    67,    -1,    69,   109,    71,   111,    -1,    74,
    3682       75,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
    3683       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3684       -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3685       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3686       -1,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
    3687       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3688       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3689       30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    3690       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3691       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3692       27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,    69,
    3693       -1,    71,    39,    40,    74,    75,    -1,    -1,    -1,    -1,
    3694       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3695       -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
    3696       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3697       -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,     4,
    3698        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3699       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3700       25,    26,    27,    -1,   111,    30,    31,    32,   115,    -1,
    3701      117,   118,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
    3702       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3703       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3704       -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    3705       75,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
    3706       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3707       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3708       32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,    -1,
    3709       -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
    3710       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3711       -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    3712       -1,    -1,    74,    75,    -1,     4,     5,     6,     7,     8,
    3713        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3714       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3715       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,   111,
    3716       39,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,
    3717       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3718       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3719       69,    -1,    71,    -1,    -1,    74,    75,    -1,     4,     5,
    3720        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3721       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3722       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    3723       -1,    -1,   111,    39,    -1,    -1,    -1,    -1,   117,   118,
    3724       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3725       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3726       -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
    3727       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3728       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3729       30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
    3730       40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3731       -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3732       -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,
    3733       -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,
    3734       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    3735       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3736       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    3737       -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
    3738      120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
    3739       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3740       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3741       37,    38,    39,    40,    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,    66,
    3744       67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,    76,
    3745       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3746       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3747       -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
    3748       76,    -1,   109,   110,   111,    -1,    -1,    83,    84,    -1,
    3749      117,   118,   119,   120,   121,   122,    10,    11,    12,    13,
    3750       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3751       24,    25,    26,    27,    -1,   111,    30,    31,    32,    -1,
    3752       -1,   117,   118,    37,    38,    39,    40,    10,    11,    12,
    3753       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3754       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3755       -1,    -1,    66,    67,    -1,    -1,    39,    -1,    72,    -1,
    3756       74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3757       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3758       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,
    3759       -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3760       83,    84,    -1,   117,   118,   119,   120,   121,   122,    10,
    3761       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3762       21,    22,    23,    24,    25,    26,    27,    -1,   111,    30,
    3763       31,    32,    -1,    -1,   117,   118,    37,    38,    39,    40,
    3764       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3765       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3766       30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
    3767       40,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3768       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3769       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    3770       -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,    -1,
    3771      111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
    3772      121,   122,    10,    11,    12,    13,    14,    15,    16,    17,
    3773       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3774       -1,   111,    30,    31,    32,   115,    -1,   117,   118,    37,
    3775       38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
    3776       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3777       27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
    3778       -1,    -1,    39,    -1,    72,    -1,    74,    75,    76,    -1,
    3779       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3780       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3781       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3782       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
    3783      118,   119,   120,   121,   122,    10,    11,    12,    13,    14,
    3784       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3785       25,    26,    27,    -1,   111,    30,    31,    32,    -1,    -1,
    3786      117,   118,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    3787       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3788       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3789       27,    66,    67,    30,    31,    32,    -1,    72,    -1,    74,
    3790       75,    76,    39,    -1,    79,    80,    81,    82,    83,    84,
    3791       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3792       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3793       67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,    -1,
    3794       -1,    -1,   117,   118,   119,   120,   121,   122,     3,     4,
    3795        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3796       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3797       25,    26,    27,    -1,   111,    30,    31,    32,    -1,    -1,
    3798      117,   118,    -1,    -1,    39,    -1,    -1,    -1,    10,    11,
    3799       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3800       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3801       32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,    74,
    3802       75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3803       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3804       24,    25,    26,    27,    -1,    67,    30,    31,    32,    -1,
    3805       72,    -1,    74,    75,    76,    39,    -1,    -1,    -1,   114,
    3806       -1,    83,    84,    -1,    10,    11,    12,    13,    14,    15,
    3807       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3808       26,    27,    -1,    67,    30,    31,    32,   109,    72,   111,
    3809       74,    75,    76,    39,    -1,   117,   118,    -1,    -1,    83,
    3810       84,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3811       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3812       -1,    67,    30,    31,    32,   109,    72,   111,    74,    75,
    3813       76,    39,    -1,   117,   118,    -1,    -1,    83,    84,    -1,
    3814       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3815       20,    21,    22,    23,    24,    25,    26,    27,    28,    67,
    3816       30,    31,    32,   109,    72,   111,    74,    75,    76,    39,
    3817       -1,   117,   118,    -1,    -1,    83,    84,    -1,    10,    11,
    3818       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3819       22,    23,    24,    25,    26,    27,    28,    67,    30,    31,
    3820       32,   109,    -1,   111,    74,    75,    -1,    39,    78,   117,
    3821      118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3822       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3823       -1,    30,    31,    32,    -1,    67,    -1,    -1,    -1,   109,
    3824       39,   111,    74,    75,    -1,    -1,    78,   117,   118,    10,
    3825       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3826       21,    22,    23,    24,    25,    26,    27,    -1,    67,    30,
    3827       31,    32,    -1,    -1,    -1,    74,    75,    -1,    39,   111,
    3828       -1,    -1,    -1,    -1,    -1,   117,   118,    10,    11,    12,
    3829       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3830       23,    24,    25,    26,    27,    -1,    67,    30,    31,    32,
    3831       -1,    -1,   111,    74,    75,    -1,    39,    -1,   117,   118,
    3832       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3833       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3834       30,    31,    32,    -1,    67,    -1,    -1,    -1,    -1,    39,
    3835      111,    74,    75,    -1,    -1,    -1,   117,   118,    10,    11,
    3836       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3837       22,    23,    24,    25,    26,    27,    -1,    67,    30,    31,
    3838       32,    -1,    -1,    -1,    74,    75,    -1,    39,   111,    -1,
    3839       -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
    3840       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3841       -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
    3842       -1,   111,    74,    75,    -1,    -1,    -1,   117,   118,     4,
    3843        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3844       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3845       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,   111,
    3846       -1,    -1,    -1,    -1,    39,   117,   118,    -1,    -1,    -1,
    3847       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3848       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3849       -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    3850       75,    37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,
    3851       46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
    3852       56,    57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
    3853       66,    -1,    -1,    -1,    -1,   110,    72,    -1,    -1,    -1,
    3854       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3855       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3856       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3857       -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
    3858       -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    37,
    3859       38,   127,    40,    41,    -1,    43,   132,    -1,    46,    47,
    3860       48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    57,
    3861       -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,
    3862       -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
    3863       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3864       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3865       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3866       -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,
    3867      118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,   127,
    3868       -1,    -1,    -1,    -1,   132,     4,     5,     6,     7,     8,
    3869        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3870       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3871       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
    3872       39,    -1,    37,    38,    -1,    40,    41,    -1,    43,    44,
    3873       45,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
    3874       -1,    56,    57,    -1,    -1,    -1,    61,    62,    67,    64,
    3875       69,    66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,
    3876       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3877       -1,    86,    87,    -1,    -1,    -1,    -1,    96,    -1,    -1,
    3878       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3879       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
    3880       -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
    3881       37,    38,   127,    40,    41,    -1,    43,    44,    45,    46,
    3882       47,    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,
    3883       57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
    3884       -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
    3885       -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3886       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3887       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3888       -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
    3889      117,   118,   119,   120,   121,   122,    -1,    -1,    37,    38,
    3890      127,    40,    41,    -1,    43,    -1,    -1,    46,    47,    48,
    3891       49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
    3892       -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
    3893       -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3894       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3895       -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,
    3896       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3897      109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
    3898      119,   120,   121,   122,    66,    -1,    -1,    -1,   127,    -1,
    3899       72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
    3900       82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    3901       -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
    3902       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3903       -1,   113,   114,    -1,    -1,   117,   118,   119,   120,   121,
    3904      122,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
    3905       -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3906       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    37,
    3907       38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3908       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,
    3909       -1,    40,   117,   118,   119,   120,   121,   122,    66,    -1,
    3910       -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
    3911       -1,    79,    80,    81,    82,    83,    84,    66,    86,    87,
    3912       -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3913       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3914       -1,   109,    -1,   111,    -1,    37,    38,    -1,    40,   117,
    3915      118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,
    3916      109,    -1,    -1,    -1,    37,    38,    -1,    40,   117,   118,
    3917      119,   120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,
    3918       72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
    3919       82,    83,    84,    66,    86,    87,    -1,    -1,    -1,    72,
    3920       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3921       83,    84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,
    3922       -1,    37,    38,    -1,    40,   117,   118,   119,   120,   121,
    3923      122,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    3924       -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
    3925       66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
    3926       76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
    3927       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3928       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3929       -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
    3930       -1,   117,   118,   119,   120,   121,   122,     4,     5,     6,
    3931        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3932       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3933       27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3934       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3935       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3936       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3937       67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
    3938       -1,    -1,    -1,    -1,    -1,    -1,    83,    84,     3,     4,
    3939        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3940       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3941       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3942       -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
    3943       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3944       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3945       -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
    3946       75,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3947       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3948       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
    3949       32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
    3950       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3951       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3952       -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
    3953       -1,    -1,    74,    75,     4,     5,     6,     7,     8,     9,
    3954       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3955       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3956       30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    3957       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3958       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3959       -1,    30,    31,    32,    33,    34,    35,    67,    -1,    69,
    3960       39,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
    3961       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3962       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3963       -1,    -1,    -1,    -1,    -1,    74,    75
    3964 };
    3965 
    3966 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    3967    symbol of state STATE-NUM.  */
    3968 static const yytype_uint16 yystos[] =
    3969 {
    3970        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3971       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3972       22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
    3973       36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
    3974       76,    83,    84,   109,   111,   117,   118,   137,   140,   149,
    3975      198,   212,   213,   214,   215,   216,   217,   218,   219,   220,
    3976      221,   222,   223,   224,   225,   226,   227,   228,   229,   231,
    3977      232,   233,   234,   235,   236,   237,   238,   240,   241,   242,
    3978      243,   244,   245,   247,   255,   256,   283,   284,   285,   293,
    3979      296,   302,   303,   305,   307,   308,   314,   319,   323,   324,
    3980      325,   326,   327,   328,   329,   330,   350,   367,   368,   369,
    3981      370,    72,   139,   140,   149,   215,   217,   225,   227,   237,
    3982      241,   243,   284,    82,   109,   312,   313,   314,   312,   312,
    3983       72,    74,    75,    76,   138,   139,   273,   274,   294,   295,
    3984       74,    75,   274,   109,   305,    11,   199,   109,   149,   319,
    3985      324,   325,   326,   328,   329,   330,   112,   134,   111,   218,
    3986      225,   227,   323,   327,   366,   367,   370,   371,   135,   107,
    3987      131,   277,   114,   135,   173,    74,    75,   137,   272,   135,
    3988      135,   135,   116,   135,    74,    75,   109,   149,   309,   318,
    3989      319,   320,   321,   322,   323,   327,   331,   332,   333,   334,
    3990      335,   341,     3,    28,    78,   239,     3,     5,    74,   111,
    3991      149,   217,   228,   232,   235,   244,   285,   323,   327,   370,
    3992      215,   217,   227,   237,   241,   243,   284,   323,   327,    33,
    3993      233,   233,   228,   235,   135,   233,   228,   233,   228,    75,
    3994      109,   114,   274,   285,   114,   274,   233,   228,   116,   135,
    3995      135,     0,   134,   109,   173,   312,   312,   134,   111,   225,
    3996      227,   368,   272,   272,   131,   227,   109,   149,   309,   319,
    3997      323,   111,   149,   370,   306,   230,   314,   109,   290,   109,
    3998      109,    51,   109,    37,    38,    40,    66,    72,    76,    79,
    3999       80,    81,    82,    86,    87,   109,   111,   119,   120,   121,
    4000      122,   136,   140,   141,   142,   143,   148,   149,   150,   151,
    4001      152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
    4002      162,   164,   167,   225,   276,   292,   366,   371,   227,   110,
    4003      110,   110,   110,   110,   110,   110,    74,    75,   111,   225,
    4004      272,   350,   368,   111,   117,   149,   164,   217,   218,   224,
    4005      227,   231,   232,   237,   240,   241,   243,   262,   263,   267,
    4006      268,   269,   270,   284,   350,   362,   363,   364,   365,   370,
    4007      371,   112,   109,   323,   327,   370,   109,   116,   132,   111,
    4008      114,   149,   164,   278,   278,   115,   134,   116,   132,   109,
    4009      116,   132,   116,   132,   116,   132,   312,   132,   319,   320,
    4010      321,   322,   332,   333,   334,   335,   227,   318,   331,    64,
    4011      311,   111,   312,   349,   350,   312,   312,   173,   134,   109,
    4012      312,   349,   312,   312,   227,   309,   109,   109,   226,   227,
    4013      225,   227,   112,   134,   225,   366,   371,   173,   134,   272,
    4014      277,   217,   232,   323,   327,   173,   134,   294,   227,   237,
    4015      132,   227,   227,   292,   248,   246,   258,   274,   257,   227,
    4016      294,   132,   132,   305,   134,   139,   271,     3,   135,   207,
    4017      208,   222,   224,   227,   134,   311,   109,   311,   164,   319,
    4018      227,   109,   134,   272,   114,    33,    34,    35,   225,   286,
    4019      287,   289,   134,   128,   131,   291,   134,   228,   234,   235,
    4020      272,   315,   316,   317,   109,   141,   109,   148,   109,   148,
    4021      151,   109,   148,   109,   109,   148,   148,   111,   164,   169,
    4022      173,   225,   275,   366,   370,   112,   134,    82,    85,    86,
    4023       87,   109,   111,   113,   114,    97,    98,    99,   100,   101,
    4024      102,   103,   104,   105,   106,   131,   166,   151,   151,   117,
    4025      123,   124,   119,   120,    88,    89,    90,    91,   125,   126,
    4026       92,    93,   118,   127,   128,    94,    95,   129,   131,   373,
    4027      109,   149,   345,   346,   347,   348,   349,   110,   116,   109,
    4028      349,   350,   109,   349,   350,   134,   109,   225,   368,   112,
    4029      134,   135,   111,   225,   227,   361,   362,   370,   371,   135,
    4030      109,   111,   149,   319,   336,   337,   338,   339,   340,   341,
    4031      342,   343,   344,   350,   351,   352,   353,   354,   355,   356,
    4032      149,   370,   227,   135,   135,   149,   225,   227,   363,   272,
    4033      225,   350,   363,   272,   109,   134,   134,   134,   112,   134,
    4034       72,   111,   113,   140,   274,   278,   279,   280,   281,   282,
    4035      134,   134,   134,   134,   134,   134,   309,   110,   110,   110,
    4036      110,   110,   110,   110,   318,   331,   109,   277,   112,   207,
    4037      134,   309,   169,   276,   169,   276,   309,   111,   207,   311,
    4038      173,   134,   207,   110,    40,   111,   115,   225,   249,   250,
    4039      251,   366,   114,   116,   372,   131,   259,   114,   227,   264,
    4040      265,   266,   269,   270,   110,   116,   173,   134,   117,   164,
    4041      134,   224,   227,   263,   362,   370,   303,   304,   109,   149,
    4042      336,   110,   116,   373,   274,   286,   109,   114,   274,   276,
    4043      286,   110,   116,   109,   141,   110,   130,   275,   275,   275,
    4044      145,   164,   276,   275,   112,   134,   110,   116,   110,   109,
    4045      149,   349,   357,   358,   359,   360,   110,   116,   164,   111,
    4046      139,   144,   145,   134,   111,   139,   144,   164,   151,   151,
    4047      151,   152,   152,   153,   153,   154,   154,   154,   154,   155,
    4048      155,   156,   157,   158,   159,   160,   130,   169,   164,   134,
    4049      346,   347,   348,   227,   345,   312,   312,   164,   276,   134,
    4050      271,   134,   225,   350,   363,   227,   231,   112,   112,   134,
    4051      370,   112,   109,   134,   319,   337,   338,   339,   342,   352,
    4052      353,   354,   112,   134,   227,   336,   340,   351,   109,   312,
    4053      355,   373,   312,   312,   373,   109,   312,   355,   312,   312,
    4054      312,   312,   350,   225,   361,   371,   272,   112,   116,   112,
    4055      116,   373,   225,   363,   373,   260,   261,   262,   263,   260,
    4056      260,   272,   164,   134,   111,   274,   130,   116,   372,   278,
    4057      111,   130,   282,    29,   209,   210,   272,   260,   139,   309,
    4058      139,   311,   109,   349,   350,   109,   349,   350,   141,   350,
    4059      173,   264,   110,   110,   110,   110,   112,   173,   207,   173,
    4060      114,   250,   251,   112,   134,   109,   130,   149,   252,   254,
    4061      318,   319,   331,   357,   116,   132,   116,   132,   274,   248,
    4062      274,   115,   162,   163,   258,   135,   135,   139,   222,   135,
    4063      135,   260,   109,   149,   370,   135,   115,   227,   287,   288,
    4064      135,   134,   134,   109,   135,   110,   316,   169,   170,   130,
    4065      132,   111,   141,   200,   201,   202,   110,   116,   110,   110,
    4066      110,   110,   111,   164,   358,   359,   360,   227,   357,   312,
    4067      312,   114,   151,   167,   164,   165,   168,   116,   135,   134,
    4068      110,   116,   164,   134,   115,   162,   130,   264,   110,   110,
    4069      110,   345,   264,   110,   260,   225,   363,   111,   117,   149,
    4070      164,   164,   227,   342,   264,   110,   110,   110,   110,   110,
    4071      110,   110,     7,   227,   336,   340,   351,   134,   134,   373,
    4072      134,   134,   110,   135,   135,   135,   135,   277,   135,   162,
    4073      163,   164,   310,   134,   278,   280,   115,   134,   211,   274,
    4074       40,    41,    43,    46,    47,    48,    49,    50,    51,    52,
    4075       53,    57,    61,    62,    72,   111,   127,   170,   171,   172,
    4076      173,   174,   175,   177,   178,   190,   192,   193,   198,   212,
    4077      308,    29,   135,   131,   277,   134,   134,   110,   135,   173,
    4078      248,   132,   132,   319,   163,   227,   253,   254,   253,   274,
    4079      312,   115,   259,   372,   110,   116,   112,   112,   135,   227,
    4080      116,   373,   290,   110,   286,   215,   217,   225,   298,   299,
    4081      300,   301,   292,   110,   110,   130,   163,   109,   110,   130,
    4082      116,   139,   112,   110,   110,   110,   357,   279,   116,   135,
    4083      168,   112,   139,   146,   147,   145,   135,   146,   162,   167,
    4084      135,   109,   349,   350,   135,   135,   134,   135,   135,   135,
    4085      164,   110,   135,   109,   349,   350,   109,   355,   109,   355,
    4086      350,   226,     7,   117,   135,   164,   264,   264,   263,   267,
    4087      267,   268,   116,   116,   110,   110,   112,    96,   122,   135,
    4088      135,   146,   278,   164,   116,   132,   212,   216,   227,   231,
    4089      109,   109,   171,   109,   109,    72,   132,    72,   132,    72,
    4090      117,   170,   109,   173,   165,   165,   130,   112,   143,   132,
    4091      135,   134,   135,   211,   110,   164,   264,   264,   312,   110,
    4092      115,   252,   115,   134,   110,   134,   135,   309,   115,   134,
    4093      135,   135,   110,   114,   200,   112,   163,   132,   200,   202,
    4094      110,   109,   349,   350,   372,   165,   112,   135,    85,   113,
    4095      116,   135,   112,   135,   110,   134,   110,   110,   112,   112,
    4096      112,   135,   110,   134,   134,   134,   164,   164,   135,   112,
    4097      135,   135,   135,   135,   134,   134,   163,   163,   112,   112,
    4098      135,   135,   274,   227,   169,   169,    47,   169,   134,   132,
    4099      132,   132,   169,   132,   169,    58,    59,    60,   194,   195,
    4100      196,   132,    63,   132,   312,   114,   175,   115,   132,   135,
    4101      135,    96,   269,   270,   110,   299,   116,   132,   116,   132,
    4102      115,   297,   130,   141,   110,   110,   130,   134,   115,   112,
    4103      111,   147,   111,   147,   147,   112,   112,   264,   112,   264,
    4104      264,   264,   135,   135,   112,   112,   110,   110,   112,   116,
    4105       96,   263,    96,   135,   112,   112,   110,   110,   109,   110,
    4106      170,   191,   212,   132,   110,   109,   109,   173,   196,    58,
    4107       59,   164,   171,   144,   110,   110,   114,   134,   134,   298,
    4108      141,   203,   109,   132,   203,   264,   134,   134,   135,   135,
    4109      135,   135,   112,   112,   134,   135,   112,   171,    44,    45,
    4110      114,   181,   182,   183,   169,   171,   135,   110,   170,   114,
    4111      183,    96,   134,    96,   134,   109,   109,   132,   115,   134,
    4112      272,   309,   115,   116,   130,   163,   110,   135,   146,   146,
    4113      110,   110,   110,   110,   267,    42,   163,   179,   180,   310,
    4114      130,   134,   171,   181,   110,   132,   171,   132,   134,   110,
    4115      134,   110,   134,    96,   134,    96,   134,   132,   298,   141,
    4116      139,   204,   110,   132,   110,   135,   135,   171,    96,   116,
    4117      130,   135,   205,   206,   212,   132,   170,   170,   205,   173,
    4118      197,   225,   366,   173,   197,   110,   134,   110,   134,   115,
    4119      110,   116,   112,   112,   163,   179,   182,   184,   185,   134,
    4120      132,   182,   186,   187,   135,   109,   149,   309,   357,   139,
    4121      135,   173,   197,   173,   197,   109,   132,   139,   171,   176,
    4122      115,   182,   212,   170,    56,   176,   189,   115,   182,   110,
    4123      227,   110,   135,   135,   292,   171,   176,   132,   188,   189,
    4124      176,   189,   173,   173,   110,   110,   110,   188,   135,   135,
    4125      173,   173,   135,   135
    4126 };
    4127 
    4128 #define yyerrok         (yyerrstatus = 0)
    4129 #define yyclearin       (yychar = YYEMPTY)
    4130 #define YYEMPTY         (-2)
    4131 #define YYEOF           0
    4132 
    4133 #define YYACCEPT        goto yyacceptlab
    4134 #define YYABORT         goto yyabortlab
    4135 #define YYERROR         goto yyerrorlab
    4136 
    4137 
    4138 /* Like YYERROR except do call yyerror.  This remains here temporarily
    4139    to ease the transition to the new meaning of YYERROR, for GCC.
    4140    Once GCC version 2 has supplanted version 1, this can go.  However,
    4141    YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
    4142    in Bison 2.4.2's NEWS entry, where a plan to phase it out is
    4143    discussed.  */
    4144 
    4145 #define YYFAIL          goto yyerrlab
    4146 #if defined YYFAIL
    4147   /* This is here to suppress warnings from the GCC cpp's
    4148      -Wunused-macros.  Normally we don't worry about that warning, but
    4149      some users do, and we want to make it easy for users to remove
    4150      YYFAIL uses, which will produce warnings from Bison 2.5.  */
    4151 #endif
     3821
     3822#define yyerrok         (yyerrstatus = 0)
     3823#define yyclearin       (yychar = YYEMPTY)
     3824#define YYEMPTY         (-2)
     3825#define YYEOF           0
     3826
     3827#define YYACCEPT        goto yyacceptlab
     3828#define YYABORT         goto yyabortlab
     3829#define YYERROR         goto yyerrorlab
     3830
    41523831
    41533832#define YYRECOVERING()  (!!yyerrstatus)
    41543833
    4155 #define YYBACKUP(Token, Value)                                  \
    4156 do                                                              \
    4157   if (yychar == YYEMPTY && yylen == 1)                          \
    4158     {                                                           \
    4159       yychar = (Token);                                         \
    4160       yylval = (Value);                                         \
    4161       YYPOPSTACK (1);                                           \
    4162       goto yybackup;                                            \
    4163     }                                                           \
    4164   else                                                          \
    4165     {                                                           \
     3834#define YYBACKUP(Token, Value)                                  \
     3835do                                                              \
     3836  if (yychar == YYEMPTY)                                        \
     3837    {                                                           \
     3838      yychar = (Token);                                         \
     3839      yylval = (Value);                                         \
     3840      YYPOPSTACK (yylen);                                       \
     3841      yystate = *yyssp;                                         \
     3842      goto yybackup;                                            \
     3843    }                                                           \
     3844  else                                                          \
     3845    {                                                           \
    41663846      yyerror (YY_("syntax error: cannot back up")); \
    4167       YYERROR;                                                  \
    4168     }                                                           \
    4169 while (YYID (0))
    4170 
    4171 
    4172 #define YYTERROR        1
    4173 #define YYERRCODE       256
    4174 
    4175 
    4176 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
    4177    If N is 0, then set CURRENT to the empty location which ends
    4178    the previous symbol: RHS[0] (always defined).  */
    4179 
    4180 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
    4181 #ifndef YYLLOC_DEFAULT
    4182 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
    4183     do                                                                  \
    4184       if (YYID (N))                                                    \
    4185         {                                                               \
    4186           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
    4187           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
    4188           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
    4189           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
    4190         }                                                               \
    4191       else                                                              \
    4192         {                                                               \
    4193           (Current).first_line   = (Current).last_line   =              \
    4194             YYRHSLOC (Rhs, 0).last_line;                                \
    4195           (Current).first_column = (Current).last_column =              \
    4196             YYRHSLOC (Rhs, 0).last_column;                              \
    4197         }                                                               \
    4198     while (YYID (0))
    4199 #endif
    4200 
    4201 
    4202 /* This macro is provided for backward compatibility. */
    4203 
    4204 #ifndef YY_LOCATION_PRINT
    4205 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
    4206 #endif
    4207 
    4208 
    4209 /* YYLEX -- calling `yylex' with the right arguments.  */
    4210 
    4211 #ifdef YYLEX_PARAM
    4212 # define YYLEX yylex (YYLEX_PARAM)
    4213 #else
    4214 # define YYLEX yylex ()
    4215 #endif
     3847      YYERROR;                                                  \
     3848    }                                                           \
     3849while (0)
     3850
     3851/* Error token number */
     3852#define YYTERROR        1
     3853#define YYERRCODE       256
     3854
     3855
    42163856
    42173857/* Enable debugging if requested.  */
     
    42233863# endif
    42243864
    4225 # define YYDPRINTF(Args)                        \
    4226 do {                                            \
    4227   if (yydebug)                                  \
    4228     YYFPRINTF Args;                             \
    4229 } while (YYID (0))
    4230 
    4231 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
    4232 do {                                                                      \
    4233   if (yydebug)                                                            \
    4234     {                                                                     \
    4235       YYFPRINTF (stderr, "%s ", Title);                                   \
    4236       yy_symbol_print (stderr,                                            \
    4237                   Type, Value); \
    4238       YYFPRINTF (stderr, "\n");                                           \
    4239     }                                                                     \
    4240 } while (YYID (0))
    4241 
    4242 
    4243 /*--------------------------------.
    4244 | Print this symbol on YYOUTPUT.  |
    4245 `--------------------------------*/
    4246 
    4247 /*ARGSUSED*/
    4248 #if (defined __STDC__ || defined __C99__FUNC__ \
    4249      || defined __cplusplus || defined _MSC_VER)
     3865# define YYDPRINTF(Args)                        \
     3866do {                                            \
     3867  if (yydebug)                                  \
     3868    YYFPRINTF Args;                             \
     3869} while (0)
     3870
     3871/* This macro is provided for backward compatibility. */
     3872#ifndef YY_LOCATION_PRINT
     3873# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
     3874#endif
     3875
     3876
     3877# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
     3878do {                                                                      \
     3879  if (yydebug)                                                            \
     3880    {                                                                     \
     3881      YYFPRINTF (stderr, "%s ", Title);                                   \
     3882      yy_symbol_print (stderr,                                            \
     3883                  Type, Value); \
     3884      YYFPRINTF (stderr, "\n");                                           \
     3885    }                                                                     \
     3886} while (0)
     3887
     3888
     3889/*----------------------------------------.
     3890| Print this symbol's value on YYOUTPUT.  |
     3891`----------------------------------------*/
     3892
    42503893static void
    42513894yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
    4252 #else
    4253 static void
    4254 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
    4255     FILE *yyoutput;
    4256     int yytype;
    4257     YYSTYPE const * const yyvaluep;
    4258 #endif
    42593895{
     3896  FILE *yyo = yyoutput;
     3897  YYUSE (yyo);
    42603898  if (!yyvaluep)
    42613899    return;
     
    42633901  if (yytype < YYNTOKENS)
    42643902    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
    4265 # else
    4266   YYUSE (yyoutput);
    42673903# endif
    4268   switch (yytype)
    4269     {
    4270       default:
    4271         break;
    4272     }
     3904  YYUSE (yytype);
    42733905}
    42743906
     
    42783910`--------------------------------*/
    42793911
    4280 #if (defined __STDC__ || defined __C99__FUNC__ \
    4281      || defined __cplusplus || defined _MSC_VER)
    42823912static void
    42833913yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
    4284 #else
    4285 static void
    4286 yy_symbol_print (yyoutput, yytype, yyvaluep)
    4287     FILE *yyoutput;
    4288     int yytype;
    4289     YYSTYPE const * const yyvaluep;
    4290 #endif
    42913914{
    4292   if (yytype < YYNTOKENS)
    4293     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
    4294   else
    4295     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
     3915  YYFPRINTF (yyoutput, "%s %s (",
     3916             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
    42963917
    42973918  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
     
    43043925`------------------------------------------------------------------*/
    43053926
    4306 #if (defined __STDC__ || defined __C99__FUNC__ \
    4307      || defined __cplusplus || defined _MSC_VER)
    43083927static void
    43093928yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
    4310 #else
    4311 static void
    4312 yy_stack_print (yybottom, yytop)
    4313     yytype_int16 *yybottom;
    4314     yytype_int16 *yytop;
    4315 #endif
    43163929{
    43173930  YYFPRINTF (stderr, "Stack now");
     
    43243937}
    43253938
    4326 # define YY_STACK_PRINT(Bottom, Top)                            \
    4327 do {                                                            \
    4328   if (yydebug)                                                  \
    4329     yy_stack_print ((Bottom), (Top));                           \
    4330 } while (YYID (0))
     3939# define YY_STACK_PRINT(Bottom, Top)                            \
     3940do {                                                            \
     3941  if (yydebug)                                                  \
     3942    yy_stack_print ((Bottom), (Top));                           \
     3943} while (0)
    43313944
    43323945
     
    43353948`------------------------------------------------*/
    43363949
    4337 #if (defined __STDC__ || defined __C99__FUNC__ \
    4338      || defined __cplusplus || defined _MSC_VER)
    43393950static void
    4340 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
    4341 #else
    4342 static void
    4343 yy_reduce_print (yyvsp, yyrule)
    4344     YYSTYPE *yyvsp;
    4345     int yyrule;
    4346 #endif
     3951yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
    43473952{
     3953  unsigned long int yylno = yyrline[yyrule];
    43483954  int yynrhs = yyr2[yyrule];
    43493955  int yyi;
    4350   unsigned long int yylno = yyrline[yyrule];
    43513956  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
    4352              yyrule - 1, yylno);
     3957             yyrule - 1, yylno);
    43533958  /* The symbols being reduced.  */
    43543959  for (yyi = 0; yyi < yynrhs; yyi++)
    43553960    {
    43563961      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
    4357       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
    4358                        &(yyvsp[(yyi + 1) - (yynrhs)])
    4359                                        );
     3962      yy_symbol_print (stderr,
     3963                       yystos[yyssp[yyi + 1 - yynrhs]],
     3964                       &(yyvsp[(yyi + 1) - (yynrhs)])
     3965                                              );
    43603966      YYFPRINTF (stderr, "\n");
    43613967    }
    43623968}
    43633969
    4364 # define YY_REDUCE_PRINT(Rule)          \
    4365 do {                                    \
    4366   if (yydebug)                          \
    4367     yy_reduce_print (yyvsp, Rule); \
    4368 } while (YYID (0))
     3970# define YY_REDUCE_PRINT(Rule)          \
     3971do {                                    \
     3972  if (yydebug)                          \
     3973    yy_reduce_print (yyssp, yyvsp, Rule); \
     3974} while (0)
    43693975
    43703976/* Nonzero means print parse trace.  It is left uninitialized so that
     
    43803986
    43813987/* YYINITDEPTH -- initial size of the parser's stacks.  */
    4382 #ifndef YYINITDEPTH
     3988#ifndef YYINITDEPTH
    43833989# define YYINITDEPTH 200
    43843990#endif
     
    44034009#  else
    44044010/* Return the length of YYSTR.  */
    4405 #if (defined __STDC__ || defined __C99__FUNC__ \
    4406      || defined __cplusplus || defined _MSC_VER)
    44074011static YYSIZE_T
    44084012yystrlen (const char *yystr)
    4409 #else
    4410 static YYSIZE_T
    4411 yystrlen (yystr)
    4412     const char *yystr;
    4413 #endif
    44144013{
    44154014  YYSIZE_T yylen;
     
    44274026/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    44284027   YYDEST.  */
    4429 #if (defined __STDC__ || defined __C99__FUNC__ \
    4430      || defined __cplusplus || defined _MSC_VER)
    44314028static char *
    44324029yystpcpy (char *yydest, const char *yysrc)
    4433 #else
    4434 static char *
    4435 yystpcpy (yydest, yysrc)
    4436     char *yydest;
    4437     const char *yysrc;
    4438 #endif
    44394030{
    44404031  char *yyd = yydest;
     
    44664057
    44674058      for (;;)
    4468         switch (*++yyp)
    4469           {
    4470           case '\'':
    4471           case ',':
    4472             goto do_not_strip_quotes;
    4473 
    4474           case '\\':
    4475             if (*++yyp != '\\')
    4476               goto do_not_strip_quotes;
    4477             /* Fall through.  */
    4478           default:
    4479             if (yyres)
    4480               yyres[yyn] = *yyp;
    4481             yyn++;
    4482             break;
    4483 
    4484           case '"':
    4485             if (yyres)
    4486               yyres[yyn] = '\0';
    4487             return yyn;
    4488           }
     4059        switch (*++yyp)
     4060          {
     4061          case '\'':
     4062          case ',':
     4063            goto do_not_strip_quotes;
     4064
     4065          case '\\':
     4066            if (*++yyp != '\\')
     4067              goto do_not_strip_quotes;
     4068            /* Fall through.  */
     4069          default:
     4070            if (yyres)
     4071              yyres[yyn] = *yyp;
     4072            yyn++;
     4073            break;
     4074
     4075          case '"':
     4076            if (yyres)
     4077              yyres[yyn] = '\0';
     4078            return yyn;
     4079          }
    44894080    do_not_strip_quotes: ;
    44904081    }
     
    45094100                yytype_int16 *yyssp, int yytoken)
    45104101{
    4511   YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
     4102  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
    45124103  YYSIZE_T yysize = yysize0;
    4513   YYSIZE_T yysize1;
    45144104  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
    45154105  /* Internationalized format string. */
    4516   const char *yyformat = 0;
     4106  const char *yyformat = YY_NULLPTR;
    45174107  /* Arguments of yyformat. */
    45184108  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
     
    45224112
    45234113  /* There are many possibilities here to consider:
    4524      - Assume YYFAIL is not used.  It's too flawed to consider.  See
    4525        <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
    4526        for details.  YYERROR is fine as it does not invoke this
    4527        function.
    45284114     - If this state is a consistent state with a default action, then
    45294115       the only way this function was invoked is if the default action
     
    45744160                  }
    45754161                yyarg[yycount++] = yytname[yyx];
    4576                 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
    4577                 if (! (yysize <= yysize1
    4578                        && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
    4579                   return 2;
    4580                 yysize = yysize1;
     4162                {
     4163                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
     4164                  if (! (yysize <= yysize1
     4165                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
     4166                    return 2;
     4167                  yysize = yysize1;
     4168                }
    45814169              }
    45824170        }
     
    45984186    }
    45994187
    4600   yysize1 = yysize + yystrlen (yyformat);
    4601   if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
    4602     return 2;
    4603   yysize = yysize1;
     4188  {
     4189    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
     4190    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
     4191      return 2;
     4192    yysize = yysize1;
     4193  }
    46044194
    46054195  if (*yymsg_alloc < yysize)
     
    46384228`-----------------------------------------------*/
    46394229
    4640 /*ARGSUSED*/
    4641 #if (defined __STDC__ || defined __C99__FUNC__ \
    4642      || defined __cplusplus || defined _MSC_VER)
    46434230static void
    46444231yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
    4645 #else
    4646 static void
    4647 yydestruct (yymsg, yytype, yyvaluep)
    4648     const char *yymsg;
    4649     int yytype;
    4650     YYSTYPE *yyvaluep;
    4651 #endif
    46524232{
    46534233  YYUSE (yyvaluep);
    4654 
    46554234  if (!yymsg)
    46564235    yymsg = "Deleting";
    46574236  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
    46584237
    4659   switch (yytype)
    4660     {
    4661 
    4662       default:
    4663         break;
    4664     }
     4238  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     4239  YYUSE (yytype);
     4240  YY_IGNORE_MAYBE_UNINITIALIZED_END
    46654241}
    46664242
    46674243
    4668 /* Prevent warnings from -Wmissing-prototypes.  */
    4669 #ifdef YYPARSE_PARAM
    4670 #if defined __STDC__ || defined __cplusplus
    4671 int yyparse (void *YYPARSE_PARAM);
    4672 #else
    4673 int yyparse ();
    4674 #endif
    4675 #else /* ! YYPARSE_PARAM */
    4676 #if defined __STDC__ || defined __cplusplus
    4677 int yyparse (void);
    4678 #else
    4679 int yyparse ();
    4680 #endif
    4681 #endif /* ! YYPARSE_PARAM */
    46824244
    46834245
     
    46874249/* The semantic value of the lookahead symbol.  */
    46884250YYSTYPE yylval;
    4689 
    46904251/* Number of syntax errors so far.  */
    46914252int yynerrs;
     
    46964257`----------*/
    46974258
    4698 #ifdef YYPARSE_PARAM
    4699 #if (defined __STDC__ || defined __C99__FUNC__ \
    4700      || defined __cplusplus || defined _MSC_VER)
    4701 int
    4702 yyparse (void *YYPARSE_PARAM)
    4703 #else
    4704 int
    4705 yyparse (YYPARSE_PARAM)
    4706     void *YYPARSE_PARAM;
    4707 #endif
    4708 #else /* ! YYPARSE_PARAM */
    4709 #if (defined __STDC__ || defined __C99__FUNC__ \
    4710      || defined __cplusplus || defined _MSC_VER)
    47114259int
    47124260yyparse (void)
    4713 #else
    4714 int
    4715 yyparse ()
    4716 
    4717 #endif
    4718 #endif
    47194261{
    47204262    int yystate;
     
    47234265
    47244266    /* The stacks and their tools:
    4725        `yyss': related to states.
    4726        `yyvs': related to semantic values.
    4727 
    4728        Refer to the stacks thru separate pointers, to allow yyoverflow
     4267       'yyss': related to states.
     4268       'yyvs': related to semantic values.
     4269
     4270       Refer to the stacks through separate pointers, to allow yyoverflow
    47294271       to reallocate them elsewhere.  */
    47304272
     
    47444286  int yyresult;
    47454287  /* Lookahead token as an internal (translated) token number.  */
    4746   int yytoken;
     4288  int yytoken = 0;
    47474289  /* The variables used to return semantic value and location from the
    47484290     action routines.  */
     
    47624304  int yylen = 0;
    47634305
    4764   yytoken = 0;
    4765   yyss = yyssa;
    4766   yyvs = yyvsa;
     4306  yyssp = yyss = yyssa;
     4307  yyvsp = yyvs = yyvsa;
    47674308  yystacksize = YYINITDEPTH;
    47684309
     
    47734314  yynerrs = 0;
    47744315  yychar = YYEMPTY; /* Cause a token to be read.  */
    4775 
    4776   /* Initialize stack pointers.
    4777      Waste one element of value and location stack
    4778      so that they stay on the same level as the state stack.
    4779      The wasted elements are never initialized.  */
    4780   yyssp = yyss;
    4781   yyvsp = yyvs;
    4782 
    47834316  goto yysetstate;
    47844317
     
    48014334#ifdef yyoverflow
    48024335      {
    4803         /* Give user a chance to reallocate the stack.  Use copies of
    4804            these so that the &'s don't force the real ones into
    4805            memory.  */
    4806         YYSTYPE *yyvs1 = yyvs;
    4807         yytype_int16 *yyss1 = yyss;
    4808 
    4809         /* Each stack pointer address is followed by the size of the
    4810            data in use in that stack, in bytes.  This used to be a
    4811            conditional around just the two extra args, but that might
    4812            be undefined if yyoverflow is a macro.  */
    4813         yyoverflow (YY_("memory exhausted"),
    4814                     &yyss1, yysize * sizeof (*yyssp),
    4815                     &yyvs1, yysize * sizeof (*yyvsp),
    4816                     &yystacksize);
    4817 
    4818         yyss = yyss1;
    4819         yyvs = yyvs1;
     4336        /* Give user a chance to reallocate the stack.  Use copies of
     4337           these so that the &'s don't force the real ones into
     4338           memory.  */
     4339        YYSTYPE *yyvs1 = yyvs;
     4340        yytype_int16 *yyss1 = yyss;
     4341
     4342        /* Each stack pointer address is followed by the size of the
     4343           data in use in that stack, in bytes.  This used to be a
     4344           conditional around just the two extra args, but that might
     4345           be undefined if yyoverflow is a macro.  */
     4346        yyoverflow (YY_("memory exhausted"),
     4347                    &yyss1, yysize * sizeof (*yyssp),
     4348                    &yyvs1, yysize * sizeof (*yyvsp),
     4349                    &yystacksize);
     4350
     4351        yyss = yyss1;
     4352        yyvs = yyvs1;
    48204353      }
    48214354#else /* no yyoverflow */
     
    48254358      /* Extend the stack our own way.  */
    48264359      if (YYMAXDEPTH <= yystacksize)
    4827         goto yyexhaustedlab;
     4360        goto yyexhaustedlab;
    48284361      yystacksize *= 2;
    48294362      if (YYMAXDEPTH < yystacksize)
    4830         yystacksize = YYMAXDEPTH;
     4363        yystacksize = YYMAXDEPTH;
    48314364
    48324365      {
    4833         yytype_int16 *yyss1 = yyss;
    4834         union yyalloc *yyptr =
    4835           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
    4836         if (! yyptr)
    4837           goto yyexhaustedlab;
    4838         YYSTACK_RELOCATE (yyss_alloc, yyss);
    4839         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
     4366        yytype_int16 *yyss1 = yyss;
     4367        union yyalloc *yyptr =
     4368          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
     4369        if (! yyptr)
     4370          goto yyexhaustedlab;
     4371        YYSTACK_RELOCATE (yyss_alloc, yyss);
     4372        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
    48404373#  undef YYSTACK_RELOCATE
    4841         if (yyss1 != yyssa)
    4842           YYSTACK_FREE (yyss1);
     4374        if (yyss1 != yyssa)
     4375          YYSTACK_FREE (yyss1);
    48434376      }
    48444377# endif
     
    48494382
    48504383      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
    4851                   (unsigned long int) yystacksize));
     4384                  (unsigned long int) yystacksize));
    48524385
    48534386      if (yyss + yystacksize - 1 <= yyssp)
    4854         YYABORT;
     4387        YYABORT;
    48554388    }
    48564389
     
    48814414    {
    48824415      YYDPRINTF ((stderr, "Reading a token: "));
    4883       yychar = YYLEX;
     4416      yychar = yylex ();
    48844417    }
    48854418
     
    49214454
    49224455  yystate = yyn;
     4456  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    49234457  *++yyvsp = yylval;
     4458  YY_IGNORE_MAYBE_UNINITIALIZED_END
    49244459
    49254460  goto yynewstate;
     
    49444479
    49454480  /* If YYLEN is nonzero, implement the default value of the action:
    4946      `$$ = $1'.
     4481     '$$ = $1'.
    49474482
    49484483     Otherwise, the following line sets YYVAL to garbage.
     
    49584493    {
    49594494        case 2:
    4960 
    4961 /* Line 1806 of yacc.c  */
    4962 #line 298 "parser.yy"
     4495#line 298 "parser.yy" /* yacc.c:1646  */
    49634496    {
    49644497                        typedefTable.enterScope();
    49654498                }
     4499#line 4500 "Parser/parser.cc" /* yacc.c:1646  */
    49664500    break;
    49674501
    49684502  case 3:
    4969 
    4970 /* Line 1806 of yacc.c  */
    4971 #line 304 "parser.yy"
     4503#line 304 "parser.yy" /* yacc.c:1646  */
    49724504    {
    49734505                        typedefTable.leaveScope();
    49744506                }
     4507#line 4508 "Parser/parser.cc" /* yacc.c:1646  */
    49754508    break;
    49764509
    49774510  case 4:
    4978 
    4979 /* Line 1806 of yacc.c  */
    4980 #line 313 "parser.yy"
    4981     { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
     4511#line 313 "parser.yy" /* yacc.c:1646  */
     4512    { (yyval.en) = new ExpressionNode( build_constantInteger( assign_strptr((yyvsp[0].tok)) ) ); }
     4513#line 4514 "Parser/parser.cc" /* yacc.c:1646  */
    49824514    break;
    49834515
    49844516  case 5:
    4985 
    4986 /* Line 1806 of yacc.c  */
    4987 #line 314 "parser.yy"
    4988     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     4517#line 314 "parser.yy" /* yacc.c:1646  */
     4518    { (yyval.en) = new ExpressionNode( build_constantFloat( assign_strptr((yyvsp[0].tok)) ) ); }
     4519#line 4520 "Parser/parser.cc" /* yacc.c:1646  */
    49894520    break;
    49904521
    49914522  case 6:
    4992 
    4993 /* Line 1806 of yacc.c  */
    4994 #line 315 "parser.yy"
    4995     { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
     4523#line 315 "parser.yy" /* yacc.c:1646  */
     4524    { (yyval.en) = new ExpressionNode( build_constantChar( assign_strptr((yyvsp[0].tok)) ) ); }
     4525#line 4526 "Parser/parser.cc" /* yacc.c:1646  */
    49964526    break;
    49974527
    49984528  case 16:
    4999 
    5000 /* Line 1806 of yacc.c  */
    5001 #line 340 "parser.yy"
    5002     { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].tok) ); }
     4529#line 340 "parser.yy" /* yacc.c:1646  */
     4530    { (yyval.constant) = build_constantStr( assign_strptr((yyvsp[0].tok)) ); }
     4531#line 4532 "Parser/parser.cc" /* yacc.c:1646  */
    50034532    break;
    50044533
    50054534  case 17:
    5006 
    5007 /* Line 1806 of yacc.c  */
    5008 #line 342 "parser.yy"
    5009     {
    5010                         appendStr( (yyvsp[(1) - (2)].constant)->get_constant()->get_value(), (yyvsp[(2) - (2)].tok) );
    5011                         delete (yyvsp[(2) - (2)].tok);                                                                  // allocated by lexer
    5012                         (yyval.constant) = (yyvsp[(1) - (2)].constant);
     4535#line 342 "parser.yy" /* yacc.c:1646  */
     4536    {
     4537                        appendStr( (yyvsp[-1].constant)->get_constant()->get_value(), (yyvsp[0].tok) );
     4538                        delete (yyvsp[0].tok);                                                                  // allocated by lexer
     4539                        (yyval.constant) = (yyvsp[-1].constant);
    50134540                }
     4541#line 4542 "Parser/parser.cc" /* yacc.c:1646  */
    50144542    break;
    50154543
    50164544  case 18:
    5017 
    5018 /* Line 1806 of yacc.c  */
    5019 #line 353 "parser.yy"
    5020     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     4545#line 353 "parser.yy" /* yacc.c:1646  */
     4546    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     4547#line 4548 "Parser/parser.cc" /* yacc.c:1646  */
    50214548    break;
    50224549
    50234550  case 19:
    5024 
    5025 /* Line 1806 of yacc.c  */
    5026 #line 355 "parser.yy"
    5027     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     4551#line 355 "parser.yy" /* yacc.c:1646  */
     4552    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     4553#line 4554 "Parser/parser.cc" /* yacc.c:1646  */
    50284554    break;
    50294555
    50304556  case 20:
    5031 
    5032 /* Line 1806 of yacc.c  */
    5033 #line 357 "parser.yy"
    5034     { (yyval.en) = (yyvsp[(2) - (3)].en); }
     4557#line 357 "parser.yy" /* yacc.c:1646  */
     4558    { (yyval.en) = (yyvsp[-1].en); }
     4559#line 4560 "Parser/parser.cc" /* yacc.c:1646  */
    50354560    break;
    50364561
    50374562  case 21:
    5038 
    5039 /* Line 1806 of yacc.c  */
    5040 #line 359 "parser.yy"
    5041     { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
     4563#line 359 "parser.yy" /* yacc.c:1646  */
     4564    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[-1].sn) ) ); }
     4565#line 4566 "Parser/parser.cc" /* yacc.c:1646  */
    50424566    break;
    50434567
    50444568  case 23:
    5045 
    5046 /* Line 1806 of yacc.c  */
    5047 #line 369 "parser.yy"
    5048     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
     4569#line 369 "parser.yy" /* yacc.c:1646  */
     4570    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[-5].en), (yyvsp[-2].en) ) ); }
     4571#line 4572 "Parser/parser.cc" /* yacc.c:1646  */
    50494572    break;
    50504573
    50514574  case 24:
    5052 
    5053 /* Line 1806 of yacc.c  */
    5054 #line 371 "parser.yy"
    5055     { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
     4575#line 371 "parser.yy" /* yacc.c:1646  */
     4576    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[-3].en), (yyvsp[-1].en) ) ); }
     4577#line 4578 "Parser/parser.cc" /* yacc.c:1646  */
    50564578    break;
    50574579
    50584580  case 25:
    5059 
    5060 /* Line 1806 of yacc.c  */
    5061 #line 375 "parser.yy"
    5062     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     4581#line 375 "parser.yy" /* yacc.c:1646  */
     4582    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
     4583#line 4584 "Parser/parser.cc" /* yacc.c:1646  */
    50634584    break;
    50644585
    50654586  case 27:
    5066 
    5067 /* Line 1806 of yacc.c  */
    5068 #line 378 "parser.yy"
    5069     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     4587#line 378 "parser.yy" /* yacc.c:1646  */
     4588    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
     4589#line 4590 "Parser/parser.cc" /* yacc.c:1646  */
    50704590    break;
    50714591
    50724592  case 29:
    5073 
    5074 /* Line 1806 of yacc.c  */
    5075 #line 381 "parser.yy"
    5076     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
     4593#line 381 "parser.yy" /* yacc.c:1646  */
     4594    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[-1].en) ) ); }
     4595#line 4596 "Parser/parser.cc" /* yacc.c:1646  */
    50774596    break;
    50784597
    50794598  case 30:
    5080 
    5081 /* Line 1806 of yacc.c  */
    5082 #line 383 "parser.yy"
    5083     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
     4599#line 383 "parser.yy" /* yacc.c:1646  */
     4600    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[-1].en) ) ); }
     4601#line 4602 "Parser/parser.cc" /* yacc.c:1646  */
    50844602    break;
    50854603
    50864604  case 31:
    5087 
    5088 /* Line 1806 of yacc.c  */
    5089 #line 385 "parser.yy"
    5090     { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
     4605#line 385 "parser.yy" /* yacc.c:1646  */
     4606    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[-5].decl), new InitializerNode( (yyvsp[-2].in), true ) ) ); }
     4607#line 4608 "Parser/parser.cc" /* yacc.c:1646  */
    50914608    break;
    50924609
    50934610  case 32:
    5094 
    5095 /* Line 1806 of yacc.c  */
    5096 #line 387 "parser.yy"
     4611#line 387 "parser.yy" /* yacc.c:1646  */
    50974612    {
    50984613                        Token fn;
    50994614                        fn.str = new std::string( "?{}" ); // location undefined
    5100                         (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) );
     4615                        (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-3].en) )->set_last( (yyvsp[-1].en) ) ) );
    51014616                }
     4617#line 4618 "Parser/parser.cc" /* yacc.c:1646  */
    51024618    break;
    51034619
    51044620  case 34:
    5105 
    5106 /* Line 1806 of yacc.c  */
    5107 #line 397 "parser.yy"
    5108     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     4621#line 397 "parser.yy" /* yacc.c:1646  */
     4622    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
     4623#line 4624 "Parser/parser.cc" /* yacc.c:1646  */
    51094624    break;
    51104625
    51114626  case 35:
    5112 
    5113 /* Line 1806 of yacc.c  */
    5114 #line 402 "parser.yy"
     4627#line 402 "parser.yy" /* yacc.c:1646  */
    51154628    { (yyval.en) = 0; }
     4629#line 4630 "Parser/parser.cc" /* yacc.c:1646  */
    51164630    break;
    51174631
    51184632  case 38:
    5119 
    5120 /* Line 1806 of yacc.c  */
    5121 #line 408 "parser.yy"
    5122     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     4633#line 408 "parser.yy" /* yacc.c:1646  */
     4634    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
     4635#line 4636 "Parser/parser.cc" /* yacc.c:1646  */
    51234636    break;
    51244637
    51254638  case 39:
    5126 
    5127 /* Line 1806 of yacc.c  */
    5128 #line 413 "parser.yy"
    5129     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     4639#line 413 "parser.yy" /* yacc.c:1646  */
     4640    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     4641#line 4642 "Parser/parser.cc" /* yacc.c:1646  */
    51304642    break;
    51314643
    51324644  case 40:
    5133 
    5134 /* Line 1806 of yacc.c  */
    5135 #line 417 "parser.yy"
    5136     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     4645#line 417 "parser.yy" /* yacc.c:1646  */
     4646    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); }
     4647#line 4648 "Parser/parser.cc" /* yacc.c:1646  */
    51374648    break;
    51384649
    51394650  case 41:
    5140 
    5141 /* Line 1806 of yacc.c  */
    5142 #line 419 "parser.yy"
    5143     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     4651#line 419 "parser.yy" /* yacc.c:1646  */
     4652    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); }
     4653#line 4654 "Parser/parser.cc" /* yacc.c:1646  */
    51444654    break;
    51454655
    51464656  case 42:
    5147 
    5148 /* Line 1806 of yacc.c  */
    5149 #line 421 "parser.yy"
    5150     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     4657#line 421 "parser.yy" /* yacc.c:1646  */
     4658    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); }
     4659#line 4660 "Parser/parser.cc" /* yacc.c:1646  */
    51514660    break;
    51524661
    51534662  case 43:
    5154 
    5155 /* Line 1806 of yacc.c  */
    5156 #line 423 "parser.yy"
    5157     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     4663#line 423 "parser.yy" /* yacc.c:1646  */
     4664    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); }
     4665#line 4666 "Parser/parser.cc" /* yacc.c:1646  */
    51584666    break;
    51594667
    51604668  case 45:
    5161 
    5162 /* Line 1806 of yacc.c  */
    5163 #line 431 "parser.yy"
    5164     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     4669#line 431 "parser.yy" /* yacc.c:1646  */
     4670    { (yyval.en) = (yyvsp[0].en); }
     4671#line 4672 "Parser/parser.cc" /* yacc.c:1646  */
    51654672    break;
    51664673
    51674674  case 46:
    5168 
    5169 /* Line 1806 of yacc.c  */
    5170 #line 433 "parser.yy"
    5171     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     4675#line 433 "parser.yy" /* yacc.c:1646  */
     4676    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
     4677#line 4678 "Parser/parser.cc" /* yacc.c:1646  */
    51724678    break;
    51734679
    51744680  case 47:
    5175 
    5176 /* Line 1806 of yacc.c  */
    5177 #line 435 "parser.yy"
    5178     { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     4681#line 435 "parser.yy" /* yacc.c:1646  */
     4682    { (yyval.en) = (yyvsp[0].en)->set_extension( true ); }
     4683#line 4684 "Parser/parser.cc" /* yacc.c:1646  */
    51794684    break;
    51804685
    51814686  case 48:
    5182 
    5183 /* Line 1806 of yacc.c  */
    5184 #line 440 "parser.yy"
    5185     {
    5186                         switch ( (yyvsp[(1) - (2)].op) ) {
     4687#line 440 "parser.yy" /* yacc.c:1646  */
     4688    {
     4689                        switch ( (yyvsp[-1].op) ) {
    51874690                          case OperKinds::AddressOf:
    5188                                 (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[(2) - (2)].en) ) );
     4691                                (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[0].en) ) );
    51894692                                break;
    51904693                          case OperKinds::PointTo:
    5191                                 (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) );
     4694                                (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) );
    51924695                                break;
    51934696                          default:
     
    51954698                        }
    51964699                }
     4700#line 4701 "Parser/parser.cc" /* yacc.c:1646  */
    51974701    break;
    51984702
    51994703  case 49:
    5200 
    5201 /* Line 1806 of yacc.c  */
    5202 #line 453 "parser.yy"
    5203     { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     4704#line 453 "parser.yy" /* yacc.c:1646  */
     4705    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) ); }
     4706#line 4707 "Parser/parser.cc" /* yacc.c:1646  */
    52044707    break;
    52054708
    52064709  case 50:
    5207 
    5208 /* Line 1806 of yacc.c  */
    5209 #line 455 "parser.yy"
    5210     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     4710#line 455 "parser.yy" /* yacc.c:1646  */
     4711    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[0].en) ) ); }
     4712#line 4713 "Parser/parser.cc" /* yacc.c:1646  */
    52114713    break;
    52124714
    52134715  case 51:
    5214 
    5215 /* Line 1806 of yacc.c  */
    5216 #line 457 "parser.yy"
    5217     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     4716#line 457 "parser.yy" /* yacc.c:1646  */
     4717    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[0].en) ) ); }
     4718#line 4719 "Parser/parser.cc" /* yacc.c:1646  */
    52184719    break;
    52194720
    52204721  case 52:
    5221 
    5222 /* Line 1806 of yacc.c  */
    5223 #line 459 "parser.yy"
    5224     { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     4722#line 459 "parser.yy" /* yacc.c:1646  */
     4723    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[0].en) ) ); }
     4724#line 4725 "Parser/parser.cc" /* yacc.c:1646  */
    52254725    break;
    52264726
    52274727  case 53:
    5228 
    5229 /* Line 1806 of yacc.c  */
    5230 #line 461 "parser.yy"
    5231     { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
     4728#line 461 "parser.yy" /* yacc.c:1646  */
     4729    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[-1].decl) ) ); }
     4730#line 4731 "Parser/parser.cc" /* yacc.c:1646  */
    52324731    break;
    52334732
    52344733  case 54:
    5235 
    5236 /* Line 1806 of yacc.c  */
    5237 #line 463 "parser.yy"
    5238     { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     4734#line 463 "parser.yy" /* yacc.c:1646  */
     4735    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[0].en) ) ); }
     4736#line 4737 "Parser/parser.cc" /* yacc.c:1646  */
    52394737    break;
    52404738
    52414739  case 55:
    5242 
    5243 /* Line 1806 of yacc.c  */
    5244 #line 465 "parser.yy"
    5245     { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
     4740#line 465 "parser.yy" /* yacc.c:1646  */
     4741    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[-1].decl) ) ); }
     4742#line 4743 "Parser/parser.cc" /* yacc.c:1646  */
    52464743    break;
    52474744
    52484745  case 56:
    5249 
    5250 /* Line 1806 of yacc.c  */
    5251 #line 467 "parser.yy"
    5252     { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
     4746#line 467 "parser.yy" /* yacc.c:1646  */
     4747    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[-3].decl), build_varref( (yyvsp[-1].tok) ) ) ); }
     4748#line 4749 "Parser/parser.cc" /* yacc.c:1646  */
    52534749    break;
    52544750
    52554751  case 57:
    5256 
    5257 /* Line 1806 of yacc.c  */
    5258 #line 469 "parser.yy"
    5259     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
     4752#line 469 "parser.yy" /* yacc.c:1646  */
     4753    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[0].tok) ), nullptr ) ); }
     4754#line 4755 "Parser/parser.cc" /* yacc.c:1646  */
    52604755    break;
    52614756
    52624757  case 58:
    5263 
    5264 /* Line 1806 of yacc.c  */
    5265 #line 471 "parser.yy"
    5266     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
     4758#line 471 "parser.yy" /* yacc.c:1646  */
     4759    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].en) ) ); }
     4760#line 4761 "Parser/parser.cc" /* yacc.c:1646  */
    52674761    break;
    52684762
    52694763  case 59:
    5270 
    5271 /* Line 1806 of yacc.c  */
    5272 #line 473 "parser.yy"
    5273     { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
     4764#line 473 "parser.yy" /* yacc.c:1646  */
     4765    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].decl) ) ); }
     4766#line 4767 "Parser/parser.cc" /* yacc.c:1646  */
    52744767    break;
    52754768
    52764769  case 60:
    5277 
    5278 /* Line 1806 of yacc.c  */
    5279 #line 479 "parser.yy"
     4770#line 479 "parser.yy" /* yacc.c:1646  */
    52804771    { (yyval.op) = OperKinds::PointTo; }
     4772#line 4773 "Parser/parser.cc" /* yacc.c:1646  */
    52814773    break;
    52824774
    52834775  case 61:
    5284 
    5285 /* Line 1806 of yacc.c  */
    5286 #line 480 "parser.yy"
     4776#line 480 "parser.yy" /* yacc.c:1646  */
    52874777    { (yyval.op) = OperKinds::AddressOf; }
     4778#line 4779 "Parser/parser.cc" /* yacc.c:1646  */
    52884779    break;
    52894780
    52904781  case 62:
    5291 
    5292 /* Line 1806 of yacc.c  */
    5293 #line 486 "parser.yy"
     4782#line 486 "parser.yy" /* yacc.c:1646  */
    52944783    { (yyval.op) = OperKinds::UnPlus; }
     4784#line 4785 "Parser/parser.cc" /* yacc.c:1646  */
    52954785    break;
    52964786
    52974787  case 63:
    5298 
    5299 /* Line 1806 of yacc.c  */
    5300 #line 487 "parser.yy"
     4788#line 487 "parser.yy" /* yacc.c:1646  */
    53014789    { (yyval.op) = OperKinds::UnMinus; }
     4790#line 4791 "Parser/parser.cc" /* yacc.c:1646  */
    53024791    break;
    53034792
    53044793  case 64:
    5305 
    5306 /* Line 1806 of yacc.c  */
    5307 #line 488 "parser.yy"
     4794#line 488 "parser.yy" /* yacc.c:1646  */
    53084795    { (yyval.op) = OperKinds::Neg; }
     4796#line 4797 "Parser/parser.cc" /* yacc.c:1646  */
    53094797    break;
    53104798
    53114799  case 65:
    5312 
    5313 /* Line 1806 of yacc.c  */
    5314 #line 489 "parser.yy"
     4800#line 489 "parser.yy" /* yacc.c:1646  */
    53154801    { (yyval.op) = OperKinds::BitNeg; }
     4802#line 4803 "Parser/parser.cc" /* yacc.c:1646  */
    53164803    break;
    53174804
    53184805  case 67:
    5319 
    5320 /* Line 1806 of yacc.c  */
    5321 #line 495 "parser.yy"
    5322     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     4806#line 495 "parser.yy" /* yacc.c:1646  */
     4807    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
     4808#line 4809 "Parser/parser.cc" /* yacc.c:1646  */
    53234809    break;
    53244810
    53254811  case 68:
    5326 
    5327 /* Line 1806 of yacc.c  */
    5328 #line 497 "parser.yy"
    5329     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     4812#line 497 "parser.yy" /* yacc.c:1646  */
     4813    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
     4814#line 4815 "Parser/parser.cc" /* yacc.c:1646  */
    53304815    break;
    53314816
    53324817  case 70:
    5333 
    5334 /* Line 1806 of yacc.c  */
    5335 #line 503 "parser.yy"
    5336     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4818#line 503 "parser.yy" /* yacc.c:1646  */
     4819    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4820#line 4821 "Parser/parser.cc" /* yacc.c:1646  */
    53374821    break;
    53384822
    53394823  case 71:
    5340 
    5341 /* Line 1806 of yacc.c  */
    5342 #line 505 "parser.yy"
    5343     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4824#line 505 "parser.yy" /* yacc.c:1646  */
     4825    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4826#line 4827 "Parser/parser.cc" /* yacc.c:1646  */
    53444827    break;
    53454828
    53464829  case 72:
    5347 
    5348 /* Line 1806 of yacc.c  */
    5349 #line 507 "parser.yy"
    5350     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4830#line 507 "parser.yy" /* yacc.c:1646  */
     4831    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4832#line 4833 "Parser/parser.cc" /* yacc.c:1646  */
    53514833    break;
    53524834
    53534835  case 74:
    5354 
    5355 /* Line 1806 of yacc.c  */
    5356 #line 513 "parser.yy"
    5357     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4836#line 513 "parser.yy" /* yacc.c:1646  */
     4837    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4838#line 4839 "Parser/parser.cc" /* yacc.c:1646  */
    53584839    break;
    53594840
    53604841  case 75:
    5361 
    5362 /* Line 1806 of yacc.c  */
    5363 #line 515 "parser.yy"
    5364     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4842#line 515 "parser.yy" /* yacc.c:1646  */
     4843    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4844#line 4845 "Parser/parser.cc" /* yacc.c:1646  */
    53654845    break;
    53664846
    53674847  case 77:
    5368 
    5369 /* Line 1806 of yacc.c  */
    5370 #line 521 "parser.yy"
    5371     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4848#line 521 "parser.yy" /* yacc.c:1646  */
     4849    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4850#line 4851 "Parser/parser.cc" /* yacc.c:1646  */
    53724851    break;
    53734852
    53744853  case 78:
    5375 
    5376 /* Line 1806 of yacc.c  */
    5377 #line 523 "parser.yy"
    5378     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4854#line 523 "parser.yy" /* yacc.c:1646  */
     4855    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4856#line 4857 "Parser/parser.cc" /* yacc.c:1646  */
    53794857    break;
    53804858
    53814859  case 80:
    5382 
    5383 /* Line 1806 of yacc.c  */
    5384 #line 529 "parser.yy"
    5385     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4860#line 529 "parser.yy" /* yacc.c:1646  */
     4861    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4862#line 4863 "Parser/parser.cc" /* yacc.c:1646  */
    53864863    break;
    53874864
    53884865  case 81:
    5389 
    5390 /* Line 1806 of yacc.c  */
    5391 #line 531 "parser.yy"
    5392     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4866#line 531 "parser.yy" /* yacc.c:1646  */
     4867    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4868#line 4869 "Parser/parser.cc" /* yacc.c:1646  */
    53934869    break;
    53944870
    53954871  case 82:
    5396 
    5397 /* Line 1806 of yacc.c  */
    5398 #line 533 "parser.yy"
    5399     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4872#line 533 "parser.yy" /* yacc.c:1646  */
     4873    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4874#line 4875 "Parser/parser.cc" /* yacc.c:1646  */
    54004875    break;
    54014876
    54024877  case 83:
    5403 
    5404 /* Line 1806 of yacc.c  */
    5405 #line 535 "parser.yy"
    5406     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4878#line 535 "parser.yy" /* yacc.c:1646  */
     4879    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4880#line 4881 "Parser/parser.cc" /* yacc.c:1646  */
    54074881    break;
    54084882
    54094883  case 85:
    5410 
    5411 /* Line 1806 of yacc.c  */
    5412 #line 541 "parser.yy"
    5413     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4884#line 541 "parser.yy" /* yacc.c:1646  */
     4885    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4886#line 4887 "Parser/parser.cc" /* yacc.c:1646  */
    54144887    break;
    54154888
    54164889  case 86:
    5417 
    5418 /* Line 1806 of yacc.c  */
    5419 #line 543 "parser.yy"
    5420     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4890#line 543 "parser.yy" /* yacc.c:1646  */
     4891    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4892#line 4893 "Parser/parser.cc" /* yacc.c:1646  */
    54214893    break;
    54224894
    54234895  case 88:
    5424 
    5425 /* Line 1806 of yacc.c  */
    5426 #line 549 "parser.yy"
    5427     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4896#line 549 "parser.yy" /* yacc.c:1646  */
     4897    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4898#line 4899 "Parser/parser.cc" /* yacc.c:1646  */
    54284899    break;
    54294900
    54304901  case 90:
    5431 
    5432 /* Line 1806 of yacc.c  */
    5433 #line 555 "parser.yy"
    5434     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4902#line 555 "parser.yy" /* yacc.c:1646  */
     4903    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4904#line 4905 "Parser/parser.cc" /* yacc.c:1646  */
    54354905    break;
    54364906
    54374907  case 92:
    5438 
    5439 /* Line 1806 of yacc.c  */
    5440 #line 561 "parser.yy"
    5441     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4908#line 561 "parser.yy" /* yacc.c:1646  */
     4909    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4910#line 4911 "Parser/parser.cc" /* yacc.c:1646  */
    54424911    break;
    54434912
    54444913  case 94:
    5445 
    5446 /* Line 1806 of yacc.c  */
    5447 #line 567 "parser.yy"
    5448     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     4914#line 567 "parser.yy" /* yacc.c:1646  */
     4915    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), true ) ); }
     4916#line 4917 "Parser/parser.cc" /* yacc.c:1646  */
    54494917    break;
    54504918
    54514919  case 96:
    5452 
    5453 /* Line 1806 of yacc.c  */
    5454 #line 573 "parser.yy"
    5455     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
     4920#line 573 "parser.yy" /* yacc.c:1646  */
     4921    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), false ) ); }
     4922#line 4923 "Parser/parser.cc" /* yacc.c:1646  */
    54564923    break;
    54574924
    54584925  case 98:
    5459 
    5460 /* Line 1806 of yacc.c  */
    5461 #line 579 "parser.yy"
    5462     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     4926#line 579 "parser.yy" /* yacc.c:1646  */
     4927    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4928#line 4929 "Parser/parser.cc" /* yacc.c:1646  */
    54634929    break;
    54644930
    54654931  case 99:
    5466 
    5467 /* Line 1806 of yacc.c  */
    5468 #line 582 "parser.yy"
    5469     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     4932#line 582 "parser.yy" /* yacc.c:1646  */
     4933    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-3].en), (yyvsp[-3].en), (yyvsp[0].en) ) ); }
     4934#line 4935 "Parser/parser.cc" /* yacc.c:1646  */
    54704935    break;
    54714936
    54724937  case 100:
    5473 
    5474 /* Line 1806 of yacc.c  */
    5475 #line 584 "parser.yy"
    5476     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     4938#line 584 "parser.yy" /* yacc.c:1646  */
     4939    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4940#line 4941 "Parser/parser.cc" /* yacc.c:1646  */
    54774941    break;
    54784942
    54794943  case 103:
    5480 
    5481 /* Line 1806 of yacc.c  */
    5482 #line 595 "parser.yy"
    5483     { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4944#line 595 "parser.yy" /* yacc.c:1646  */
     4945    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[-1].op), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4946#line 4947 "Parser/parser.cc" /* yacc.c:1646  */
    54844947    break;
    54854948
    54864949  case 104:
    5487 
    5488 /* Line 1806 of yacc.c  */
    5489 #line 597 "parser.yy"
    5490     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
     4950#line 597 "parser.yy" /* yacc.c:1646  */
     4951    { (yyval.en) = ( (yyvsp[0].en) == 0 ) ? (yyvsp[-1].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[-1].en), (yyvsp[0].en) ) ); }
     4952#line 4953 "Parser/parser.cc" /* yacc.c:1646  */
    54914953    break;
    54924954
    54934955  case 105:
    5494 
    5495 /* Line 1806 of yacc.c  */
    5496 #line 602 "parser.yy"
     4956#line 602 "parser.yy" /* yacc.c:1646  */
    54974957    { (yyval.en) = nullptr; }
     4958#line 4959 "Parser/parser.cc" /* yacc.c:1646  */
    54984959    break;
    54994960
    55004961  case 107:
    5501 
    5502 /* Line 1806 of yacc.c  */
    5503 #line 607 "parser.yy"
     4962#line 607 "parser.yy" /* yacc.c:1646  */
    55044963    { (yyval.op) = OperKinds::Assign; }
     4964#line 4965 "Parser/parser.cc" /* yacc.c:1646  */
    55054965    break;
    55064966
    55074967  case 108:
    5508 
    5509 /* Line 1806 of yacc.c  */
    5510 #line 608 "parser.yy"
     4968#line 608 "parser.yy" /* yacc.c:1646  */
    55114969    { (yyval.op) = OperKinds::MulAssn; }
     4970#line 4971 "Parser/parser.cc" /* yacc.c:1646  */
    55124971    break;
    55134972
    55144973  case 109:
    5515 
    5516 /* Line 1806 of yacc.c  */
    5517 #line 609 "parser.yy"
     4974#line 609 "parser.yy" /* yacc.c:1646  */
    55184975    { (yyval.op) = OperKinds::DivAssn; }
     4976#line 4977 "Parser/parser.cc" /* yacc.c:1646  */
    55194977    break;
    55204978
    55214979  case 110:
    5522 
    5523 /* Line 1806 of yacc.c  */
    5524 #line 610 "parser.yy"
     4980#line 610 "parser.yy" /* yacc.c:1646  */
    55254981    { (yyval.op) = OperKinds::ModAssn; }
     4982#line 4983 "Parser/parser.cc" /* yacc.c:1646  */
    55264983    break;
    55274984
    55284985  case 111:
    5529 
    5530 /* Line 1806 of yacc.c  */
    5531 #line 611 "parser.yy"
     4986#line 611 "parser.yy" /* yacc.c:1646  */
    55324987    { (yyval.op) = OperKinds::PlusAssn; }
     4988#line 4989 "Parser/parser.cc" /* yacc.c:1646  */
    55334989    break;
    55344990
    55354991  case 112:
    5536 
    5537 /* Line 1806 of yacc.c  */
    5538 #line 612 "parser.yy"
     4992#line 612 "parser.yy" /* yacc.c:1646  */
    55394993    { (yyval.op) = OperKinds::MinusAssn; }
     4994#line 4995 "Parser/parser.cc" /* yacc.c:1646  */
    55404995    break;
    55414996
    55424997  case 113:
    5543 
    5544 /* Line 1806 of yacc.c  */
    5545 #line 613 "parser.yy"
     4998#line 613 "parser.yy" /* yacc.c:1646  */
    55464999    { (yyval.op) = OperKinds::LSAssn; }
     5000#line 5001 "Parser/parser.cc" /* yacc.c:1646  */
    55475001    break;
    55485002
    55495003  case 114:
    5550 
    5551 /* Line 1806 of yacc.c  */
    5552 #line 614 "parser.yy"
     5004#line 614 "parser.yy" /* yacc.c:1646  */
    55535005    { (yyval.op) = OperKinds::RSAssn; }
     5006#line 5007 "Parser/parser.cc" /* yacc.c:1646  */
    55545007    break;
    55555008
    55565009  case 115:
    5557 
    5558 /* Line 1806 of yacc.c  */
    5559 #line 615 "parser.yy"
     5010#line 615 "parser.yy" /* yacc.c:1646  */
    55605011    { (yyval.op) = OperKinds::AndAssn; }
     5012#line 5013 "Parser/parser.cc" /* yacc.c:1646  */
    55615013    break;
    55625014
    55635015  case 116:
    5564 
    5565 /* Line 1806 of yacc.c  */
    5566 #line 616 "parser.yy"
     5016#line 616 "parser.yy" /* yacc.c:1646  */
    55675017    { (yyval.op) = OperKinds::ERAssn; }
     5018#line 5019 "Parser/parser.cc" /* yacc.c:1646  */
    55685019    break;
    55695020
    55705021  case 117:
    5571 
    5572 /* Line 1806 of yacc.c  */
    5573 #line 617 "parser.yy"
     5022#line 617 "parser.yy" /* yacc.c:1646  */
    55745023    { (yyval.op) = OperKinds::OrAssn; }
     5024#line 5025 "Parser/parser.cc" /* yacc.c:1646  */
    55755025    break;
    55765026
    55775027  case 118:
    5578 
    5579 /* Line 1806 of yacc.c  */
    5580 #line 624 "parser.yy"
     5028#line 624 "parser.yy" /* yacc.c:1646  */
    55815029    { (yyval.en) = new ExpressionNode( build_tuple() ); }
     5030#line 5031 "Parser/parser.cc" /* yacc.c:1646  */
    55825031    break;
    55835032
    55845033  case 119:
    5585 
    5586 /* Line 1806 of yacc.c  */
    5587 #line 626 "parser.yy"
    5588     { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
     5034#line 626 "parser.yy" /* yacc.c:1646  */
     5035    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[-2].en) ) ); }
     5036#line 5037 "Parser/parser.cc" /* yacc.c:1646  */
    55895037    break;
    55905038
    55915039  case 120:
    5592 
    5593 /* Line 1806 of yacc.c  */
    5594 #line 628 "parser.yy"
    5595     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
     5040#line 628 "parser.yy" /* yacc.c:1646  */
     5041    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[-2].en) ) ) ); }
     5042#line 5043 "Parser/parser.cc" /* yacc.c:1646  */
    55965043    break;
    55975044
    55985045  case 121:
    5599 
    5600 /* Line 1806 of yacc.c  */
    5601 #line 630 "parser.yy"
    5602     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
     5046#line 630 "parser.yy" /* yacc.c:1646  */
     5047    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[-4].en)->set_last( (yyvsp[-2].en) ) ) ); }
     5048#line 5049 "Parser/parser.cc" /* yacc.c:1646  */
    56035049    break;
    56045050
    56055051  case 123:
    5606 
    5607 /* Line 1806 of yacc.c  */
    5608 #line 636 "parser.yy"
    5609     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     5052#line 636 "parser.yy" /* yacc.c:1646  */
     5053    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
     5054#line 5055 "Parser/parser.cc" /* yacc.c:1646  */
    56105055    break;
    56115056
    56125057  case 125:
    5613 
    5614 /* Line 1806 of yacc.c  */
    5615 #line 642 "parser.yy"
    5616     { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5058#line 642 "parser.yy" /* yacc.c:1646  */
     5059    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     5060#line 5061 "Parser/parser.cc" /* yacc.c:1646  */
    56175061    break;
    56185062
    56195063  case 126:
    5620 
    5621 /* Line 1806 of yacc.c  */
    5622 #line 647 "parser.yy"
     5064#line 647 "parser.yy" /* yacc.c:1646  */
    56235065    { (yyval.en) = 0; }
     5066#line 5067 "Parser/parser.cc" /* yacc.c:1646  */
    56245067    break;
    56255068
    56265069  case 130:
    5627 
    5628 /* Line 1806 of yacc.c  */
    5629 #line 656 "parser.yy"
    5630     { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
     5070#line 656 "parser.yy" /* yacc.c:1646  */
     5071    { (yyval.sn) = (yyvsp[0].sn); }
     5072#line 5073 "Parser/parser.cc" /* yacc.c:1646  */
    56315073    break;
    56325074
    56335075  case 136:
    5634 
    5635 /* Line 1806 of yacc.c  */
    5636 #line 663 "parser.yy"
     5076#line 663 "parser.yy" /* yacc.c:1646  */
    56375077    {
    56385078                        Token fn;
    56395079                        fn.str = new std::string( "^?{}" ); // location undefined
    5640                         (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_last( (yyvsp[(4) - (6)].en) ) ) ) ) );
     5080                        (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-4].en) )->set_last( (yyvsp[-2].en) ) ) ) ) );
    56415081                }
     5082#line 5083 "Parser/parser.cc" /* yacc.c:1646  */
    56425083    break;
    56435084
    56445085  case 137:
    5645 
    5646 /* Line 1806 of yacc.c  */
    5647 #line 673 "parser.yy"
    5648     {
    5649                         (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     5086#line 673 "parser.yy" /* yacc.c:1646  */
     5087    {
     5088                        (yyval.sn) = (yyvsp[0].sn)->add_label( (yyvsp[-3].tok) );
    56505089                }
     5090#line 5091 "Parser/parser.cc" /* yacc.c:1646  */
    56515091    break;
    56525092
    56535093  case 138:
    5654 
    5655 /* Line 1806 of yacc.c  */
    5656 #line 680 "parser.yy"
     5094#line 680 "parser.yy" /* yacc.c:1646  */
    56575095    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
     5096#line 5097 "Parser/parser.cc" /* yacc.c:1646  */
    56585097    break;
    56595098
    56605099  case 139:
    5661 
    5662 /* Line 1806 of yacc.c  */
    5663 #line 687 "parser.yy"
    5664     { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
     5100#line 687 "parser.yy" /* yacc.c:1646  */
     5101    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[-2].sn) ) ); }
     5102#line 5103 "Parser/parser.cc" /* yacc.c:1646  */
    56655103    break;
    56665104
    56675105  case 141:
    5668 
    5669 /* Line 1806 of yacc.c  */
    5670 #line 693 "parser.yy"
    5671     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     5106#line 693 "parser.yy" /* yacc.c:1646  */
     5107    { if ( (yyvsp[-2].sn) != 0 ) { (yyvsp[-2].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-2].sn); } }
     5108#line 5109 "Parser/parser.cc" /* yacc.c:1646  */
    56725109    break;
    56735110
    56745111  case 142:
    5675 
    5676 /* Line 1806 of yacc.c  */
    5677 #line 698 "parser.yy"
    5678     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5112#line 698 "parser.yy" /* yacc.c:1646  */
     5113    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
     5114#line 5115 "Parser/parser.cc" /* yacc.c:1646  */
    56795115    break;
    56805116
    56815117  case 143:
    5682 
    5683 /* Line 1806 of yacc.c  */
    5684 #line 700 "parser.yy"
     5118#line 700 "parser.yy" /* yacc.c:1646  */
    56855119    {   // mark all fields in list
    5686                         for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
     5120                        for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    56875121                                iter->set_extension( true );
    5688                         (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );
     5122                        (yyval.sn) = new StatementNode( (yyvsp[0].decl) );
    56895123                }
     5124#line 5125 "Parser/parser.cc" /* yacc.c:1646  */
    56905125    break;
    56915126
    56925127  case 144:
    5693 
    5694 /* Line 1806 of yacc.c  */
    5695 #line 706 "parser.yy"
    5696     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5128#line 706 "parser.yy" /* yacc.c:1646  */
     5129    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
     5130#line 5131 "Parser/parser.cc" /* yacc.c:1646  */
    56975131    break;
    56985132
    56995133  case 147:
    5700 
    5701 /* Line 1806 of yacc.c  */
    5702 #line 713 "parser.yy"
    5703     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5134#line 713 "parser.yy" /* yacc.c:1646  */
     5135    { if ( (yyvsp[-1].sn) != 0 ) { (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-1].sn); } }
     5136#line 5137 "Parser/parser.cc" /* yacc.c:1646  */
    57045137    break;
    57055138
    57065139  case 148:
    5707 
    5708 /* Line 1806 of yacc.c  */
    5709 #line 718 "parser.yy"
    5710     { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
     5140#line 718 "parser.yy" /* yacc.c:1646  */
     5141    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[-1].en) ) ); }
     5142#line 5143 "Parser/parser.cc" /* yacc.c:1646  */
    57115143    break;
    57125144
    57135145  case 149:
    5714 
    5715 /* Line 1806 of yacc.c  */
    5716 #line 724 "parser.yy"
    5717     { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
     5146#line 724 "parser.yy" /* yacc.c:1646  */
     5147    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-2].en), (yyvsp[0].sn), nullptr ) ); }
     5148#line 5149 "Parser/parser.cc" /* yacc.c:1646  */
    57185149    break;
    57195150
    57205151  case 150:
    5721 
    5722 /* Line 1806 of yacc.c  */
    5723 #line 726 "parser.yy"
    5724     { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
     5152#line 726 "parser.yy" /* yacc.c:1646  */
     5153    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-4].en), (yyvsp[-2].sn), (yyvsp[0].sn) ) ); }
     5154#line 5155 "Parser/parser.cc" /* yacc.c:1646  */
    57255155    break;
    57265156
    57275157  case 151:
    5728 
    5729 /* Line 1806 of yacc.c  */
    5730 #line 728 "parser.yy"
    5731     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     5158#line 728 "parser.yy" /* yacc.c:1646  */
     5159    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
     5160#line 5161 "Parser/parser.cc" /* yacc.c:1646  */
    57325161    break;
    57335162
    57345163  case 152:
    5735 
    5736 /* Line 1806 of yacc.c  */
    5737 #line 730 "parser.yy"
    5738     {
    5739                         StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     5164#line 730 "parser.yy" /* yacc.c:1646  */
     5165    {
     5166                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
    57405167                        // The semantics of the declaration list is changed to include associated initialization, which is performed
    57415168                        // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
     
    57435170                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    57445171                        // statement.
    5745                         (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
     5172                        (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
    57465173                }
     5174#line 5175 "Parser/parser.cc" /* yacc.c:1646  */
    57475175    break;
    57485176
    57495177  case 153:
    5750 
    5751 /* Line 1806 of yacc.c  */
    5752 #line 740 "parser.yy"
    5753     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     5178#line 740 "parser.yy" /* yacc.c:1646  */
     5179    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
     5180#line 5181 "Parser/parser.cc" /* yacc.c:1646  */
    57545181    break;
    57555182
    57565183  case 154:
    5757 
    5758 /* Line 1806 of yacc.c  */
    5759 #line 742 "parser.yy"
    5760     {
    5761                         StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
    5762                         (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
     5184#line 742 "parser.yy" /* yacc.c:1646  */
     5185    {
     5186                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
     5187                        (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
    57635188                }
     5189#line 5190 "Parser/parser.cc" /* yacc.c:1646  */
    57645190    break;
    57655191
    57665192  case 155:
    5767 
    5768 /* Line 1806 of yacc.c  */
    5769 #line 752 "parser.yy"
    5770     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     5193#line 752 "parser.yy" /* yacc.c:1646  */
     5194    { (yyval.en) = (yyvsp[0].en); }
     5195#line 5196 "Parser/parser.cc" /* yacc.c:1646  */
    57715196    break;
    57725197
    57735198  case 156:
    5774 
    5775 /* Line 1806 of yacc.c  */
    5776 #line 754 "parser.yy"
    5777     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5199#line 754 "parser.yy" /* yacc.c:1646  */
     5200    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     5201#line 5202 "Parser/parser.cc" /* yacc.c:1646  */
    57785202    break;
    57795203
    57805204  case 158:
    5781 
    5782 /* Line 1806 of yacc.c  */
    5783 #line 759 "parser.yy"
    5784     { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
     5205#line 759 "parser.yy" /* yacc.c:1646  */
     5206    { (yyval.sn) = new StatementNode( build_case( (yyvsp[0].en) ) ); }
     5207#line 5208 "Parser/parser.cc" /* yacc.c:1646  */
    57855208    break;
    57865209
    57875210  case 159:
    5788 
    5789 /* Line 1806 of yacc.c  */
    5790 #line 761 "parser.yy"
    5791     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
     5211#line 761 "parser.yy" /* yacc.c:1646  */
     5212    { (yyval.sn) = (StatementNode *)((yyvsp[-2].sn)->set_last( new StatementNode( build_case( (yyvsp[0].en) ) ) ) ); }
     5213#line 5214 "Parser/parser.cc" /* yacc.c:1646  */
    57925214    break;
    57935215
    57945216  case 160:
    5795 
    5796 /* Line 1806 of yacc.c  */
    5797 #line 765 "parser.yy"
    5798     { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     5217#line 765 "parser.yy" /* yacc.c:1646  */
     5218    { (yyval.sn) = (yyvsp[-1].sn); }
     5219#line 5220 "Parser/parser.cc" /* yacc.c:1646  */
    57995220    break;
    58005221
    58015222  case 161:
    5802 
    5803 /* Line 1806 of yacc.c  */
    5804 #line 766 "parser.yy"
     5223#line 766 "parser.yy" /* yacc.c:1646  */
    58055224    { (yyval.sn) = new StatementNode( build_default() ); }
     5225#line 5226 "Parser/parser.cc" /* yacc.c:1646  */
    58065226    break;
    58075227
    58085228  case 163:
    5809 
    5810 /* Line 1806 of yacc.c  */
    5811 #line 772 "parser.yy"
    5812     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
     5229#line 772 "parser.yy" /* yacc.c:1646  */
     5230    { (yyval.sn) = (StatementNode *)( (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) )); }
     5231#line 5232 "Parser/parser.cc" /* yacc.c:1646  */
    58135232    break;
    58145233
    58155234  case 164:
    5816 
    5817 /* Line 1806 of yacc.c  */
    5818 #line 776 "parser.yy"
    5819     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     5235#line 776 "parser.yy" /* yacc.c:1646  */
     5236    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
     5237#line 5238 "Parser/parser.cc" /* yacc.c:1646  */
    58205238    break;
    58215239
    58225240  case 165:
    5823 
    5824 /* Line 1806 of yacc.c  */
    5825 #line 781 "parser.yy"
     5241#line 781 "parser.yy" /* yacc.c:1646  */
    58265242    { (yyval.sn) = 0; }
     5243#line 5244 "Parser/parser.cc" /* yacc.c:1646  */
    58275244    break;
    58285245
    58295246  case 167:
    5830 
    5831 /* Line 1806 of yacc.c  */
    5832 #line 787 "parser.yy"
    5833     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     5247#line 787 "parser.yy" /* yacc.c:1646  */
     5248    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
     5249#line 5250 "Parser/parser.cc" /* yacc.c:1646  */
    58345250    break;
    58355251
    58365252  case 168:
    5837 
    5838 /* Line 1806 of yacc.c  */
    5839 #line 789 "parser.yy"
    5840     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
     5253#line 789 "parser.yy" /* yacc.c:1646  */
     5254    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ) ) ); }
     5255#line 5256 "Parser/parser.cc" /* yacc.c:1646  */
    58415256    break;
    58425257
    58435258  case 169:
    5844 
    5845 /* Line 1806 of yacc.c  */
    5846 #line 794 "parser.yy"
     5259#line 794 "parser.yy" /* yacc.c:1646  */
    58475260    { (yyval.sn) = 0; }
     5261#line 5262 "Parser/parser.cc" /* yacc.c:1646  */
    58485262    break;
    58495263
    58505264  case 171:
    5851 
    5852 /* Line 1806 of yacc.c  */
    5853 #line 800 "parser.yy"
    5854     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     5265#line 800 "parser.yy" /* yacc.c:1646  */
     5266    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ); }
     5267#line 5268 "Parser/parser.cc" /* yacc.c:1646  */
    58555268    break;
    58565269
    58575270  case 172:
    5858 
    5859 /* Line 1806 of yacc.c  */
    5860 #line 802 "parser.yy"
    5861     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
     5271#line 802 "parser.yy" /* yacc.c:1646  */
     5272    { (yyval.sn) = (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ); }
     5273#line 5274 "Parser/parser.cc" /* yacc.c:1646  */
    58625274    break;
    58635275
    58645276  case 173:
    5865 
    5866 /* Line 1806 of yacc.c  */
    5867 #line 804 "parser.yy"
    5868     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5277#line 804 "parser.yy" /* yacc.c:1646  */
     5278    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ))); }
     5279#line 5280 "Parser/parser.cc" /* yacc.c:1646  */
    58695280    break;
    58705281
    58715282  case 174:
    5872 
    5873 /* Line 1806 of yacc.c  */
    5874 #line 806 "parser.yy"
    5875     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
     5283#line 806 "parser.yy" /* yacc.c:1646  */
     5284    { (yyval.sn) = (StatementNode *)( (yyvsp[-3].sn)->set_last( (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ) ) ); }
     5285#line 5286 "Parser/parser.cc" /* yacc.c:1646  */
    58765286    break;
    58775287
    58785288  case 175:
    5879 
    5880 /* Line 1806 of yacc.c  */
    5881 #line 811 "parser.yy"
     5289#line 811 "parser.yy" /* yacc.c:1646  */
    58825290    { (yyval.sn) = new StatementNode( build_branch( "", BranchStmt::Break ) ); }
     5291#line 5292 "Parser/parser.cc" /* yacc.c:1646  */
    58835292    break;
    58845293
    58855294  case 177:
    5886 
    5887 /* Line 1806 of yacc.c  */
    5888 #line 817 "parser.yy"
     5295#line 817 "parser.yy" /* yacc.c:1646  */
    58895296    { (yyval.sn) = 0; }
     5297#line 5298 "Parser/parser.cc" /* yacc.c:1646  */
    58905298    break;
    58915299
    58925300  case 178:
    5893 
    5894 /* Line 1806 of yacc.c  */
    5895 #line 819 "parser.yy"
     5301#line 819 "parser.yy" /* yacc.c:1646  */
    58965302    { (yyval.sn) = 0; }
     5303#line 5304 "Parser/parser.cc" /* yacc.c:1646  */
    58975304    break;
    58985305
    58995306  case 179:
    5900 
    5901 /* Line 1806 of yacc.c  */
    5902 #line 824 "parser.yy"
    5903     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     5307#line 824 "parser.yy" /* yacc.c:1646  */
     5308    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
     5309#line 5310 "Parser/parser.cc" /* yacc.c:1646  */
    59045310    break;
    59055311
    59065312  case 180:
    5907 
    5908 /* Line 1806 of yacc.c  */
    5909 #line 826 "parser.yy"
    5910     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); }
     5313#line 826 "parser.yy" /* yacc.c:1646  */
     5314    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[-5].sn) ) ); }
     5315#line 5316 "Parser/parser.cc" /* yacc.c:1646  */
    59115316    break;
    59125317
    59135318  case 181:
    5914 
    5915 /* Line 1806 of yacc.c  */
    5916 #line 828 "parser.yy"
    5917     { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     5319#line 828 "parser.yy" /* yacc.c:1646  */
     5320    { (yyval.sn) = new StatementNode( build_for( (yyvsp[-2].fctl), (yyvsp[0].sn) ) ); }
     5321#line 5322 "Parser/parser.cc" /* yacc.c:1646  */
    59185322    break;
    59195323
    59205324  case 182:
    5921 
    5922 /* Line 1806 of yacc.c  */
    5923 #line 833 "parser.yy"
    5924     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     5325#line 833 "parser.yy" /* yacc.c:1646  */
     5326    { (yyval.fctl) = new ForCtl( (yyvsp[-5].en), (yyvsp[-2].en), (yyvsp[0].en) ); }
     5327#line 5328 "Parser/parser.cc" /* yacc.c:1646  */
    59255328    break;
    59265329
    59275330  case 183:
    5928 
    5929 /* Line 1806 of yacc.c  */
    5930 #line 835 "parser.yy"
    5931     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     5331#line 835 "parser.yy" /* yacc.c:1646  */
     5332    { (yyval.fctl) = new ForCtl( (yyvsp[-3].decl), (yyvsp[-2].en), (yyvsp[0].en) ); }
     5333#line 5334 "Parser/parser.cc" /* yacc.c:1646  */
    59325334    break;
    59335335
    59345336  case 184:
    5935 
    5936 /* Line 1806 of yacc.c  */
    5937 #line 840 "parser.yy"
    5938     { (yyval.sn) = new StatementNode( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
     5337#line 840 "parser.yy" /* yacc.c:1646  */
     5338    { (yyval.sn) = new StatementNode( build_branch( assign_strptr((yyvsp[-1].tok)), BranchStmt::Goto ) ); }
     5339#line 5340 "Parser/parser.cc" /* yacc.c:1646  */
    59395340    break;
    59405341
    59415342  case 185:
    5942 
    5943 /* Line 1806 of yacc.c  */
    5944 #line 844 "parser.yy"
    5945     { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
     5343#line 844 "parser.yy" /* yacc.c:1646  */
     5344    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[-1].en) ) ); }
     5345#line 5346 "Parser/parser.cc" /* yacc.c:1646  */
    59465346    break;
    59475347
    59485348  case 186:
    5949 
    5950 /* Line 1806 of yacc.c  */
    5951 #line 847 "parser.yy"
     5349#line 847 "parser.yy" /* yacc.c:1646  */
    59525350    { (yyval.sn) = new StatementNode( build_branch( "", BranchStmt::Continue ) ); }
     5351#line 5352 "Parser/parser.cc" /* yacc.c:1646  */
    59535352    break;
    59545353
    59555354  case 187:
    5956 
    5957 /* Line 1806 of yacc.c  */
    5958 #line 851 "parser.yy"
    5959     { (yyval.sn) = new StatementNode( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); delete (yyvsp[(2) - (3)].tok); }
     5355#line 851 "parser.yy" /* yacc.c:1646  */
     5356    { (yyval.sn) = new StatementNode( build_branch( assign_strptr((yyvsp[-1].tok)), BranchStmt::Continue ) ); }
     5357#line 5358 "Parser/parser.cc" /* yacc.c:1646  */
    59605358    break;
    59615359
    59625360  case 188:
    5963 
    5964 /* Line 1806 of yacc.c  */
    5965 #line 854 "parser.yy"
     5361#line 854 "parser.yy" /* yacc.c:1646  */
    59665362    { (yyval.sn) = new StatementNode( build_branch( "", BranchStmt::Break ) ); }
     5363#line 5364 "Parser/parser.cc" /* yacc.c:1646  */
    59675364    break;
    59685365
    59695366  case 189:
    5970 
    5971 /* Line 1806 of yacc.c  */
    5972 #line 858 "parser.yy"
    5973     { (yyval.sn) = new StatementNode( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); delete (yyvsp[(2) - (3)].tok); }
     5367#line 858 "parser.yy" /* yacc.c:1646  */
     5368    { (yyval.sn) = new StatementNode( build_branch( assign_strptr((yyvsp[-1].tok)), BranchStmt::Break ) ); }
     5369#line 5370 "Parser/parser.cc" /* yacc.c:1646  */
    59745370    break;
    59755371
    59765372  case 190:
    5977 
    5978 /* Line 1806 of yacc.c  */
    5979 #line 860 "parser.yy"
    5980     { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
     5373#line 860 "parser.yy" /* yacc.c:1646  */
     5374    { (yyval.sn) = new StatementNode( build_return( (yyvsp[-1].en) ) ); }
     5375#line 5376 "Parser/parser.cc" /* yacc.c:1646  */
    59815376    break;
    59825377
    59835378  case 191:
    5984 
    5985 /* Line 1806 of yacc.c  */
    5986 #line 862 "parser.yy"
    5987     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     5379#line 862 "parser.yy" /* yacc.c:1646  */
     5380    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
     5381#line 5382 "Parser/parser.cc" /* yacc.c:1646  */
    59885382    break;
    59895383
    59905384  case 192:
    5991 
    5992 /* Line 1806 of yacc.c  */
    5993 #line 864 "parser.yy"
    5994     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     5385#line 864 "parser.yy" /* yacc.c:1646  */
     5386    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
     5387#line 5388 "Parser/parser.cc" /* yacc.c:1646  */
    59955388    break;
    59965389
    59975390  case 193:
    5998 
    5999 /* Line 1806 of yacc.c  */
    6000 #line 866 "parser.yy"
    6001     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
     5391#line 866 "parser.yy" /* yacc.c:1646  */
     5392    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-3].en) ) ); }
     5393#line 5394 "Parser/parser.cc" /* yacc.c:1646  */
    60025394    break;
    60035395
    60045396  case 194:
    6005 
    6006 /* Line 1806 of yacc.c  */
    6007 #line 871 "parser.yy"
    6008     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
     5397#line 871 "parser.yy" /* yacc.c:1646  */
     5398    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), (yyvsp[0].sn), 0 ) ); }
     5399#line 5400 "Parser/parser.cc" /* yacc.c:1646  */
    60095400    break;
    60105401
    60115402  case 195:
    6012 
    6013 /* Line 1806 of yacc.c  */
    6014 #line 873 "parser.yy"
    6015     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
     5403#line 873 "parser.yy" /* yacc.c:1646  */
     5404    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), 0, (yyvsp[0].sn) ) ); }
     5405#line 5406 "Parser/parser.cc" /* yacc.c:1646  */
    60165406    break;
    60175407
    60185408  case 196:
    6019 
    6020 /* Line 1806 of yacc.c  */
    6021 #line 875 "parser.yy"
    6022     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
     5409#line 875 "parser.yy" /* yacc.c:1646  */
     5410    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-2].sn), (yyvsp[-1].sn), (yyvsp[0].sn) ) ); }
     5411#line 5412 "Parser/parser.cc" /* yacc.c:1646  */
    60235412    break;
    60245413
    60255414  case 198:
    6026 
    6027 /* Line 1806 of yacc.c  */
    6028 #line 882 "parser.yy"
    6029     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     5415#line 882 "parser.yy" /* yacc.c:1646  */
     5416    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
     5417#line 5418 "Parser/parser.cc" /* yacc.c:1646  */
    60305418    break;
    60315419
    60325420  case 199:
    6033 
    6034 /* Line 1806 of yacc.c  */
    6035 #line 884 "parser.yy"
    6036     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     5421#line 884 "parser.yy" /* yacc.c:1646  */
     5422    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
     5423#line 5424 "Parser/parser.cc" /* yacc.c:1646  */
    60375424    break;
    60385425
    60395426  case 200:
    6040 
    6041 /* Line 1806 of yacc.c  */
    6042 #line 886 "parser.yy"
    6043     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     5427#line 886 "parser.yy" /* yacc.c:1646  */
     5428    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
     5429#line 5430 "Parser/parser.cc" /* yacc.c:1646  */
    60445430    break;
    60455431
    60465432  case 201:
    6047 
    6048 /* Line 1806 of yacc.c  */
    6049 #line 888 "parser.yy"
    6050     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     5433#line 888 "parser.yy" /* yacc.c:1646  */
     5434    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
     5435#line 5436 "Parser/parser.cc" /* yacc.c:1646  */
    60515436    break;
    60525437
    60535438  case 202:
    6054 
    6055 /* Line 1806 of yacc.c  */
    6056 #line 893 "parser.yy"
    6057     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     5439#line 893 "parser.yy" /* yacc.c:1646  */
     5440    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
     5441#line 5442 "Parser/parser.cc" /* yacc.c:1646  */
    60585442    break;
    60595443
    60605444  case 203:
    6061 
    6062 /* Line 1806 of yacc.c  */
    6063 #line 895 "parser.yy"
    6064     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     5445#line 895 "parser.yy" /* yacc.c:1646  */
     5446    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
     5447#line 5448 "Parser/parser.cc" /* yacc.c:1646  */
    60655448    break;
    60665449
    60675450  case 204:
    6068 
    6069 /* Line 1806 of yacc.c  */
    6070 #line 897 "parser.yy"
    6071     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     5451#line 897 "parser.yy" /* yacc.c:1646  */
     5452    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
     5453#line 5454 "Parser/parser.cc" /* yacc.c:1646  */
    60725454    break;
    60735455
    60745456  case 205:
    6075 
    6076 /* Line 1806 of yacc.c  */
    6077 #line 899 "parser.yy"
    6078     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     5457#line 899 "parser.yy" /* yacc.c:1646  */
     5458    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
     5459#line 5460 "Parser/parser.cc" /* yacc.c:1646  */
    60795460    break;
    60805461
    60815462  case 206:
    6082 
    6083 /* Line 1806 of yacc.c  */
    6084 #line 904 "parser.yy"
    6085     {
    6086                         (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     5463#line 904 "parser.yy" /* yacc.c:1646  */
     5464    {
     5465                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[0].sn) ) );
    60875466                }
     5467#line 5468 "Parser/parser.cc" /* yacc.c:1646  */
    60885468    break;
    60895469
    60905470  case 208:
    6091 
    6092 /* Line 1806 of yacc.c  */
    6093 #line 917 "parser.yy"
     5471#line 917 "parser.yy" /* yacc.c:1646  */
    60945472    {
    60955473                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6096                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
     5474                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
    60975475                }
     5476#line 5477 "Parser/parser.cc" /* yacc.c:1646  */
    60985477    break;
    60995478
    61005479  case 209:
    6101 
    6102 /* Line 1806 of yacc.c  */
    6103 #line 922 "parser.yy"
    6104     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     5480#line 922 "parser.yy" /* yacc.c:1646  */
     5481    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     5482#line 5483 "Parser/parser.cc" /* yacc.c:1646  */
    61055483    break;
    61065484
    61075485  case 210:
    6108 
    6109 /* Line 1806 of yacc.c  */
    6110 #line 924 "parser.yy"
     5486#line 924 "parser.yy" /* yacc.c:1646  */
    61115487    {
    61125488                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6113                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) );
     5489                        (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) );
    61145490                }
     5491#line 5492 "Parser/parser.cc" /* yacc.c:1646  */
    61155492    break;
    61165493
    61175494  case 212:
    6118 
    6119 /* Line 1806 of yacc.c  */
    6120 #line 933 "parser.yy"
    6121     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
     5495#line 933 "parser.yy" /* yacc.c:1646  */
     5496    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-4].flag), (yyvsp[-2].constant), 0 ) ); }
     5497#line 5498 "Parser/parser.cc" /* yacc.c:1646  */
    61225498    break;
    61235499
    61245500  case 213:
    6125 
    6126 /* Line 1806 of yacc.c  */
    6127 #line 935 "parser.yy"
    6128     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
     5501#line 935 "parser.yy" /* yacc.c:1646  */
     5502    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-6].flag), (yyvsp[-4].constant), (yyvsp[-2].en) ) ); }
     5503#line 5504 "Parser/parser.cc" /* yacc.c:1646  */
    61295504    break;
    61305505
    61315506  case 214:
    6132 
    6133 /* Line 1806 of yacc.c  */
    6134 #line 937 "parser.yy"
    6135     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
     5507#line 937 "parser.yy" /* yacc.c:1646  */
     5508    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-8].flag), (yyvsp[-6].constant), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
     5509#line 5510 "Parser/parser.cc" /* yacc.c:1646  */
    61365510    break;
    61375511
    61385512  case 215:
    6139 
    6140 /* Line 1806 of yacc.c  */
    6141 #line 939 "parser.yy"
    6142     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
     5513#line 939 "parser.yy" /* yacc.c:1646  */
     5514    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-10].flag), (yyvsp[-8].constant), (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
     5515#line 5516 "Parser/parser.cc" /* yacc.c:1646  */
    61435516    break;
    61445517
    61455518  case 216:
    6146 
    6147 /* Line 1806 of yacc.c  */
    6148 #line 941 "parser.yy"
    6149     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
     5519#line 941 "parser.yy" /* yacc.c:1646  */
     5520    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-12].flag), (yyvsp[-9].constant), 0, (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].label) ) ); }
     5521#line 5522 "Parser/parser.cc" /* yacc.c:1646  */
    61505522    break;
    61515523
    61525524  case 217:
    6153 
    6154 /* Line 1806 of yacc.c  */
    6155 #line 946 "parser.yy"
     5525#line 946 "parser.yy" /* yacc.c:1646  */
    61565526    { (yyval.flag) = false; }
     5527#line 5528 "Parser/parser.cc" /* yacc.c:1646  */
    61575528    break;
    61585529
    61595530  case 218:
    6160 
    6161 /* Line 1806 of yacc.c  */
    6162 #line 948 "parser.yy"
     5531#line 948 "parser.yy" /* yacc.c:1646  */
    61635532    { (yyval.flag) = true; }
     5533#line 5534 "Parser/parser.cc" /* yacc.c:1646  */
    61645534    break;
    61655535
    61665536  case 219:
    6167 
    6168 /* Line 1806 of yacc.c  */
    6169 #line 953 "parser.yy"
     5537#line 953 "parser.yy" /* yacc.c:1646  */
    61705538    { (yyval.en) = 0; }
     5539#line 5540 "Parser/parser.cc" /* yacc.c:1646  */
    61715540    break;
    61725541
    61735542  case 222:
    6174 
    6175 /* Line 1806 of yacc.c  */
    6176 #line 960 "parser.yy"
    6177     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     5543#line 960 "parser.yy" /* yacc.c:1646  */
     5544    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
     5545#line 5546 "Parser/parser.cc" /* yacc.c:1646  */
    61785546    break;
    61795547
    61805548  case 223:
    6181 
    6182 /* Line 1806 of yacc.c  */
    6183 #line 965 "parser.yy"
    6184     { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     5549#line 965 "parser.yy" /* yacc.c:1646  */
     5550    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
     5551#line 5552 "Parser/parser.cc" /* yacc.c:1646  */
    61855552    break;
    61865553
    61875554  case 224:
    6188 
    6189 /* Line 1806 of yacc.c  */
    6190 #line 967 "parser.yy"
    6191     { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     5555#line 967 "parser.yy" /* yacc.c:1646  */
     5556    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[-5].en), (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
     5557#line 5558 "Parser/parser.cc" /* yacc.c:1646  */
    61925558    break;
    61935559
    61945560  case 225:
    6195 
    6196 /* Line 1806 of yacc.c  */
    6197 #line 972 "parser.yy"
     5561#line 972 "parser.yy" /* yacc.c:1646  */
    61985562    { (yyval.en) = 0; }
     5563#line 5564 "Parser/parser.cc" /* yacc.c:1646  */
    61995564    break;
    62005565
    62015566  case 226:
    6202 
    6203 /* Line 1806 of yacc.c  */
    6204 #line 974 "parser.yy"
    6205     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     5567#line 974 "parser.yy" /* yacc.c:1646  */
     5568    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
     5569#line 5570 "Parser/parser.cc" /* yacc.c:1646  */
    62065570    break;
    62075571
    62085572  case 227:
    6209 
    6210 /* Line 1806 of yacc.c  */
    6211 #line 976 "parser.yy"
    6212     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
     5573#line 976 "parser.yy" /* yacc.c:1646  */
     5574    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( new ExpressionNode( (yyvsp[0].constant) ) ); }
     5575#line 5576 "Parser/parser.cc" /* yacc.c:1646  */
    62135576    break;
    62145577
    62155578  case 228:
    6216 
    6217 /* Line 1806 of yacc.c  */
    6218 #line 981 "parser.yy"
    6219     { (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) ); }
     5579#line 981 "parser.yy" /* yacc.c:1646  */
     5580    { (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( assign_strptr((yyvsp[0].tok)) ); }
     5581#line 5582 "Parser/parser.cc" /* yacc.c:1646  */
    62205582    break;
    62215583
    62225584  case 229:
    6223 
    6224 /* Line 1806 of yacc.c  */
    6225 #line 983 "parser.yy"
    6226     { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) ); }
     5585#line 983 "parser.yy" /* yacc.c:1646  */
     5586    { (yyval.label) = (yyvsp[-2].label); (yyvsp[-2].label)->labels.push_back( assign_strptr((yyvsp[0].tok)) ); }
     5587#line 5588 "Parser/parser.cc" /* yacc.c:1646  */
    62275588    break;
    62285589
    62295590  case 230:
    6230 
    6231 /* Line 1806 of yacc.c  */
    6232 #line 990 "parser.yy"
     5591#line 990 "parser.yy" /* yacc.c:1646  */
    62335592    { (yyval.decl) = 0; }
     5593#line 5594 "Parser/parser.cc" /* yacc.c:1646  */
    62345594    break;
    62355595
    62365596  case 233:
    6237 
    6238 /* Line 1806 of yacc.c  */
    6239 #line 997 "parser.yy"
    6240     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     5597#line 997 "parser.yy" /* yacc.c:1646  */
     5598    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
     5599#line 5600 "Parser/parser.cc" /* yacc.c:1646  */
    62415600    break;
    62425601
    62435602  case 234:
    6244 
    6245 /* Line 1806 of yacc.c  */
    6246 #line 1002 "parser.yy"
     5603#line 1002 "parser.yy" /* yacc.c:1646  */
    62475604    { (yyval.decl) = 0; }
     5605#line 5606 "Parser/parser.cc" /* yacc.c:1646  */
    62485606    break;
    62495607
    62505608  case 237:
    6251 
    6252 /* Line 1806 of yacc.c  */
    6253 #line 1009 "parser.yy"
    6254     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     5609#line 1009 "parser.yy" /* yacc.c:1646  */
     5610    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
     5611#line 5612 "Parser/parser.cc" /* yacc.c:1646  */
    62555612    break;
    62565613
    62575614  case 242:
    6258 
    6259 /* Line 1806 of yacc.c  */
    6260 #line 1023 "parser.yy"
     5615#line 1023 "parser.yy" /* yacc.c:1646  */
    62615616    {}
     5617#line 5618 "Parser/parser.cc" /* yacc.c:1646  */
    62625618    break;
    62635619
    62645620  case 243:
    6265 
    6266 /* Line 1806 of yacc.c  */
    6267 #line 1024 "parser.yy"
     5621#line 1024 "parser.yy" /* yacc.c:1646  */
    62685622    {}
     5623#line 5624 "Parser/parser.cc" /* yacc.c:1646  */
    62695624    break;
    62705625
    62715626  case 251:
    6272 
    6273 /* Line 1806 of yacc.c  */
    6274 #line 1053 "parser.yy"
     5627#line 1053 "parser.yy" /* yacc.c:1646  */
    62755628    {
    62765629                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6277                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );
     5630                        (yyval.decl) = (yyvsp[-1].decl)->addInitializer( (yyvsp[0].in) );
    62785631                }
     5632#line 5633 "Parser/parser.cc" /* yacc.c:1646  */
    62795633    break;
    62805634
    62815635  case 252:
    6282 
    6283 /* Line 1806 of yacc.c  */
    6284 #line 1060 "parser.yy"
     5636#line 1060 "parser.yy" /* yacc.c:1646  */
    62855637    {
    62865638                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6287                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;
     5639                        (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addInitializer( (yyvsp[0].in) );;
    62885640                }
     5641#line 5642 "Parser/parser.cc" /* yacc.c:1646  */
    62895642    break;
    62905643
    62915644  case 253:
    6292 
    6293 /* Line 1806 of yacc.c  */
    6294 #line 1065 "parser.yy"
    6295     {
    6296                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
    6297                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) );
     5645#line 1065 "parser.yy" /* yacc.c:1646  */
     5646    {
     5647                        typedefTable.addToEnclosingScope( *(yyvsp[-1].tok), TypedefTable::ID );
     5648                        (yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneType( (yyvsp[-1].tok) )->addInitializer( (yyvsp[0].in) ) );
    62985649                }
     5650#line 5651 "Parser/parser.cc" /* yacc.c:1646  */
    62995651    break;
    63005652
    63015653  case 254:
    6302 
    6303 /* Line 1806 of yacc.c  */
    6304 #line 1075 "parser.yy"
    6305     {
    6306                         typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6307                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
     5654#line 1075 "parser.yy" /* yacc.c:1646  */
     5655    {
     5656                        typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
     5657                        (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
    63085658                }
     5659#line 5660 "Parser/parser.cc" /* yacc.c:1646  */
    63095660    break;
    63105661
    63115662  case 255:
    6312 
    6313 /* Line 1806 of yacc.c  */
    6314 #line 1080 "parser.yy"
    6315     {
    6316                         typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6317                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
     5663#line 1080 "parser.yy" /* yacc.c:1646  */
     5664    {
     5665                        typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
     5666                        (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
    63185667                }
     5668#line 5669 "Parser/parser.cc" /* yacc.c:1646  */
    63195669    break;
    63205670
    63215671  case 256:
    6322 
    6323 /* Line 1806 of yacc.c  */
    6324 #line 1085 "parser.yy"
    6325     {
    6326                         typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
    6327                         (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) );
     5672#line 1085 "parser.yy" /* yacc.c:1646  */
     5673    {
     5674                        typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
     5675                        (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-3].decl) )->addName( (yyvsp[-1].tok) );
    63285676                }
     5677#line 5678 "Parser/parser.cc" /* yacc.c:1646  */
    63295678    break;
    63305679
    63315680  case 257:
    6332 
    6333 /* Line 1806 of yacc.c  */
    6334 #line 1093 "parser.yy"
     5681#line 1093 "parser.yy" /* yacc.c:1646  */
    63355682    {
    63365683                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6337                         (yyval.decl) = (yyvsp[(1) - (1)].decl);
     5684                        (yyval.decl) = (yyvsp[0].decl);
    63385685                }
     5686#line 5687 "Parser/parser.cc" /* yacc.c:1646  */
    63395687    break;
    63405688
    63415689  case 258:
    6342 
    6343 /* Line 1806 of yacc.c  */
    6344 #line 1098 "parser.yy"
     5690#line 1098 "parser.yy" /* yacc.c:1646  */
    63455691    {
    63465692                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6347                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
     5693                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
    63485694                }
     5695#line 5696 "Parser/parser.cc" /* yacc.c:1646  */
    63495696    break;
    63505697
    63515698  case 259:
    6352 
    6353 /* Line 1806 of yacc.c  */
    6354 #line 1103 "parser.yy"
     5699#line 1103 "parser.yy" /* yacc.c:1646  */
    63555700    {
    63565701                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6357                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
     5702                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
    63585703                }
     5704#line 5705 "Parser/parser.cc" /* yacc.c:1646  */
    63595705    break;
    63605706
    63615707  case 260:
    6362 
    6363 /* Line 1806 of yacc.c  */
    6364 #line 1108 "parser.yy"
     5708#line 1108 "parser.yy" /* yacc.c:1646  */
    63655709    {
    63665710                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6367                         (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(2) - (3)].decl) );
     5711                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-1].decl) );
    63685712                }
     5713#line 5714 "Parser/parser.cc" /* yacc.c:1646  */
    63695714    break;
    63705715
    63715716  case 261:
    6372 
    6373 /* Line 1806 of yacc.c  */
    6374 #line 1113 "parser.yy"
    6375     {
    6376                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
    6377                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
     5717#line 1113 "parser.yy" /* yacc.c:1646  */
     5718    {
     5719                        typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::ID );
     5720                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
    63785721                }
     5722#line 5723 "Parser/parser.cc" /* yacc.c:1646  */
    63795723    break;
    63805724
    63815725  case 262:
    6382 
    6383 /* Line 1806 of yacc.c  */
    6384 #line 1121 "parser.yy"
    6385     {
    6386                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     5726#line 1121 "parser.yy" /* yacc.c:1646  */
     5727    {
     5728                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), DeclarationNode::newTuple( 0 ), (yyvsp[-2].decl), 0, true );
    63875729                }
     5730#line 5731 "Parser/parser.cc" /* yacc.c:1646  */
    63885731    break;
    63895732
    63905733  case 263:
    6391 
    6392 /* Line 1806 of yacc.c  */
    6393 #line 1144 "parser.yy"
    6394     {
    6395                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     5734#line 1144 "parser.yy" /* yacc.c:1646  */
     5735    {
     5736                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
    63965737                }
     5738#line 5739 "Parser/parser.cc" /* yacc.c:1646  */
    63975739    break;
    63985740
    63995741  case 264:
    6400 
    6401 /* Line 1806 of yacc.c  */
    6402 #line 1148 "parser.yy"
    6403     {
    6404                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     5742#line 1148 "parser.yy" /* yacc.c:1646  */
     5743    {
     5744                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
    64055745                }
     5746#line 5747 "Parser/parser.cc" /* yacc.c:1646  */
    64065747    break;
    64075748
    64085749  case 265:
    6409 
    6410 /* Line 1806 of yacc.c  */
    6411 #line 1155 "parser.yy"
    6412     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     5750#line 1155 "parser.yy" /* yacc.c:1646  */
     5751    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
     5752#line 5753 "Parser/parser.cc" /* yacc.c:1646  */
    64135753    break;
    64145754
    64155755  case 266:
    6416 
    6417 /* Line 1806 of yacc.c  */
    6418 #line 1159 "parser.yy"
    6419     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     5756#line 1159 "parser.yy" /* yacc.c:1646  */
     5757    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-6].decl)->appendList( (yyvsp[-2].decl) ) ); }
     5758#line 5759 "Parser/parser.cc" /* yacc.c:1646  */
    64205759    break;
    64215760
    64225761  case 267:
    6423 
    6424 /* Line 1806 of yacc.c  */
    6425 #line 1164 "parser.yy"
     5762#line 1164 "parser.yy" /* yacc.c:1646  */
    64265763    {
    64275764                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6428                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
     5765                        (yyval.decl) = (yyvsp[0].decl)->addTypedef();
    64295766                }
     5767#line 5768 "Parser/parser.cc" /* yacc.c:1646  */
    64305768    break;
    64315769
    64325770  case 268:
    6433 
    6434 /* Line 1806 of yacc.c  */
    6435 #line 1169 "parser.yy"
     5771#line 1169 "parser.yy" /* yacc.c:1646  */
    64365772    {
    64375773                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6438                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
     5774                        (yyval.decl) = (yyvsp[0].decl)->addTypedef();
    64395775                }
     5776#line 5777 "Parser/parser.cc" /* yacc.c:1646  */
    64405777    break;
    64415778
    64425779  case 269:
    6443 
    6444 /* Line 1806 of yacc.c  */
    6445 #line 1174 "parser.yy"
    6446     {
    6447                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
    6448                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
     5780#line 1174 "parser.yy" /* yacc.c:1646  */
     5781    {
     5782                        typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
     5783                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
    64495784                }
     5785#line 5786 "Parser/parser.cc" /* yacc.c:1646  */
    64505786    break;
    64515787
    64525788  case 270:
    6453 
    6454 /* Line 1806 of yacc.c  */
    6455 #line 1185 "parser.yy"
     5789#line 1185 "parser.yy" /* yacc.c:1646  */
    64565790    {
    64575791                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6458                         (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(2) - (3)].decl) )->addTypedef();
     5792                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addTypedef();
    64595793                }
     5794#line 5795 "Parser/parser.cc" /* yacc.c:1646  */
    64605795    break;
    64615796
    64625797  case 271:
    6463 
    6464 /* Line 1806 of yacc.c  */
    6465 #line 1190 "parser.yy"
     5798#line 1190 "parser.yy" /* yacc.c:1646  */
    64665799    {
    64675800                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6468                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) )->addTypedef() );
     5801                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) )->addTypedef() );
    64695802                }
     5803#line 5804 "Parser/parser.cc" /* yacc.c:1646  */
    64705804    break;
    64715805
    64725806  case 272:
    6473 
    6474 /* Line 1806 of yacc.c  */
    6475 #line 1195 "parser.yy"
     5807#line 1195 "parser.yy" /* yacc.c:1646  */
    64765808    {
    64775809                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6478                         (yyval.decl) = (yyvsp[(4) - (4)].decl)->addType( (yyvsp[(3) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef();
     5810                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[-3].decl) )->addTypedef();
    64795811                }
     5812#line 5813 "Parser/parser.cc" /* yacc.c:1646  */
    64805813    break;
    64815814
    64825815  case 273:
    6483 
    6484 /* Line 1806 of yacc.c  */
    6485 #line 1200 "parser.yy"
     5816#line 1200 "parser.yy" /* yacc.c:1646  */
    64865817    {
    64875818                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6488                         (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addTypedef();
     5819                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-2].decl) )->addTypedef();
    64895820                }
     5821#line 5822 "Parser/parser.cc" /* yacc.c:1646  */
    64905822    break;
    64915823
    64925824  case 274:
    6493 
    6494 /* Line 1806 of yacc.c  */
    6495 #line 1205 "parser.yy"
     5825#line 1205 "parser.yy" /* yacc.c:1646  */
    64965826    {
    64975827                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6498                         (yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef()->addType( (yyvsp[(1) - (4)].decl) );
     5828                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-3].decl) )->addTypedef()->addType( (yyvsp[-3].decl) );
    64995829                }
     5830#line 5831 "Parser/parser.cc" /* yacc.c:1646  */
    65005831    break;
    65015832
    65025833  case 275:
    6503 
    6504 /* Line 1806 of yacc.c  */
    6505 #line 1214 "parser.yy"
    6506     {
    6507                         typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     5834#line 1214 "parser.yy" /* yacc.c:1646  */
     5835    {
     5836                        typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
    65085837                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    65095838                }
     5839#line 5840 "Parser/parser.cc" /* yacc.c:1646  */
    65105840    break;
    65115841
    65125842  case 276:
    6513 
    6514 /* Line 1806 of yacc.c  */
    6515 #line 1219 "parser.yy"
    6516     {
    6517                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     5843#line 1219 "parser.yy" /* yacc.c:1646  */
     5844    {
     5845                        typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
    65185846                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    65195847                }
     5848#line 5849 "Parser/parser.cc" /* yacc.c:1646  */
    65205849    break;
    65215850
    65225851  case 281:
    6523 
    6524 /* Line 1806 of yacc.c  */
    6525 #line 1236 "parser.yy"
     5852#line 1236 "parser.yy" /* yacc.c:1646  */
    65265853    {
    65275854                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6528                         (yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer( (yyvsp[(4) - (4)].in) );
     5855                        (yyval.decl) = ( (yyvsp[-2].decl)->addType( (yyvsp[-3].decl) ))->addInitializer( (yyvsp[0].in) );
    65295856                }
     5857#line 5858 "Parser/parser.cc" /* yacc.c:1646  */
    65305858    break;
    65315859
    65325860  case 282:
    6533 
    6534 /* Line 1806 of yacc.c  */
    6535 #line 1241 "parser.yy"
     5861#line 1241 "parser.yy" /* yacc.c:1646  */
    65365862    {
    65375863                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6538                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
     5864                        (yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneBaseType( (yyvsp[-2].decl)->addInitializer( (yyvsp[0].in) ) ) );
    65395865                }
     5866#line 5867 "Parser/parser.cc" /* yacc.c:1646  */
    65405867    break;
    65415868
    65425869  case 291:
    6543 
    6544 /* Line 1806 of yacc.c  */
    6545 #line 1263 "parser.yy"
     5870#line 1263 "parser.yy" /* yacc.c:1646  */
    65465871    { (yyval.decl) = 0; }
     5872#line 5873 "Parser/parser.cc" /* yacc.c:1646  */
    65475873    break;
    65485874
    65495875  case 294:
    6550 
    6551 /* Line 1806 of yacc.c  */
    6552 #line 1275 "parser.yy"
    6553     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     5876#line 1275 "parser.yy" /* yacc.c:1646  */
     5877    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     5878#line 5879 "Parser/parser.cc" /* yacc.c:1646  */
    65545879    break;
    65555880
    65565881  case 297:
    6557 
    6558 /* Line 1806 of yacc.c  */
    6559 #line 1286 "parser.yy"
     5882#line 1286 "parser.yy" /* yacc.c:1646  */
    65605883    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     5884#line 5885 "Parser/parser.cc" /* yacc.c:1646  */
    65615885    break;
    65625886
    65635887  case 298:
    6564 
    6565 /* Line 1806 of yacc.c  */
    6566 #line 1288 "parser.yy"
     5888#line 1288 "parser.yy" /* yacc.c:1646  */
    65675889    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     5890#line 5891 "Parser/parser.cc" /* yacc.c:1646  */
    65685891    break;
    65695892
    65705893  case 299:
    6571 
    6572 /* Line 1806 of yacc.c  */
    6573 #line 1290 "parser.yy"
     5894#line 1290 "parser.yy" /* yacc.c:1646  */
    65745895    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     5896#line 5897 "Parser/parser.cc" /* yacc.c:1646  */
    65755897    break;
    65765898
    65775899  case 300:
    6578 
    6579 /* Line 1806 of yacc.c  */
    6580 #line 1292 "parser.yy"
     5900#line 1292 "parser.yy" /* yacc.c:1646  */
    65815901    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     5902#line 5903 "Parser/parser.cc" /* yacc.c:1646  */
    65825903    break;
    65835904
    65845905  case 301:
    6585 
    6586 /* Line 1806 of yacc.c  */
    6587 #line 1294 "parser.yy"
     5906#line 1294 "parser.yy" /* yacc.c:1646  */
    65885907    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     5908#line 5909 "Parser/parser.cc" /* yacc.c:1646  */
    65895909    break;
    65905910
    65915911  case 302:
    6592 
    6593 /* Line 1806 of yacc.c  */
    6594 #line 1296 "parser.yy"
     5912#line 1296 "parser.yy" /* yacc.c:1646  */
    65955913    {
    65965914                        typedefTable.enterScope();
    65975915                }
     5916#line 5917 "Parser/parser.cc" /* yacc.c:1646  */
    65985917    break;
    65995918
    66005919  case 303:
    6601 
    6602 /* Line 1806 of yacc.c  */
    6603 #line 1300 "parser.yy"
     5920#line 1300 "parser.yy" /* yacc.c:1646  */
    66045921    {
    66055922                        typedefTable.leaveScope();
    6606                         (yyval.decl) = DeclarationNode::newForall( (yyvsp[(4) - (5)].decl) );
     5923                        (yyval.decl) = DeclarationNode::newForall( (yyvsp[-1].decl) );
    66075924                }
     5925#line 5926 "Parser/parser.cc" /* yacc.c:1646  */
    66085926    break;
    66095927
    66105928  case 305:
    6611 
    6612 /* Line 1806 of yacc.c  */
    6613 #line 1309 "parser.yy"
    6614     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     5929#line 1309 "parser.yy" /* yacc.c:1646  */
     5930    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     5931#line 5932 "Parser/parser.cc" /* yacc.c:1646  */
    66155932    break;
    66165933
    66175934  case 306:
    6618 
    6619 /* Line 1806 of yacc.c  */
    6620 #line 1311 "parser.yy"
    6621     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     5935#line 1311 "parser.yy" /* yacc.c:1646  */
     5936    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     5937#line 5938 "Parser/parser.cc" /* yacc.c:1646  */
    66225938    break;
    66235939
    66245940  case 308:
    6625 
    6626 /* Line 1806 of yacc.c  */
    6627 #line 1322 "parser.yy"
    6628     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     5941#line 1322 "parser.yy" /* yacc.c:1646  */
     5942    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     5943#line 5944 "Parser/parser.cc" /* yacc.c:1646  */
     5944    break;
     5945
     5946  case 309:
     5947#line 1327 "parser.yy" /* yacc.c:1646  */
     5948    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     5949#line 5950 "Parser/parser.cc" /* yacc.c:1646  */
    66295950    break;
    66305951
    66315952  case 310:
    6632 
    6633 /* Line 1806 of yacc.c  */
    6634 #line 1331 "parser.yy"
    6635     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     5953#line 1329 "parser.yy" /* yacc.c:1646  */
     5954    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     5955#line 5956 "Parser/parser.cc" /* yacc.c:1646  */
    66365956    break;
    66375957
    66385958  case 311:
    6639 
    6640 /* Line 1806 of yacc.c  */
    6641 #line 1333 "parser.yy"
    6642     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     5959#line 1331 "parser.yy" /* yacc.c:1646  */
     5960    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     5961#line 5962 "Parser/parser.cc" /* yacc.c:1646  */
    66435962    break;
    66445963
    66455964  case 312:
    6646 
    6647 /* Line 1806 of yacc.c  */
    6648 #line 1335 "parser.yy"
    6649     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     5965#line 1333 "parser.yy" /* yacc.c:1646  */
     5966    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     5967#line 5968 "Parser/parser.cc" /* yacc.c:1646  */
    66505968    break;
    66515969
    66525970  case 313:
    6653 
    6654 /* Line 1806 of yacc.c  */
    6655 #line 1337 "parser.yy"
    6656     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     5971#line 1335 "parser.yy" /* yacc.c:1646  */
     5972    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     5973#line 5974 "Parser/parser.cc" /* yacc.c:1646  */
    66575974    break;
    66585975
    66595976  case 314:
    6660 
    6661 /* Line 1806 of yacc.c  */
    6662 #line 1339 "parser.yy"
    6663     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     5977#line 1337 "parser.yy" /* yacc.c:1646  */
     5978    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     5979#line 5980 "Parser/parser.cc" /* yacc.c:1646  */
    66645980    break;
    66655981
    66665982  case 315:
    6667 
    6668 /* Line 1806 of yacc.c  */
    6669 #line 1341 "parser.yy"
    6670     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     5983#line 1339 "parser.yy" /* yacc.c:1646  */
     5984    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     5985#line 5986 "Parser/parser.cc" /* yacc.c:1646  */
    66715986    break;
    66725987
    66735988  case 316:
    6674 
    6675 /* Line 1806 of yacc.c  */
    6676 #line 1343 "parser.yy"
    6677     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     5989#line 1341 "parser.yy" /* yacc.c:1646  */
     5990    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     5991#line 5992 "Parser/parser.cc" /* yacc.c:1646  */
    66785992    break;
    66795993
    66805994  case 317:
    6681 
    6682 /* Line 1806 of yacc.c  */
    6683 #line 1345 "parser.yy"
    6684     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     5995#line 1346 "parser.yy" /* yacc.c:1646  */
     5996    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     5997#line 5998 "Parser/parser.cc" /* yacc.c:1646  */
    66855998    break;
    66865999
    66876000  case 318:
    6688 
    6689 /* Line 1806 of yacc.c  */
    6690 #line 1350 "parser.yy"
    6691     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     6001#line 1348 "parser.yy" /* yacc.c:1646  */
     6002    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6003#line 6004 "Parser/parser.cc" /* yacc.c:1646  */
    66926004    break;
    66936005
    66946006  case 319:
    6695 
    6696 /* Line 1806 of yacc.c  */
    6697 #line 1352 "parser.yy"
    6698     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6007#line 1350 "parser.yy" /* yacc.c:1646  */
     6008    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6009#line 6010 "Parser/parser.cc" /* yacc.c:1646  */
    66996010    break;
    67006011
    67016012  case 320:
    6702 
    6703 /* Line 1806 of yacc.c  */
    6704 #line 1354 "parser.yy"
    6705     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6013#line 1352 "parser.yy" /* yacc.c:1646  */
     6014    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6015#line 6016 "Parser/parser.cc" /* yacc.c:1646  */
    67066016    break;
    67076017
    67086018  case 321:
    6709 
    6710 /* Line 1806 of yacc.c  */
    6711 #line 1356 "parser.yy"
    6712     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6019#line 1354 "parser.yy" /* yacc.c:1646  */
     6020    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     6021#line 6022 "Parser/parser.cc" /* yacc.c:1646  */
    67136022    break;
    67146023
    67156024  case 322:
    6716 
    6717 /* Line 1806 of yacc.c  */
    6718 #line 1358 "parser.yy"
    6719     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     6025#line 1356 "parser.yy" /* yacc.c:1646  */
     6026    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     6027#line 6028 "Parser/parser.cc" /* yacc.c:1646  */
    67206028    break;
    67216029
    67226030  case 323:
    6723 
    6724 /* Line 1806 of yacc.c  */
    6725 #line 1360 "parser.yy"
    6726     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     6031#line 1358 "parser.yy" /* yacc.c:1646  */
     6032    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     6033#line 6034 "Parser/parser.cc" /* yacc.c:1646  */
    67276034    break;
    67286035
    67296036  case 324:
    6730 
    6731 /* Line 1806 of yacc.c  */
    6732 #line 1362 "parser.yy"
    6733     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     6037#line 1360 "parser.yy" /* yacc.c:1646  */
     6038    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     6039#line 6040 "Parser/parser.cc" /* yacc.c:1646  */
    67346040    break;
    67356041
    67366042  case 325:
    6737 
    6738 /* Line 1806 of yacc.c  */
    6739 #line 1364 "parser.yy"
    6740     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     6043#line 1362 "parser.yy" /* yacc.c:1646  */
     6044    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6045#line 6046 "Parser/parser.cc" /* yacc.c:1646  */
    67416046    break;
    67426047
    67436048  case 326:
    6744 
    6745 /* Line 1806 of yacc.c  */
    6746 #line 1366 "parser.yy"
    6747     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6049#line 1364 "parser.yy" /* yacc.c:1646  */
     6050    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6051#line 6052 "Parser/parser.cc" /* yacc.c:1646  */
    67486052    break;
    67496053
    67506054  case 327:
    6751 
    6752 /* Line 1806 of yacc.c  */
    6753 #line 1368 "parser.yy"
    6754     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6055#line 1366 "parser.yy" /* yacc.c:1646  */
     6056    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     6057#line 6058 "Parser/parser.cc" /* yacc.c:1646  */
    67556058    break;
    67566059
    67576060  case 328:
    6758 
    6759 /* Line 1806 of yacc.c  */
    6760 #line 1370 "parser.yy"
    6761     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     6061#line 1368 "parser.yy" /* yacc.c:1646  */
     6062    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     6063#line 6064 "Parser/parser.cc" /* yacc.c:1646  */
    67626064    break;
    67636065
    67646066  case 329:
    6765 
    6766 /* Line 1806 of yacc.c  */
    6767 #line 1372 "parser.yy"
    6768     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    6769     break;
    6770 
    6771   case 330:
    6772 
    6773 /* Line 1806 of yacc.c  */
    6774 #line 1374 "parser.yy"
     6067#line 1370 "parser.yy" /* yacc.c:1646  */
    67756068    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     6069#line 6070 "Parser/parser.cc" /* yacc.c:1646  */
     6070    break;
     6071
     6072  case 331:
     6073#line 1377 "parser.yy" /* yacc.c:1646  */
     6074    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6075#line 6076 "Parser/parser.cc" /* yacc.c:1646  */
    67766076    break;
    67776077
    67786078  case 332:
    6779 
    6780 /* Line 1806 of yacc.c  */
    6781 #line 1381 "parser.yy"
    6782     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6079#line 1379 "parser.yy" /* yacc.c:1646  */
     6080    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6081#line 6082 "Parser/parser.cc" /* yacc.c:1646  */
    67836082    break;
    67846083
    67856084  case 333:
    6786 
    6787 /* Line 1806 of yacc.c  */
    6788 #line 1383 "parser.yy"
    6789     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6085#line 1381 "parser.yy" /* yacc.c:1646  */
     6086    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6087#line 6088 "Parser/parser.cc" /* yacc.c:1646  */
    67906088    break;
    67916089
    67926090  case 334:
    6793 
    6794 /* Line 1806 of yacc.c  */
    6795 #line 1385 "parser.yy"
    6796     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6797     break;
    6798 
    6799   case 335:
    6800 
    6801 /* Line 1806 of yacc.c  */
    6802 #line 1387 "parser.yy"
    6803     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    6804     break;
    6805 
    6806   case 337:
    6807 
    6808 /* Line 1806 of yacc.c  */
    6809 #line 1393 "parser.yy"
    6810     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6091#line 1383 "parser.yy" /* yacc.c:1646  */
     6092    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) )->addType( (yyvsp[-2].decl) ); }
     6093#line 6094 "Parser/parser.cc" /* yacc.c:1646  */
     6094    break;
     6095
     6096  case 336:
     6097#line 1389 "parser.yy" /* yacc.c:1646  */
     6098    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6099#line 6100 "Parser/parser.cc" /* yacc.c:1646  */
     6100    break;
     6101
     6102  case 338:
     6103#line 1396 "parser.yy" /* yacc.c:1646  */
     6104    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6105#line 6106 "Parser/parser.cc" /* yacc.c:1646  */
    68116106    break;
    68126107
    68136108  case 339:
    6814 
    6815 /* Line 1806 of yacc.c  */
    6816 #line 1400 "parser.yy"
    6817     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6109#line 1398 "parser.yy" /* yacc.c:1646  */
     6110    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6111#line 6112 "Parser/parser.cc" /* yacc.c:1646  */
    68186112    break;
    68196113
    68206114  case 340:
    6821 
    6822 /* Line 1806 of yacc.c  */
    6823 #line 1402 "parser.yy"
    6824     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6115#line 1400 "parser.yy" /* yacc.c:1646  */
     6116    { (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[0].decl) ); }
     6117#line 6118 "Parser/parser.cc" /* yacc.c:1646  */
    68256118    break;
    68266119
    68276120  case 341:
    6828 
    6829 /* Line 1806 of yacc.c  */
    6830 #line 1404 "parser.yy"
    6831     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     6121#line 1405 "parser.yy" /* yacc.c:1646  */
     6122    { (yyval.decl) = (yyvsp[-1].decl); }
     6123#line 6124 "Parser/parser.cc" /* yacc.c:1646  */
    68326124    break;
    68336125
    68346126  case 342:
    6835 
    6836 /* Line 1806 of yacc.c  */
    6837 #line 1409 "parser.yy"
    6838     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     6127#line 1407 "parser.yy" /* yacc.c:1646  */
     6128    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[-1].en) ); }
     6129#line 6130 "Parser/parser.cc" /* yacc.c:1646  */
    68396130    break;
    68406131
    68416132  case 343:
    6842 
    6843 /* Line 1806 of yacc.c  */
    6844 #line 1411 "parser.yy"
    6845     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     6133#line 1409 "parser.yy" /* yacc.c:1646  */
     6134    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].decl) ); }
     6135#line 6136 "Parser/parser.cc" /* yacc.c:1646  */
    68466136    break;
    68476137
    68486138  case 344:
    6849 
    6850 /* Line 1806 of yacc.c  */
    6851 #line 1413 "parser.yy"
    6852     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    6853     break;
    6854 
    6855   case 345:
    6856 
    6857 /* Line 1806 of yacc.c  */
    6858 #line 1415 "parser.yy"
    6859     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6139#line 1411 "parser.yy" /* yacc.c:1646  */
     6140    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
     6141#line 6142 "Parser/parser.cc" /* yacc.c:1646  */
     6142    break;
     6143
     6144  case 346:
     6145#line 1417 "parser.yy" /* yacc.c:1646  */
     6146    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6147#line 6148 "Parser/parser.cc" /* yacc.c:1646  */
    68606148    break;
    68616149
    68626150  case 347:
    6863 
    6864 /* Line 1806 of yacc.c  */
    6865 #line 1421 "parser.yy"
    6866     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6151#line 1419 "parser.yy" /* yacc.c:1646  */
     6152    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6153#line 6154 "Parser/parser.cc" /* yacc.c:1646  */
    68676154    break;
    68686155
    68696156  case 348:
    6870 
    6871 /* Line 1806 of yacc.c  */
    6872 #line 1423 "parser.yy"
    6873     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6874     break;
    6875 
    6876   case 349:
    6877 
    6878 /* Line 1806 of yacc.c  */
    6879 #line 1425 "parser.yy"
    6880     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6157#line 1421 "parser.yy" /* yacc.c:1646  */
     6158    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6159#line 6160 "Parser/parser.cc" /* yacc.c:1646  */
     6160    break;
     6161
     6162  case 350:
     6163#line 1427 "parser.yy" /* yacc.c:1646  */
     6164    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6165#line 6166 "Parser/parser.cc" /* yacc.c:1646  */
    68816166    break;
    68826167
    68836168  case 351:
    6884 
    6885 /* Line 1806 of yacc.c  */
    6886 #line 1431 "parser.yy"
    6887     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6888     break;
    6889 
    6890   case 352:
    6891 
    6892 /* Line 1806 of yacc.c  */
    6893 #line 1433 "parser.yy"
    6894     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6169#line 1429 "parser.yy" /* yacc.c:1646  */
     6170    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6171#line 6172 "Parser/parser.cc" /* yacc.c:1646  */
     6172    break;
     6173
     6174  case 353:
     6175#line 1435 "parser.yy" /* yacc.c:1646  */
     6176    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6177#line 6178 "Parser/parser.cc" /* yacc.c:1646  */
    68956178    break;
    68966179
    68976180  case 354:
    6898 
    6899 /* Line 1806 of yacc.c  */
    6900 #line 1439 "parser.yy"
    6901     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6181#line 1437 "parser.yy" /* yacc.c:1646  */
     6182    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6183#line 6184 "Parser/parser.cc" /* yacc.c:1646  */
    69026184    break;
    69036185
    69046186  case 355:
    6905 
    6906 /* Line 1806 of yacc.c  */
    6907 #line 1441 "parser.yy"
    6908     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6187#line 1439 "parser.yy" /* yacc.c:1646  */
     6188    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6189#line 6190 "Parser/parser.cc" /* yacc.c:1646  */
    69096190    break;
    69106191
    69116192  case 356:
    6912 
    6913 /* Line 1806 of yacc.c  */
    6914 #line 1443 "parser.yy"
    6915     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6193#line 1444 "parser.yy" /* yacc.c:1646  */
     6194    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) ); }
     6195#line 6196 "Parser/parser.cc" /* yacc.c:1646  */
    69166196    break;
    69176197
    69186198  case 357:
    6919 
    6920 /* Line 1806 of yacc.c  */
    6921 #line 1448 "parser.yy"
    6922     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     6199#line 1446 "parser.yy" /* yacc.c:1646  */
     6200    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) )->addQualifiers( (yyvsp[-1].decl) ); }
     6201#line 6202 "Parser/parser.cc" /* yacc.c:1646  */
    69236202    break;
    69246203
    69256204  case 358:
    6926 
    6927 /* Line 1806 of yacc.c  */
    6928 #line 1450 "parser.yy"
    6929     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6930     break;
    6931 
    6932   case 359:
    6933 
    6934 /* Line 1806 of yacc.c  */
    6935 #line 1452 "parser.yy"
    6936     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6205#line 1448 "parser.yy" /* yacc.c:1646  */
     6206    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6207#line 6208 "Parser/parser.cc" /* yacc.c:1646  */
     6208    break;
     6209
     6210  case 361:
     6211#line 1458 "parser.yy" /* yacc.c:1646  */
     6212    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-3].aggKey), 0, 0, (yyvsp[-1].decl), true ); }
     6213#line 6214 "Parser/parser.cc" /* yacc.c:1646  */
    69376214    break;
    69386215
    69396216  case 362:
    6940 
    6941 /* Line 1806 of yacc.c  */
    6942 #line 1462 "parser.yy"
    6943     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
     6217#line 1460 "parser.yy" /* yacc.c:1646  */
     6218    {
     6219                        typedefTable.makeTypedef( *(yyvsp[0].tok) );
     6220                        (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-1].aggKey), (yyvsp[0].tok), 0, 0, false );
     6221                }
     6222#line 6223 "Parser/parser.cc" /* yacc.c:1646  */
    69446223    break;
    69456224
    69466225  case 363:
    6947 
    6948 /* Line 1806 of yacc.c  */
    6949 #line 1464 "parser.yy"
    6950     {
    6951                         typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
    6952                         (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, false );
     6226#line 1465 "parser.yy" /* yacc.c:1646  */
     6227    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
     6228#line 6229 "Parser/parser.cc" /* yacc.c:1646  */
     6229    break;
     6230
     6231  case 364:
     6232#line 1467 "parser.yy" /* yacc.c:1646  */
     6233    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-5].aggKey), (yyvsp[-4].tok), 0, (yyvsp[-1].decl), true ); }
     6234#line 6235 "Parser/parser.cc" /* yacc.c:1646  */
     6235    break;
     6236
     6237  case 365:
     6238#line 1469 "parser.yy" /* yacc.c:1646  */
     6239    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-6].aggKey), 0, (yyvsp[-4].en), (yyvsp[-1].decl), false ); }
     6240#line 6241 "Parser/parser.cc" /* yacc.c:1646  */
     6241    break;
     6242
     6243  case 366:
     6244#line 1471 "parser.yy" /* yacc.c:1646  */
     6245    { (yyval.decl) = (yyvsp[0].decl); }
     6246#line 6247 "Parser/parser.cc" /* yacc.c:1646  */
     6247    break;
     6248
     6249  case 367:
     6250#line 1476 "parser.yy" /* yacc.c:1646  */
     6251    { (yyval.aggKey) = DeclarationNode::Struct; }
     6252#line 6253 "Parser/parser.cc" /* yacc.c:1646  */
     6253    break;
     6254
     6255  case 368:
     6256#line 1478 "parser.yy" /* yacc.c:1646  */
     6257    { (yyval.aggKey) = DeclarationNode::Union; }
     6258#line 6259 "Parser/parser.cc" /* yacc.c:1646  */
     6259    break;
     6260
     6261  case 369:
     6262#line 1483 "parser.yy" /* yacc.c:1646  */
     6263    { (yyval.decl) = 0; }
     6264#line 6265 "Parser/parser.cc" /* yacc.c:1646  */
     6265    break;
     6266
     6267  case 370:
     6268#line 1485 "parser.yy" /* yacc.c:1646  */
     6269    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
     6270#line 6271 "Parser/parser.cc" /* yacc.c:1646  */
     6271    break;
     6272
     6273  case 372:
     6274#line 1491 "parser.yy" /* yacc.c:1646  */
     6275    { (yyval.decl) = (yyvsp[-1].decl)->set_extension( true ); }
     6276#line 6277 "Parser/parser.cc" /* yacc.c:1646  */
     6277    break;
     6278
     6279  case 374:
     6280#line 1494 "parser.yy" /* yacc.c:1646  */
     6281    {   // mark all fields in list
     6282                        for ( DeclarationNode *iter = (yyvsp[-1].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     6283                                iter->set_extension( true );
     6284                        (yyval.decl) = (yyvsp[-1].decl);
    69536285                }
    6954     break;
    6955 
    6956   case 364:
    6957 
    6958 /* Line 1806 of yacc.c  */
    6959 #line 1469 "parser.yy"
    6960     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    6961     break;
    6962 
    6963   case 365:
    6964 
    6965 /* Line 1806 of yacc.c  */
    6966 #line 1471 "parser.yy"
    6967     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
    6968     break;
    6969 
    6970   case 366:
    6971 
    6972 /* Line 1806 of yacc.c  */
    6973 #line 1473 "parser.yy"
    6974     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    6975     break;
    6976 
    6977   case 367:
    6978 
    6979 /* Line 1806 of yacc.c  */
    6980 #line 1475 "parser.yy"
    6981     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    6982     break;
    6983 
    6984   case 368:
    6985 
    6986 /* Line 1806 of yacc.c  */
    6987 #line 1480 "parser.yy"
    6988     { (yyval.aggKey) = DeclarationNode::Struct; }
    6989     break;
    6990 
    6991   case 369:
    6992 
    6993 /* Line 1806 of yacc.c  */
    6994 #line 1482 "parser.yy"
    6995     { (yyval.aggKey) = DeclarationNode::Union; }
    6996     break;
    6997 
    6998   case 370:
    6999 
    7000 /* Line 1806 of yacc.c  */
    7001 #line 1487 "parser.yy"
     6286#line 6287 "Parser/parser.cc" /* yacc.c:1646  */
     6287    break;
     6288
     6289  case 376:
     6290#line 1504 "parser.yy" /* yacc.c:1646  */
     6291    { (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) ); }
     6292#line 6293 "Parser/parser.cc" /* yacc.c:1646  */
     6293    break;
     6294
     6295  case 377:
     6296#line 1506 "parser.yy" /* yacc.c:1646  */
     6297    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[-2].decl)->cloneType( (yyvsp[0].tok) ) ); }
     6298#line 6299 "Parser/parser.cc" /* yacc.c:1646  */
     6299    break;
     6300
     6301  case 378:
     6302#line 1508 "parser.yy" /* yacc.c:1646  */
     6303    { (yyval.decl) = (yyvsp[-1].decl)->appendList( (yyvsp[-1].decl)->cloneType( 0 ) ); }
     6304#line 6305 "Parser/parser.cc" /* yacc.c:1646  */
     6305    break;
     6306
     6307  case 379:
     6308#line 1513 "parser.yy" /* yacc.c:1646  */
     6309    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6310#line 6311 "Parser/parser.cc" /* yacc.c:1646  */
     6311    break;
     6312
     6313  case 380:
     6314#line 1515 "parser.yy" /* yacc.c:1646  */
     6315    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-3].decl)->cloneBaseType( (yyvsp[0].decl) ) ); }
     6316#line 6317 "Parser/parser.cc" /* yacc.c:1646  */
     6317    break;
     6318
     6319  case 381:
     6320#line 1520 "parser.yy" /* yacc.c:1646  */
     6321    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     6322#line 6323 "Parser/parser.cc" /* yacc.c:1646  */
     6323    break;
     6324
     6325  case 382:
     6326#line 1522 "parser.yy" /* yacc.c:1646  */
     6327    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[0].en) ); }
     6328#line 6329 "Parser/parser.cc" /* yacc.c:1646  */
     6329    break;
     6330
     6331  case 383:
     6332#line 1525 "parser.yy" /* yacc.c:1646  */
     6333    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
     6334#line 6335 "Parser/parser.cc" /* yacc.c:1646  */
     6335    break;
     6336
     6337  case 384:
     6338#line 1528 "parser.yy" /* yacc.c:1646  */
     6339    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
     6340#line 6341 "Parser/parser.cc" /* yacc.c:1646  */
     6341    break;
     6342
     6343  case 386:
     6344#line 1534 "parser.yy" /* yacc.c:1646  */
     6345    { (yyval.en) = 0; }
     6346#line 6347 "Parser/parser.cc" /* yacc.c:1646  */
     6347    break;
     6348
     6349  case 387:
     6350#line 1536 "parser.yy" /* yacc.c:1646  */
     6351    { (yyval.en) = (yyvsp[0].en); }
     6352#line 6353 "Parser/parser.cc" /* yacc.c:1646  */
     6353    break;
     6354
     6355  case 388:
     6356#line 1541 "parser.yy" /* yacc.c:1646  */
     6357    { (yyval.en) = (yyvsp[0].en); }
     6358#line 6359 "Parser/parser.cc" /* yacc.c:1646  */
     6359    break;
     6360
     6361  case 390:
     6362#line 1550 "parser.yy" /* yacc.c:1646  */
     6363    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[-2].decl) ); }
     6364#line 6365 "Parser/parser.cc" /* yacc.c:1646  */
     6365    break;
     6366
     6367  case 391:
     6368#line 1552 "parser.yy" /* yacc.c:1646  */
     6369    {
     6370                        typedefTable.makeTypedef( *(yyvsp[0].tok) );
     6371                        (yyval.decl) = DeclarationNode::newEnum( (yyvsp[0].tok), 0 );
     6372                }
     6373#line 6374 "Parser/parser.cc" /* yacc.c:1646  */
     6374    break;
     6375
     6376  case 392:
     6377#line 1557 "parser.yy" /* yacc.c:1646  */
     6378    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
     6379#line 6380 "Parser/parser.cc" /* yacc.c:1646  */
     6380    break;
     6381
     6382  case 393:
     6383#line 1559 "parser.yy" /* yacc.c:1646  */
     6384    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[-5].tok), (yyvsp[-2].decl) ); }
     6385#line 6386 "Parser/parser.cc" /* yacc.c:1646  */
     6386    break;
     6387
     6388  case 394:
     6389#line 1564 "parser.yy" /* yacc.c:1646  */
     6390    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ); }
     6391#line 6392 "Parser/parser.cc" /* yacc.c:1646  */
     6392    break;
     6393
     6394  case 395:
     6395#line 1566 "parser.yy" /* yacc.c:1646  */
     6396    { (yyval.decl) = (yyvsp[-3].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ) ); }
     6397#line 6398 "Parser/parser.cc" /* yacc.c:1646  */
     6398    break;
     6399
     6400  case 396:
     6401#line 1571 "parser.yy" /* yacc.c:1646  */
     6402    { (yyval.en) = 0; }
     6403#line 6404 "Parser/parser.cc" /* yacc.c:1646  */
     6404    break;
     6405
     6406  case 397:
     6407#line 1573 "parser.yy" /* yacc.c:1646  */
     6408    { (yyval.en) = (yyvsp[0].en); }
     6409#line 6410 "Parser/parser.cc" /* yacc.c:1646  */
     6410    break;
     6411
     6412  case 398:
     6413#line 1580 "parser.yy" /* yacc.c:1646  */
    70026414    { (yyval.decl) = 0; }
    7003     break;
    7004 
    7005   case 371:
    7006 
    7007 /* Line 1806 of yacc.c  */
    7008 #line 1489 "parser.yy"
    7009     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7010     break;
    7011 
    7012   case 373:
    7013 
    7014 /* Line 1806 of yacc.c  */
    7015 #line 1495 "parser.yy"
    7016     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    7017     break;
    7018 
    7019   case 375:
    7020 
    7021 /* Line 1806 of yacc.c  */
    7022 #line 1498 "parser.yy"
    7023     {   // mark all fields in list
    7024                         for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
    7025                                 iter->set_extension( true );
    7026                         (yyval.decl) = (yyvsp[(2) - (3)].decl);
     6415#line 6416 "Parser/parser.cc" /* yacc.c:1646  */
     6416    break;
     6417
     6418  case 402:
     6419#line 1588 "parser.yy" /* yacc.c:1646  */
     6420    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6421#line 6422 "Parser/parser.cc" /* yacc.c:1646  */
     6422    break;
     6423
     6424  case 403:
     6425#line 1590 "parser.yy" /* yacc.c:1646  */
     6426    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
     6427#line 6428 "Parser/parser.cc" /* yacc.c:1646  */
     6428    break;
     6429
     6430  case 404:
     6431#line 1592 "parser.yy" /* yacc.c:1646  */
     6432    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
     6433#line 6434 "Parser/parser.cc" /* yacc.c:1646  */
     6434    break;
     6435
     6436  case 406:
     6437#line 1600 "parser.yy" /* yacc.c:1646  */
     6438    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6439#line 6440 "Parser/parser.cc" /* yacc.c:1646  */
     6440    break;
     6441
     6442  case 407:
     6443#line 1602 "parser.yy" /* yacc.c:1646  */
     6444    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6445#line 6446 "Parser/parser.cc" /* yacc.c:1646  */
     6446    break;
     6447
     6448  case 408:
     6449#line 1604 "parser.yy" /* yacc.c:1646  */
     6450    { (yyval.decl) = (yyvsp[-8].decl)->appendList( (yyvsp[-4].decl) )->appendList( (yyvsp[0].decl) ); }
     6451#line 6452 "Parser/parser.cc" /* yacc.c:1646  */
     6452    break;
     6453
     6454  case 410:
     6455#line 1610 "parser.yy" /* yacc.c:1646  */
     6456    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6457#line 6458 "Parser/parser.cc" /* yacc.c:1646  */
     6458    break;
     6459
     6460  case 411:
     6461#line 1615 "parser.yy" /* yacc.c:1646  */
     6462    { (yyval.decl) = 0; }
     6463#line 6464 "Parser/parser.cc" /* yacc.c:1646  */
     6464    break;
     6465
     6466  case 414:
     6467#line 1622 "parser.yy" /* yacc.c:1646  */
     6468    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
     6469#line 6470 "Parser/parser.cc" /* yacc.c:1646  */
     6470    break;
     6471
     6472  case 417:
     6473#line 1629 "parser.yy" /* yacc.c:1646  */
     6474    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6475#line 6476 "Parser/parser.cc" /* yacc.c:1646  */
     6476    break;
     6477
     6478  case 418:
     6479#line 1631 "parser.yy" /* yacc.c:1646  */
     6480    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6481#line 6482 "Parser/parser.cc" /* yacc.c:1646  */
     6482    break;
     6483
     6484  case 420:
     6485#line 1640 "parser.yy" /* yacc.c:1646  */
     6486    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
     6487#line 6488 "Parser/parser.cc" /* yacc.c:1646  */
     6488    break;
     6489
     6490  case 421:
     6491#line 1643 "parser.yy" /* yacc.c:1646  */
     6492    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
     6493#line 6494 "Parser/parser.cc" /* yacc.c:1646  */
     6494    break;
     6495
     6496  case 422:
     6497#line 1645 "parser.yy" /* yacc.c:1646  */
     6498    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) )->addQualifiers( (yyvsp[-3].decl) ); }
     6499#line 6500 "Parser/parser.cc" /* yacc.c:1646  */
     6500    break;
     6501
     6502  case 427:
     6503#line 1655 "parser.yy" /* yacc.c:1646  */
     6504    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6505#line 6506 "Parser/parser.cc" /* yacc.c:1646  */
     6506    break;
     6507
     6508  case 429:
     6509#line 1661 "parser.yy" /* yacc.c:1646  */
     6510    {
     6511                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     6512                        (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
    70276513                }
    7028     break;
    7029 
    7030   case 377:
    7031 
    7032 /* Line 1806 of yacc.c  */
    7033 #line 1508 "parser.yy"
    7034     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    7035     break;
    7036 
    7037   case 378:
    7038 
    7039 /* Line 1806 of yacc.c  */
    7040 #line 1510 "parser.yy"
    7041     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    7042     break;
    7043 
    7044   case 379:
    7045 
    7046 /* Line 1806 of yacc.c  */
    7047 #line 1512 "parser.yy"
    7048     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    7049     break;
    7050 
    7051   case 380:
    7052 
    7053 /* Line 1806 of yacc.c  */
    7054 #line 1517 "parser.yy"
    7055     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7056     break;
    7057 
    7058   case 381:
    7059 
    7060 /* Line 1806 of yacc.c  */
    7061 #line 1519 "parser.yy"
    7062     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    7063     break;
    7064 
    7065   case 382:
    7066 
    7067 /* Line 1806 of yacc.c  */
    7068 #line 1524 "parser.yy"
    7069     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    7070     break;
    7071 
    7072   case 383:
    7073 
    7074 /* Line 1806 of yacc.c  */
    7075 #line 1526 "parser.yy"
    7076     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    7077     break;
    7078 
    7079   case 384:
    7080 
    7081 /* Line 1806 of yacc.c  */
    7082 #line 1529 "parser.yy"
    7083     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7084     break;
    7085 
    7086   case 385:
    7087 
    7088 /* Line 1806 of yacc.c  */
    7089 #line 1532 "parser.yy"
    7090     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7091     break;
    7092 
    7093   case 387:
    7094 
    7095 /* Line 1806 of yacc.c  */
    7096 #line 1538 "parser.yy"
    7097     { (yyval.en) = 0; }
    7098     break;
    7099 
    7100   case 388:
    7101 
    7102 /* Line 1806 of yacc.c  */
    7103 #line 1540 "parser.yy"
    7104     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    7105     break;
    7106 
    7107   case 389:
    7108 
    7109 /* Line 1806 of yacc.c  */
    7110 #line 1545 "parser.yy"
    7111     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7112     break;
    7113 
    7114   case 391:
    7115 
    7116 /* Line 1806 of yacc.c  */
    7117 #line 1554 "parser.yy"
    7118     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    7119     break;
    7120 
    7121   case 392:
    7122 
    7123 /* Line 1806 of yacc.c  */
    7124 #line 1556 "parser.yy"
    7125     {
    7126                         typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
    7127                         (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 );
     6514#line 6515 "Parser/parser.cc" /* yacc.c:1646  */
     6515    break;
     6516
     6517  case 430:
     6518#line 1666 "parser.yy" /* yacc.c:1646  */
     6519    {
     6520                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     6521                        (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
    71286522                }
    7129     break;
    7130 
    7131   case 393:
    7132 
    7133 /* Line 1806 of yacc.c  */
    7134 #line 1561 "parser.yy"
    7135     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    7136     break;
    7137 
    7138   case 394:
    7139 
    7140 /* Line 1806 of yacc.c  */
    7141 #line 1563 "parser.yy"
    7142     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    7143     break;
    7144 
    7145   case 395:
    7146 
    7147 /* Line 1806 of yacc.c  */
    7148 #line 1568 "parser.yy"
    7149     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    7150     break;
    7151 
    7152   case 396:
    7153 
    7154 /* Line 1806 of yacc.c  */
    7155 #line 1570 "parser.yy"
    7156     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    7157     break;
    7158 
    7159   case 397:
    7160 
    7161 /* Line 1806 of yacc.c  */
    7162 #line 1575 "parser.yy"
    7163     { (yyval.en) = 0; }
    7164     break;
    7165 
    7166   case 398:
    7167 
    7168 /* Line 1806 of yacc.c  */
    7169 #line 1577 "parser.yy"
    7170     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7171     break;
    7172 
    7173   case 399:
    7174 
    7175 /* Line 1806 of yacc.c  */
    7176 #line 1584 "parser.yy"
     6523#line 6524 "Parser/parser.cc" /* yacc.c:1646  */
     6524    break;
     6525
     6526  case 432:
     6527#line 1675 "parser.yy" /* yacc.c:1646  */
     6528    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6529#line 6530 "Parser/parser.cc" /* yacc.c:1646  */
     6530    break;
     6531
     6532  case 433:
     6533#line 1684 "parser.yy" /* yacc.c:1646  */
     6534    { (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) ); }
     6535#line 6536 "Parser/parser.cc" /* yacc.c:1646  */
     6536    break;
     6537
     6538  case 434:
     6539#line 1686 "parser.yy" /* yacc.c:1646  */
     6540    { (yyval.decl) = (yyvsp[-2].decl)->appendList( DeclarationNode::newName( (yyvsp[0].tok) ) ); }
     6541#line 6542 "Parser/parser.cc" /* yacc.c:1646  */
     6542    break;
     6543
     6544  case 446:
     6545#line 1711 "parser.yy" /* yacc.c:1646  */
     6546    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6547#line 6548 "Parser/parser.cc" /* yacc.c:1646  */
     6548    break;
     6549
     6550  case 450:
     6551#line 1719 "parser.yy" /* yacc.c:1646  */
     6552    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6553#line 6554 "Parser/parser.cc" /* yacc.c:1646  */
     6554    break;
     6555
     6556  case 451:
     6557#line 1724 "parser.yy" /* yacc.c:1646  */
     6558    { (yyval.in) = 0; }
     6559#line 6560 "Parser/parser.cc" /* yacc.c:1646  */
     6560    break;
     6561
     6562  case 452:
     6563#line 1726 "parser.yy" /* yacc.c:1646  */
     6564    { (yyval.in) = (yyvsp[0].in); }
     6565#line 6566 "Parser/parser.cc" /* yacc.c:1646  */
     6566    break;
     6567
     6568  case 453:
     6569#line 1728 "parser.yy" /* yacc.c:1646  */
     6570    { (yyval.in) = (yyvsp[0].in)->set_maybeConstructed( false ); }
     6571#line 6572 "Parser/parser.cc" /* yacc.c:1646  */
     6572    break;
     6573
     6574  case 454:
     6575#line 1732 "parser.yy" /* yacc.c:1646  */
     6576    { (yyval.in) = new InitializerNode( (yyvsp[0].en) ); }
     6577#line 6578 "Parser/parser.cc" /* yacc.c:1646  */
     6578    break;
     6579
     6580  case 455:
     6581#line 1733 "parser.yy" /* yacc.c:1646  */
     6582    { (yyval.in) = new InitializerNode( (yyvsp[-2].in), true ); }
     6583#line 6584 "Parser/parser.cc" /* yacc.c:1646  */
     6584    break;
     6585
     6586  case 456:
     6587#line 1738 "parser.yy" /* yacc.c:1646  */
     6588    { (yyval.in) = 0; }
     6589#line 6590 "Parser/parser.cc" /* yacc.c:1646  */
     6590    break;
     6591
     6592  case 458:
     6593#line 1740 "parser.yy" /* yacc.c:1646  */
     6594    { (yyval.in) = (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ); }
     6595#line 6596 "Parser/parser.cc" /* yacc.c:1646  */
     6596    break;
     6597
     6598  case 459:
     6599#line 1741 "parser.yy" /* yacc.c:1646  */
     6600    { (yyval.in) = (InitializerNode *)( (yyvsp[-2].in)->set_last( (yyvsp[0].in) ) ); }
     6601#line 6602 "Parser/parser.cc" /* yacc.c:1646  */
     6602    break;
     6603
     6604  case 460:
     6605#line 1743 "parser.yy" /* yacc.c:1646  */
     6606    { (yyval.in) = (InitializerNode *)( (yyvsp[-3].in)->set_last( (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ) ) ); }
     6607#line 6608 "Parser/parser.cc" /* yacc.c:1646  */
     6608    break;
     6609
     6610  case 462:
     6611#line 1759 "parser.yy" /* yacc.c:1646  */
     6612    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[-1].tok) ) ); }
     6613#line 6614 "Parser/parser.cc" /* yacc.c:1646  */
     6614    break;
     6615
     6616  case 464:
     6617#line 1765 "parser.yy" /* yacc.c:1646  */
     6618    { (yyval.en) = (ExpressionNode *)( (yyvsp[-1].en)->set_last( (yyvsp[0].en) ) ); }
     6619#line 6620 "Parser/parser.cc" /* yacc.c:1646  */
     6620    break;
     6621
     6622  case 465:
     6623#line 1771 "parser.yy" /* yacc.c:1646  */
     6624    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     6625#line 6626 "Parser/parser.cc" /* yacc.c:1646  */
     6626    break;
     6627
     6628  case 466:
     6629#line 1774 "parser.yy" /* yacc.c:1646  */
     6630    { (yyval.en) = (yyvsp[-2].en); }
     6631#line 6632 "Parser/parser.cc" /* yacc.c:1646  */
     6632    break;
     6633
     6634  case 467:
     6635#line 1776 "parser.yy" /* yacc.c:1646  */
     6636    { (yyval.en) = (yyvsp[-2].en); }
     6637#line 6638 "Parser/parser.cc" /* yacc.c:1646  */
     6638    break;
     6639
     6640  case 468:
     6641#line 1778 "parser.yy" /* yacc.c:1646  */
     6642    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
     6643#line 6644 "Parser/parser.cc" /* yacc.c:1646  */
     6644    break;
     6645
     6646  case 469:
     6647#line 1780 "parser.yy" /* yacc.c:1646  */
     6648    { (yyval.en) = (yyvsp[-2].en); }
     6649#line 6650 "Parser/parser.cc" /* yacc.c:1646  */
     6650    break;
     6651
     6652  case 471:
     6653#line 1804 "parser.yy" /* yacc.c:1646  */
     6654    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6655#line 6656 "Parser/parser.cc" /* yacc.c:1646  */
     6656    break;
     6657
     6658  case 472:
     6659#line 1806 "parser.yy" /* yacc.c:1646  */
     6660    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6661#line 6662 "Parser/parser.cc" /* yacc.c:1646  */
     6662    break;
     6663
     6664  case 473:
     6665#line 1808 "parser.yy" /* yacc.c:1646  */
     6666    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6667#line 6668 "Parser/parser.cc" /* yacc.c:1646  */
     6668    break;
     6669
     6670  case 475:
     6671#line 1814 "parser.yy" /* yacc.c:1646  */
     6672    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6673#line 6674 "Parser/parser.cc" /* yacc.c:1646  */
     6674    break;
     6675
     6676  case 476:
     6677#line 1816 "parser.yy" /* yacc.c:1646  */
     6678    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6679#line 6680 "Parser/parser.cc" /* yacc.c:1646  */
     6680    break;
     6681
     6682  case 477:
     6683#line 1821 "parser.yy" /* yacc.c:1646  */
     6684    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
     6685#line 6686 "Parser/parser.cc" /* yacc.c:1646  */
     6686    break;
     6687
     6688  case 479:
     6689#line 1827 "parser.yy" /* yacc.c:1646  */
     6690    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-1].decl) ); }
     6691#line 6692 "Parser/parser.cc" /* yacc.c:1646  */
     6692    break;
     6693
     6694  case 480:
     6695#line 1832 "parser.yy" /* yacc.c:1646  */
     6696    { typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD ); }
     6697#line 6698 "Parser/parser.cc" /* yacc.c:1646  */
     6698    break;
     6699
     6700  case 481:
     6701#line 1834 "parser.yy" /* yacc.c:1646  */
     6702    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[-3].tclass), (yyvsp[-2].tok) )->addAssertions( (yyvsp[0].decl) ); }
     6703#line 6704 "Parser/parser.cc" /* yacc.c:1646  */
     6704    break;
     6705
     6706  case 483:
     6707#line 1840 "parser.yy" /* yacc.c:1646  */
     6708    { (yyval.tclass) = DeclarationNode::Type; }
     6709#line 6710 "Parser/parser.cc" /* yacc.c:1646  */
     6710    break;
     6711
     6712  case 484:
     6713#line 1842 "parser.yy" /* yacc.c:1646  */
     6714    { (yyval.tclass) = DeclarationNode::Ftype; }
     6715#line 6716 "Parser/parser.cc" /* yacc.c:1646  */
     6716    break;
     6717
     6718  case 485:
     6719#line 1844 "parser.yy" /* yacc.c:1646  */
     6720    { (yyval.tclass) = DeclarationNode::Dtype; }
     6721#line 6722 "Parser/parser.cc" /* yacc.c:1646  */
     6722    break;
     6723
     6724  case 486:
     6725#line 1849 "parser.yy" /* yacc.c:1646  */
    71776726    { (yyval.decl) = 0; }
    7178     break;
    7179 
    7180   case 403:
    7181 
    7182 /* Line 1806 of yacc.c  */
    7183 #line 1592 "parser.yy"
    7184     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7185     break;
    7186 
    7187   case 404:
    7188 
    7189 /* Line 1806 of yacc.c  */
    7190 #line 1594 "parser.yy"
    7191     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7192     break;
    7193 
    7194   case 405:
    7195 
    7196 /* Line 1806 of yacc.c  */
    7197 #line 1596 "parser.yy"
    7198     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7199     break;
    7200 
    7201   case 407:
    7202 
    7203 /* Line 1806 of yacc.c  */
    7204 #line 1604 "parser.yy"
    7205     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7206     break;
    7207 
    7208   case 408:
    7209 
    7210 /* Line 1806 of yacc.c  */
    7211 #line 1606 "parser.yy"
    7212     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7213     break;
    7214 
    7215   case 409:
    7216 
    7217 /* Line 1806 of yacc.c  */
    7218 #line 1608 "parser.yy"
    7219     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7220     break;
    7221 
    7222   case 411:
    7223 
    7224 /* Line 1806 of yacc.c  */
    7225 #line 1614 "parser.yy"
    7226     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7227     break;
    7228 
    7229   case 412:
    7230 
    7231 /* Line 1806 of yacc.c  */
    7232 #line 1619 "parser.yy"
     6727#line 6728 "Parser/parser.cc" /* yacc.c:1646  */
     6728    break;
     6729
     6730  case 487:
     6731#line 1851 "parser.yy" /* yacc.c:1646  */
     6732    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
     6733#line 6734 "Parser/parser.cc" /* yacc.c:1646  */
     6734    break;
     6735
     6736  case 488:
     6737#line 1856 "parser.yy" /* yacc.c:1646  */
     6738    {
     6739                        typedefTable.openTrait( *(yyvsp[-3].tok) );
     6740                        (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[-3].tok), (yyvsp[-1].en) );
     6741                }
     6742#line 6743 "Parser/parser.cc" /* yacc.c:1646  */
     6743    break;
     6744
     6745  case 489:
     6746#line 1861 "parser.yy" /* yacc.c:1646  */
     6747    { (yyval.decl) = (yyvsp[-1].decl); }
     6748#line 6749 "Parser/parser.cc" /* yacc.c:1646  */
     6749    break;
     6750
     6751  case 490:
     6752#line 1863 "parser.yy" /* yacc.c:1646  */
    72336753    { (yyval.decl) = 0; }
    7234     break;
    7235 
    7236   case 415:
    7237 
    7238 /* Line 1806 of yacc.c  */
    7239 #line 1626 "parser.yy"
    7240     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7241     break;
    7242 
    7243   case 418:
    7244 
    7245 /* Line 1806 of yacc.c  */
    7246 #line 1633 "parser.yy"
    7247     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7248     break;
    7249 
    7250   case 419:
    7251 
    7252 /* Line 1806 of yacc.c  */
    7253 #line 1635 "parser.yy"
    7254     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7255     break;
    7256 
    7257   case 421:
    7258 
    7259 /* Line 1806 of yacc.c  */
    7260 #line 1644 "parser.yy"
    7261     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7262     break;
    7263 
    7264   case 422:
    7265 
    7266 /* Line 1806 of yacc.c  */
    7267 #line 1647 "parser.yy"
    7268     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7269     break;
    7270 
    7271   case 423:
    7272 
    7273 /* Line 1806 of yacc.c  */
    7274 #line 1649 "parser.yy"
    7275     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    7276     break;
    7277 
    7278   case 428:
    7279 
    7280 /* Line 1806 of yacc.c  */
    7281 #line 1659 "parser.yy"
    7282     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7283     break;
    7284 
    7285   case 430:
    7286 
    7287 /* Line 1806 of yacc.c  */
    7288 #line 1665 "parser.yy"
    7289     {
    7290                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    7291                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     6754#line 6755 "Parser/parser.cc" /* yacc.c:1646  */
     6755    break;
     6756
     6757  case 491:
     6758#line 1868 "parser.yy" /* yacc.c:1646  */
     6759    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ); }
     6760#line 6761 "Parser/parser.cc" /* yacc.c:1646  */
     6761    break;
     6762
     6763  case 493:
     6764#line 1871 "parser.yy" /* yacc.c:1646  */
     6765    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ) ) ); }
     6766#line 6767 "Parser/parser.cc" /* yacc.c:1646  */
     6767    break;
     6768
     6769  case 494:
     6770#line 1873 "parser.yy" /* yacc.c:1646  */
     6771    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
     6772#line 6773 "Parser/parser.cc" /* yacc.c:1646  */
     6773    break;
     6774
     6775  case 495:
     6776#line 1878 "parser.yy" /* yacc.c:1646  */
     6777    { (yyval.decl) = (yyvsp[0].decl); }
     6778#line 6779 "Parser/parser.cc" /* yacc.c:1646  */
     6779    break;
     6780
     6781  case 496:
     6782#line 1880 "parser.yy" /* yacc.c:1646  */
     6783    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) ); }
     6784#line 6785 "Parser/parser.cc" /* yacc.c:1646  */
     6785    break;
     6786
     6787  case 497:
     6788#line 1882 "parser.yy" /* yacc.c:1646  */
     6789    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl)->copyStorageClasses( (yyvsp[-2].decl) ) ); }
     6790#line 6791 "Parser/parser.cc" /* yacc.c:1646  */
     6791    break;
     6792
     6793  case 498:
     6794#line 1887 "parser.yy" /* yacc.c:1646  */
     6795    { (yyval.decl) = (yyvsp[-1].decl)->addAssertions( (yyvsp[0].decl) ); }
     6796#line 6797 "Parser/parser.cc" /* yacc.c:1646  */
     6797    break;
     6798
     6799  case 499:
     6800#line 1889 "parser.yy" /* yacc.c:1646  */
     6801    { (yyval.decl) = (yyvsp[-3].decl)->addAssertions( (yyvsp[-2].decl) )->addType( (yyvsp[0].decl) ); }
     6802#line 6803 "Parser/parser.cc" /* yacc.c:1646  */
     6803    break;
     6804
     6805  case 500:
     6806#line 1894 "parser.yy" /* yacc.c:1646  */
     6807    {
     6808                        typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
     6809                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[0].tok), 0 );
    72926810                }
    7293     break;
    7294 
    7295   case 431:
    7296 
    7297 /* Line 1806 of yacc.c  */
    7298 #line 1670 "parser.yy"
    7299     {
    7300                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    7301                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     6811#line 6812 "Parser/parser.cc" /* yacc.c:1646  */
     6812    break;
     6813
     6814  case 501:
     6815#line 1899 "parser.yy" /* yacc.c:1646  */
     6816    {
     6817                        typedefTable.addToEnclosingScope( *(yyvsp[-5].tok), TypedefTable::TG );
     6818                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[-5].tok), (yyvsp[-2].decl) );
    73026819                }
    7303     break;
    7304 
    7305   case 433:
    7306 
    7307 /* Line 1806 of yacc.c  */
    7308 #line 1679 "parser.yy"
    7309     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7310     break;
    7311 
    7312   case 434:
    7313 
    7314 /* Line 1806 of yacc.c  */
    7315 #line 1688 "parser.yy"
    7316     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    7317     break;
    7318 
    7319   case 435:
    7320 
    7321 /* Line 1806 of yacc.c  */
    7322 #line 1690 "parser.yy"
    7323     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    7324     break;
    7325 
    7326   case 447:
    7327 
    7328 /* Line 1806 of yacc.c  */
    7329 #line 1715 "parser.yy"
    7330     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7331     break;
    7332 
    7333   case 451:
    7334 
    7335 /* Line 1806 of yacc.c  */
    7336 #line 1723 "parser.yy"
    7337     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7338     break;
    7339 
    7340   case 452:
    7341 
    7342 /* Line 1806 of yacc.c  */
    7343 #line 1728 "parser.yy"
    7344     { (yyval.in) = 0; }
    7345     break;
    7346 
    7347   case 453:
    7348 
    7349 /* Line 1806 of yacc.c  */
    7350 #line 1730 "parser.yy"
    7351     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7352     break;
    7353 
    7354   case 454:
    7355 
    7356 /* Line 1806 of yacc.c  */
    7357 #line 1732 "parser.yy"
    7358     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    7359     break;
    7360 
    7361   case 455:
    7362 
    7363 /* Line 1806 of yacc.c  */
    7364 #line 1736 "parser.yy"
    7365     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    7366     break;
    7367 
    7368   case 456:
    7369 
    7370 /* Line 1806 of yacc.c  */
    7371 #line 1737 "parser.yy"
    7372     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    7373     break;
    7374 
    7375   case 457:
    7376 
    7377 /* Line 1806 of yacc.c  */
    7378 #line 1742 "parser.yy"
    7379     { (yyval.in) = 0; }
    7380     break;
    7381 
    7382   case 459:
    7383 
    7384 /* Line 1806 of yacc.c  */
    7385 #line 1744 "parser.yy"
    7386     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    7387     break;
    7388 
    7389   case 460:
    7390 
    7391 /* Line 1806 of yacc.c  */
    7392 #line 1745 "parser.yy"
    7393     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    7394     break;
    7395 
    7396   case 461:
    7397 
    7398 /* Line 1806 of yacc.c  */
    7399 #line 1747 "parser.yy"
    7400     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    7401     break;
    7402 
    7403   case 463:
    7404 
    7405 /* Line 1806 of yacc.c  */
    7406 #line 1763 "parser.yy"
    7407     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    7408     break;
    7409 
    7410   case 465:
    7411 
    7412 /* Line 1806 of yacc.c  */
    7413 #line 1769 "parser.yy"
    7414     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
    7415     break;
    7416 
    7417   case 466:
    7418 
    7419 /* Line 1806 of yacc.c  */
    7420 #line 1775 "parser.yy"
    7421     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    7422     break;
    7423 
    7424   case 467:
    7425 
    7426 /* Line 1806 of yacc.c  */
    7427 #line 1778 "parser.yy"
    7428     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7429     break;
    7430 
    7431   case 468:
    7432 
    7433 /* Line 1806 of yacc.c  */
    7434 #line 1780 "parser.yy"
    7435     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7436     break;
    7437 
    7438   case 469:
    7439 
    7440 /* Line 1806 of yacc.c  */
    7441 #line 1782 "parser.yy"
    7442     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    7443     break;
    7444 
    7445   case 470:
    7446 
    7447 /* Line 1806 of yacc.c  */
    7448 #line 1784 "parser.yy"
    7449     { (yyval.en) = (yyvsp[(4) - (6)].en); }
    7450     break;
    7451 
    7452   case 472:
    7453 
    7454 /* Line 1806 of yacc.c  */
    7455 #line 1808 "parser.yy"
    7456     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7457     break;
    7458 
    7459   case 473:
    7460 
    7461 /* Line 1806 of yacc.c  */
    7462 #line 1810 "parser.yy"
    7463     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7464     break;
    7465 
    7466   case 474:
    7467 
    7468 /* Line 1806 of yacc.c  */
    7469 #line 1812 "parser.yy"
    7470     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7471     break;
    7472 
    7473   case 476:
    7474 
    7475 /* Line 1806 of yacc.c  */
    7476 #line 1818 "parser.yy"
    7477     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7478     break;
    7479 
    7480   case 477:
    7481 
    7482 /* Line 1806 of yacc.c  */
    7483 #line 1820 "parser.yy"
    7484     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7485     break;
    7486 
    7487   case 478:
    7488 
    7489 /* Line 1806 of yacc.c  */
    7490 #line 1825 "parser.yy"
    7491     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    7492     break;
    7493 
    7494   case 480:
    7495 
    7496 /* Line 1806 of yacc.c  */
    7497 #line 1831 "parser.yy"
    7498     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    7499     break;
    7500 
    7501   case 481:
    7502 
    7503 /* Line 1806 of yacc.c  */
    7504 #line 1836 "parser.yy"
    7505     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    7506     break;
    7507 
    7508   case 482:
    7509 
    7510 /* Line 1806 of yacc.c  */
    7511 #line 1838 "parser.yy"
    7512     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    7513     break;
    7514 
    7515   case 484:
    7516 
    7517 /* Line 1806 of yacc.c  */
    7518 #line 1844 "parser.yy"
    7519     { (yyval.tclass) = DeclarationNode::Type; }
    7520     break;
    7521 
    7522   case 485:
    7523 
    7524 /* Line 1806 of yacc.c  */
    7525 #line 1846 "parser.yy"
    7526     { (yyval.tclass) = DeclarationNode::Ftype; }
    7527     break;
    7528 
    7529   case 486:
    7530 
    7531 /* Line 1806 of yacc.c  */
    7532 #line 1848 "parser.yy"
    7533     { (yyval.tclass) = DeclarationNode::Dtype; }
    7534     break;
    7535 
    7536   case 487:
    7537 
    7538 /* Line 1806 of yacc.c  */
    7539 #line 1853 "parser.yy"
    7540     { (yyval.decl) = 0; }
    7541     break;
    7542 
    7543   case 488:
    7544 
    7545 /* Line 1806 of yacc.c  */
    7546 #line 1855 "parser.yy"
    7547     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7548     break;
    7549 
    7550   case 489:
    7551 
    7552 /* Line 1806 of yacc.c  */
    7553 #line 1860 "parser.yy"
    7554     {
    7555                         typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
    7556                         (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
     6820#line 6821 "Parser/parser.cc" /* yacc.c:1646  */
     6821    break;
     6822
     6823  case 502:
     6824#line 1907 "parser.yy" /* yacc.c:1646  */
     6825    {
     6826                        typedefTable.addToEnclosingScope( *(yyvsp[-7].tok), TypedefTable::ID );
     6827                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[-7].tok), (yyvsp[-4].decl), 0 );
    75576828                }
    7558     break;
    7559 
    7560   case 490:
    7561 
    7562 /* Line 1806 of yacc.c  */
    7563 #line 1865 "parser.yy"
    7564     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    7565     break;
    7566 
    7567   case 491:
    7568 
    7569 /* Line 1806 of yacc.c  */
    7570 #line 1867 "parser.yy"
    7571     { (yyval.decl) = 0; }
    7572     break;
    7573 
    7574   case 492:
    7575 
    7576 /* Line 1806 of yacc.c  */
    7577 #line 1872 "parser.yy"
    7578     { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    7579     break;
    7580 
    7581   case 494:
    7582 
    7583 /* Line 1806 of yacc.c  */
    7584 #line 1875 "parser.yy"
    7585     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    7586     break;
    7587 
    7588   case 495:
    7589 
    7590 /* Line 1806 of yacc.c  */
    7591 #line 1877 "parser.yy"
    7592     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    7593     break;
    7594 
    7595   case 496:
    7596 
    7597 /* Line 1806 of yacc.c  */
    7598 #line 1882 "parser.yy"
    7599     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    7600     break;
    7601 
    7602   case 497:
    7603 
    7604 /* Line 1806 of yacc.c  */
    7605 #line 1884 "parser.yy"
    7606     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    7607     break;
    7608 
    7609   case 498:
    7610 
    7611 /* Line 1806 of yacc.c  */
    7612 #line 1886 "parser.yy"
    7613     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    7614     break;
    7615 
    7616   case 499:
    7617 
    7618 /* Line 1806 of yacc.c  */
    7619 #line 1891 "parser.yy"
    7620     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    7621     break;
    7622 
    7623   case 500:
    7624 
    7625 /* Line 1806 of yacc.c  */
    7626 #line 1893 "parser.yy"
    7627     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7628     break;
    7629 
    7630   case 501:
    7631 
    7632 /* Line 1806 of yacc.c  */
    7633 #line 1898 "parser.yy"
    7634     {
    7635                         typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
    7636                         (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (1)].tok), 0 );
    7637                 }
    7638     break;
    7639 
    7640   case 502:
    7641 
    7642 /* Line 1806 of yacc.c  */
    7643 #line 1903 "parser.yy"
    7644     {
    7645                         typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
    7646                         (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (6)].tok), (yyvsp[(4) - (6)].decl) );
    7647                 }
     6829#line 6830 "Parser/parser.cc" /* yacc.c:1646  */
    76486830    break;
    76496831
    76506832  case 503:
    7651 
    7652 /* Line 1806 of yacc.c  */
    7653 #line 1911 "parser.yy"
    7654     {
    7655                         typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
    7656                         (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
    7657                 }
    7658     break;
    7659 
    7660   case 504:
    7661 
    7662 /* Line 1806 of yacc.c  */
    7663 #line 1916 "parser.yy"
    7664     {
    7665                         typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     6833#line 1912 "parser.yy" /* yacc.c:1646  */
     6834    {
     6835                        typedefTable.enterTrait( *(yyvsp[-6].tok) );
    76666836                        typedefTable.enterScope();
    76676837                }
    7668     break;
    7669 
    7670   case 505:
    7671 
    7672 /* Line 1806 of yacc.c  */
    7673 #line 1921 "parser.yy"
     6838#line 6839 "Parser/parser.cc" /* yacc.c:1646  */
     6839    break;
     6840
     6841  case 504:
     6842#line 1917 "parser.yy" /* yacc.c:1646  */
    76746843    {
    76756844                        typedefTable.leaveTrait();
    7676                         typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
    7677                         (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
     6845                        typedefTable.addToEnclosingScope( *(yyvsp[-9].tok), TypedefTable::ID );
     6846                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[-9].tok), (yyvsp[-6].decl), (yyvsp[-1].decl) );
    76786847                }
    7679     break;
    7680 
    7681   case 507:
    7682 
    7683 /* Line 1806 of yacc.c  */
    7684 #line 1931 "parser.yy"
    7685     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6848#line 6849 "Parser/parser.cc" /* yacc.c:1646  */
     6849    break;
     6850
     6851  case 506:
     6852#line 1927 "parser.yy" /* yacc.c:1646  */
     6853    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
     6854#line 6855 "Parser/parser.cc" /* yacc.c:1646  */
     6855    break;
     6856
     6857  case 509:
     6858#line 1937 "parser.yy" /* yacc.c:1646  */
     6859    {
     6860                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     6861                        (yyval.decl) = (yyvsp[0].decl);
     6862                }
     6863#line 6864 "Parser/parser.cc" /* yacc.c:1646  */
    76866864    break;
    76876865
    76886866  case 510:
    7689 
    7690 /* Line 1806 of yacc.c  */
    7691 #line 1941 "parser.yy"
     6867#line 1942 "parser.yy" /* yacc.c:1646  */
    76926868    {
    76936869                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7694                         (yyval.decl) = (yyvsp[(1) - (1)].decl);
     6870                        (yyval.decl) = (yyvsp[0].decl);
    76956871                }
     6872#line 6873 "Parser/parser.cc" /* yacc.c:1646  */
    76966873    break;
    76976874
    76986875  case 511:
    7699 
    7700 /* Line 1806 of yacc.c  */
    7701 #line 1946 "parser.yy"
     6876#line 1947 "parser.yy" /* yacc.c:1646  */
     6877    {
     6878                        typedefTable.addToEnclosingScope2( *(yyvsp[0].tok), TypedefTable::ID );
     6879                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
     6880                }
     6881#line 6882 "Parser/parser.cc" /* yacc.c:1646  */
     6882    break;
     6883
     6884  case 512:
     6885#line 1955 "parser.yy" /* yacc.c:1646  */
    77026886    {
    77036887                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7704                         (yyval.decl) = (yyvsp[(1) - (1)].decl);
     6888                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
    77056889                }
    7706     break;
    7707 
    7708   case 512:
    7709 
    7710 /* Line 1806 of yacc.c  */
    7711 #line 1951 "parser.yy"
    7712     {
    7713                         typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
    7714                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
     6890#line 6891 "Parser/parser.cc" /* yacc.c:1646  */
     6891    break;
     6892
     6893  case 513:
     6894#line 1960 "parser.yy" /* yacc.c:1646  */
     6895    {
     6896                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     6897                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) ) );
    77156898                }
    7716     break;
    7717 
    7718   case 513:
    7719 
    7720 /* Line 1806 of yacc.c  */
    7721 #line 1959 "parser.yy"
    7722     {
    7723                         typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7724                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
     6899#line 6900 "Parser/parser.cc" /* yacc.c:1646  */
     6900    break;
     6901
     6902  case 514:
     6903#line 1970 "parser.yy" /* yacc.c:1646  */
     6904    {}
     6905#line 6906 "Parser/parser.cc" /* yacc.c:1646  */
     6906    break;
     6907
     6908  case 515:
     6909#line 1972 "parser.yy" /* yacc.c:1646  */
     6910    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl);    }
     6911#line 6912 "Parser/parser.cc" /* yacc.c:1646  */
     6912    break;
     6913
     6914  case 517:
     6915#line 1978 "parser.yy" /* yacc.c:1646  */
     6916    { (yyval.decl) = (yyvsp[-2].decl) != nullptr ? (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
     6917#line 6918 "Parser/parser.cc" /* yacc.c:1646  */
     6918    break;
     6919
     6920  case 518:
     6921#line 1983 "parser.yy" /* yacc.c:1646  */
     6922    { (yyval.decl) = 0; }
     6923#line 6924 "Parser/parser.cc" /* yacc.c:1646  */
     6924    break;
     6925
     6926  case 522:
     6927#line 1991 "parser.yy" /* yacc.c:1646  */
     6928    {}
     6929#line 6930 "Parser/parser.cc" /* yacc.c:1646  */
     6930    break;
     6931
     6932  case 523:
     6933#line 1993 "parser.yy" /* yacc.c:1646  */
     6934    {
     6935                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     6936                        linkage = LinkageSpec::fromString( assign_strptr((yyvsp[0].tok)) );
    77256937                }
    7726     break;
    7727 
    7728   case 514:
    7729 
    7730 /* Line 1806 of yacc.c  */
    7731 #line 1964 "parser.yy"
    7732     {
    7733                         typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7734                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) ) );
    7735                 }
    7736     break;
    7737 
    7738   case 515:
    7739 
    7740 /* Line 1806 of yacc.c  */
    7741 #line 1974 "parser.yy"
    7742     {}
    7743     break;
    7744 
    7745   case 516:
    7746 
    7747 /* Line 1806 of yacc.c  */
    7748 #line 1976 "parser.yy"
    7749     {
    7750                         if ( theTree ) {
    7751                                 theTree->appendList( (yyvsp[(1) - (1)].decl) );
    7752                         } else {
    7753                                 theTree = (yyvsp[(1) - (1)].decl);
    7754                         }
    7755                 }
    7756     break;
    7757 
    7758   case 518:
    7759 
    7760 /* Line 1806 of yacc.c  */
    7761 #line 1988 "parser.yy"
    7762     { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    7763     break;
    7764 
    7765   case 519:
    7766 
    7767 /* Line 1806 of yacc.c  */
    7768 #line 1993 "parser.yy"
    7769     { (yyval.decl) = 0; }
    7770     break;
    7771 
    7772   case 523:
    7773 
    7774 /* Line 1806 of yacc.c  */
    7775 #line 2001 "parser.yy"
    7776     {}
     6938#line 6939 "Parser/parser.cc" /* yacc.c:1646  */
    77776939    break;
    77786940
    77796941  case 524:
    7780 
    7781 /* Line 1806 of yacc.c  */
    7782 #line 2003 "parser.yy"
    7783     {
    7784                         linkageStack.push( linkage );
    7785                         linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) );
    7786                 }
    7787     break;
    7788 
    7789   case 525:
    7790 
    7791 /* Line 1806 of yacc.c  */
    7792 #line 2008 "parser.yy"
     6942#line 1998 "parser.yy" /* yacc.c:1646  */
    77936943    {
    77946944                        linkage = linkageStack.top();
    77956945                        linkageStack.pop();
    7796                         (yyval.decl) = (yyvsp[(5) - (6)].decl);
     6946                        (yyval.decl) = (yyvsp[-1].decl);
    77976947                }
    7798     break;
    7799 
    7800   case 526:
    7801 
    7802 /* Line 1806 of yacc.c  */
    7803 #line 2014 "parser.yy"
     6948#line 6949 "Parser/parser.cc" /* yacc.c:1646  */
     6949    break;
     6950
     6951  case 525:
     6952#line 2004 "parser.yy" /* yacc.c:1646  */
    78046953    {   // mark all fields in list
    7805                         for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
     6954                        for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    78066955                                iter->set_extension( true );
    7807                         (yyval.decl) = (yyvsp[(2) - (2)].decl);
     6956                        (yyval.decl) = (yyvsp[0].decl);
    78086957                }
    7809     break;
    7810 
    7811   case 528:
    7812 
    7813 /* Line 1806 of yacc.c  */
    7814 #line 2029 "parser.yy"
     6958#line 6959 "Parser/parser.cc" /* yacc.c:1646  */
     6959    break;
     6960
     6961  case 527:
     6962#line 2019 "parser.yy" /* yacc.c:1646  */
    78156963    {
    78166964                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78176965                        typedefTable.leaveScope();
    7818                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
     6966                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
    78196967                }
    7820     break;
    7821 
    7822   case 529:
    7823 
    7824 /* Line 1806 of yacc.c  */
    7825 #line 2035 "parser.yy"
     6968#line 6969 "Parser/parser.cc" /* yacc.c:1646  */
     6969    break;
     6970
     6971  case 528:
     6972#line 2025 "parser.yy" /* yacc.c:1646  */
    78266973    {
    78276974                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78286975                        typedefTable.leaveScope();
    7829                         (yyval.decl) = (yyvsp[(1) - (4)].decl)->addOldDeclList( (yyvsp[(3) - (4)].decl) )->addFunctionBody( (yyvsp[(4) - (4)].sn) );
     6976                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) );
    78306977                }
    7831     break;
    7832 
    7833   case 530:
    7834 
    7835 /* Line 1806 of yacc.c  */
    7836 #line 2044 "parser.yy"
     6978#line 6979 "Parser/parser.cc" /* yacc.c:1646  */
     6979    break;
     6980
     6981  case 529:
     6982#line 2034 "parser.yy" /* yacc.c:1646  */
    78376983    {
    78386984                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78396985                        typedefTable.leaveScope();
    7840                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
     6986                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
    78416987                }
    7842     break;
    7843 
    7844   case 531:
    7845 
    7846 /* Line 1806 of yacc.c  */
    7847 #line 2050 "parser.yy"
     6988#line 6989 "Parser/parser.cc" /* yacc.c:1646  */
     6989    break;
     6990
     6991  case 530:
     6992#line 2040 "parser.yy" /* yacc.c:1646  */
    78486993    {
    78496994                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78506995                        typedefTable.leaveScope();
    7851                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addType( (yyvsp[(1) - (3)].decl) );
     6996                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-2].decl) );
    78526997                }
    7853     break;
    7854 
    7855   case 532:
    7856 
    7857 /* Line 1806 of yacc.c  */
    7858 #line 2056 "parser.yy"
     6998#line 6999 "Parser/parser.cc" /* yacc.c:1646  */
     6999    break;
     7000
     7001  case 531:
     7002#line 2046 "parser.yy" /* yacc.c:1646  */
    78597003    {
    78607004                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78617005                        typedefTable.leaveScope();
    7862                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
     7006                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
    78637007                }
    7864     break;
    7865 
    7866   case 533:
    7867 
    7868 /* Line 1806 of yacc.c  */
    7869 #line 2062 "parser.yy"
     7008#line 7009 "Parser/parser.cc" /* yacc.c:1646  */
     7009    break;
     7010
     7011  case 532:
     7012#line 2052 "parser.yy" /* yacc.c:1646  */
    78707013    {
    78717014                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78727015                        typedefTable.leaveScope();
    7873                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
     7016                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
    78747017                }
    7875     break;
    7876 
    7877   case 534:
    7878 
    7879 /* Line 1806 of yacc.c  */
    7880 #line 2068 "parser.yy"
     7018#line 7019 "Parser/parser.cc" /* yacc.c:1646  */
     7019    break;
     7020
     7021  case 533:
     7022#line 2058 "parser.yy" /* yacc.c:1646  */
    78817023    {
    78827024                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78837025                        typedefTable.leaveScope();
    7884                         (yyval.decl) = (yyvsp[(3) - (4)].decl)->addFunctionBody( (yyvsp[(4) - (4)].sn) )->addQualifiers( (yyvsp[(2) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) );
     7026                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-3].decl) );
    78857027                }
    7886     break;
    7887 
    7888   case 535:
    7889 
    7890 /* Line 1806 of yacc.c  */
    7891 #line 2076 "parser.yy"
     7028#line 7029 "Parser/parser.cc" /* yacc.c:1646  */
     7029    break;
     7030
     7031  case 534:
     7032#line 2066 "parser.yy" /* yacc.c:1646  */
    78927033    {
    78937034                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78947035                        typedefTable.leaveScope();
    7895                         (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addType( (yyvsp[(1) - (5)].decl) );
     7036                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-4].decl) );
    78967037                }
    7897     break;
    7898 
    7899   case 536:
    7900 
    7901 /* Line 1806 of yacc.c  */
    7902 #line 2082 "parser.yy"
     7038#line 7039 "Parser/parser.cc" /* yacc.c:1646  */
     7039    break;
     7040
     7041  case 535:
     7042#line 2072 "parser.yy" /* yacc.c:1646  */
    79037043    {
    79047044                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79057045                        typedefTable.leaveScope();
    7906                         (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
     7046                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
    79077047                }
    7908     break;
    7909 
    7910   case 537:
    7911 
    7912 /* Line 1806 of yacc.c  */
    7913 #line 2090 "parser.yy"
     7048#line 7049 "Parser/parser.cc" /* yacc.c:1646  */
     7049    break;
     7050
     7051  case 536:
     7052#line 2080 "parser.yy" /* yacc.c:1646  */
    79147053    {
    79157054                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79167055                        typedefTable.leaveScope();
    7917                         (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
     7056                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
    79187057                }
    7919     break;
    7920 
    7921   case 538:
    7922 
    7923 /* Line 1806 of yacc.c  */
    7924 #line 2096 "parser.yy"
     7058#line 7059 "Parser/parser.cc" /* yacc.c:1646  */
     7059    break;
     7060
     7061  case 537:
     7062#line 2086 "parser.yy" /* yacc.c:1646  */
    79257063    {
    79267064                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79277065                        typedefTable.leaveScope();
    7928                         (yyval.decl) = (yyvsp[(3) - (6)].decl)->addOldDeclList( (yyvsp[(5) - (6)].decl) )->addFunctionBody( (yyvsp[(6) - (6)].sn) )->addQualifiers( (yyvsp[(2) - (6)].decl) )->addQualifiers( (yyvsp[(1) - (6)].decl) );
     7066                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) )->addQualifiers( (yyvsp[-5].decl) );
    79297067                }
    7930     break;
    7931 
    7932   case 542:
    7933 
    7934 /* Line 1806 of yacc.c  */
    7935 #line 2111 "parser.yy"
    7936     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    7937     break;
    7938 
    7939   case 545:
    7940 
    7941 /* Line 1806 of yacc.c  */
    7942 #line 2121 "parser.yy"
     7068#line 7069 "Parser/parser.cc" /* yacc.c:1646  */
     7069    break;
     7070
     7071  case 541:
     7072#line 2101 "parser.yy" /* yacc.c:1646  */
     7073    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     7074#line 7075 "Parser/parser.cc" /* yacc.c:1646  */
     7075    break;
     7076
     7077  case 544:
     7078#line 2111 "parser.yy" /* yacc.c:1646  */
    79437079    { (yyval.decl) = 0; }
     7080#line 7081 "Parser/parser.cc" /* yacc.c:1646  */
     7081    break;
     7082
     7083  case 547:
     7084#line 2118 "parser.yy" /* yacc.c:1646  */
     7085    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     7086#line 7087 "Parser/parser.cc" /* yacc.c:1646  */
    79447087    break;
    79457088
    79467089  case 548:
    7947 
    7948 /* Line 1806 of yacc.c  */
    7949 #line 2128 "parser.yy"
    7950     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7951     break;
    7952 
    7953   case 549:
    7954 
    7955 /* Line 1806 of yacc.c  */
    7956 #line 2134 "parser.yy"
     7090#line 2124 "parser.yy" /* yacc.c:1646  */
    79577091    { (yyval.decl) = 0; }
     7092#line 7093 "Parser/parser.cc" /* yacc.c:1646  */
     7093    break;
     7094
     7095  case 554:
     7096#line 2139 "parser.yy" /* yacc.c:1646  */
     7097    { delete (yyvsp[0].tok); }
     7098#line 7099 "Parser/parser.cc" /* yacc.c:1646  */
    79587099    break;
    79597100
    79607101  case 555:
    7961 
    7962 /* Line 1806 of yacc.c  */
    7963 #line 2149 "parser.yy"
    7964     {}
     7102#line 2140 "parser.yy" /* yacc.c:1646  */
     7103    { delete (yyvsp[0].decl); }
     7104#line 7105 "Parser/parser.cc" /* yacc.c:1646  */
    79657105    break;
    79667106
    79677107  case 556:
    7968 
    7969 /* Line 1806 of yacc.c  */
    7970 #line 2150 "parser.yy"
    7971     {}
     7108#line 2141 "parser.yy" /* yacc.c:1646  */
     7109    { delete (yyvsp[0].decl); }
     7110#line 7111 "Parser/parser.cc" /* yacc.c:1646  */
    79727111    break;
    79737112
    79747113  case 557:
    7975 
    7976 /* Line 1806 of yacc.c  */
    7977 #line 2151 "parser.yy"
    7978     {}
     7114#line 2142 "parser.yy" /* yacc.c:1646  */
     7115    { delete (yyvsp[0].decl); }
     7116#line 7117 "Parser/parser.cc" /* yacc.c:1646  */
    79797117    break;
    79807118
    79817119  case 558:
    7982 
    7983 /* Line 1806 of yacc.c  */
    7984 #line 2152 "parser.yy"
    7985     {}
    7986     break;
    7987 
    7988   case 559:
    7989 
    7990 /* Line 1806 of yacc.c  */
    7991 #line 2187 "parser.yy"
    7992     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7120#line 2177 "parser.yy" /* yacc.c:1646  */
     7121    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7122#line 7123 "Parser/parser.cc" /* yacc.c:1646  */
     7123    break;
     7124
     7125  case 560:
     7126#line 2180 "parser.yy" /* yacc.c:1646  */
     7127    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7128#line 7129 "Parser/parser.cc" /* yacc.c:1646  */
    79937129    break;
    79947130
    79957131  case 561:
    7996 
    7997 /* Line 1806 of yacc.c  */
    7998 #line 2190 "parser.yy"
    7999     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7132#line 2182 "parser.yy" /* yacc.c:1646  */
     7133    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7134#line 7135 "Parser/parser.cc" /* yacc.c:1646  */
    80007135    break;
    80017136
    80027137  case 562:
    8003 
    8004 /* Line 1806 of yacc.c  */
    8005 #line 2192 "parser.yy"
    8006     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7138#line 2187 "parser.yy" /* yacc.c:1646  */
     7139    {
     7140                        typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
     7141                        (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
     7142                }
     7143#line 7144 "Parser/parser.cc" /* yacc.c:1646  */
    80077144    break;
    80087145
    80097146  case 563:
    8010 
    8011 /* Line 1806 of yacc.c  */
    8012 #line 2197 "parser.yy"
    8013     {
    8014                         typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
    8015                         (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
     7147#line 2192 "parser.yy" /* yacc.c:1646  */
     7148    { (yyval.decl) = (yyvsp[-1].decl); }
     7149#line 7150 "Parser/parser.cc" /* yacc.c:1646  */
     7150    break;
     7151
     7152  case 564:
     7153#line 2197 "parser.yy" /* yacc.c:1646  */
     7154    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7155#line 7156 "Parser/parser.cc" /* yacc.c:1646  */
     7156    break;
     7157
     7158  case 565:
     7159#line 2199 "parser.yy" /* yacc.c:1646  */
     7160    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7161#line 7162 "Parser/parser.cc" /* yacc.c:1646  */
     7162    break;
     7163
     7164  case 566:
     7165#line 2201 "parser.yy" /* yacc.c:1646  */
     7166    { (yyval.decl) = (yyvsp[-1].decl); }
     7167#line 7168 "Parser/parser.cc" /* yacc.c:1646  */
     7168    break;
     7169
     7170  case 567:
     7171#line 2206 "parser.yy" /* yacc.c:1646  */
     7172    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7173#line 7174 "Parser/parser.cc" /* yacc.c:1646  */
     7174    break;
     7175
     7176  case 568:
     7177#line 2208 "parser.yy" /* yacc.c:1646  */
     7178    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7179#line 7180 "Parser/parser.cc" /* yacc.c:1646  */
     7180    break;
     7181
     7182  case 569:
     7183#line 2210 "parser.yy" /* yacc.c:1646  */
     7184    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7185#line 7186 "Parser/parser.cc" /* yacc.c:1646  */
     7186    break;
     7187
     7188  case 570:
     7189#line 2212 "parser.yy" /* yacc.c:1646  */
     7190    { (yyval.decl) = (yyvsp[-1].decl); }
     7191#line 7192 "Parser/parser.cc" /* yacc.c:1646  */
     7192    break;
     7193
     7194  case 571:
     7195#line 2217 "parser.yy" /* yacc.c:1646  */
     7196    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7197#line 7198 "Parser/parser.cc" /* yacc.c:1646  */
     7198    break;
     7199
     7200  case 572:
     7201#line 2219 "parser.yy" /* yacc.c:1646  */
     7202    { (yyval.decl) = (yyvsp[-1].decl); }
     7203#line 7204 "Parser/parser.cc" /* yacc.c:1646  */
     7204    break;
     7205
     7206  case 573:
     7207#line 2228 "parser.yy" /* yacc.c:1646  */
     7208    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7209#line 7210 "Parser/parser.cc" /* yacc.c:1646  */
     7210    break;
     7211
     7212  case 575:
     7213#line 2231 "parser.yy" /* yacc.c:1646  */
     7214    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7215#line 7216 "Parser/parser.cc" /* yacc.c:1646  */
     7216    break;
     7217
     7218  case 576:
     7219#line 2236 "parser.yy" /* yacc.c:1646  */
     7220    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
     7221#line 7222 "Parser/parser.cc" /* yacc.c:1646  */
     7222    break;
     7223
     7224  case 577:
     7225#line 2238 "parser.yy" /* yacc.c:1646  */
     7226    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7227#line 7228 "Parser/parser.cc" /* yacc.c:1646  */
     7228    break;
     7229
     7230  case 578:
     7231#line 2240 "parser.yy" /* yacc.c:1646  */
     7232    { (yyval.decl) = (yyvsp[-1].decl); }
     7233#line 7234 "Parser/parser.cc" /* yacc.c:1646  */
     7234    break;
     7235
     7236  case 579:
     7237#line 2245 "parser.yy" /* yacc.c:1646  */
     7238    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7239#line 7240 "Parser/parser.cc" /* yacc.c:1646  */
     7240    break;
     7241
     7242  case 580:
     7243#line 2247 "parser.yy" /* yacc.c:1646  */
     7244    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7245#line 7246 "Parser/parser.cc" /* yacc.c:1646  */
     7246    break;
     7247
     7248  case 581:
     7249#line 2249 "parser.yy" /* yacc.c:1646  */
     7250    { (yyval.decl) = (yyvsp[-1].decl); }
     7251#line 7252 "Parser/parser.cc" /* yacc.c:1646  */
     7252    break;
     7253
     7254  case 582:
     7255#line 2254 "parser.yy" /* yacc.c:1646  */
     7256    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7257#line 7258 "Parser/parser.cc" /* yacc.c:1646  */
     7258    break;
     7259
     7260  case 583:
     7261#line 2256 "parser.yy" /* yacc.c:1646  */
     7262    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7263#line 7264 "Parser/parser.cc" /* yacc.c:1646  */
     7264    break;
     7265
     7266  case 584:
     7267#line 2258 "parser.yy" /* yacc.c:1646  */
     7268    { (yyval.decl) = (yyvsp[-1].decl); }
     7269#line 7270 "Parser/parser.cc" /* yacc.c:1646  */
     7270    break;
     7271
     7272  case 588:
     7273#line 2273 "parser.yy" /* yacc.c:1646  */
     7274    { (yyval.decl) = (yyvsp[-3].decl)->addIdList( (yyvsp[-1].decl) ); }
     7275#line 7276 "Parser/parser.cc" /* yacc.c:1646  */
     7276    break;
     7277
     7278  case 589:
     7279#line 2275 "parser.yy" /* yacc.c:1646  */
     7280    { (yyval.decl) = (yyvsp[-4].decl)->addIdList( (yyvsp[-1].decl) ); }
     7281#line 7282 "Parser/parser.cc" /* yacc.c:1646  */
     7282    break;
     7283
     7284  case 590:
     7285#line 2277 "parser.yy" /* yacc.c:1646  */
     7286    { (yyval.decl) = (yyvsp[-1].decl); }
     7287#line 7288 "Parser/parser.cc" /* yacc.c:1646  */
     7288    break;
     7289
     7290  case 591:
     7291#line 2282 "parser.yy" /* yacc.c:1646  */
     7292    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7293#line 7294 "Parser/parser.cc" /* yacc.c:1646  */
     7294    break;
     7295
     7296  case 592:
     7297#line 2284 "parser.yy" /* yacc.c:1646  */
     7298    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7299#line 7300 "Parser/parser.cc" /* yacc.c:1646  */
     7300    break;
     7301
     7302  case 593:
     7303#line 2286 "parser.yy" /* yacc.c:1646  */
     7304    { (yyval.decl) = (yyvsp[-1].decl); }
     7305#line 7306 "Parser/parser.cc" /* yacc.c:1646  */
     7306    break;
     7307
     7308  case 594:
     7309#line 2291 "parser.yy" /* yacc.c:1646  */
     7310    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7311#line 7312 "Parser/parser.cc" /* yacc.c:1646  */
     7312    break;
     7313
     7314  case 595:
     7315#line 2293 "parser.yy" /* yacc.c:1646  */
     7316    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7317#line 7318 "Parser/parser.cc" /* yacc.c:1646  */
     7318    break;
     7319
     7320  case 596:
     7321#line 2295 "parser.yy" /* yacc.c:1646  */
     7322    { (yyval.decl) = (yyvsp[-1].decl); }
     7323#line 7324 "Parser/parser.cc" /* yacc.c:1646  */
     7324    break;
     7325
     7326  case 597:
     7327#line 2310 "parser.yy" /* yacc.c:1646  */
     7328    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7329#line 7330 "Parser/parser.cc" /* yacc.c:1646  */
     7330    break;
     7331
     7332  case 599:
     7333#line 2313 "parser.yy" /* yacc.c:1646  */
     7334    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7335#line 7336 "Parser/parser.cc" /* yacc.c:1646  */
     7336    break;
     7337
     7338  case 600:
     7339#line 2315 "parser.yy" /* yacc.c:1646  */
     7340    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7341#line 7342 "Parser/parser.cc" /* yacc.c:1646  */
     7342    break;
     7343
     7344  case 602:
     7345#line 2321 "parser.yy" /* yacc.c:1646  */
     7346    { (yyval.decl) = (yyvsp[-1].decl); }
     7347#line 7348 "Parser/parser.cc" /* yacc.c:1646  */
     7348    break;
     7349
     7350  case 603:
     7351#line 2326 "parser.yy" /* yacc.c:1646  */
     7352    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7353#line 7354 "Parser/parser.cc" /* yacc.c:1646  */
     7354    break;
     7355
     7356  case 604:
     7357#line 2328 "parser.yy" /* yacc.c:1646  */
     7358    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7359#line 7360 "Parser/parser.cc" /* yacc.c:1646  */
     7360    break;
     7361
     7362  case 605:
     7363#line 2330 "parser.yy" /* yacc.c:1646  */
     7364    { (yyval.decl) = (yyvsp[-1].decl); }
     7365#line 7366 "Parser/parser.cc" /* yacc.c:1646  */
     7366    break;
     7367
     7368  case 606:
     7369#line 2335 "parser.yy" /* yacc.c:1646  */
     7370    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7371#line 7372 "Parser/parser.cc" /* yacc.c:1646  */
     7372    break;
     7373
     7374  case 607:
     7375#line 2337 "parser.yy" /* yacc.c:1646  */
     7376    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7377#line 7378 "Parser/parser.cc" /* yacc.c:1646  */
     7378    break;
     7379
     7380  case 608:
     7381#line 2339 "parser.yy" /* yacc.c:1646  */
     7382    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7383#line 7384 "Parser/parser.cc" /* yacc.c:1646  */
     7384    break;
     7385
     7386  case 609:
     7387#line 2341 "parser.yy" /* yacc.c:1646  */
     7388    { (yyval.decl) = (yyvsp[-1].decl); }
     7389#line 7390 "Parser/parser.cc" /* yacc.c:1646  */
     7390    break;
     7391
     7392  case 610:
     7393#line 2346 "parser.yy" /* yacc.c:1646  */
     7394    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
     7395#line 7396 "Parser/parser.cc" /* yacc.c:1646  */
     7396    break;
     7397
     7398  case 611:
     7399#line 2348 "parser.yy" /* yacc.c:1646  */
     7400    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7401#line 7402 "Parser/parser.cc" /* yacc.c:1646  */
     7402    break;
     7403
     7404  case 612:
     7405#line 2350 "parser.yy" /* yacc.c:1646  */
     7406    { (yyval.decl) = (yyvsp[-1].decl); }
     7407#line 7408 "Parser/parser.cc" /* yacc.c:1646  */
     7408    break;
     7409
     7410  case 613:
     7411#line 2360 "parser.yy" /* yacc.c:1646  */
     7412    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7413#line 7414 "Parser/parser.cc" /* yacc.c:1646  */
     7414    break;
     7415
     7416  case 615:
     7417#line 2363 "parser.yy" /* yacc.c:1646  */
     7418    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7419#line 7420 "Parser/parser.cc" /* yacc.c:1646  */
     7420    break;
     7421
     7422  case 616:
     7423#line 2365 "parser.yy" /* yacc.c:1646  */
     7424    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7425#line 7426 "Parser/parser.cc" /* yacc.c:1646  */
     7426    break;
     7427
     7428  case 617:
     7429#line 2370 "parser.yy" /* yacc.c:1646  */
     7430    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7431#line 7432 "Parser/parser.cc" /* yacc.c:1646  */
     7432    break;
     7433
     7434  case 618:
     7435#line 2372 "parser.yy" /* yacc.c:1646  */
     7436    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7437#line 7438 "Parser/parser.cc" /* yacc.c:1646  */
     7438    break;
     7439
     7440  case 619:
     7441#line 2374 "parser.yy" /* yacc.c:1646  */
     7442    { (yyval.decl) = (yyvsp[-1].decl); }
     7443#line 7444 "Parser/parser.cc" /* yacc.c:1646  */
     7444    break;
     7445
     7446  case 620:
     7447#line 2379 "parser.yy" /* yacc.c:1646  */
     7448    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7449#line 7450 "Parser/parser.cc" /* yacc.c:1646  */
     7450    break;
     7451
     7452  case 621:
     7453#line 2381 "parser.yy" /* yacc.c:1646  */
     7454    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7455#line 7456 "Parser/parser.cc" /* yacc.c:1646  */
     7456    break;
     7457
     7458  case 622:
     7459#line 2383 "parser.yy" /* yacc.c:1646  */
     7460    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7461#line 7462 "Parser/parser.cc" /* yacc.c:1646  */
     7462    break;
     7463
     7464  case 623:
     7465#line 2385 "parser.yy" /* yacc.c:1646  */
     7466    { (yyval.decl) = (yyvsp[-1].decl); }
     7467#line 7468 "Parser/parser.cc" /* yacc.c:1646  */
     7468    break;
     7469
     7470  case 624:
     7471#line 2390 "parser.yy" /* yacc.c:1646  */
     7472    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
     7473#line 7474 "Parser/parser.cc" /* yacc.c:1646  */
     7474    break;
     7475
     7476  case 625:
     7477#line 2392 "parser.yy" /* yacc.c:1646  */
     7478    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7479#line 7480 "Parser/parser.cc" /* yacc.c:1646  */
     7480    break;
     7481
     7482  case 626:
     7483#line 2394 "parser.yy" /* yacc.c:1646  */
     7484    { (yyval.decl) = (yyvsp[-1].decl); }
     7485#line 7486 "Parser/parser.cc" /* yacc.c:1646  */
     7486    break;
     7487
     7488  case 627:
     7489#line 2425 "parser.yy" /* yacc.c:1646  */
     7490    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7491#line 7492 "Parser/parser.cc" /* yacc.c:1646  */
     7492    break;
     7493
     7494  case 629:
     7495#line 2428 "parser.yy" /* yacc.c:1646  */
     7496    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7497#line 7498 "Parser/parser.cc" /* yacc.c:1646  */
     7498    break;
     7499
     7500  case 630:
     7501#line 2430 "parser.yy" /* yacc.c:1646  */
     7502    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7503#line 7504 "Parser/parser.cc" /* yacc.c:1646  */
     7504    break;
     7505
     7506  case 631:
     7507#line 2435 "parser.yy" /* yacc.c:1646  */
     7508    {
     7509                        typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
     7510                        (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
    80167511                }
    8017     break;
    8018 
    8019   case 564:
    8020 
    8021 /* Line 1806 of yacc.c  */
    8022 #line 2202 "parser.yy"
    8023     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8024     break;
    8025 
    8026   case 565:
    8027 
    8028 /* Line 1806 of yacc.c  */
    8029 #line 2207 "parser.yy"
    8030     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8031     break;
    8032 
    8033   case 566:
    8034 
    8035 /* Line 1806 of yacc.c  */
    8036 #line 2209 "parser.yy"
    8037     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8038     break;
    8039 
    8040   case 567:
    8041 
    8042 /* Line 1806 of yacc.c  */
    8043 #line 2211 "parser.yy"
    8044     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8045     break;
    8046 
    8047   case 568:
    8048 
    8049 /* Line 1806 of yacc.c  */
    8050 #line 2216 "parser.yy"
    8051     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8052     break;
    8053 
    8054   case 569:
    8055 
    8056 /* Line 1806 of yacc.c  */
    8057 #line 2218 "parser.yy"
    8058     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8059     break;
    8060 
    8061   case 570:
    8062 
    8063 /* Line 1806 of yacc.c  */
    8064 #line 2220 "parser.yy"
    8065     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8066     break;
    8067 
    8068   case 571:
    8069 
    8070 /* Line 1806 of yacc.c  */
    8071 #line 2222 "parser.yy"
    8072     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8073     break;
    8074 
    8075   case 572:
    8076 
    8077 /* Line 1806 of yacc.c  */
    8078 #line 2227 "parser.yy"
    8079     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8080     break;
    8081 
    8082   case 573:
    8083 
    8084 /* Line 1806 of yacc.c  */
    8085 #line 2229 "parser.yy"
    8086     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8087     break;
    8088 
    8089   case 574:
    8090 
    8091 /* Line 1806 of yacc.c  */
    8092 #line 2238 "parser.yy"
    8093     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8094     break;
    8095 
    8096   case 576:
    8097 
    8098 /* Line 1806 of yacc.c  */
    8099 #line 2241 "parser.yy"
    8100     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8101     break;
    8102 
    8103   case 577:
    8104 
    8105 /* Line 1806 of yacc.c  */
    8106 #line 2246 "parser.yy"
    8107     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8108     break;
    8109 
    8110   case 578:
    8111 
    8112 /* Line 1806 of yacc.c  */
    8113 #line 2248 "parser.yy"
    8114     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8115     break;
    8116 
    8117   case 579:
    8118 
    8119 /* Line 1806 of yacc.c  */
    8120 #line 2250 "parser.yy"
    8121     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8122     break;
    8123 
    8124   case 580:
    8125 
    8126 /* Line 1806 of yacc.c  */
    8127 #line 2255 "parser.yy"
    8128     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8129     break;
    8130 
    8131   case 581:
    8132 
    8133 /* Line 1806 of yacc.c  */
    8134 #line 2257 "parser.yy"
    8135     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8136     break;
    8137 
    8138   case 582:
    8139 
    8140 /* Line 1806 of yacc.c  */
    8141 #line 2259 "parser.yy"
    8142     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8143     break;
    8144 
    8145   case 583:
    8146 
    8147 /* Line 1806 of yacc.c  */
    8148 #line 2264 "parser.yy"
    8149     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8150     break;
    8151 
    8152   case 584:
    8153 
    8154 /* Line 1806 of yacc.c  */
    8155 #line 2266 "parser.yy"
    8156     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8157     break;
    8158 
    8159   case 585:
    8160 
    8161 /* Line 1806 of yacc.c  */
    8162 #line 2268 "parser.yy"
    8163     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8164     break;
    8165 
    8166   case 589:
    8167 
    8168 /* Line 1806 of yacc.c  */
    8169 #line 2283 "parser.yy"
    8170     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8171     break;
    8172 
    8173   case 590:
    8174 
    8175 /* Line 1806 of yacc.c  */
    8176 #line 2285 "parser.yy"
    8177     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8178     break;
    8179 
    8180   case 591:
    8181 
    8182 /* Line 1806 of yacc.c  */
    8183 #line 2287 "parser.yy"
    8184     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8185     break;
    8186 
    8187   case 592:
    8188 
    8189 /* Line 1806 of yacc.c  */
    8190 #line 2292 "parser.yy"
    8191     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8192     break;
    8193 
    8194   case 593:
    8195 
    8196 /* Line 1806 of yacc.c  */
    8197 #line 2294 "parser.yy"
    8198     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8199     break;
    8200 
    8201   case 594:
    8202 
    8203 /* Line 1806 of yacc.c  */
    8204 #line 2296 "parser.yy"
    8205     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8206     break;
    8207 
    8208   case 595:
    8209 
    8210 /* Line 1806 of yacc.c  */
    8211 #line 2301 "parser.yy"
    8212     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8213     break;
    8214 
    8215   case 596:
    8216 
    8217 /* Line 1806 of yacc.c  */
    8218 #line 2303 "parser.yy"
    8219     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8220     break;
    8221 
    8222   case 597:
    8223 
    8224 /* Line 1806 of yacc.c  */
    8225 #line 2305 "parser.yy"
    8226     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8227     break;
    8228 
    8229   case 598:
    8230 
    8231 /* Line 1806 of yacc.c  */
    8232 #line 2320 "parser.yy"
    8233     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8234     break;
    8235 
    8236   case 600:
    8237 
    8238 /* Line 1806 of yacc.c  */
    8239 #line 2323 "parser.yy"
    8240     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8241     break;
    8242 
    8243   case 601:
    8244 
    8245 /* Line 1806 of yacc.c  */
    8246 #line 2325 "parser.yy"
    8247     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8248     break;
    8249 
    8250   case 603:
    8251 
    8252 /* Line 1806 of yacc.c  */
    8253 #line 2331 "parser.yy"
    8254     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8255     break;
    8256 
    8257   case 604:
    8258 
    8259 /* Line 1806 of yacc.c  */
    8260 #line 2336 "parser.yy"
    8261     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8262     break;
    8263 
    8264   case 605:
    8265 
    8266 /* Line 1806 of yacc.c  */
    8267 #line 2338 "parser.yy"
    8268     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8269     break;
    8270 
    8271   case 606:
    8272 
    8273 /* Line 1806 of yacc.c  */
    8274 #line 2340 "parser.yy"
    8275     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8276     break;
    8277 
    8278   case 607:
    8279 
    8280 /* Line 1806 of yacc.c  */
    8281 #line 2345 "parser.yy"
    8282     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8283     break;
    8284 
    8285   case 608:
    8286 
    8287 /* Line 1806 of yacc.c  */
    8288 #line 2347 "parser.yy"
    8289     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8290     break;
    8291 
    8292   case 609:
    8293 
    8294 /* Line 1806 of yacc.c  */
    8295 #line 2349 "parser.yy"
    8296     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8297     break;
    8298 
    8299   case 610:
    8300 
    8301 /* Line 1806 of yacc.c  */
    8302 #line 2351 "parser.yy"
    8303     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8304     break;
    8305 
    8306   case 611:
    8307 
    8308 /* Line 1806 of yacc.c  */
    8309 #line 2356 "parser.yy"
    8310     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8311     break;
    8312 
    8313   case 612:
    8314 
    8315 /* Line 1806 of yacc.c  */
    8316 #line 2358 "parser.yy"
    8317     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8318     break;
    8319 
    8320   case 613:
    8321 
    8322 /* Line 1806 of yacc.c  */
    8323 #line 2360 "parser.yy"
    8324     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8325     break;
    8326 
    8327   case 614:
    8328 
    8329 /* Line 1806 of yacc.c  */
    8330 #line 2370 "parser.yy"
    8331     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8332     break;
    8333 
    8334   case 616:
    8335 
    8336 /* Line 1806 of yacc.c  */
    8337 #line 2373 "parser.yy"
    8338     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8339     break;
    8340 
    8341   case 617:
    8342 
    8343 /* Line 1806 of yacc.c  */
    8344 #line 2375 "parser.yy"
    8345     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8346     break;
    8347 
    8348   case 618:
    8349 
    8350 /* Line 1806 of yacc.c  */
    8351 #line 2380 "parser.yy"
    8352     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8353     break;
    8354 
    8355   case 619:
    8356 
    8357 /* Line 1806 of yacc.c  */
    8358 #line 2382 "parser.yy"
    8359     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8360     break;
    8361 
    8362   case 620:
    8363 
    8364 /* Line 1806 of yacc.c  */
    8365 #line 2384 "parser.yy"
    8366     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8367     break;
    8368 
    8369   case 621:
    8370 
    8371 /* Line 1806 of yacc.c  */
    8372 #line 2389 "parser.yy"
    8373     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8374     break;
    8375 
    8376   case 622:
    8377 
    8378 /* Line 1806 of yacc.c  */
    8379 #line 2391 "parser.yy"
    8380     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8381     break;
    8382 
    8383   case 623:
    8384 
    8385 /* Line 1806 of yacc.c  */
    8386 #line 2393 "parser.yy"
    8387     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8388     break;
    8389 
    8390   case 624:
    8391 
    8392 /* Line 1806 of yacc.c  */
    8393 #line 2395 "parser.yy"
    8394     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8395     break;
    8396 
    8397   case 625:
    8398 
    8399 /* Line 1806 of yacc.c  */
    8400 #line 2400 "parser.yy"
    8401     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8402     break;
    8403 
    8404   case 626:
    8405 
    8406 /* Line 1806 of yacc.c  */
    8407 #line 2402 "parser.yy"
    8408     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8409     break;
    8410 
    8411   case 627:
    8412 
    8413 /* Line 1806 of yacc.c  */
    8414 #line 2404 "parser.yy"
    8415     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8416     break;
    8417 
    8418   case 628:
    8419 
    8420 /* Line 1806 of yacc.c  */
    8421 #line 2435 "parser.yy"
    8422     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8423     break;
    8424 
    8425   case 630:
    8426 
    8427 /* Line 1806 of yacc.c  */
    8428 #line 2438 "parser.yy"
    8429     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8430     break;
    8431 
    8432   case 631:
    8433 
    8434 /* Line 1806 of yacc.c  */
    8435 #line 2440 "parser.yy"
    8436     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7512#line 7513 "Parser/parser.cc" /* yacc.c:1646  */
    84377513    break;
    84387514
    84397515  case 632:
    8440 
    8441 /* Line 1806 of yacc.c  */
    8442 #line 2445 "parser.yy"
    8443     {
    8444                         typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
    8445                         (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
     7516#line 2440 "parser.yy" /* yacc.c:1646  */
     7517    {
     7518                        typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
     7519                        (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
    84467520                }
     7521#line 7522 "Parser/parser.cc" /* yacc.c:1646  */
    84477522    break;
    84487523
    84497524  case 633:
    8450 
    8451 /* Line 1806 of yacc.c  */
    8452 #line 2450 "parser.yy"
    8453     {
    8454                         typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
    8455                         (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    8456                 }
     7525#line 2448 "parser.yy" /* yacc.c:1646  */
     7526    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7527#line 7528 "Parser/parser.cc" /* yacc.c:1646  */
    84577528    break;
    84587529
    84597530  case 634:
    8460 
    8461 /* Line 1806 of yacc.c  */
    8462 #line 2458 "parser.yy"
    8463     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7531#line 2450 "parser.yy" /* yacc.c:1646  */
     7532    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7533#line 7534 "Parser/parser.cc" /* yacc.c:1646  */
    84647534    break;
    84657535
    84667536  case 635:
    8467 
    8468 /* Line 1806 of yacc.c  */
    8469 #line 2460 "parser.yy"
    8470     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7537#line 2452 "parser.yy" /* yacc.c:1646  */
     7538    { (yyval.decl) = (yyvsp[-1].decl); }
     7539#line 7540 "Parser/parser.cc" /* yacc.c:1646  */
    84717540    break;
    84727541
    84737542  case 636:
    8474 
    8475 /* Line 1806 of yacc.c  */
    8476 #line 2462 "parser.yy"
    8477     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7543#line 2457 "parser.yy" /* yacc.c:1646  */
     7544    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7545#line 7546 "Parser/parser.cc" /* yacc.c:1646  */
    84787546    break;
    84797547
    84807548  case 637:
    8481 
    8482 /* Line 1806 of yacc.c  */
    8483 #line 2467 "parser.yy"
    8484     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     7549#line 2459 "parser.yy" /* yacc.c:1646  */
     7550    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7551#line 7552 "Parser/parser.cc" /* yacc.c:1646  */
    84857552    break;
    84867553
    84877554  case 638:
    8488 
    8489 /* Line 1806 of yacc.c  */
    8490 #line 2469 "parser.yy"
    8491     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7555#line 2464 "parser.yy" /* yacc.c:1646  */
     7556    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
     7557#line 7558 "Parser/parser.cc" /* yacc.c:1646  */
    84927558    break;
    84937559
    84947560  case 639:
    8495 
    8496 /* Line 1806 of yacc.c  */
    8497 #line 2474 "parser.yy"
    8498     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8499     break;
    8500 
    8501   case 640:
    8502 
    8503 /* Line 1806 of yacc.c  */
    8504 #line 2476 "parser.yy"
    8505     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     7561#line 2466 "parser.yy" /* yacc.c:1646  */
     7562    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7563#line 7564 "Parser/parser.cc" /* yacc.c:1646  */
     7564    break;
     7565
     7566  case 641:
     7567#line 2481 "parser.yy" /* yacc.c:1646  */
     7568    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7569#line 7570 "Parser/parser.cc" /* yacc.c:1646  */
    85067570    break;
    85077571
    85087572  case 642:
    8509 
    8510 /* Line 1806 of yacc.c  */
    8511 #line 2491 "parser.yy"
    8512     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7573#line 2483 "parser.yy" /* yacc.c:1646  */
     7574    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7575#line 7576 "Parser/parser.cc" /* yacc.c:1646  */
    85137576    break;
    85147577
    85157578  case 643:
    8516 
    8517 /* Line 1806 of yacc.c  */
    8518 #line 2493 "parser.yy"
    8519     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7579#line 2488 "parser.yy" /* yacc.c:1646  */
     7580    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     7581#line 7582 "Parser/parser.cc" /* yacc.c:1646  */
    85207582    break;
    85217583
    85227584  case 644:
    8523 
    8524 /* Line 1806 of yacc.c  */
    8525 #line 2498 "parser.yy"
     7585#line 2490 "parser.yy" /* yacc.c:1646  */
     7586    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
     7587#line 7588 "Parser/parser.cc" /* yacc.c:1646  */
     7588    break;
     7589
     7590  case 645:
     7591#line 2492 "parser.yy" /* yacc.c:1646  */
     7592    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7593#line 7594 "Parser/parser.cc" /* yacc.c:1646  */
     7594    break;
     7595
     7596  case 646:
     7597#line 2494 "parser.yy" /* yacc.c:1646  */
     7598    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7599#line 7600 "Parser/parser.cc" /* yacc.c:1646  */
     7600    break;
     7601
     7602  case 647:
     7603#line 2496 "parser.yy" /* yacc.c:1646  */
     7604    { (yyval.decl) = (yyvsp[-1].decl); }
     7605#line 7606 "Parser/parser.cc" /* yacc.c:1646  */
     7606    break;
     7607
     7608  case 649:
     7609#line 2502 "parser.yy" /* yacc.c:1646  */
     7610    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7611#line 7612 "Parser/parser.cc" /* yacc.c:1646  */
     7612    break;
     7613
     7614  case 650:
     7615#line 2504 "parser.yy" /* yacc.c:1646  */
     7616    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7617#line 7618 "Parser/parser.cc" /* yacc.c:1646  */
     7618    break;
     7619
     7620  case 651:
     7621#line 2506 "parser.yy" /* yacc.c:1646  */
     7622    { (yyval.decl) = (yyvsp[-1].decl); }
     7623#line 7624 "Parser/parser.cc" /* yacc.c:1646  */
     7624    break;
     7625
     7626  case 652:
     7627#line 2511 "parser.yy" /* yacc.c:1646  */
     7628    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[-2].decl), 0 ); }
     7629#line 7630 "Parser/parser.cc" /* yacc.c:1646  */
     7630    break;
     7631
     7632  case 653:
     7633#line 2513 "parser.yy" /* yacc.c:1646  */
     7634    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7635#line 7636 "Parser/parser.cc" /* yacc.c:1646  */
     7636    break;
     7637
     7638  case 654:
     7639#line 2515 "parser.yy" /* yacc.c:1646  */
     7640    { (yyval.decl) = (yyvsp[-1].decl); }
     7641#line 7642 "Parser/parser.cc" /* yacc.c:1646  */
     7642    break;
     7643
     7644  case 655:
     7645#line 2521 "parser.yy" /* yacc.c:1646  */
     7646    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     7647#line 7648 "Parser/parser.cc" /* yacc.c:1646  */
     7648    break;
     7649
     7650  case 656:
     7651#line 2523 "parser.yy" /* yacc.c:1646  */
     7652    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[0].decl) ); }
     7653#line 7654 "Parser/parser.cc" /* yacc.c:1646  */
     7654    break;
     7655
     7656  case 658:
     7657#line 2529 "parser.yy" /* yacc.c:1646  */
     7658    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), 0, false ); }
     7659#line 7660 "Parser/parser.cc" /* yacc.c:1646  */
     7660    break;
     7661
     7662  case 659:
     7663#line 2531 "parser.yy" /* yacc.c:1646  */
     7664    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     7665#line 7666 "Parser/parser.cc" /* yacc.c:1646  */
     7666    break;
     7667
     7668  case 660:
     7669#line 2533 "parser.yy" /* yacc.c:1646  */
     7670    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newArray( (yyvsp[-2].en), 0, false ) ); }
     7671#line 7672 "Parser/parser.cc" /* yacc.c:1646  */
     7672    break;
     7673
     7674  case 661:
     7675#line 2535 "parser.yy" /* yacc.c:1646  */
     7676    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     7677#line 7678 "Parser/parser.cc" /* yacc.c:1646  */
     7678    break;
     7679
     7680  case 663:
     7681#line 2550 "parser.yy" /* yacc.c:1646  */
     7682    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7683#line 7684 "Parser/parser.cc" /* yacc.c:1646  */
     7684    break;
     7685
     7686  case 664:
     7687#line 2552 "parser.yy" /* yacc.c:1646  */
     7688    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7689#line 7690 "Parser/parser.cc" /* yacc.c:1646  */
     7690    break;
     7691
     7692  case 665:
     7693#line 2557 "parser.yy" /* yacc.c:1646  */
    85267694    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8527     break;
    8528 
    8529   case 645:
    8530 
    8531 /* Line 1806 of yacc.c  */
    8532 #line 2500 "parser.yy"
    8533     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8534     break;
    8535 
    8536   case 646:
    8537 
    8538 /* Line 1806 of yacc.c  */
    8539 #line 2502 "parser.yy"
    8540     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8541     break;
    8542 
    8543   case 647:
    8544 
    8545 /* Line 1806 of yacc.c  */
    8546 #line 2504 "parser.yy"
    8547     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8548     break;
    8549 
    8550   case 648:
    8551 
    8552 /* Line 1806 of yacc.c  */
    8553 #line 2506 "parser.yy"
    8554     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8555     break;
    8556 
    8557   case 650:
    8558 
    8559 /* Line 1806 of yacc.c  */
    8560 #line 2512 "parser.yy"
    8561     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8562     break;
    8563 
    8564   case 651:
    8565 
    8566 /* Line 1806 of yacc.c  */
    8567 #line 2514 "parser.yy"
    8568     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8569     break;
    8570 
    8571   case 652:
    8572 
    8573 /* Line 1806 of yacc.c  */
    8574 #line 2516 "parser.yy"
    8575     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8576     break;
    8577 
    8578   case 653:
    8579 
    8580 /* Line 1806 of yacc.c  */
    8581 #line 2521 "parser.yy"
    8582     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8583     break;
    8584 
    8585   case 654:
    8586 
    8587 /* Line 1806 of yacc.c  */
    8588 #line 2523 "parser.yy"
    8589     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8590     break;
    8591 
    8592   case 655:
    8593 
    8594 /* Line 1806 of yacc.c  */
    8595 #line 2525 "parser.yy"
    8596     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8597     break;
    8598 
    8599   case 656:
    8600 
    8601 /* Line 1806 of yacc.c  */
    8602 #line 2531 "parser.yy"
     7695#line 7696 "Parser/parser.cc" /* yacc.c:1646  */
     7696    break;
     7697
     7698  case 666:
     7699#line 2559 "parser.yy" /* yacc.c:1646  */
     7700    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
     7701#line 7702 "Parser/parser.cc" /* yacc.c:1646  */
     7702    break;
     7703
     7704  case 667:
     7705#line 2561 "parser.yy" /* yacc.c:1646  */
     7706    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7707#line 7708 "Parser/parser.cc" /* yacc.c:1646  */
     7708    break;
     7709
     7710  case 668:
     7711#line 2563 "parser.yy" /* yacc.c:1646  */
     7712    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7713#line 7714 "Parser/parser.cc" /* yacc.c:1646  */
     7714    break;
     7715
     7716  case 669:
     7717#line 2565 "parser.yy" /* yacc.c:1646  */
     7718    { (yyval.decl) = (yyvsp[-1].decl); }
     7719#line 7720 "Parser/parser.cc" /* yacc.c:1646  */
     7720    break;
     7721
     7722  case 671:
     7723#line 2571 "parser.yy" /* yacc.c:1646  */
     7724    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7725#line 7726 "Parser/parser.cc" /* yacc.c:1646  */
     7726    break;
     7727
     7728  case 672:
     7729#line 2573 "parser.yy" /* yacc.c:1646  */
     7730    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7731#line 7732 "Parser/parser.cc" /* yacc.c:1646  */
     7732    break;
     7733
     7734  case 673:
     7735#line 2575 "parser.yy" /* yacc.c:1646  */
     7736    { (yyval.decl) = (yyvsp[-1].decl); }
     7737#line 7738 "Parser/parser.cc" /* yacc.c:1646  */
     7738    break;
     7739
     7740  case 674:
     7741#line 2580 "parser.yy" /* yacc.c:1646  */
     7742    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[-2].decl), 0 ); }
     7743#line 7744 "Parser/parser.cc" /* yacc.c:1646  */
     7744    break;
     7745
     7746  case 675:
     7747#line 2582 "parser.yy" /* yacc.c:1646  */
     7748    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7749#line 7750 "Parser/parser.cc" /* yacc.c:1646  */
     7750    break;
     7751
     7752  case 676:
     7753#line 2584 "parser.yy" /* yacc.c:1646  */
     7754    { (yyval.decl) = (yyvsp[-1].decl); }
     7755#line 7756 "Parser/parser.cc" /* yacc.c:1646  */
     7756    break;
     7757
     7758  case 678:
     7759#line 2591 "parser.yy" /* yacc.c:1646  */
     7760    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7761#line 7762 "Parser/parser.cc" /* yacc.c:1646  */
     7762    break;
     7763
     7764  case 680:
     7765#line 2602 "parser.yy" /* yacc.c:1646  */
    86037766    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8604     break;
    8605 
    8606   case 657:
    8607 
    8608 /* Line 1806 of yacc.c  */
    8609 #line 2533 "parser.yy"
    8610     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    8611     break;
    8612 
    8613   case 659:
    8614 
    8615 /* Line 1806 of yacc.c  */
    8616 #line 2539 "parser.yy"
    8617     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8618     break;
    8619 
    8620   case 660:
    8621 
    8622 /* Line 1806 of yacc.c  */
    8623 #line 2541 "parser.yy"
    8624     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8625     break;
    8626 
    8627   case 661:
    8628 
    8629 /* Line 1806 of yacc.c  */
    8630 #line 2543 "parser.yy"
    8631     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8632     break;
    8633 
    8634   case 662:
    8635 
    8636 /* Line 1806 of yacc.c  */
    8637 #line 2545 "parser.yy"
    8638     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8639     break;
    8640 
    8641   case 664:
    8642 
    8643 /* Line 1806 of yacc.c  */
    8644 #line 2560 "parser.yy"
    8645     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8646     break;
    8647 
    8648   case 665:
    8649 
    8650 /* Line 1806 of yacc.c  */
    8651 #line 2562 "parser.yy"
    8652     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8653     break;
    8654 
    8655   case 666:
    8656 
    8657 /* Line 1806 of yacc.c  */
    8658 #line 2567 "parser.yy"
     7767#line 7768 "Parser/parser.cc" /* yacc.c:1646  */
     7768    break;
     7769
     7770  case 681:
     7771#line 2605 "parser.yy" /* yacc.c:1646  */
     7772    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
     7773#line 7774 "Parser/parser.cc" /* yacc.c:1646  */
     7774    break;
     7775
     7776  case 682:
     7777#line 2607 "parser.yy" /* yacc.c:1646  */
     7778    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[-2].decl), false ); }
     7779#line 7780 "Parser/parser.cc" /* yacc.c:1646  */
     7780    break;
     7781
     7782  case 683:
     7783#line 2610 "parser.yy" /* yacc.c:1646  */
     7784    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
     7785#line 7786 "Parser/parser.cc" /* yacc.c:1646  */
     7786    break;
     7787
     7788  case 684:
     7789#line 2612 "parser.yy" /* yacc.c:1646  */
     7790    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
     7791#line 7792 "Parser/parser.cc" /* yacc.c:1646  */
     7792    break;
     7793
     7794  case 685:
     7795#line 2614 "parser.yy" /* yacc.c:1646  */
     7796    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-4].decl), true ); }
     7797#line 7798 "Parser/parser.cc" /* yacc.c:1646  */
     7798    break;
     7799
     7800  case 687:
     7801#line 2628 "parser.yy" /* yacc.c:1646  */
     7802    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7803#line 7804 "Parser/parser.cc" /* yacc.c:1646  */
     7804    break;
     7805
     7806  case 688:
     7807#line 2630 "parser.yy" /* yacc.c:1646  */
     7808    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7809#line 7810 "Parser/parser.cc" /* yacc.c:1646  */
     7810    break;
     7811
     7812  case 689:
     7813#line 2635 "parser.yy" /* yacc.c:1646  */
    86597814    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8660     break;
    8661 
    8662   case 667:
    8663 
    8664 /* Line 1806 of yacc.c  */
    8665 #line 2569 "parser.yy"
    8666     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8667     break;
    8668 
    8669   case 668:
    8670 
    8671 /* Line 1806 of yacc.c  */
    8672 #line 2571 "parser.yy"
    8673     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8674     break;
    8675 
    8676   case 669:
    8677 
    8678 /* Line 1806 of yacc.c  */
    8679 #line 2573 "parser.yy"
    8680     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8681     break;
    8682 
    8683   case 670:
    8684 
    8685 /* Line 1806 of yacc.c  */
    8686 #line 2575 "parser.yy"
    8687     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8688     break;
    8689 
    8690   case 672:
    8691 
    8692 /* Line 1806 of yacc.c  */
    8693 #line 2581 "parser.yy"
    8694     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8695     break;
    8696 
    8697   case 673:
    8698 
    8699 /* Line 1806 of yacc.c  */
    8700 #line 2583 "parser.yy"
    8701     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8702     break;
    8703 
    8704   case 674:
    8705 
    8706 /* Line 1806 of yacc.c  */
    8707 #line 2585 "parser.yy"
    8708     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8709     break;
    8710 
    8711   case 675:
    8712 
    8713 /* Line 1806 of yacc.c  */
    8714 #line 2590 "parser.yy"
    8715     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8716     break;
    8717 
    8718   case 676:
    8719 
    8720 /* Line 1806 of yacc.c  */
    8721 #line 2592 "parser.yy"
    8722     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8723     break;
    8724 
    8725   case 677:
    8726 
    8727 /* Line 1806 of yacc.c  */
    8728 #line 2594 "parser.yy"
    8729     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8730     break;
    8731 
    8732   case 679:
    8733 
    8734 /* Line 1806 of yacc.c  */
    8735 #line 2601 "parser.yy"
    8736     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8737     break;
    8738 
    8739   case 681:
    8740 
    8741 /* Line 1806 of yacc.c  */
    8742 #line 2612 "parser.yy"
    8743     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8744     break;
    8745 
    8746   case 682:
    8747 
    8748 /* Line 1806 of yacc.c  */
    8749 #line 2615 "parser.yy"
    8750     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    8751     break;
    8752 
    8753   case 683:
    8754 
    8755 /* Line 1806 of yacc.c  */
    8756 #line 2617 "parser.yy"
    8757     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    8758     break;
    8759 
    8760   case 684:
    8761 
    8762 /* Line 1806 of yacc.c  */
    8763 #line 2620 "parser.yy"
    8764     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    8765     break;
    8766 
    8767   case 685:
    8768 
    8769 /* Line 1806 of yacc.c  */
    8770 #line 2622 "parser.yy"
    8771     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    8772     break;
    8773 
    8774   case 686:
    8775 
    8776 /* Line 1806 of yacc.c  */
    8777 #line 2624 "parser.yy"
    8778     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    8779     break;
    8780 
    8781   case 688:
    8782 
    8783 /* Line 1806 of yacc.c  */
    8784 #line 2638 "parser.yy"
    8785     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8786     break;
    8787 
    8788   case 689:
    8789 
    8790 /* Line 1806 of yacc.c  */
    8791 #line 2640 "parser.yy"
    8792     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7815#line 7816 "Parser/parser.cc" /* yacc.c:1646  */
    87937816    break;
    87947817
    87957818  case 690:
    8796 
    8797 /* Line 1806 of yacc.c  */
    8798 #line 2645 "parser.yy"
    8799     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     7819#line 2637 "parser.yy" /* yacc.c:1646  */
     7820    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
     7821#line 7822 "Parser/parser.cc" /* yacc.c:1646  */
    88007822    break;
    88017823
    88027824  case 691:
    8803 
    8804 /* Line 1806 of yacc.c  */
    8805 #line 2647 "parser.yy"
    8806     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     7825#line 2639 "parser.yy" /* yacc.c:1646  */
     7826    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7827#line 7828 "Parser/parser.cc" /* yacc.c:1646  */
    88077828    break;
    88087829
    88097830  case 692:
    8810 
    8811 /* Line 1806 of yacc.c  */
    8812 #line 2649 "parser.yy"
    8813     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7831#line 2641 "parser.yy" /* yacc.c:1646  */
     7832    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7833#line 7834 "Parser/parser.cc" /* yacc.c:1646  */
    88147834    break;
    88157835
    88167836  case 693:
    8817 
    8818 /* Line 1806 of yacc.c  */
    8819 #line 2651 "parser.yy"
    8820     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8821     break;
    8822 
    8823   case 694:
    8824 
    8825 /* Line 1806 of yacc.c  */
    8826 #line 2653 "parser.yy"
    8827     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7837#line 2643 "parser.yy" /* yacc.c:1646  */
     7838    { (yyval.decl) = (yyvsp[-1].decl); }
     7839#line 7840 "Parser/parser.cc" /* yacc.c:1646  */
     7840    break;
     7841
     7842  case 695:
     7843#line 2649 "parser.yy" /* yacc.c:1646  */
     7844    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7845#line 7846 "Parser/parser.cc" /* yacc.c:1646  */
    88287846    break;
    88297847
    88307848  case 696:
    8831 
    8832 /* Line 1806 of yacc.c  */
    8833 #line 2659 "parser.yy"
    8834     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7849#line 2651 "parser.yy" /* yacc.c:1646  */
     7850    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7851#line 7852 "Parser/parser.cc" /* yacc.c:1646  */
    88357852    break;
    88367853
    88377854  case 697:
    8838 
    8839 /* Line 1806 of yacc.c  */
    8840 #line 2661 "parser.yy"
    8841     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7855#line 2653 "parser.yy" /* yacc.c:1646  */
     7856    { (yyval.decl) = (yyvsp[-1].decl); }
     7857#line 7858 "Parser/parser.cc" /* yacc.c:1646  */
    88427858    break;
    88437859
    88447860  case 698:
    8845 
    8846 /* Line 1806 of yacc.c  */
    8847 #line 2663 "parser.yy"
    8848     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7861#line 2658 "parser.yy" /* yacc.c:1646  */
     7862    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7863#line 7864 "Parser/parser.cc" /* yacc.c:1646  */
    88497864    break;
    88507865
    88517866  case 699:
    8852 
    8853 /* Line 1806 of yacc.c  */
    8854 #line 2668 "parser.yy"
    8855     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8856     break;
    8857 
    8858   case 700:
    8859 
    8860 /* Line 1806 of yacc.c  */
    8861 #line 2670 "parser.yy"
    8862     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8863     break;
    8864 
    8865   case 703:
    8866 
    8867 /* Line 1806 of yacc.c  */
    8868 #line 2680 "parser.yy"
    8869     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7867#line 2660 "parser.yy" /* yacc.c:1646  */
     7868    { (yyval.decl) = (yyvsp[-1].decl); }
     7869#line 7870 "Parser/parser.cc" /* yacc.c:1646  */
     7870    break;
     7871
     7872  case 702:
     7873#line 2670 "parser.yy" /* yacc.c:1646  */
     7874    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     7875#line 7876 "Parser/parser.cc" /* yacc.c:1646  */
     7876    break;
     7877
     7878  case 705:
     7879#line 2680 "parser.yy" /* yacc.c:1646  */
     7880    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7881#line 7882 "Parser/parser.cc" /* yacc.c:1646  */
    88707882    break;
    88717883
    88727884  case 706:
    8873 
    8874 /* Line 1806 of yacc.c  */
    8875 #line 2690 "parser.yy"
    8876     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7885#line 2682 "parser.yy" /* yacc.c:1646  */
     7886    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     7887#line 7888 "Parser/parser.cc" /* yacc.c:1646  */
    88777888    break;
    88787889
    88797890  case 707:
    8880 
    8881 /* Line 1806 of yacc.c  */
    8882 #line 2692 "parser.yy"
    8883     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     7891#line 2684 "parser.yy" /* yacc.c:1646  */
     7892    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7893#line 7894 "Parser/parser.cc" /* yacc.c:1646  */
    88847894    break;
    88857895
    88867896  case 708:
    8887 
    8888 /* Line 1806 of yacc.c  */
    8889 #line 2694 "parser.yy"
    8890     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7897#line 2686 "parser.yy" /* yacc.c:1646  */
     7898    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     7899#line 7900 "Parser/parser.cc" /* yacc.c:1646  */
    88917900    break;
    88927901
    88937902  case 709:
    8894 
    8895 /* Line 1806 of yacc.c  */
    8896 #line 2696 "parser.yy"
    8897     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     7903#line 2688 "parser.yy" /* yacc.c:1646  */
     7904    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7905#line 7906 "Parser/parser.cc" /* yacc.c:1646  */
    88987906    break;
    88997907
    89007908  case 710:
    8901 
    8902 /* Line 1806 of yacc.c  */
    8903 #line 2698 "parser.yy"
    8904     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7909#line 2690 "parser.yy" /* yacc.c:1646  */
     7910    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     7911#line 7912 "Parser/parser.cc" /* yacc.c:1646  */
    89057912    break;
    89067913
    89077914  case 711:
    8908 
    8909 /* Line 1806 of yacc.c  */
    8910 #line 2700 "parser.yy"
    8911     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     7915#line 2697 "parser.yy" /* yacc.c:1646  */
     7916    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7917#line 7918 "Parser/parser.cc" /* yacc.c:1646  */
    89127918    break;
    89137919
    89147920  case 712:
    8915 
    8916 /* Line 1806 of yacc.c  */
    8917 #line 2707 "parser.yy"
    8918     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7921#line 2699 "parser.yy" /* yacc.c:1646  */
     7922    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7923#line 7924 "Parser/parser.cc" /* yacc.c:1646  */
    89197924    break;
    89207925
    89217926  case 713:
    8922 
    8923 /* Line 1806 of yacc.c  */
    8924 #line 2709 "parser.yy"
    8925     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     7927#line 2701 "parser.yy" /* yacc.c:1646  */
     7928    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7929#line 7930 "Parser/parser.cc" /* yacc.c:1646  */
    89267930    break;
    89277931
    89287932  case 714:
    8929 
    8930 /* Line 1806 of yacc.c  */
    8931 #line 2711 "parser.yy"
    8932     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7933#line 2703 "parser.yy" /* yacc.c:1646  */
     7934    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
     7935#line 7936 "Parser/parser.cc" /* yacc.c:1646  */
    89337936    break;
    89347937
    89357938  case 715:
    8936 
    8937 /* Line 1806 of yacc.c  */
    8938 #line 2713 "parser.yy"
    8939     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     7939#line 2705 "parser.yy" /* yacc.c:1646  */
     7940    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7941#line 7942 "Parser/parser.cc" /* yacc.c:1646  */
    89407942    break;
    89417943
    89427944  case 716:
    8943 
    8944 /* Line 1806 of yacc.c  */
    8945 #line 2715 "parser.yy"
    8946     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     7945#line 2707 "parser.yy" /* yacc.c:1646  */
     7946    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7947#line 7948 "Parser/parser.cc" /* yacc.c:1646  */
    89477948    break;
    89487949
    89497950  case 717:
    8950 
    8951 /* Line 1806 of yacc.c  */
    8952 #line 2717 "parser.yy"
    8953     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7951#line 2709 "parser.yy" /* yacc.c:1646  */
     7952    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7953#line 7954 "Parser/parser.cc" /* yacc.c:1646  */
    89547954    break;
    89557955
    89567956  case 718:
    8957 
    8958 /* Line 1806 of yacc.c  */
    8959 #line 2719 "parser.yy"
    8960     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     7957#line 2711 "parser.yy" /* yacc.c:1646  */
     7958    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7959#line 7960 "Parser/parser.cc" /* yacc.c:1646  */
    89617960    break;
    89627961
    89637962  case 719:
    8964 
    8965 /* Line 1806 of yacc.c  */
    8966 #line 2721 "parser.yy"
    8967     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7963#line 2713 "parser.yy" /* yacc.c:1646  */
     7964    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
     7965#line 7966 "Parser/parser.cc" /* yacc.c:1646  */
    89687966    break;
    89697967
    89707968  case 720:
    8971 
    8972 /* Line 1806 of yacc.c  */
    8973 #line 2723 "parser.yy"
    8974     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     7969#line 2715 "parser.yy" /* yacc.c:1646  */
     7970    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7971#line 7972 "Parser/parser.cc" /* yacc.c:1646  */
    89757972    break;
    89767973
    89777974  case 721:
    8978 
    8979 /* Line 1806 of yacc.c  */
    8980 #line 2725 "parser.yy"
    8981     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     7975#line 2720 "parser.yy" /* yacc.c:1646  */
     7976    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
     7977#line 7978 "Parser/parser.cc" /* yacc.c:1646  */
    89827978    break;
    89837979
    89847980  case 722:
    8985 
    8986 /* Line 1806 of yacc.c  */
    8987 #line 2730 "parser.yy"
    8988     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     7981#line 2722 "parser.yy" /* yacc.c:1646  */
     7982    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
     7983#line 7984 "Parser/parser.cc" /* yacc.c:1646  */
    89897984    break;
    89907985
    89917986  case 723:
    8992 
    8993 /* Line 1806 of yacc.c  */
    8994 #line 2732 "parser.yy"
    8995     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     7987#line 2727 "parser.yy" /* yacc.c:1646  */
     7988    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
     7989#line 7990 "Parser/parser.cc" /* yacc.c:1646  */
    89967990    break;
    89977991
    89987992  case 724:
    8999 
    9000 /* Line 1806 of yacc.c  */
    9001 #line 2737 "parser.yy"
    9002     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9003     break;
    9004 
    9005   case 725:
    9006 
    9007 /* Line 1806 of yacc.c  */
    9008 #line 2739 "parser.yy"
    9009     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    9010     break;
    9011 
    9012   case 727:
    9013 
    9014 /* Line 1806 of yacc.c  */
    9015 #line 2766 "parser.yy"
    9016     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7993#line 2729 "parser.yy" /* yacc.c:1646  */
     7994    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl)->addQualifiers( (yyvsp[-4].decl) ), true ); }
     7995#line 7996 "Parser/parser.cc" /* yacc.c:1646  */
     7996    break;
     7997
     7998  case 726:
     7999#line 2756 "parser.yy" /* yacc.c:1646  */
     8000    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     8001#line 8002 "Parser/parser.cc" /* yacc.c:1646  */
     8002    break;
     8003
     8004  case 730:
     8005#line 2767 "parser.yy" /* yacc.c:1646  */
     8006    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8007#line 8008 "Parser/parser.cc" /* yacc.c:1646  */
    90178008    break;
    90188009
    90198010  case 731:
    9020 
    9021 /* Line 1806 of yacc.c  */
    9022 #line 2777 "parser.yy"
    9023     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8011#line 2769 "parser.yy" /* yacc.c:1646  */
     8012    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     8013#line 8014 "Parser/parser.cc" /* yacc.c:1646  */
    90248014    break;
    90258015
    90268016  case 732:
    9027 
    9028 /* Line 1806 of yacc.c  */
    9029 #line 2779 "parser.yy"
    9030     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8017#line 2771 "parser.yy" /* yacc.c:1646  */
     8018    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8019#line 8020 "Parser/parser.cc" /* yacc.c:1646  */
    90318020    break;
    90328021
    90338022  case 733:
    9034 
    9035 /* Line 1806 of yacc.c  */
    9036 #line 2781 "parser.yy"
    9037     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8023#line 2773 "parser.yy" /* yacc.c:1646  */
     8024    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     8025#line 8026 "Parser/parser.cc" /* yacc.c:1646  */
    90388026    break;
    90398027
    90408028  case 734:
    9041 
    9042 /* Line 1806 of yacc.c  */
    9043 #line 2783 "parser.yy"
    9044     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8029#line 2775 "parser.yy" /* yacc.c:1646  */
     8030    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8031#line 8032 "Parser/parser.cc" /* yacc.c:1646  */
    90458032    break;
    90468033
    90478034  case 735:
    9048 
    9049 /* Line 1806 of yacc.c  */
    9050 #line 2785 "parser.yy"
    9051     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8035#line 2777 "parser.yy" /* yacc.c:1646  */
     8036    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     8037#line 8038 "Parser/parser.cc" /* yacc.c:1646  */
    90528038    break;
    90538039
    90548040  case 736:
    9055 
    9056 /* Line 1806 of yacc.c  */
    9057 #line 2787 "parser.yy"
    9058     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8041#line 2784 "parser.yy" /* yacc.c:1646  */
     8042    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8043#line 8044 "Parser/parser.cc" /* yacc.c:1646  */
    90598044    break;
    90608045
    90618046  case 737:
    9062 
    9063 /* Line 1806 of yacc.c  */
    9064 #line 2794 "parser.yy"
    9065     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8047#line 2786 "parser.yy" /* yacc.c:1646  */
     8048    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8049#line 8050 "Parser/parser.cc" /* yacc.c:1646  */
    90668050    break;
    90678051
    90688052  case 738:
    9069 
    9070 /* Line 1806 of yacc.c  */
    9071 #line 2796 "parser.yy"
    9072     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8053#line 2788 "parser.yy" /* yacc.c:1646  */
     8054    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     8055#line 8056 "Parser/parser.cc" /* yacc.c:1646  */
    90738056    break;
    90748057
    90758058  case 739:
    9076 
    9077 /* Line 1806 of yacc.c  */
    9078 #line 2798 "parser.yy"
    9079     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8059#line 2790 "parser.yy" /* yacc.c:1646  */
     8060    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8061#line 8062 "Parser/parser.cc" /* yacc.c:1646  */
    90808062    break;
    90818063
    90828064  case 740:
    9083 
    9084 /* Line 1806 of yacc.c  */
    9085 #line 2800 "parser.yy"
    9086     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8065#line 2792 "parser.yy" /* yacc.c:1646  */
     8066    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8067#line 8068 "Parser/parser.cc" /* yacc.c:1646  */
    90878068    break;
    90888069
    90898070  case 741:
    9090 
    9091 /* Line 1806 of yacc.c  */
    9092 #line 2802 "parser.yy"
    9093     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8071#line 2794 "parser.yy" /* yacc.c:1646  */
     8072    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     8073#line 8074 "Parser/parser.cc" /* yacc.c:1646  */
    90948074    break;
    90958075
    90968076  case 742:
    9097 
    9098 /* Line 1806 of yacc.c  */
    9099 #line 2804 "parser.yy"
    9100     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8077#line 2799 "parser.yy" /* yacc.c:1646  */
     8078    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
     8079#line 8080 "Parser/parser.cc" /* yacc.c:1646  */
    91018080    break;
    91028081
    91038082  case 743:
    9104 
    9105 /* Line 1806 of yacc.c  */
    9106 #line 2809 "parser.yy"
    9107     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     8083#line 2804 "parser.yy" /* yacc.c:1646  */
     8084    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[-1].decl), 0 ); }
     8085#line 8086 "Parser/parser.cc" /* yacc.c:1646  */
    91088086    break;
    91098087
    91108088  case 744:
    9111 
    9112 /* Line 1806 of yacc.c  */
    9113 #line 2814 "parser.yy"
    9114     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     8089#line 2806 "parser.yy" /* yacc.c:1646  */
     8090    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[-5].decl), (yyvsp[-2].decl), 0 ); }
     8091#line 8092 "Parser/parser.cc" /* yacc.c:1646  */
    91158092    break;
    91168093
    91178094  case 745:
    9118 
    9119 /* Line 1806 of yacc.c  */
    9120 #line 2816 "parser.yy"
    9121     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    9122     break;
    9123 
    9124   case 746:
    9125 
    9126 /* Line 1806 of yacc.c  */
    9127 #line 2818 "parser.yy"
    9128     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     8095#line 2808 "parser.yy" /* yacc.c:1646  */
     8096    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[-5].decl), (yyvsp[-2].decl), 0 ); }
     8097#line 8098 "Parser/parser.cc" /* yacc.c:1646  */
     8098    break;
     8099
     8100  case 748:
     8101#line 2832 "parser.yy" /* yacc.c:1646  */
     8102    { (yyval.en) = 0; }
     8103#line 8104 "Parser/parser.cc" /* yacc.c:1646  */
    91298104    break;
    91308105
    91318106  case 749:
    9132 
    9133 /* Line 1806 of yacc.c  */
    9134 #line 2842 "parser.yy"
    9135     { (yyval.en) = 0; }
    9136     break;
    9137 
    9138   case 750:
    9139 
    9140 /* Line 1806 of yacc.c  */
    9141 #line 2844 "parser.yy"
    9142     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    9143     break;
    9144 
    9145 
    9146 
    9147 /* Line 1806 of yacc.c  */
    9148 #line 9149 "Parser/parser.cc"
     8107#line 2834 "parser.yy" /* yacc.c:1646  */
     8108    { (yyval.en) = (yyvsp[0].en); }
     8109#line 8110 "Parser/parser.cc" /* yacc.c:1646  */
     8110    break;
     8111
     8112
     8113#line 8114 "Parser/parser.cc" /* yacc.c:1646  */
    91498114      default: break;
    91508115    }
     
    91688133  *++yyvsp = yyval;
    91698134
    9170   /* Now `shift' the result of the reduction.  Determine what state
     8135  /* Now 'shift' the result of the reduction.  Determine what state
    91718136     that goes to, based on the state we popped back to and the rule
    91728137     number reduced by.  */
     
    91838148
    91848149
    9185 /*------------------------------------.
    9186 | yyerrlab -- here on detecting error |
    9187 `------------------------------------*/
     8150/*--------------------------------------.
     8151| yyerrlab -- here on detecting error. |
     8152`--------------------------------------*/
    91888153yyerrlab:
    91898154  /* Make sure we have latest lookahead translation.  See comments at
     
    92368201    {
    92378202      /* If just tried and failed to reuse lookahead token after an
    9238         error, discard it.  */
     8203        error, discard it.  */
    92398204
    92408205      if (yychar <= YYEOF)
    9241         {
    9242           /* Return failure if at end of input.  */
    9243           if (yychar == YYEOF)
    9244             YYABORT;
    9245         }
     8206        {
     8207          /* Return failure if at end of input.  */
     8208          if (yychar == YYEOF)
     8209            YYABORT;
     8210        }
    92468211      else
    9247         {
    9248           yydestruct ("Error: discarding",
    9249                       yytoken, &yylval);
    9250           yychar = YYEMPTY;
    9251         }
     8212        {
     8213          yydestruct ("Error: discarding",
     8214                      yytoken, &yylval);
     8215          yychar = YYEMPTY;
     8216        }
    92528217    }
    92538218
     
    92688233     goto yyerrorlab;
    92698234
    9270   /* Do not reclaim the symbols of the rule which action triggered
     8235  /* Do not reclaim the symbols of the rule whose action triggered
    92718236     this YYERROR.  */
    92728237  YYPOPSTACK (yylen);
     
    92818246`-------------------------------------------------------------*/
    92828247yyerrlab1:
    9283   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
     8248  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
    92848249
    92858250  for (;;)
     
    92878252      yyn = yypact[yystate];
    92888253      if (!yypact_value_is_default (yyn))
    9289         {
    9290           yyn += YYTERROR;
    9291           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
    9292             {
    9293               yyn = yytable[yyn];
    9294               if (0 < yyn)
    9295                 break;
    9296             }
    9297         }
     8254        {
     8255          yyn += YYTERROR;
     8256          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
     8257            {
     8258              yyn = yytable[yyn];
     8259              if (0 < yyn)
     8260                break;
     8261            }
     8262        }
    92988263
    92998264      /* Pop the current state because it cannot handle the error token.  */
    93008265      if (yyssp == yyss)
    9301         YYABORT;
     8266        YYABORT;
    93028267
    93038268
    93048269      yydestruct ("Error: popping",
    9305                   yystos[yystate], yyvsp);
     8270                  yystos[yystate], yyvsp);
    93068271      YYPOPSTACK (1);
    93078272      yystate = *yyssp;
     
    93098274    }
    93108275
     8276  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    93118277  *++yyvsp = yylval;
     8278  YY_IGNORE_MAYBE_UNINITIALIZED_END
    93128279
    93138280
     
    93338300  goto yyreturn;
    93348301
    9335 #if !defined(yyoverflow) || YYERROR_VERBOSE
     8302#if !defined yyoverflow || YYERROR_VERBOSE
    93368303/*-------------------------------------------------.
    93378304| yyexhaustedlab -- memory exhaustion comes here.  |
     
    93528319                  yytoken, &yylval);
    93538320    }
    9354   /* Do not reclaim the symbols of the rule which action triggered
     8321  /* Do not reclaim the symbols of the rule whose action triggered
    93558322     this YYABORT or YYACCEPT.  */
    93568323  YYPOPSTACK (yylen);
     
    93598326    {
    93608327      yydestruct ("Cleanup: popping",
    9361                   yystos[*yyssp], yyvsp);
     8328                  yystos[*yyssp], yyvsp);
    93628329      YYPOPSTACK (1);
    93638330    }
     
    93708337    YYSTACK_FREE (yymsg);
    93718338#endif
    9372   /* Make sure YYID is used.  */
    9373   return YYID (yyresult);
     8339  return yyresult;
    93748340}
    9375 
    9376 
    9377 
    9378 /* Line 2067 of yacc.c  */
    9379 #line 2847 "parser.yy"
     8341#line 2837 "parser.yy" /* yacc.c:1906  */
    93808342
    93818343// ----end of grammar----
     8344
     8345extern char *yytext;
    93828346
    93838347void yyerror( const char * ) {
     
    93948358// compile-command: "make install" //
    93958359// End: //
    9396 
  • src/Parser/parser.h

    r7b1bfc5 r4a7d895  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 3.0.2.  */
    22
    33/* Bison interface for Yacc-like parsers in C
    4    
    5       Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
    6    
     4
     5   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
     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.  */
    3232
    33 
    34 /* Tokens.  */
     33#ifndef YY_YY_PARSER_PARSER_H_INCLUDED
     34# define YY_YY_PARSER_PARSER_H_INCLUDED
     35/* Debug traces.  */
     36#ifndef YYDEBUG
     37# define YYDEBUG 1
     38#endif
     39#if YYDEBUG
     40extern int yydebug;
     41#endif
     42
     43/* Token type.  */
    3544#ifndef YYTOKENTYPE
    3645# define YYTOKENTYPE
    37    /* Put the tokens into the symbol table, so that GDB and other debuggers
    38       know about them.  */
    39    enum yytokentype {
    40      TYPEDEF = 258,
    41      AUTO = 259,
    42      EXTERN = 260,
    43      REGISTER = 261,
    44      STATIC = 262,
    45      INLINE = 263,
    46      FORTRAN = 264,
    47      CONST = 265,
    48      VOLATILE = 266,
    49      RESTRICT = 267,
    50      FORALL = 268,
    51      LVALUE = 269,
    52      VOID = 270,
    53      CHAR = 271,
    54      SHORT = 272,
    55      INT = 273,
    56      LONG = 274,
    57      FLOAT = 275,
    58      DOUBLE = 276,
    59      SIGNED = 277,
    60      UNSIGNED = 278,
    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
    146    };
     46  enum yytokentype
     47  {
     48    TYPEDEF = 258,
     49    AUTO = 259,
     50    EXTERN = 260,
     51    REGISTER = 261,
     52    STATIC = 262,
     53    INLINE = 263,
     54    FORTRAN = 264,
     55    CONST = 265,
     56    VOLATILE = 266,
     57    RESTRICT = 267,
     58    FORALL = 268,
     59    LVALUE = 269,
     60    VOID = 270,
     61    CHAR = 271,
     62    SHORT = 272,
     63    INT = 273,
     64    LONG = 274,
     65    FLOAT = 275,
     66    DOUBLE = 276,
     67    SIGNED = 277,
     68    UNSIGNED = 278,
     69    VALIST = 279,
     70    BOOL = 280,
     71    COMPLEX = 281,
     72    IMAGINARY = 282,
     73    TYPEOF = 283,
     74    LABEL = 284,
     75    ENUM = 285,
     76    STRUCT = 286,
     77    UNION = 287,
     78    OTYPE = 288,
     79    FTYPE = 289,
     80    DTYPE = 290,
     81    TRAIT = 291,
     82    SIZEOF = 292,
     83    OFFSETOF = 293,
     84    ATTRIBUTE = 294,
     85    EXTENSION = 295,
     86    IF = 296,
     87    ELSE = 297,
     88    SWITCH = 298,
     89    CASE = 299,
     90    DEFAULT = 300,
     91    DO = 301,
     92    WHILE = 302,
     93    FOR = 303,
     94    BREAK = 304,
     95    CONTINUE = 305,
     96    GOTO = 306,
     97    RETURN = 307,
     98    CHOOSE = 308,
     99    DISABLE = 309,
     100    ENABLE = 310,
     101    FALLTHRU = 311,
     102    TRY = 312,
     103    CATCH = 313,
     104    CATCHRESUME = 314,
     105    FINALLY = 315,
     106    THROW = 316,
     107    THROWRESUME = 317,
     108    AT = 318,
     109    ASM = 319,
     110    ALIGNAS = 320,
     111    ALIGNOF = 321,
     112    ATOMIC = 322,
     113    GENERIC = 323,
     114    NORETURN = 324,
     115    STATICASSERT = 325,
     116    THREADLOCAL = 326,
     117    IDENTIFIER = 327,
     118    QUOTED_IDENTIFIER = 328,
     119    TYPEDEFname = 329,
     120    TYPEGENname = 330,
     121    ATTR_IDENTIFIER = 331,
     122    ATTR_TYPEDEFname = 332,
     123    ATTR_TYPEGENname = 333,
     124    INTEGERconstant = 334,
     125    FLOATINGconstant = 335,
     126    CHARACTERconstant = 336,
     127    STRINGliteral = 337,
     128    ZERO = 338,
     129    ONE = 339,
     130    ARROW = 340,
     131    ICR = 341,
     132    DECR = 342,
     133    LS = 343,
     134    RS = 344,
     135    LE = 345,
     136    GE = 346,
     137    EQ = 347,
     138    NE = 348,
     139    ANDAND = 349,
     140    OROR = 350,
     141    ELLIPSIS = 351,
     142    MULTassign = 352,
     143    DIVassign = 353,
     144    MODassign = 354,
     145    PLUSassign = 355,
     146    MINUSassign = 356,
     147    LSassign = 357,
     148    RSassign = 358,
     149    ANDassign = 359,
     150    ERassign = 360,
     151    ORassign = 361,
     152    ATassign = 362,
     153    THEN = 363
     154  };
    147155#endif
    148156/* Tokens.  */
     
    254262#define THEN 363
    255263
    256 
    257 
    258 
     264/* Value type.  */
    259265#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    260 typedef union YYSTYPE
     266typedef union YYSTYPE YYSTYPE;
     267union YYSTYPE
    261268{
    262 
    263 /* Line 2068 of yacc.c  */
    264 #line 115 "parser.yy"
     269#line 115 "parser.yy" /* yacc.c:1909  */
    265270
    266271        Token tok;
     
    278283        bool flag;
    279284
    280 
    281 
    282 /* Line 2068 of yacc.c  */
    283 #line 284 "Parser/parser.h"
    284 } YYSTYPE;
     285#line 286 "Parser/parser.h" /* yacc.c:1909  */
     286};
    285287# define YYSTYPE_IS_TRIVIAL 1
    286 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
    287288# define YYSTYPE_IS_DECLARED 1
    288289#endif
    289290
     291
    290292extern YYSTYPE yylval;
    291293
    292 
     294int yyparse (void);
     295
     296#endif /* !YY_YY_PARSER_PARSER_H_INCLUDED  */
  • src/Parser/parser.yy

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 15:18:19 2016
    13 // Update Count     : 1891
     12// Last Modified On : Thu Aug 18 23:49:10 2016
     13// Update Count     : 1909
    1414//
    1515
     
    4343#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
    4444#define YYDEBUG 1                                                                               // get the pretty debugging code to compile
    45 extern char *yytext;
    4645
    4746#undef __GNUC_MINOR__
     
    5655#include "LinkageSpec.h"
    5756
    58 DeclarationNode *theTree = 0;                                                   // the resulting parse tree
    59 LinkageSpec::Type linkage = LinkageSpec::Cforall;
    60 std::stack< LinkageSpec::Type > linkageStack;
    61 TypedefTable typedefTable;
     57extern DeclarationNode * parseTree;
     58extern LinkageSpec::Spec linkage;
     59extern TypedefTable typedefTable;
     60
     61std::stack< LinkageSpec::Spec > linkageStack;
    6262
    6363void appendStr( std::string &to, std::string *from ) {
     
    223223%type<decl> paren_identifier paren_type
    224224
    225 %type<decl> storage_class storage_class_name storage_class_list
     225%type<decl> storage_class storage_class_list
    226226
    227227%type<decl> sue_declaration_specifier sue_type_specifier
     
    311311constant:
    312312                // ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant".
    313 INTEGERconstant                                                                 { $$ = new ExpressionNode( build_constantInteger( *$1 ) ); }
    314         | FLOATINGconstant                                                      { $$ = new ExpressionNode( build_constantFloat( *$1 ) ); }
    315         | CHARACTERconstant                                                     { $$ = new ExpressionNode( build_constantChar( *$1 ) ); }
     313        INTEGERconstant                                                                 { $$ = new ExpressionNode( build_constantInteger( assign_strptr($1) ) ); }
     314        | FLOATINGconstant                                                      { $$ = new ExpressionNode( build_constantFloat( assign_strptr($1) ) ); }
     315        | CHARACTERconstant                                                     { $$ = new ExpressionNode( build_constantChar( assign_strptr($1) ) ); }
    316316        ;
    317317
     
    338338
    339339string_literal_list:                                                                    // juxtaposed strings are concatenated
    340         STRINGliteral                                                           { $$ = build_constantStr( *$1 ); }
     340        STRINGliteral                                                           { $$ = build_constantStr( assign_strptr($1) ); }
    341341        | string_literal_list STRINGliteral
    342342                {
     
    699699        | EXTENSION declaration                                                         // GCC
    700700                {       // mark all fields in list
    701                         for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_next() )
     701                        for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    702702                                iter->set_extension( true );
    703703                        $$ = new StatementNode( $2 );
     
    838838jump_statement:
    839839        GOTO IDENTIFIER ';'
    840                 { $$ = new StatementNode( build_branch( *$2, BranchStmt::Goto ) ); }
     840                { $$ = new StatementNode( build_branch( assign_strptr($2), BranchStmt::Goto ) ); }
    841841        | GOTO '*' comma_expression ';'                                         // GCC, computed goto
    842842                // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3);
     
    849849                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    850850                // the target of the transfer appears only at the start of an iteration statement.
    851                 { $$ = new StatementNode( build_branch( *$2, BranchStmt::Continue ) ); delete $2; }
     851                { $$ = new StatementNode( build_branch( assign_strptr($2), BranchStmt::Continue ) ); }
    852852        | BREAK ';'
    853853                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
     
    856856                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    857857                // the target of the transfer appears only at the start of an iteration statement.
    858                 { $$ = new StatementNode( build_branch( *$2, BranchStmt::Break ) ); delete $2; }
     858                { $$ = new StatementNode( build_branch( assign_strptr($2), BranchStmt::Break ) ); }
    859859        | RETURN comma_expression_opt ';'
    860860                { $$ = new StatementNode( build_return( $2 ) ); }
     
    979979label_list:
    980980        no_attr_identifier
    981                 { $$ = new LabelNode(); $$->labels.push_back( *$1 ); }
     981                { $$ = new LabelNode(); $$->labels.push_back( assign_strptr($1) ); }
    982982        | label_list ',' no_attr_identifier
    983                 { $$ = $1; $1->labels.push_back( *$3 ); }
     983                { $$ = $1; $1->labels.push_back( assign_strptr($3) ); }
    984984        ;
    985985
     
    13241324
    13251325storage_class:
    1326         storage_class_name
    1327         ;
    1328 
    1329 storage_class_name:
    13301326        EXTERN
    13311327                { $$ = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     
    14971493        | EXTENSION field_declaring_list ';'                            // GCC
    14981494                {       // mark all fields in list
    1499                         for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_next() )
     1495                        for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    15001496                                iter->set_extension( true );
    15011497                        $$ = $2;
     
    19741970                {}                                                                                              // empty input file
    19751971        | external_definition_list
    1976                 {
    1977                         if ( theTree ) {
    1978                                 theTree->appendList( $1 );
    1979                         } else {
    1980                                 theTree = $1;
    1981                         }
    1982                 }
     1972                { parseTree = parseTree != nullptr ? parseTree->appendList( $1 ) : $1;  }
    19831973        ;
    19841974
     
    19861976        external_definition
    19871977        | external_definition_list push external_definition
    1988                 { $$ = ( $1 != NULL ) ? $1->appendList( $3 ) : $3; }
     1978                { $$ = $1 != nullptr ? $1->appendList( $3 ) : $3; }
    19891979        ;
    19901980
     
    20021992        | EXTERN STRINGliteral
    20031993                {
    2004                         linkageStack.push( linkage );
    2005                         linkage = LinkageSpec::fromString( *$2 );
     1994                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     1995                        linkage = LinkageSpec::fromString( assign_strptr($2) );
    20061996                }
    20071997          '{' external_definition_list_opt '}'                          // C++-style linkage specifier
     
    20132003        | EXTENSION external_definition
    20142004                {       // mark all fields in list
    2015                         for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_next() )
     2005                        for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    20162006                                iter->set_extension( true );
    20172007                        $$ = $2;
     
    21472137
    21482138any_word:                                                                                               // GCC
    2149         identifier_or_type_name {}
    2150         | storage_class_name {}
    2151         | basic_type_name {}
    2152         | type_qualifier {}
     2139        identifier_or_type_name { delete $1; }
     2140        | storage_class { delete $1; }
     2141        | basic_type_name { delete $1; }
     2142        | type_qualifier { delete $1; }
    21532143        ;
    21542144
     
    28482838// ----end of grammar----
    28492839
     2840extern char *yytext;
     2841
    28502842void yyerror( const char * ) {
    28512843        std::cout << "Error ";
Note: See TracChangeset for help on using the changeset viewer.