o
    
cT#                    @   s  d Z dZdZi dg dg dfdg dg dfd	g d
g dfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfddgdgfd g d!g d"fd#g d$g d%fd&g d'g d(fd)g dg d*fd+g d,g d-fd.g d$g d/fi d0g dg d1fd2g d3g d4fd5g d6g d7fd8g dg d9fd:g dg d;fd<g dg d=fd>g d?g d@fdAg dg dBfdCg d?g dDfdEg d$g dFfdGg dg dHfdIg d'g dJfdKg d?g dLfdMg dNg dOfdPg dQg dRfdSg dTg dUfdVg dg dWfi dXg dg dYfdZg dg d[fd\g d]g d^fd_g d`g dafdbg d!g dcfddg d$g defdfg d'g dgfdhg dig djfdkg dlg dmfdng dog dpfdqg d?g drfdsg d$g dtfdug dg dvfdwg dxg dyfdzg d{g d|fd}g d~g dfdg dg dfi dg dg dfdg d'g dfdg dg dfdg d?g dfdg d$g dfdg d$g dfdg d'g dfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfdg d'g dfdg d$g dfdg dg dfdg d?g dfi dg d$g dfdg d'g dfdg dg dfdg dg dfddgdgfdg d?g dfdg dg dfdg d$g dfdg d!g dfdg d'g dfdg dQg dfdg dg dfdg dg dfdg dg dâfdg d'g dŢfdg dg dǢfdg dQg dɢfi dg d$g dˢfdg d$g d͢fdg dg dϢfdg d!g dѢfdg dӢg dԢfdg dg d֢fdg d$g dآfdg dڢg dۢfdg dg dݢfdg d$g dߢfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfdg d$g dfdg dg dfg d?g dfg dg dfg dg dfg dig dfg dg dfg d'g dfg dg dfg dg dfg d?g dfg d?g dfg dg dfd Zi Ze D ]%\ZZeed ed D ]\Z	Z
e	evri ee	< e
ee	 e< q
q[i dg dg dfdg dg dfd	d
dgddgfdd
dgddgfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfd d!gd"gfd#g d$g d%fd&g d'g d(fd)g d*g d+fd,g d-g d.fd/g d0g d1fd2g d3g d4fi d5g dg d6fd7g d8g d9fd:dgd;gfd<g d=g d>fd?g d@g dAfdBg d-g dCfdDg dEg dFfdGdHgdIgfdJg dKg dLfdMdNd!gdOdPgfdQg dRg dSfdTg dUg dVfdWg dXg dYfdZdd;gd[d[gfd\d]d^gd_d_gfd`dadbgdcdcgfddg dg defi dfg dgg dhfdig djg dkfdlg dmg dnfdodadbgdpdpgfdqg drg dsfdtdugdvgfdwdxgdygfdzd{gd|gfd}g d~g dfddxdgddgfdg dg dfddgdgfdg dg dfdg dg dfdg dKg dfddgdgfddgdgfi dg dg dfdg dg dfddd;gddgfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfddxgdgfdg dg dfdg dg dfdg dKg dfdg dg dfdg dg d¢fdg dg dĢfi dg dƢg dǢfdȐd{d|gdɐdgfdg d̢g d͢fdg dϢg dТfdg dKg dҢfdg dԢg dբfdg dעg dآfdِd!dgdېdgfdg dޢg dߢfdg dg dfdg dKg dfdddgddgfdg dKg dfdg dg dfdd{gdgfdg dg dfdg d-g dfg d0g dfg dg dfg dg dfdadbgddgfg dg dfg dϢg dfd]d^gddgfdd;gddgfg dg d fg dg dfg dg dfg dg dfg dg dfg dg dfdZi Ze D ]%\ZZeed ed D ]\Z	Z
e	evri ee	< e
ee	 e< qǐq[g d	Zd
S (  z3.10LALRaR  translation_unit_or_emptyleftLORleftLANDleftORleftXORleftANDleftEQNEleftGTGELTLEleftRSHIFTLSHIFTleftPLUSMINUSleftTIMESDIVIDEMODAUTO BREAK CASE CHAR CONST CONTINUE DEFAULT DO DOUBLE ELSE ENUM EXTERN FLOAT FOR GOTO IF INLINE INT LONG REGISTER OFFSETOF RESTRICT RETURN SHORT SIGNED SIZEOF STATIC STRUCT SWITCH TYPEDEF UNION UNSIGNED VOID VOLATILE WHILE __INT128 _BOOL _COMPLEX _NORETURN _THREAD_LOCAL _STATIC_ASSERT _ATOMIC _ALIGNOF _ALIGNAS ID TYPEID INT_CONST_DEC INT_CONST_OCT INT_CONST_HEX INT_CONST_BIN INT_CONST_CHAR FLOAT_CONST HEX_FLOAT_CONST CHAR_CONST WCHAR_CONST U8CHAR_CONST U16CHAR_CONST U32CHAR_CONST STRING_LITERAL WSTRING_LITERAL U8STRING_LITERAL U16STRING_LITERAL U32STRING_LITERAL PLUS MINUS TIMES DIVIDE MOD OR AND NOT XOR LSHIFT RSHIFT LOR LAND LNOT LT LE GT GE EQ NE EQUALS TIMESEQUAL DIVEQUAL MODEQUAL PLUSEQUAL MINUSEQUAL LSHIFTEQUAL RSHIFTEQUAL ANDEQUAL XOREQUAL OREQUAL PLUSPLUS MINUSMINUS ARROW CONDOP LPAREN RPAREN LBRACKET RBRACKET LBRACE RBRACE COMMA PERIOD SEMI COLON ELLIPSIS PPHASH PPPRAGMA PPPRAGMASTRabstract_declarator_opt : empty
| abstract_declaratorassignment_expression_opt : empty
| assignment_expressionblock_item_list_opt : empty
| block_item_listdeclaration_list_opt : empty
| declaration_listdeclaration_specifiers_no_type_opt : empty
| declaration_specifiers_no_typedesignation_opt : empty
| designationexpression_opt : empty
| expressionid_init_declarator_list_opt : empty
| id_init_declarator_listidentifier_list_opt : empty
| identifier_listinit_declarator_list_opt : empty
| init_declarator_listinitializer_list_opt : empty
| initializer_listparameter_type_list_opt : empty
| parameter_type_liststruct_declarator_list_opt : empty
| struct_declarator_listtype_qualifier_list_opt : empty
| type_qualifier_list direct_id_declarator   : ID
         direct_id_declarator   : LPAREN id_declarator RPAREN
         direct_id_declarator   : direct_id_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET
         direct_id_declarator   : direct_id_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET
                                    | direct_id_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET
         direct_id_declarator   : direct_id_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET
         direct_id_declarator   : direct_id_declarator LPAREN parameter_type_list RPAREN
                                    | direct_id_declarator LPAREN identifier_list_opt RPAREN
         direct_typeid_declarator   : TYPEID
         direct_typeid_declarator   : LPAREN typeid_declarator RPAREN
         direct_typeid_declarator   : direct_typeid_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET
         direct_typeid_declarator   : direct_typeid_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET
                                    | direct_typeid_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET
         direct_typeid_declarator   : direct_typeid_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET
         direct_typeid_declarator   : direct_typeid_declarator LPAREN parameter_type_list RPAREN
                                    | direct_typeid_declarator LPAREN identifier_list_opt RPAREN
         direct_typeid_noparen_declarator   : TYPEID
         direct_typeid_noparen_declarator   : direct_typeid_noparen_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET
         direct_typeid_noparen_declarator   : direct_typeid_noparen_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKET
                                    | direct_typeid_noparen_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET
         direct_typeid_noparen_declarator   : direct_typeid_noparen_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKET
         direct_typeid_noparen_declarator   : direct_typeid_noparen_declarator LPAREN parameter_type_list RPAREN
                                    | direct_typeid_noparen_declarator LPAREN identifier_list_opt RPAREN
         id_declarator  : direct_id_declarator
         id_declarator  : pointer direct_id_declarator
         typeid_declarator  : direct_typeid_declarator
         typeid_declarator  : pointer direct_typeid_declarator
         typeid_noparen_declarator  : direct_typeid_noparen_declarator
         typeid_noparen_declarator  : pointer direct_typeid_noparen_declarator
         translation_unit_or_empty   : translation_unit
                                        | empty
         translation_unit    : external_declaration
         translation_unit    : translation_unit external_declaration
         external_declaration    : function_definition
         external_declaration    : declaration
         external_declaration    : pp_directive
                                    | pppragma_directive
         external_declaration    : SEMI
         external_declaration    : static_assert
         static_assert           : _STATIC_ASSERT LPAREN constant_expression COMMA unified_string_literal RPAREN
                                    | _STATIC_ASSERT LPAREN constant_expression RPAREN
         pp_directive  : PPHASH
         pppragma_directive      : PPPRAGMA
                                    | PPPRAGMA PPPRAGMASTR
         function_definition : id_declarator declaration_list_opt compound_statement
         function_definition : declaration_specifiers id_declarator declaration_list_opt compound_statement
         statement   : labeled_statement
                        | expression_statement
                        | compound_statement
                        | selection_statement
                        | iteration_statement
                        | jump_statement
                        | pppragma_directive
                        | static_assert
         pragmacomp_or_statement     : pppragma_directive statement
                                        | statement
         decl_body : declaration_specifiers init_declarator_list_opt
                      | declaration_specifiers_no_type id_init_declarator_list_opt
         declaration : decl_body SEMI
         declaration_list    : declaration
                                | declaration_list declaration
         declaration_specifiers_no_type  : type_qualifier declaration_specifiers_no_type_opt
         declaration_specifiers_no_type  : storage_class_specifier declaration_specifiers_no_type_opt
         declaration_specifiers_no_type  : function_specifier declaration_specifiers_no_type_opt
         declaration_specifiers_no_type  : atomic_specifier declaration_specifiers_no_type_opt
         declaration_specifiers_no_type  : alignment_specifier declaration_specifiers_no_type_opt
         declaration_specifiers  : declaration_specifiers type_qualifier
         declaration_specifiers  : declaration_specifiers storage_class_specifier
         declaration_specifiers  : declaration_specifiers function_specifier
         declaration_specifiers  : declaration_specifiers type_specifier_no_typeid
         declaration_specifiers  : type_specifier
         declaration_specifiers  : declaration_specifiers_no_type type_specifier
         declaration_specifiers  : declaration_specifiers alignment_specifier
         storage_class_specifier : AUTO
                                    | REGISTER
                                    | STATIC
                                    | EXTERN
                                    | TYPEDEF
                                    | _THREAD_LOCAL
         function_specifier  : INLINE
                                | _NORETURN
         type_specifier_no_typeid  : VOID
                                      | _BOOL
                                      | CHAR
                                      | SHORT
                                      | INT
                                      | LONG
                                      | FLOAT
                                      | DOUBLE
                                      | _COMPLEX
                                      | SIGNED
                                      | UNSIGNED
                                      | __INT128
         type_specifier  : typedef_name
                            | enum_specifier
                            | struct_or_union_specifier
                            | type_specifier_no_typeid
                            | atomic_specifier
         atomic_specifier  : _ATOMIC LPAREN type_name RPAREN
         type_qualifier  : CONST
                            | RESTRICT
                            | VOLATILE
                            | _ATOMIC
         init_declarator_list    : init_declarator
                                    | init_declarator_list COMMA init_declarator
         init_declarator : declarator
                            | declarator EQUALS initializer
         id_init_declarator_list    : id_init_declarator
                                       | id_init_declarator_list COMMA init_declarator
         id_init_declarator : id_declarator
                               | id_declarator EQUALS initializer
         specifier_qualifier_list    : specifier_qualifier_list type_specifier_no_typeid
         specifier_qualifier_list    : specifier_qualifier_list type_qualifier
         specifier_qualifier_list  : type_specifier
         specifier_qualifier_list  : type_qualifier_list type_specifier
         specifier_qualifier_list  : alignment_specifier
         specifier_qualifier_list  : specifier_qualifier_list alignment_specifier
         struct_or_union_specifier   : struct_or_union ID
                                        | struct_or_union TYPEID
         struct_or_union_specifier : struct_or_union brace_open struct_declaration_list brace_close
                                      | struct_or_union brace_open brace_close
         struct_or_union_specifier   : struct_or_union ID brace_open struct_declaration_list brace_close
                                        | struct_or_union ID brace_open brace_close
                                        | struct_or_union TYPEID brace_open struct_declaration_list brace_close
                                        | struct_or_union TYPEID brace_open brace_close
         struct_or_union : STRUCT
                            | UNION
         struct_declaration_list     : struct_declaration
                                        | struct_declaration_list struct_declaration
         struct_declaration : specifier_qualifier_list struct_declarator_list_opt SEMI
         struct_declaration : SEMI
         struct_declaration : pppragma_directive
         struct_declarator_list  : struct_declarator
                                    | struct_declarator_list COMMA struct_declarator
         struct_declarator : declarator
         struct_declarator   : declarator COLON constant_expression
                                | COLON constant_expression
         enum_specifier  : ENUM ID
                            | ENUM TYPEID
         enum_specifier  : ENUM brace_open enumerator_list brace_close
         enum_specifier  : ENUM ID brace_open enumerator_list brace_close
                            | ENUM TYPEID brace_open enumerator_list brace_close
         enumerator_list : enumerator
                            | enumerator_list COMMA
                            | enumerator_list COMMA enumerator
         alignment_specifier  : _ALIGNAS LPAREN type_name RPAREN
                                 | _ALIGNAS LPAREN constant_expression RPAREN
         enumerator  : ID
                        | ID EQUALS constant_expression
         declarator  : id_declarator
                        | typeid_declarator
         pointer : TIMES type_qualifier_list_opt
                    | TIMES type_qualifier_list_opt pointer
         type_qualifier_list : type_qualifier
                                | type_qualifier_list type_qualifier
         parameter_type_list : parameter_list
                                | parameter_list COMMA ELLIPSIS
         parameter_list  : parameter_declaration
                            | parameter_list COMMA parameter_declaration
         parameter_declaration   : declaration_specifiers id_declarator
                                    | declaration_specifiers typeid_noparen_declarator
         parameter_declaration   : declaration_specifiers abstract_declarator_opt
         identifier_list : identifier
                            | identifier_list COMMA identifier
         initializer : assignment_expression
         initializer : brace_open initializer_list_opt brace_close
                        | brace_open initializer_list COMMA brace_close
         initializer_list    : designation_opt initializer
                                | initializer_list COMMA designation_opt initializer
         designation : designator_list EQUALS
         designator_list : designator
                            | designator_list designator
         designator  : LBRACKET constant_expression RBRACKET
                        | PERIOD identifier
         type_name   : specifier_qualifier_list abstract_declarator_opt
         abstract_declarator     : pointer
         abstract_declarator     : pointer direct_abstract_declarator
         abstract_declarator     : direct_abstract_declarator
         direct_abstract_declarator  : LPAREN abstract_declarator RPAREN  direct_abstract_declarator  : direct_abstract_declarator LBRACKET assignment_expression_opt RBRACKET
         direct_abstract_declarator  : LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET
         direct_abstract_declarator  : direct_abstract_declarator LBRACKET TIMES RBRACKET
         direct_abstract_declarator  : LBRACKET TIMES RBRACKET
         direct_abstract_declarator  : direct_abstract_declarator LPAREN parameter_type_list_opt RPAREN
         direct_abstract_declarator  : LPAREN parameter_type_list_opt RPAREN
         block_item  : declaration
                        | statement
         block_item_list : block_item
                            | block_item_list block_item
         compound_statement : brace_open block_item_list_opt brace_close  labeled_statement : ID COLON pragmacomp_or_statement  labeled_statement : CASE constant_expression COLON pragmacomp_or_statement  labeled_statement : DEFAULT COLON pragmacomp_or_statement  selection_statement : IF LPAREN expression RPAREN pragmacomp_or_statement  selection_statement : IF LPAREN expression RPAREN statement ELSE pragmacomp_or_statement  selection_statement : SWITCH LPAREN expression RPAREN pragmacomp_or_statement  iteration_statement : WHILE LPAREN expression RPAREN pragmacomp_or_statement  iteration_statement : DO pragmacomp_or_statement WHILE LPAREN expression RPAREN SEMI  iteration_statement : FOR LPAREN expression_opt SEMI expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement  iteration_statement : FOR LPAREN declaration expression_opt SEMI expression_opt RPAREN pragmacomp_or_statement  jump_statement  : GOTO ID SEMI  jump_statement  : BREAK SEMI  jump_statement  : CONTINUE SEMI  jump_statement  : RETURN expression SEMI
                            | RETURN SEMI
         expression_statement : expression_opt SEMI  expression  : assignment_expression
                        | expression COMMA assignment_expression
         assignment_expression : LPAREN compound_statement RPAREN  typedef_name : TYPEID  assignment_expression   : conditional_expression
                                    | unary_expression assignment_operator assignment_expression
         assignment_operator : EQUALS
                                | XOREQUAL
                                | TIMESEQUAL
                                | DIVEQUAL
                                | MODEQUAL
                                | PLUSEQUAL
                                | MINUSEQUAL
                                | LSHIFTEQUAL
                                | RSHIFTEQUAL
                                | ANDEQUAL
                                | OREQUAL
         constant_expression : conditional_expression  conditional_expression  : binary_expression
                                    | binary_expression CONDOP expression COLON conditional_expression
         binary_expression   : cast_expression
                                | binary_expression TIMES binary_expression
                                | binary_expression DIVIDE binary_expression
                                | binary_expression MOD binary_expression
                                | binary_expression PLUS binary_expression
                                | binary_expression MINUS binary_expression
                                | binary_expression RSHIFT binary_expression
                                | binary_expression LSHIFT binary_expression
                                | binary_expression LT binary_expression
                                | binary_expression LE binary_expression
                                | binary_expression GE binary_expression
                                | binary_expression GT binary_expression
                                | binary_expression EQ binary_expression
                                | binary_expression NE binary_expression
                                | binary_expression AND binary_expression
                                | binary_expression OR binary_expression
                                | binary_expression XOR binary_expression
                                | binary_expression LAND binary_expression
                                | binary_expression LOR binary_expression
         cast_expression : unary_expression  cast_expression : LPAREN type_name RPAREN cast_expression  unary_expression    : postfix_expression  unary_expression    : PLUSPLUS unary_expression
                                | MINUSMINUS unary_expression
                                | unary_operator cast_expression
         unary_expression    : SIZEOF unary_expression
                                | SIZEOF LPAREN type_name RPAREN
                                | _ALIGNOF LPAREN type_name RPAREN
         unary_operator  : AND
                            | TIMES
                            | PLUS
                            | MINUS
                            | NOT
                            | LNOT
         postfix_expression  : primary_expression  postfix_expression  : postfix_expression LBRACKET expression RBRACKET  postfix_expression  : postfix_expression LPAREN argument_expression_list RPAREN
                                | postfix_expression LPAREN RPAREN
         postfix_expression  : postfix_expression PERIOD ID
                                | postfix_expression PERIOD TYPEID
                                | postfix_expression ARROW ID
                                | postfix_expression ARROW TYPEID
         postfix_expression  : postfix_expression PLUSPLUS
                                | postfix_expression MINUSMINUS
         postfix_expression  : LPAREN type_name RPAREN brace_open initializer_list brace_close
                                | LPAREN type_name RPAREN brace_open initializer_list COMMA brace_close
         primary_expression  : identifier  primary_expression  : constant  primary_expression  : unified_string_literal
                                | unified_wstring_literal
         primary_expression  : LPAREN expression RPAREN  primary_expression  : OFFSETOF LPAREN type_name COMMA offsetof_member_designator RPAREN
         offsetof_member_designator : identifier
                                         | offsetof_member_designator PERIOD identifier
                                         | offsetof_member_designator LBRACKET expression RBRACKET
         argument_expression_list    : assignment_expression
                                        | argument_expression_list COMMA assignment_expression
         identifier  : ID  constant    : INT_CONST_DEC
                        | INT_CONST_OCT
                        | INT_CONST_HEX
                        | INT_CONST_BIN
                        | INT_CONST_CHAR
         constant    : FLOAT_CONST
                        | HEX_FLOAT_CONST
         constant    : CHAR_CONST
                        | WCHAR_CONST
                        | U8CHAR_CONST
                        | U16CHAR_CONST
                        | U32CHAR_CONST
         unified_string_literal  : STRING_LITERAL
                                    | unified_string_literal STRING_LITERAL
         unified_wstring_literal : WSTRING_LITERAL
                                    | U8STRING_LITERAL
                                    | U16STRING_LITERAL
                                    | U32STRING_LITERAL
                                    | unified_wstring_literal WSTRING_LITERAL
                                    | unified_wstring_literal U8STRING_LITERAL
                                    | unified_wstring_literal U16STRING_LITERAL
                                    | unified_wstring_literal U32STRING_LITERAL
         brace_open  :   LBRACE
         brace_close :   RBRACE
        empty : INT_CONST_CHAR)   '   :   =   L   U   a   g   i   j   t   u   w   |                                                                                                                                         	  
          !  "  #  )  *  ,  -  .  /  1  3  4  ?  I  L  P  R  S  `  a  b  e  f  g  h  i  j  k  l  m  n  o  p  q  u  w  y                                                                              	  
                    %  &  )  *  +  -  .  6  9  >  ?  @  A  B  C  )~}   Jr   r   r   r   r   r   r   r   r   Ir   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )*(r   r   r   r   r   r   r   r   r   	
r   r   r   r   r   r   r   r   r   r   'r   r   &r   r   r   r   r   :r   r   r   r   r   r   #r   %r   r   r   r   r   r   r   $r   r   r   r   r   r   r   r   r    "r   r   r   r   !r   VOID)          r               
                                                      !   "   $   &   r   (   *   +   ,   -   .   /   0   1   2   4   5   6   7   8   r   ;   <   r   >   ?   @   A   B   C   D   G   K   r   P   Q   R   r   V   W   Y   Z   [   ]   ^   _   `   r	   b   c   d   e   r   m   o   v   r   x   y   z   {   r               r         r                           r      r                r)   r*   r+                        rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rP   8  9  :  ;  <  =  >  H  rS   T  U  V  ^    rn   ro   rp   rq   rt   rv   rw   rx   ry                   r   r   r   r   r   r        r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   mr   nr   YZr   r  r   r   r   r   prr   r   r   r   r   r   r   ka`dr   r   r   r   r   r   r   r   r   RQr   qtr   sor   r   r   r   r   r   r   r   r   r   r   r   r   gr   ilcXr   r   r   r   r   r   r   r   r   r   r   r   r   hjbVWr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   LBRACKET)r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r	  #   r
  r   r  r  r  r  r  r  r  r  r  r   r  r  r#  r$  I   r   M   r&  r'  r(  r)  r1  r	   r2  r4  r5  r
   h   r   r   r6  r7     r                        r>        r?                                            rA  rG  r   r       rL  rM     r(                  rQ  rR      rT  rU    rV  rW  rX    6  rY  r[  r]  r^  r`  ra  rb  rc  X  Y  [  c  d  s  x                rf  rg  ri  rj  rk  rl            r~         r         rn  ro                       !  #  r   '  /  0  3  5  :  ;  <  )rp  r   rq  rr  rs  rt  ru  rv  rw  r{  r}  r~  r  r  r  r  r  r  r   r  r   r  r  r  r  r   r  r  r  r  r   r  r  r  r  r   r   r  r  r  r   r  r   r  r  r  r   Lr   r   r  r  r   r  r  r?   rA   r  r   r   Kr  rA   rg   r  r  r  r  rA   rA   r  r  rm   r8  r  r  r  r  r  r  r  rA   rA   r}   9rg   rm   r  r  r  r  r  r  rA   r}   6rg   8rg   +1-r  r  7r   /0.,rg   WCHAR_CONST)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r  r  r   r   r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   FLOAT_CONST)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r  r  r   r   r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   MINUS)r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r  r  r   r  r   r  r  r  r  r     r  r   r  r   r   r   r  r  r  r     r  r     r  r  r   r  r  r  r  r   r   r   r   r  r   r   r    r!   r"   r#   r$   r%   r&   r'      r(   r)   r  r*      r+      r  r  r  r  r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r  r  r?   r@       rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   r  rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri                                       r  r  r  r  r  r  rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r       r   r  r  r     r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r  r   r   r   r   r   r  r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"  r#  r$  r   r%  r   r&  r'  r(  r)  r*  r+  r   r,  r   r   r   r-  r.  r/  r0  r1  r2  r/   r3  r4  r   r5  r6  r7  r   r   r   r   r8  r   r   r   r   r   r   r   r   r   r   r  r   r   r;  r   r   r<  r=  r>  r?  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@  rA  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/   r/   r/   r/   r/   r/   r/   r/    r/   r/   r/   r/   r/   rF  rG  rH  rI  rJ  rK  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP  rQ  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r_  r   r   r`  r   r   r   r   r   rd  r   r   r   r   r   r   r   r   RPAREN)r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r	  r  r
  r   r  r  r  r  r  r  r  r  r  r   r  r  r#  r$  r  r   r  r&  r'  r(  r)  r1  r2  r4  r5  r
   r  r   r   k   r6  r7  r8  }   r  r=  r   r  r  r  r  r  r  r  r>  r  rk  r  r?  r  r  r  r  r     rl     r  r  rm  r  r  r  r  r  r  r  rA        rG  r   r    r  rL                 rM           r        rn     r  ro  rp  r  r  r  r  rQ  rR  r  r  r@   rq  rT        rr    rU  r    rV  rW  rX    r  &  rY  r[  r]  r^  r`  ra  rb  rc  W  r  r  Z  r  \  r  r  z  {  |  }  ~  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r      r  r           re    ry   rf  rg  ri  rj    rk  rl  r  r  rm        r  r      r  r  r  r    r  r	  r
  r          rn  ro      r  r      r  r  r  r  r  r  r  r  r  r  r   ,  r  r  r  r  r   7  r  r  r  =  )rp  r   rq  rr  rs  rt  ru  rv  rw  r{  r}  r~  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r   r  r  r  r  r  r  r  r  r   r!  r   r   rL  r  r  r   r  r   r"  r#  r$  r%  r&  r'  r(  r)  r  r*  r  r+  r  r,  r-  r.  r/  r0  rQ  r  rR  r1  r2  r3  r4  r5  r6  r  r7  r8  r   rY  r  r   r   r9  r  rS   ra  irb  Fr   iiHAr:  r  r  r  r;  r  r  r<  r=  r>  r?  r  r  r@  rA  r  r  r  r  rk   r  5r  4r   r  r  2r  r  r  r  r  r  r  r   Br  DrB  CrC  rD  r  r   r    r  r  r  r  r  r  rF  rG  rH  rI  rJ  r  rK  3iir	  r
  r   r   r  r  r  r  r   r  r  r  r   @iGErL  rM  r  r  rP  rQ  r  rR  rS  rT  r  r   r   r   r  r  r  r  rU  rV  r  rX  rY  rZ  r[  r\  r]  r^  r_  r`  r   8  ra  rb  rc  rd  r   r   re  rf  rg  r   STRUCT)r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r   r  r   r  r  r  r   r!  r"  r%  r   r)  r*  r,  r-  r.  r/  r0  r	   r3  r   r8  r   r9  r:  r;  r<  r   r=  r@  r   rB  r   rC  rD  rE  rF  rH  rI  rJ  r   r    rL  rN  rO  r)   r*   r+   rP  rQ  rR  rS  rV  rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rP   rY  rZ  r\  r_  rS   ra  rb  rc  rd  re  rn   ro   rp   rq   rt   rv   rw   rx   ry   rh  rk  rl  rm  r   r   r   r   r   r   rn  ro  r   r   r   r   r   r   r   r   r   )   r   r   rs  rt  ru  rw  rx  ry  rz  r|  r}  r  r  r  r   r   r  r  r   r  r  r  r  r  r   r   r   r   r  r   r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r   r  r   r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   LONG)r  r   rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   PLUS)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"  r#  r$  r   r%  r   r&  r'  r(  r)  r*  r  r+  r   r,  r   r   r   r-  r.  r/  r0  r  r1  r2  r3   r3  r4  r   r5  r6  r  r7  r   r   r   r   r8  r   r   r   r   r   r   r   r   r   r   r  r   r   r;  r   r  r   r  r<  r=  r>  r?  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@  rA  r   r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   r3   r3   r  r3   r3   r3   r  r3   r3   r  r  r3   r3   r3   r3   r3   r  rF  rG  rH  rI  rJ  rK  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   rP  rQ  r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r_  r   r   r`  r   r   r   r   r   rd  r   r   r   r   r   r   r   r   ELLIPSISrd  r  U32STRING_LITERAL)r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r  r   r  r   r   r   r  r  r   r  r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r  r  r  r  r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r'  r  r,  r  r   r   r  r3  r   r5  r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r<  r=  r>  r?  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   GT)Ir   r  r  r  r  r  r  r  r  rk  r  r  r  r  r  r  rl  r  r  rm  r  r  r  r  r  r  r  r   rn  r  ro  rp  r  r  r  r  r  r  rq  rr  r  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r4   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r4   r  r  r  r4   r  r  r  r4   r  r  r  r4   r4   r4   r4   r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  GOTO)4r   r	   r   r   r   r   rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rO   rP   rS   rn   ro   rq   rr   rt   rv   rw   rx   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )4r   r   r   r     r   r   r   r   r   r   r  r   r   r   r   r   r  r   r   r   r   r   r  r   r   r  r   r   r  r   r   r   r  r   r   r   r  r   r  r  r   r   r   r   r  r  r   r   r  r   r   ENUM)    r   r   rs  rt  ru  rw  rx  ry  rz  r|  r}  r  r  r  r   r   r  r  r   r  r  r  r  r  r   r   r   r   r  r   r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r   r  r   r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   PERIOD):r	   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r(   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r~   r  r  r  r   r  r  r  r  r   r  r  r  r  ):r   r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6    r7  r8  r   t  r;  r<  r=  r>  r?  r@  rA  r8  rE  r
  rF  rG  rH  rI  rJ  rK  rN  r
  rO  rP  rQ  r
  rW  $  rX  r_  r
  r`  rc  rd  rg  GE)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r8   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r8   r  r  r  r8   r  r  r  r8   r  r  r  r8   r8   r8   r8   r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  INT_CONST_DEC)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r  r  r   r   r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   ARROW),r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ),r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6    r7  r8  r   r;  r<  r=  r>  r?  r@  rA  r8  rF  rG  rH  rI  rJ  rK  rP  rQ  r_  r`  rd  _STATIC_ASSERT)Ar   r   r   r   r   r  r  r  r  r  r   r	   r   r<  r   rB  r   r   rO  rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rO   rP   rS   rn   ro   rq   rr   rt   rv   rw   rx   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )A)   rx  ry  rz  r|  r  r  r  r  r  r   r   r   r  r   r  r  r   r  r   r   r   r   r   r  r   r   r   r   r   r  r   r   r   r   r   r  r   r   r  r   r   r  r   r   r   r  r   r   r   r  r   r  r  r   r   r   r   r  r  r   r   r  r   r   CHAR)r  r   rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   HEX_FLOAT_CONST)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r  r  r   r   r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   DOUBLE)r  r   rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   
MINUSEQUAL)5r   r  r  r  r  r  r  r  r  rk  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rn  r  ro  rp  r  r  r  r  r  r  rq  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )5r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r  r7  r8  r   r[   r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  INT_CONST_OCT)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r  r  r   r   r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   
TIMESEQUAL)5r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r  r7  r8  r   rd   r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  OR)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r=   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r=   r  r  r  r  r  r  r  r  r  r  r  r=   r  r  r  r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  SHORT)r   r   rp  r   r   rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r   r~  r  r  r  r  r   r  r  r  r  r  r   r   r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r   r  r   r  r   r  r   r  r  r  r  r   r   r  r  r  r   r  r  r   r  r   r   r  r   r  r   r  r   r  r  r   r  r  r   r   r  r  r  r  r   r   r  r  r   r   r   r  r   r  r   r   r   r  r  r  r  r   r   r   r  r   r   r  r   r   r   r   r  r  r   r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r   r  r  r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   RETURN)4r   r   r   r   rF   r   r   r   r   r   r   rF   r   r   r   r   r   rF   r   r   r   r   r   rF   r   r   rF   r   r   rF   r   r   r   rF   r   r   r   rF   r   rF   rF   r   r   r   r   rF   rF   r   r   rF   r   r   RSHIFTEQUAL)5r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r  r7  r8  r   re   r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  _ALIGNAS)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r   r#  r$  r%  r   r&  r'  r(  r   r)  r*  r+  r,  r.  r0  r1  r	   r2  r3  r4  r5  r6  r7  r8  r   r<  r   r=  r>  r?  r   rA  rB  r   rC  rD  rE  rF  rG  rH  rI  rJ  r   rK  rL  rM  rO  r)   r*   r+   rP  rQ  rR  rS  rT  rU  rV  rW  rX  rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rP   rY  rZ  r[  r\  r]  r^  r_  r`  rS   ra  rb  rc  rd  re  rn   ro   rp   rq   rt   rv   rw   rx   ry   rf  rg  rh  ri  rj  rk  rl  rm  r   r   r   r   r   r   rn  ro  r   r   r   r   r   r   r   r   r   )   r  rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r   r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   RESTRICT)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r  r
  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r   r#  r$  r%  r   r&  r'  r(  r   r)  r*  r+  r,  r.  r0  r1  r	   r2  r3  r4  r5  r
   r   r6  r7  r   r8  r   r<  r   r   r=  r>  r?  r@  r   rA  rB  r   rC  rD  rE  rF  rG  rH  rI  rJ  r   rK  r    rL  r#   r$   rM  r&   r'   rO  r)   r*   r+   rP  rQ  rR  rS  rT  rU  rV  rW  rX  rA   rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rP   rY  rZ  r[  r\  r]  r^  r_  r`  rS   ra  rb  rc  rd  re  rn   ro   rp   rq   rt   rv   rw   rx   ry   rf  rg  rh  ri  rj  rk  rl  r}   rm  r   r   r   r   r   r   rn  ro  r   r   r   r   r   r   r   r   r   r   r   )r   r   rp  r   r   rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r   r~  r  r  r  r   r   r  r  r  r   r  r  r   r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r   r  r   r  r   r   r  r  r   r   r  r  r  r   r  r   r   r  r   r   r  r   r  r   r  r  r   r   r  r  r   r   r   r  r   r   r   r  r  r   r   r   r  r   r  r   r   r   r  r  r  r  r   r   r   r  r   r   r   r   r   r  r   r   r   r   r  r  r   r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r   r  r  r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r   r   STATIC)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r   r#  r$  r%  r   r&  r'  r(  r)  r*  r+  r,  r.  r1  r	   r2  r4  r5  r   r6  r7  r   r8  r   r<  r   r   r=  rB  r   rC  rG  r   r    rL  r#   rM  r&   rO  rQ  rR  rV  rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rP   rY  r[  r]  r^  r`  rS   ra  rb  rc  rd  re  rn   ro   rp   rq   rt   rv   rw   rx   ry   rf  rg  ri  rj  rk  rl  r}   rm  r   r   r   r   r   r   rn  ro  r   r   r   r   r   r   r   r   r   r   )r   r   rp  r   r   rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r   r~  r  r  r  r   r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r   r  r   r  r   r   r  r  r   r   r  r  r  r  r   r   r  r   r  r   r  r  r  r   r  r  r$   r   r   r  r   r'   r   r  r   r  r  r   r   r  rU   r   rX   r  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r   SIZEOF)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   UNSIGNED)r  r   rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   UNION)   r   r   rs  rt  ru  rw  rx  ry  rz  r|  r}  r#  r  r  r   r   r  r  r   r#  r  r  r  r  r   r   r   r   r#  r   r  r   r  r   r  r  r#  r#  r  r   r  r#  r#  r  r#  r   r#  r   r#  r   r  r  r  r  r   r#  r#  r#  r  r#  r  r#  r#  r#  r  r  r  r   r   r  r#  r  r#  r#  r#  r#  r  r  r#  r#  r   r   r   r   r   r#  r   r   r   r   r   r   r  r#  r#  r  r   r  r  r#  r#  r#  r   r   r#  r   r   r   r   r   r   r  r  r  r#  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   COLON)r   r   r   r   r   r  r  r  r	  r
  r   r  r  r  r  r  r  r  r  r  r   r  r  J   r   r  r)  r1  r2  r4  r5  r7  r  r   r  r  r  r  r  r  r  r>  r  rk  r  r?  r  r  r  r  r  rl  r  r  rm  r  r  r  r  r  r  r  r     rG  r   rK  rL  r  rn  r  r  ro  rp  r  r  r  r  rQ  rR  r  r  rq  rT  r  rr  rU  rW  rX  '  r  rY  r[  r]  r^  D  r`  ra  rb  r  r  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r    r  r  r  r  r  r  r  r    rf  rg    ri  rj  rk  rl  r  r  r  r  r  r  r  r  r  r  rn  ro  r  r  r  r  r  r  )rp  r   rq  rr  rv  r~  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r  r  Mr   r   r  r  r  r  r  r  r  r"  r#  r$  r%  r&  r'  r(  r)  r  r*  r  r+  r  r,  r-  r.  r/  r0  r  r1  r2  r  r3  r4  r5  r6  r  r7  r8  r  Nr  r   rQ   r  r:  r  r  r;  r  r  r<  r=  r>  r?  r  r  r@  rA  r  r  r  r  r  r  r  rr   rz   r  r  r  r  r|   r  r  r  rC  rD  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  rF  rG  rH  rI  rJ  rK  r   r  r  rQ   r  r  r  r  rL  rM  r  r  r  r  rP  rQ  r  r  r  r  rU  rV  r  r_  r`  rd  z$end)r   	   r   r   r   r   r  r  r  r  9   r  r   r   r<  r   rB  r   rO  rS   ry   r   )r   r   rx  ry  rz  r|  r  r  r  r  iir   r   r  r   r  r   r  r   r   r   WSTRING_LITERAL)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r'  r  r,  r  r   r   r  r3  r   r5  r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r<  r=  r>  r?  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   DIVIDE)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r6   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r6   r6   r6   r6   r6   r6   r6   r6   r6   r6   r  r  r6   r6   r6   r6   r6   r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  FOR)4r   r   r   r   $  r   r   r   r   r   r   r3  r   r   r   r   r   r3  r   r   r   r   r   r3  r   r   r3  r   r   r3  r   r   r   r3  r   r   r   r3  r   r3  r3  r   r   r   r   r3  r3  r   r   r3  r   r   PLUSPLUS)r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r  r  r   r  r   r  r  r  r  r  r  r   r  r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r   r   r   r   r  r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r  r*   r+   r  r  r  r  r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r  r  r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   r  rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   r  r  r  r  r  r  rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r  r   r   r   r   r   r  r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"  r#  r$  r   r%  r   r&  r'  r(  r)  r*  r+  r   r,  r   r   r   r-  r.  r/  r0  r1  r2  r3  r4  r   r5  r6  r  r7  r   r   r   r   r8  r   r   r   r   r   r   r   r   r   r   r   r   r;  r   r   r<  r=  r>  r?  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@  rA  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF  rG  rH  rI  rJ  rK  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP  rQ  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r_  r   r   r`  r   r   r   r   r   rd  r   r   r   r   r   r   r   r   EQUALS)Tr  r  r  r%  r%  r  N   r)  n   r  r   r  r  r  r  r  r  r  r  rk  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r      rL  r  rn  r  ro  rp  r  r  r  r  r  r  rq  rr  r  ra  rb  r  r  r  r  r  r  r  r  r  r  rk  rl  r  r  r  r  r  r  r  r  r  rn  ro  r  r  r  r  r  r  )Tr  r  r  r,  r-  r   r   r  r!   r  r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r  r7  r8  r-  r   rR   r  r:  r]   r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r  rC  rD  rE  r   rF  rG  rH  rI  rJ  rK  r  r  rL  rM  rN  rO  r  r  rP  rQ  r  r  r  rU  rV  rW  r_  r`  rd  ELSE)"r   r   r   rB   rC   rD   rE   rG   rJ   rM   rP   rS   rn   ro   rq   rv   rw   rx   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )"r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ANDEQUAL)5r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r  r7  r8  r   rb   r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  EQ)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r:   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r:   r  r  r  r  r  r  r  r:   r  r  r  r:   r  r:   r:   r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  AND)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"  r#  r$  r   r%  r   r&  r'  r(  r)  r*  r  r+  r   r,  r   r   r   r-  r.  r/  r0  r  r1  r2  r;   r3  r4  r   r5  r6  r  r7  r   r   r   r   r8  r   r   r   r   r   r   r   r   r   r   r  r   r   r;  r   r  r   r  r<  r=  r>  r?  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@  rA  r   r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r;   r  r  r  r  r  r  r  r;   r  r  r  r;   r  r  r;   r  rF  rG  rH  rI  rJ  rK  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   rP  rQ  r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r_  r   r   r`  r   r   r   r   r   rd  r   r   r   r   r   r   r   r   TYPEID)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r#  r  r     r  r  r	  r  r
  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  r   r!  r"  r#  E   r$  H   r%  r   r&  r'  r(  r   r)  r*  r+  r,  r-  r.  r/  r0  r1  r	   r2  r3  r4  r5  r
   r  r   r   r6  r7  r8  r   r9  r:  r;  r<  r   ~   r=  r>  r?  r@  r   rB  r   rC  rD  rE  rF  rG  rH  rI  rJ  r   rK  r    r  rL     rM  rN  rO  r)   r*   r+   rP  rQ  rR  r  r	  rS  rT  rU  rV  rW  rX  rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rP   rY  rZ  r[  r\  r]  r^  r_  r`  rS   ra  rb  rc  r  rd  re  rn   ro   rp   rq   rt   rv   rw   rx   ry   rf  rg  r+  rh  ri  rj  rk  rl  rm  r   r   r   r   r   r   rn  ro  r   r   r   r   r   r   r   r   r   )r  r   rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  fr  r  r  er   r  r1  r4  r  r  r   r  r  r   r  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r!  r   r   r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r9  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   LBRACE)_r   r  r#  r>  r  r  r  r   r%  r)  X   r,  \   r.  r1  r	   r2  r4  r5  r   r      r   r   rC  r   rL  r!   r(   r)   rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rO   rP   rS   ra  rb  rf   rh   ri   rk   rn   ro   rq   rr   rt   rv   rw   rx   ry   rz   rk  rl  r~   r   r   r  r  r   r   r   r   r   r   r   r   rn  ro  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )_r   rC  rD  r	   r	   r  r  r   r   r  ir  r	   ir	   r   r	   r	   r	   r   r   r	   r	   r	   r  r   r  r	   r   r	   r   r   r   r   r   r	   r   r   r   r   r   r	   r   r   r  r  r   r	   r   r	   r   r   r   r	   r   r   r	   r   r   r	   r  r  r   r   r	   r	   r	   r   r   r   r   r	   r   r   r   r  r  r	   r   r	   r   r	   r	   r   r   r   r   r   r	   r	   r   r   r	   r   r   PPHASH)r   r   r   r   r   r  r  r  r  r  r   r   r<  r   rB  r   rO  rS   ry   r   )r  rx  ry  rz  r|  r  r  r  r  r  r   r   r  r   r  r   r  r   r   r   INT)r  r   rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   SIGNED)r  r   rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   CONTINUE)4r   r   r   r   %  r   r   r   r   r   r   rM  r   r   r   r   r   rM  r   r   r   r   r   rM  r   r   rM  r   r   rM  r   r   r   rM  r   r   r   rM  r   rM  rM  r   r   r   r   rM  rM  r   r   rM  r   r   NOT)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   OREQUAL)5r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r  r7  r8  r   rc   r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  MOD)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r>   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r  r  r>   r>   r>   r>   r>   r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  RSHIFT)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r,   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r,   r  r  r,   r,   r,   r  r,   r,   r  r  r,   r,   r,   r,   r,   r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  DEFAULT)4r   r   r   r   r'  r   r   r   r   r   r   r'  r   r   r   r   r   r'  r   r   r   r   r   r'  r   r   r'  r   r   r'  r   r   r   r'  r   r   r   r'  r   r'  r'  r   r   r   r   r'  r'  r   r   r'  r   r   	_NORETURN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r   r#  r$  r%  r   r&  r'  r(  r)  r*  r+  r,  r.  r1  r	   r2  r4  r5  r6  r7  r8  r   r<  r   r=  rB  r   rC  rG  r   rL  rM  rO  rQ  rR  rV  rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rP   rY  r[  r]  r^  r`  rS   ra  rb  rc  rd  re  rn   ro   rp   rq   rt   rv   rw   rx   ry   rf  rg  ri  rj  rk  rl  rm  r   r   r   r   r   r   rn  ro  r   r   r   r   r   r   r   r   r   )r   r   rp  r   r   rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r   r~  r  r  r  r   r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r   r  r   r  r   r   r  r  r   r   r  r  r  r  r   r   r  r   r  r   r  r  r  r  r  r   r   r  r   r   r  r   r  r  r   r  r   r  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   __INT128)r  r   rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   WHILE)5r   r	   r   r   r   r   rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rO   rP   rS   rn   ro   rq   rr   rt   rv     rw   rx   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )5r   r   r   r   (  r   r   r   r   r   r   rW  r   r   r   r   r   rW  r   r   r   r   r   rW  r   r     rW  r   r   rW  r   r   r   rW  r   r   r   rW  r   rW  rW  r   r   r   r   rW  rW  r   r   rW  r   r   U8CHAR_CONST)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r  r  r   r   r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   _ALIGNOF)r   r   r   r   r      r   r   r   r   r[  r   r   r   r   r[  r   r   r[  r[  r   r   r   r[  r   r[  r[  r[  r   r   r[  r[  r   r   r[  r   r   r   r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r[  r   r   r   r   r   r[  r   r[  r[  r   r   r   r   r   r[  r   r[  r[  r   r   r[  r[  r   r[  r[  r   r   r   r   r   r   r   r[  r   r   r   r   r   r[  r[  r   r[  r[  r[  r[  r   r   r[  r   r[  r[  r   r[  r   r[  r   r   r[  r[  r[  r   r   r   r[  r[  r[  r   r   r   r   r[  r   r[  r   r   r   r[  r   r   r[  r   r[  r[  r   r[  r[  r[  r   r[  r[  r[  r   r[  r   r   r   r   r[  r[  r[  r   r   r[  r   r   EXTERN)r   r   rp  r   r   rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r   r~  r  r  r  r   r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r   r  r   r  r   r   r  r  r   r   r  r  r  r  r   r   r  r   r  r   r  r  r  r  r  r   r   r  r   r   r  r   r  r  r   r  r   r  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   CASE)4r   r   r   r   rH   r   r   r   r   r   r   rH   r   r   r   r   r   rH   r   r   r   r   r   rH   r   r   rH   r   r   rH   r   r   r   rH   r   r   r   rH   r   rH   rH   r   r   r   r   rH   rH   r   r   rH   r   r   LAND)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r9   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r9   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  REGISTER)r  r  rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r   r  r  r  r   r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   MODEQUAL)5r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r  r7  r8  r   r\   r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  NE)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r1   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r1   r  r  r  r  r  r  r  r1   r  r  r  r1   r  r1   r1   r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  SWITCH)4r   r   r   r   +  r   r   r   r   r   r   rc  r   r   r   r   r   rc  r   r   r   r   r   rc  r   r   rc  r   r   rc  r   r   r   rc  r   r   r   rc  r   rc  rc  r   r   r   r   rc  rc  r   r   rc  r   r   INT_CONST_HEX)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r  r  r   r   r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   _COMPLEX)r  r   rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   PPPRAGMASTRr   r   	PLUSEQUAL)5r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r  r7  r8  r   r_   r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  U32CHAR_CONST)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r  r  r   r   r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   CONDOP)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r<   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  U8STRING_LITERAL)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r'  r  r,  r  r   r   r  r3  r   r5  r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r<  r=  r>  r?  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   BREAK)4r   r   r   r   0  r   r   r   r   r   r   rl  r   r   r   r   r   rl  r   r   r   r   r   rl  r   r   rl  r   r   rl  r   r   r   rl  r   r   r   rl  r   rl  rl  r   r   r   r   rl  rl  r   r   rl  r   r   VOLATILE)r   r   rp  r   r   rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r   r~  r  r  r  r   r   r  r  r  r   r  r  r   r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r   r  r   r  r   r   r  r  r   r   r  r  r  r   r  r   r   r  r   r   r  r   r  r   r  r  r   r   r  r  r   r   r   r  r   r   r   r  r  r   r   r   r  r   r  r   r   r   r  r  r  r  r   r   r   r  r   r   r   r   r   r  r   r   r   r   r  r  r   r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r   r  r  r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r   r   PPPRAGMA)Lr   r   r   r   r   r  r  r  r  r  r   r	   r3  r   r<  r   rB  r   rD  rE  rF  rH  rI  rJ  r   rO  rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rO   rP   rZ  r\  r_  rS   rn   ro   rq   rr   rt   rv   rw   rx   ry   rz   rh  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )Lr   rx  ry  rz  r|  r  r  r  r  r   r   r   r   r   r  r   r  r   r   r   r   r  r  r  r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   INLINE)r  r  rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r   r  r  r  r   r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   INT_CONST_BIN)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r  r  r   r   r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   DO)4r   r   r   r   rO   r   r   r   r   r   r   rO   r   r   r   r   r   rO   r   r   r   r   r   rO   r   r   rO   r   r   rO   r   r   r   rO   r   r   r   rO   r   rO   rO   r   r   r   r   rO   rO   r   r   rO   r   r   LNOT)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   CONST)r   r   rp  r   r   rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r   r~  r  r  r  r   r   r  r  r  r   r  r  r   r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r   r  r   r  r   r   r  r  r   r   r  r  r  r   r  r   r   r  r   r   r  r   r  r   r  r  r   r   r  r  r   r   r   r  r   r   r   r  r  r   r   r   r  r   r  r   r   r   r  r  r  r  r   r   r   r  r   r   r   r   r   r  r   r   r   r   r  r  r   r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r   r  r  r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r   r   LSHIFT)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r.   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r.   r  r  r.   r.   r.   r  r.   r.   r  r  r.   r.   r.   r.   r.   r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  LOR)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r-   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  
CHAR_CONST)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r  r  r   r   r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   U16STRING_LITERAL)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r'  r  r,  r  r   r   r  r3  r   r5  r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r<  r=  r>  r?  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   RBRACE)r   r	   r3  r   r   r   r  r  r  r  r  r  r  r  rk  r  r  r  r  r  r  rl  r  r  rm  r  r  r  r  r  r  r  r  r   rD  rE  rF  rH  rI  rJ  r         r8  rn  r  r(      r  ro  rp  r  r  r  r  r  r  rq  rr  rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   2  rP   5  rZ  r\  r_  E  F  G  rS   r  v  ri   rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  rn   ro   rq   rt   rv   rw   rx   ry   rh      r    r~     r  r  r  r  r  r  r   r   r   r   r   r     r    r   "  r  r   r  r   r   r   r   r  r   r   r   r   )r   r   r   r   r   r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r  r3  r4  r5  r6  r  r7  r8  r  r   r   r   r   r  r  r  r   Ur   Pr  r  r   ?r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r   r   r   r   r   ir   r   r   r   r   r   r   r   r   r  r   r   Tr   r   iir  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rF  rG  rH  rI  rJ  rK  r   r   r   r   r   r   r   r   r  SOr  >r   <r  r  r  rP  rQ  r  r   r   r   r   r   r   =r  r   r   ;r_  r   r`  r   r   r   r   rd  r   r   r   r   _BOOL)r	  r   rp  r   r	  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r	  r~  r  r  r  r  r   r  r  r  r  r  r   r	  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r	  r  r   r  r   r  r   r  r  r  r  r	  r   r  r  r  r	  r  r  r	  r  r	  r	  r  r	  r  r   r  r	  r  r  r   r  r  r	  r   r  r  r  r  r   r	  r  r  r	  r	  r	  r  r	  r  r	  r	  r	  r  r  r  r  r   r	  r   r  r	  r	  r  r	  r	  r	  r	  r  r  r	  r  r  r	  r  r  r   r   r   r   r   r	  r   r   r   r   r   r   r  r	  r  r	  r  r  r  r  r   r  r  r	  r	  r	  r   r   r	  r   r   r   r   r   r   r  r  r  r  r  r  r  r	  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   LE)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r0   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r0   r  r  r  r0   r  r  r  r0   r  r  r  r0   r0   r0   r0   r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  SEMI(,  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r   r  r  r  r  r  r  r  r  r  r  3   r  r  r  r  r  r   r  r  r   r  r  r  r   r!  r"  r#  F   r$  r  r%  r%  r   r  r6  O   r&  r'  r(  S   T   r)  r*  r+  r-  r/  r1  r	   r2  r3  r4  r5  l   r6  r7  r7  q   r   s   r   r9  r:  r;  r<  r   r  r   r  r  r  r  r  r  r  r>  r  rk  r  r?  r  r  r  r  r  rl  r  r  rm  r  r  r  r  r  r  r  r  r&  rB  r   rD  rE  rF  rG  rH  rI  rJ  r   rK  rL  r     rO  rn  r     r{  r  ro  rp  r  r  r  r  rQ  rR  r  r  rq  rT  r  rr  rU  rW  rX  rB   rC   rD      rE   rF   rG   rM  r  rI   rJ   rK   rL   rM   rl  rN   r|  rO   rP   r  rY  rZ  r[  r\  r]  r^  r_  @  A  B  C  r(  r`  J  K  rS   ra  rb  r  r  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r    rn   ro     rp   rq   rr   rt   r  rv   rw   rx   ry   rz   rf  rg    rh  ri  rj  rk  rl  r  r  r  r  r  r  r  r  r  r  r  r   r     r   r   r   r   r       r   rn  ro  r  r  r  r  r     r   r   r   r   r  r  (  r   r   r   r   r  r  r   r   r   r   r   r   r   (,  r   r   rp  r   r   rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r   r  r  r  r  r  r   r   r  r  r  r  r  r  r  r  r  r   r   r   r  r   r  r   r   r  r   r  r   r  r   r  r  r  ir  r  r,  r-  r   r   zir  r  r  i|r  r  r   r   r  r  r   r  rH  r  r  xr  vr  iiir   r  r  r  r  r   r  r"  r#  r$  r%  r&  r'  r(  r)  r  r*  r  r+  r  r,  r-  r.  r/  r0  r  r1  r2  r  r3  r4  r5  r6  r  r7  r8  r  r-  r  r   rH  rH  rH  r  r  r  r  r   r   r  r:  {r  r  r  yr  r;  r  r  r<  r=  r>  r?  r  r  r@  rA  r  r  r  r  r  r  r  r   r   r   rn   r   ro   r   rq   r  r   r   r   r   r   rv   r   r  r   r   r8  r  rH  r  rH  r  r  r  iirh  _]r  uwr   r  r  rC  rD  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rF  rG  rH  rI  rJ  rK  r   r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  [r  r  r  r  r  rL  rM  r  r  r  r  r  rP  rQ  r  r  r   r   r   r   r   r   r   r   ^\r   r  r  rU  rV  r  r  r   r   r   r   r   r   r_  r`  r   r   r   r   r   rd  r   r   r   r   r   r   r   r   _THREAD_LOCAL)r   r   rp  r   r   rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r   r~  r  r  r  r   r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r   r  r   r  r   r   r  r  r   r   r  r  r  r  r   r   r  r   r  r   r  r  r  r  r  r   r   r  r   r   r  r   r  r  r   r  r   r  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   LT)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r2   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r2   r  r  r  r2   r  r  r  r2   r  r  r  r2   r2   r2   r2   r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  COMMA)r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r	  r  r
  r   r  r  r  r  r  r  r  r  r  r   r  r  r#  r  r$  r  r%  r%  r   r  r6  r&  r'  r(  r  r)  r1  r2  r4  r5  r
   r  r   r   r  r6  r7  r7  r  r  r   r  r  r  r  r  r  r  r>  r  rk  r  r?  r  r  r  r  r  rl  r  r  rm  r  r  r  r  r  r  r  rA  r  r&  rG  r   ry  rz  r8  r    r  rL  r  r  rM  r  r  r  r  r  rn  r  r  r{  r  ro  rp  r  r  r  r  rQ  rR  r  r  rq  rT  r  r  rr  r  rU  r  r  rW  rX  r  r  r  r  rY  r[  r]  r^  r  r  r(  r~  r  r  r`  r  r  ra  rb  r  r  r  r  r  r  r  r  r  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r)  r  r  r  r  r  r    r  r  r    r  r   r  rf  rg  r  ri  rj  r  r  rk  rl  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  rn  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  4  r  r  r  )rp  r   rq  rr  rs  rt  ru  rv  rw  r{  r}  r~  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r   r  r  r  rA  r  r  r,  r-  r   r   r  r  r  r  r  r  r  r  r  r  r   r!  r   r   r  r  r  r  rB  r  r"  r#  r$  r%  r&  r'  r(  r)  r  r*  r  r+  r  r,  r-  r.  r/  r0  r  r1  r2  r  r3  r4  r5  r6  r  r7  r8  r   r  r-  r  r   r  r  r  r   r9  r  M  r  r   ]  rd  r  r:  r  r  r  r  r  r;  r  r  r<  r=  r>  r?  r  r  r@  rA  r  r  rj   r  r  r  r  r  r  r  r  r  r  rj   r8  r  r  r  r  r+  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rB  r  rC  rD  r~   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rj   r  r  rF  rG  rH  rI  rj   rJ  r  r     rK  r  rj   r  r  r  r  r  r  r  r  r  r  r  r  rL  rM  r  r  r  r  r  r  rP  rQ  r  r  rR  rS  rT  rj   rj   rj   r  r  r  r  rU  rV  r  r  r  r   rY  rZ  r[  r\  r]  r^  r  r_  r`  rj   ra  rb  rj   rd  re  rf  U16CHAR_CONST)r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r   r  r  r   r   r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   OFFSETOF)r   r   r   r   r      r   r   r   r   r  r   r   r   r   r  r   r   r  r  r   r   r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   _ATOMIC)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r  r
  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  r   r!  r"  r#  r$  r%  r   r&  r'  r(  r   r)  r*  r+  r,  r-  r.  r/  r0  r1  r	   r2  r3  r4  r5  r
   r   r6  r7  r   r8  r   r9  r:  r;  r<  r   r   r=  r>  r?  r@  r   rA  rB  r   rC  rD  rE  rF  rG  rH  rI  rJ  r   rK  r    rL  r#   r$   rM  rN  r&   r'   rO  r)   r*   r+   rP  rQ  rR  rS  rT  rU  rV  rW  rX  rA   rB   rC   rD   rE   rG   rI   rJ   rK   rL   rM   rN   rP   rY  rZ  r[  r\  r]  r^  r_  r`  rS   ra  rb  rc  rd  re  rn   ro   rp   rq   rt   rv   rw   rx   ry   rf  rg  rh  ri  rj  rk  rl  r}   rm  r   r   r   r   r   r   rn  ro  r   r   r   r   r   r   r   r   r   r   r   )r  r   rp  r   r   rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r   r~  r  r  r  r   r   r  r  r  r   r  r  r   p   r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r   r   r  r  r  r  r  r   r   r  r  r   r  r  r  r   r  r  r  r  r   r   r  r  r   r  r   r  r  r  r  r   r   r  r  r  r   r  r   r  r   r  r  r  r  r  r  r  r  r   r   r   r  r   r   r   r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r   r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r   r   TYPEDEF)r   r   rp  r   r   rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r   r~  r  r  r  r   r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r   r  r   r  r   r   r  r  r   r   r  r  r  r  r   r   r  r   r  r   r  r  r  r  r  r   r   r  r   r   r  r   r  r  r   r  r   r  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   XOR)Ir"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r5   r3  r4  r5  r6  r  r7  r8  r   r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  r  r5   r  r  r  r  r  r  r  r  r  r  r  r5   r  r  r5   r  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  AUTO)r  r  rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r   r  r  r  r   r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   )5r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r  r7  r8  r   rZ   r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  (S  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r  r
  %   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  r   r!  r"  r#  r?  r$  r   r&  r'  r(  r   r*  r+  r-  r/  r1  r	   r2  r4  r5  r
   r  r   r   r6  r7  r   r   r   r9  r:  r;  r<  r   rA  r   r   r   r  r  r   r  r   r  r  r  r  r>  r  rk  r  r   r?  r  r   r   r   r  r  r  r  rl  r  r  rm  r  r  r   r  r  r  r  r   r   r   r   r  rA  rB  r   rG  r   rK  r    r!   rB  r"   r#   r$   rM  r%   r&   r'   rO  rn  r(   r)   r  r*   ro  r+   rp  r  r  r  r  rQ  rR  r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r  r  r?   r@   rq  rT  rr  rU  rV  rW  rX  rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   r  rY  r[  r]  r^  rQ   r`  rR   rS   rT   rU   rV   rc  rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   rf  rg  r+  r|   ri  rj  r}   r~   r   r   r  r  r   r  r  r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r  r   r   r   r   r   r  r   r   r   r   r   r   r   r   (S  r  r   rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r   r  r  r  r   r  r  r  r   r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r  r   r  r  r  r   r  r  r  r  r  r   r  r  r  r   r  r   r   r  r  r   r   r   r  r  r  r  r   r  r   r   r"  r#  r$  r   r%  r   r&  r'  r(  r)  r  r*  r  r+  r   r  r,  r   r   r   r-  r.  r/  r0  r  r1  r2  r7   r3  r4  r   r5  r6  r  r7  r   r   r   r   r8  r  r  r   r  r   r  r   r   r  rT   r   r   r  rW   r   r   r  r  r   r   r;  r   r  r   r  r<  r=  r>  r?  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@  rA  r   r   r  r  r  r  r  r  r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8  r  r  r  r  r   r  r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r7   r7   r7   r7   r7   r7   r7   r7   r7   r  r  r7   r7   r7   r7   r7   r  rF  rG  rH  rI  rJ  rK  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r  r  r   r   r   r   r  r  r   rP  rQ  r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r_  r   r   r`  r   r   r   r   r   rd  r   r   r   r   r   r   r   r   (l  r   r   r   r   r   r   r   r   r  r   r   r   r   r      r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r  r
  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  r   r!  r"  r#  r?  r$  r@  r  r   r  r&  r'  r(  r   r)  r*  r+  r-  r/  r1  r	   r2  r4  r5  r
   r  r   r   r6  r7  r  r   r   r   r9  r:  r;  r<  r   rA  r  r   r   r   r  r  r   r  r   r  r  r  r  r>  r  r  r   r?  r  r   r   r   r  r  r  r[  r  r  r  r  r  r   r  r  r  r  r  r   r   r   r   r  rA  rB  r   rG  r   rK  r    r  rL  r!   rB  r"   r#   r$   rM  r  r%   r&   r'   rO  r(   r)   r  r*   r+   r  r  r  r  rQ  rR  r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r  r  r?   r@   rT  rU  r  rV  rW  rX  rA   r  rB   rC   rD   rE   rF   rG   r3  rW  rH   rI   rc  rJ   rK   rL   rM   rN   rO   rP   r  7  rY  r[  r]  r^  rQ   r`  rR   rS   rT   rU   rV   ra  rb  rc  r  r  r  rW   rX   rY   r  r  rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   r  r  r  r  r  r  rj   rk   r   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   rf  rg  r+  r|   ri  rj  rk  rl  r  r  r}   r  r  r~   r   r   r   r  r  r   r   r	  r
  r  r   r   r   r   r   r   rX  r   r   r   rn  ro  r   r   r   r  r  r   r   r  r  r  r  r   r   r   r   r   r   r   r   r   r  r  r  r   r   r  r   r   r   r   r   r  r  r  r   r   r  r  r   r   r   r   r   r   (l  r  r   rp  r   r?  rq  rr  rs  r   rt  ru  rv  rw  rx  r  ry  rz  r{  r|  r}  r~  r  r  r  r  r0  r  r  r  r   r  r  r  r   r  r   r  r  r  r  r  r  r8  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r0  r  r  r  r?  r  r?  r=  r   r   r  r  r  r   r8  r  r?  r  r  r  r   r  r  r  r   r!  r   r   r  r  r0  r   r   r   r  r  r  r  r   r?  r=  r   r)   r"  r#  r$  r   r%  r   r&  r'  r(  r)  r  r*  r+  r*   r  r,  r+   r   r   r-  r.  r/  rP  r0  r1  r2  r3  r4  r   r5  r6  r@   r7  rS  r   r   r)   r+   r8  rV  r  r)   r  r   r?  r   r9  r  r)   r?  r)   r   r   rc  r:  r)   r   r   r  r   r)   r;  r)   r)   r<  r=  r>  r?  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r)   r   r   r@  rA  r)   r)   r  r  rV  rV  r  r  r   re  r   r   r   r   r)   r   rp   rs   r   r)   ru   r   r   r   r   r   r)   r   r8  r{   r  r  r  r  r   r  r   r   r   r)   r)   r  r  rc  rc  rm  rB  r   r)   r)   rC  rD  r   r   r   r   r   r   r   r)   r   r   r   r   r   r   r)   r   rF  rG  rH  rI  rJ  rK  r)   r   re  r)   r)   r   r   r)   r   r)   r)   r   r)   r   r)   r   r   r)   r)   r  r  r?  r   r  r  r  r  rc  rm  r   rL  rM  r   r   r   r   rP  rQ  r)   r   rR  rS  rT  r   r   r   r)   r   r)   r   r   r   r   r  r  r)   r   r   rU  rV  r)   r   rY  rZ  r[  r\  r)   r)   r   r)   r)   r)   r   r)   r)   r]  r^  r_  r)   r   r`  r)   r   r   r   r   ra  rb  rd  r)   r)   re  rf  r)   r   r   r)   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"  r#  r$  r   r%  r   r&  r'  r(  r)  r*  r+  r   r,  r   r   r   r-  r.  r/  r0  r1  r2  r3  r4  r   r5  r6  r  r7  r   r   r   r   r8  r   r   r   r   r   r   r   r   r   r   r   r   r;  r   r   r<  r=  r>  r?  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@  rA  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF  rG  rH  rI  rJ  rK  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP  rQ  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r_  r   r   r`  r   r   r   r   r   rd  r   r   r   r   r   r   r   r   (   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r  r  r  r  r#  r  r  r>  r  r  r	  r  r
  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  r   r!  r"  r#  r?  r$  r@  r   r&  r'  r(  r   r*  r+  r-  r/  r1  r	   r2  r4  r5  f   r
   r  r   r   r6  r7  r   r   r8  r   r9  r:  r;  r<  r   rA  r   r=  r   r   r   r>  r   r?  r   r   r   r   r   r   r   r   rB  r   rG  r   rK        r    r  r!   rB  r"   r#   r$   rM  r%   r&   r'   rO  r(   r)   r*   r+   rQ  rR  r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r  r	  r?   r@   rT  rU  rW  rX  rA   rB   rC   rD   r  rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rY  r[  r]  r^  rQ   r  r`  rR   rS   rT   rU   rV   rc  r  r  rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   r
  rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   rf  rg  r+  r|   ri  rj  r  r}   rm  r~   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   (   r  r   rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  r  ry  rz  r{  r|  r}  r~  r  rC  r  r  r  rD  r   r  r2  r5  r  r  r   r  r  r  r   r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r  r  r  r8  r   r!  r   r   r  r  r  r   r  r   r  r  r  r  r   r  r   r  r  r   r   r  r  r  r  r   r   r   r  r   r  r  r  r  r  r   r  r8  r8  r   r9  r  r  r  r   r   r  r  r   r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r  r   r  r   r  r  r   r   r   r   r   r  r   r  r  r  r  r  r8  r  r  r   r   r  r  r  r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r  r  r  r  r  r  r   r  r   r   r  r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   )4r   r   r   r   r  r   r   r   r   r   r   r  r   r   r   r   r   r  r   r   r   r   r   r  r   r   r  r   r   r  r   r   r   r  r   r   r   r  r   r  r  r   r   r   r   r  r  r   r   r  r   r   )r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r  r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r  r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   r  rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r  r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r  r   r   r   r   r  r   r   r   r   r  r   r  r   r  r  r   r   r-  r   r  r   r  r  r  r   r   r  r  r   r   r  r   r   r   r  r;  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r  r  r   r   r   r   r   r  r   r  r  r   r  r   r  r  r   r  r  r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r  r  r  r  r   r   r  r   r  r  r   r  r   r  r   r   r  r  r  r  r   r   r   r  r  r  r   r   r   r   r  r   r  r   r   r   r  r   r   r  r   r  r  r   r  r  r  r   r  r  r  r   r  r   r   r   r   r  r  r  r   r   r  r   r   )r  r   rp  r   r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r  r~  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r   r   r  r   r  r   r  r  r   r  r   r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r  r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   )5r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r  r7  r8  r   r^   r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  )5r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r  r7  r8  r   r`   r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r8  rF  rG  rH  rI  rJ  rK  r  r  rP  rQ  r  r_  r`  rd  )xr   r   r   r   r
   r   r   r   r   r   r  r  r  r  r  r  r  r  rk  r  r  r  r  r  r  rl  r  r  rm  r  r  r  r  r  r  r  r  r   r    r"   r#   r%   r&   rn  r  r  ro  rp  r  r  r  r  r  r  rq  r  rr  rA   N  O  rT   Q  _  rW   rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  rl   r  rm       r}       r    r  r  r  r  r  r  r      r   r   r   r    r   r  r  1  2  r  r  )xr   r   r   r   r   r   r   r   r   r"  r#  r$  r%  r&  r'  r(  r)  r*  r  r+  r,  r-  r.  r/  r0  r  r1  r2  r  r3  r4  r5  r6  r  r7  r8  r  r   r   r   r   r   r   r  r  r;  r  r  r<  r=  r>  r?  r@  rA  r  r  r  r   rk  rl  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rF  rG  rH  rI  r  rJ  rK  r   r  r   rn  ro  r   r  r  r  r  r  r  r  rP  rQ  r  r  r  r  r  r   r   r  r  r  r_  r`  r  r  r  rd  )DIVEQUALTIMESLPAREN
MINUSMINUSIDIFSTRING_LITERALFLOATXOREQUALLSHIFTEQUALRBRACKETr   r   expression_statement)r   rI   rO   rr   rw   rz   r   r   r   r   r   r   r   )rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   struct_or_union_specifier)!r   r   r  r  r%  r   r-  r.  r0  r3  r8  r=  r@  r   r   rD  rE  rF  rN  r)   r*   r+   rP  rS  rV  rI   rZ  r\  rc  rd  re  rp   rm  )!r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   init_declarator_listr   r+  r  init_declarator_list_optr  iteration_statement)rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   static_assert)r   r  r   rI   rO   rr   rw   rz   r   r   r   r   r   r   r   )r   r   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   unified_string_literal)Rr   r   r   r   r   r   r   r   r   r!   r"   r%   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rF   rH   rI   rO   rQ   rR   r  rU   rV   rX   rY   ra   rg   rh   rj   rk   rl   rm   rp   rr   rs   ru   rw   rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )Rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  assignment_expression_opt)r"   r%   rl   rm   r   )r  r  r  r  r  
brace_open)r>  r  rG  r1  r2  r4  r5  rH  r   r   r!   r)   rI   rO   rh   rk   rr   rw   rz   r   r  r  r   r   r   r   r   r   r   r   )r3  r  r   rD  rE  r  r  r   r(   r   r(   r   r   r   r(   r   r   r   r   r   r   r   r   r(   r   r   r   r   r   r   
enumerator)r  r  r  r  )ry  ry  ry  r  typeid_noparen_declaratorrM  r  type_qualifier_list_opt)r  r   r   r$   r'   rA   r}   r   )r  r"   r%   rV   rY   rl   r   r   "declaration_specifiers_no_type_opt)r   r  r  r  r  r  r*  )r!  r/  r9  r:  r;  r/  r/  expression_opt)r   rI   rO   rp   rr   rw   rz   r   r   r   r   r   r   r   r   r   r   r   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  designation)r(   r~   r   r   )rf   rf   rf   rf   parameter_list)r8  r=  rV  rc  re  rm  )r  r  r  r  r  r  alignment_specifier))r   r   r   r   r  r  r  r  r  r  r%  r   r*  r+  r.  r0  r3  r8  r=  r   rA  r   rD  rE  rF  rK  rM  r)   r*   r+   rP  rS  rV  rI   rZ  r\  rc  rd  re  rp   rm  ))r  r  r'  r  r  r  r  r  r  r  r  r>  r  r'  r  r>  r>  r  r  r>  rX  r  r>  r>  r>  rX  r'  r>  r>  r>  r>  r>  r  r  r>  r>  r  r  r  r  r  labeled_statement)rE   rE   rE   rE   rE   rE   rE   rE   rE   rE   rE   rE   rE   abstract_declarator)rA  rM  rV  rc  )r  r  r  r  translation_unitr  init_declarator)r   r+  rA  rB  )r  r  r  r  direct_abstract_declarator)rA  rM  r  rV  rc  r  r  )r  r  r   r  r  r   r   designator_list)r  r  r  r  
identifier)Xr   r   r8  r=  r   r   r   r   r   r   r   r!   r"   r%   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rF   rH   rI   rO   rQ   rR   rU   rV   r  rX   rY   ra   r
  rg   rh   rj   rk   rl   rm   rp   rr   rs   ru   rw   rz   r{   r|   rm  r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   )Xr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  offsetof_member_designatorr  r  unary_expression)Qr   r   r   r   r   r   r   r   r   r!   r"   r%   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rF   rH   rI   rO   rQ   rR   rU   rV   rX   rY   ra   rg   rh   rj   rk   rl   rm   rp   rr   rs   ru   rw   rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )Qrk  rk  rn  ro  rp  rk  rn  rr  rn  rn  rn  rn  rn  rn  rn  rk  rk  rk  rk  rk  rk  rk  rk  rk  rk  rk  rk  rk  rk  rk  rk  rn  rk  rk  rn  rn  rn  rk  rn  rn  rk  rk  rn  rn  rn  rn  rn  rk  rn  rn  rk  rn  rn  rn  rn  rn  rn  rn  rn  rn  rk  rk  rk  rn  rn  rn  rn  rn  rn  rn  rn  rn  rn  rn  rn  rn  rn  rn  rn  rn  rn  abstract_declarator_optrA  r  r  initializer)r   r!   rh   r   )r  r  r  r  direct_id_declarator)r   r   r  r  r  r  r?  r@  r+  r-  rA  rK  rB  rM  rc  r  r+  r  )r  r  r)  r  r  r  r  r)  r  r  r  r  r  r  r  r)  r  r)  struct_declaration_list)r3  rD  rE  )rF  rZ  r\  pp_directiver   declaration_listr   r%  r.  id_init_declaratorr  r-  r  type_specifier)!r   r   r6  r   r   r?  r6  r   r?  r?  r   r   rT  r?  r   r?  r?  r?  r6  r?  r?  r?  r?  r?  r   r   r?  r?  r   r   r   r   r   compound_statement)rG  rH  r   r)   rI   rO   rr   rw   rz   r   r   r   r   r   r   r   )rB  rO  rG   r  rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   pointer)r   r   r  r  r  r?  r+  r-  r  rA  rA  rK  rB  rM  rV  rc  r+  )r  r@  r  r  r  r@  r@  r  r  r@  r  r@  r@  r  r  r  r@  typeid_declarator)r   r?  r+  rA  rK  rB  r+  )r%  r  r%  r%  r%  r%  r%  id_init_declarator_listr  
declarator)r   r+  rA  rK  rB  r+  )r6  r6  r6  r(  r6  r(  argument_expression_listr@   r  struct_declarator_list_optrK  r  block_item_listr   rI   parameter_type_list_opt)rV  rc  re  )r  r  r  struct_declaratorr+  r  r  type_qualifier)6r   r   r   r   r  r  r  r  r  r  r  r%  r   r*  r+  r.  r0  r3  r
   r   r8  r   r=  r@  r   rA  r   rD  rE  rF  rK  r#   r$   rM  r&   r'   r)   r*   r+   rP  rS  rV  rA   rI   rZ  r\  rc  rd  re  rp   r}   rm  r   r   )6r  r  r&  r  r  r   r  r  r  r  r  r  r   r  r&  r  r   r   r    r   r  r   r  r    r   rW  r  r   r   r   rW  r    r   r&  r    r   r   r   r   r   r   r  r   r  r   r   r  r  r  r  r   r  r    r   assignment_operatorrn  ra   
expression)r   r   r)   r*   r+   r<   r?   rF   rI   rO   rp   rr   rs   ru   rw   rz   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   )r  r  r  r  r  r)  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  storage_class_specifier)r   r   r   r   r  r  r  r  r  r  r%  r*  r+  r.  r8  r=  r   rM  rV  rI   rc  rd  re  rp   rm  )r   r   r#  r   r   r   r   r   r   r   r   r   r#  r   r   r   r   r#  r   r   r   r   r   r   r   unified_wstring_literal)Qr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  translation_unit_or_emptyr.  initializer_list_optr(   r  brace_close)r3  rD  rE  rF  rz  r}  rZ  r\  r~  r  r  r~   r  r   )rG  r[  r]  r^  r`  ry   rf  rg  ri  rj  r  r  r  r  direct_typeid_declarator)r   r?  r@  r+  rA  rK  rB  r+  )r  r  r  r  r  r  r  r  external_declarationr   r<  pragmacomp_or_statement)
rO   rr   rz   r   r   r   r   r   r   r   )
rV  r   r   r   r   r   r   r   r   r   	type_name)r   r0  r   r)   r*   r+   rP  rS  )r  r  r  r  r  r  r  r  typedef_name)!r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  pppragma_directive)r   r  r3  r   rD  rE  rF  rI   rO   rZ  r\  rr   rw   rz   r   r   r   r   r   r   r   )r  r  rI  rJ   rI  rI  rI  rJ   rw   rI  rI  rw   rJ   rw   rw   rw   rw   rw   rw   rw   rw   	statement)rK   rK   rx   rx   r   rx   rx   rx   rx   r   rx   rx   rx   cast_expression)Nr   r   r   r   r   r   r!   r"   r%   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rF   rH   rI   rO   rQ   rR   rU   rV   rX   rY   ra   rg   rh   rj   rk   rl   rm   rp   rr   rs   ru   rw   rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )Nrl  rl  rl  rq  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  r  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  r  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  rl  atomic_specifier)(r   r   r   r  r  r  r  r  r  r  r%  r   r*  r-  r.  r0  r3  r8  r=  r@  r   r   rD  rE  rF  rN  r)   r*   r+   rP  rS  rV  rI   rZ  r\  rc  rd  re  rp   rm  )(r  r  r*  r  r7  r  r  r  r  r  r*  r7  r  r7  r*  r7  r7  r  r  r7  r7  r*  r7  r7  r7  r7  r7  r7  r7  r7  r7  r  r*  r7  r7  r  r  r  r*  r  struct_declarator_listr  empty):r   r   r   r   r  r  r  r  r  r  r  r%  r*  r+  r-  r   r8  r   r=  rA  r   rK  r"   r$   rM  r%   r'   r(   rV  rA   rI   rO   rc  rl   rm   re  rp   rr   rw   rz   r}   rm  r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ):r/  r  r  rF  r  r   r  r  r  r  r  rF  r  r  r  r   r  r   r  r  r|  r  r  r   r  r  r   ri   r  r   r  r  r  r  r  r  r  r  r  r  r   r  r   r   r  r  r  r   r  r  r  r  r   r  r  r  r  r  parameter_declaration)r8  r=  rV  rc  rd  re  rm  )r  r  r  r  r  r  r  primary_expression)Qr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  declaration)r   r   r  r%  r.  r   rI   rp   )r  r,  r  r,  rC  rL   rL   r   declaration_specifiers_no_type)r   r   r   r  r  r  r  r  r  r%  r*  r.  r8  r=  r   rV  rI   rc  rd  re  rp   rm  )r  r"  r-  r"  r"  r"  r"  r  r"  r-  r"  r-  rN  rN  r-  rN  r-  rN  rN  rN  r-  rN  jump_statement)rM   rM   rM   rM   rM   rM   rM   rM   rM   rM   rM   rM   rM   enumerator_list)r  r  r  )rz  r~  r  
block_itemrN   rt   constant_expression)r   r   rH   rQ   rR   rg   r|   )r  r  r*  r  r  r  r  identifier_list_opt)r8  r=  rm  )r  r  r  constant)Qr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  type_specifier_no_typeid)&r   r   r   r  r  r%  r   r+  r-  r.  r0  r3  r8  r=  r@  r   rA  r   rD  rE  rF  rK  rM  rN  r)   r*   r+   rP  rS  rV  rI   rZ  r\  rc  rd  re  rp   rm  )&r   r$  r   r   r   r   r   r$  r   r   r   r   r   r   r   r   rU  r   r   r   r   rU  r$  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   struct_declaration)r3  rD  rE  rF  rZ  r\  )rJ  rJ  rJ  r_  r_  r_   direct_typeid_noparen_declaratorr  r  r  id_declarator)r   r   r  r  r  r?  r+  r-  rA  rK  rB  rM  rc  r+  )r   r%  r  r7  r   r  r&  r7  r&  r&  r&  r  r  r&  selection_statement)rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   postfix_expression)Qr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  initializer_listr   r  r  unary_operator)Qr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   struct_or_union)!r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  r>  block_item_list_optr}  assignment_expression)1r   r   r   r!   r"   r%   r)   r*   r+   r<   r?   r@   rF   rI   rO   rU   rV   rX   rY   ra   rh   rj   rl   rm   rp   rr   rs   ru   rw   rz   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )1r{  r  r  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  designation_opt)rh   r   rh   r   )r  r  r  r  r  r  )r  r   r0  r3  r   r   r   rD  rE  rF  r$   r'   r)   r*   r+   rP  rS  rA   rZ  r\  r}   r   )r
   r@  r@  r@  r#   r&   r@  r@  r@  r@  r
   r
   r@  r@  r@  r@  r@  r
   r@  r@  r   r
   )r(   r  r~   r   r   )r  r  r  r  r  r  )r   r   r  r%  r.  r8  r=  r   rV  rI   rc  rd  re  rp   rm  )r   r+  r   r+  r+  rM  rM  r+  rM  r+  rM  rM  rM  r+  rM  )r  r  r  rG  rH  r  )Kr   r   r   r   r   r!   r"   r%   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rF   rH   rI   rO   rQ   rR   rU   rV   rX   rY   ra   rg   rh   rj   rl   rm   rp   rr   rs   ru   rw   rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )Krm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  rm  r  r  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  rm  )!r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  )r  r  r(  r  r  r  r  r  r  r  r  r  r(  r  r  r  r  r(  r  r  r  r  r  r  r  )r   r0  r3  r   rD  rE  rF  r)   r*   r+   rP  rS  rZ  r\  )rA  rA  rK  rA  rK  rK  rK  rA  rA  rA  rA  rA  rK  rK  )9r   r   r   r   r   r!   r"   r%   r)   r*   r+   r<   r?   r@   rF   rH   rI   rO   rQ   rR   rU   rV   rX   rY   ra   rg   rh   rj   rl   rm   rp   rr   rs   ru   rw   rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )9r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )parameter_type_listtype_qualifier_list
designatorid_init_declarator_list_optdeclaration_specifiersidentifier_listdeclaration_list_optfunction_definitionbinary_expressionenum_specifier	decl_bodyfunction_specifierspecifier_qualifier_listconditional_expression(R  )zS' -> translation_unit_or_emptyzS'r   NNN)z abstract_declarator_opt -> emptyr  r   p_abstract_declarator_optplyparser.pyr  )z.abstract_declarator_opt -> abstract_declaratorr  r   rU  rV  r  )z"assignment_expression_opt -> emptyr  r   p_assignment_expression_optrV  r  )z2assignment_expression_opt -> assignment_expressionr  r   rW  rV  r  )zblock_item_list_opt -> emptyrD  r   p_block_item_list_optrV  r  )z&block_item_list_opt -> block_item_listrD  r   rX  rV  r  )zdeclaration_list_opt -> emptyrM  r   p_declaration_list_optrV  r  )z(declaration_list_opt -> declaration_listrM  r   rY  rV  r  )z+declaration_specifiers_no_type_opt -> emptyr  r   $p_declaration_specifiers_no_type_optrV  r  )zDdeclaration_specifiers_no_type_opt -> declaration_specifiers_no_typer  r   rZ  rV  r  )zdesignation_opt -> emptyrF  r   p_designation_optrV  r  )zdesignation_opt -> designationrF  r   r[  rV  r  )zexpression_opt -> emptyr  r   p_expression_optrV  r  )zexpression_opt -> expressionr  r   r\  rV  r  )z$id_init_declarator_list_opt -> emptyrJ  r   p_id_init_declarator_list_optrV  r  )z6id_init_declarator_list_opt -> id_init_declarator_listrJ  r   r]  rV  r  )zidentifier_list_opt -> emptyr9  r   p_identifier_list_optrV  r  )z&identifier_list_opt -> identifier_listr9  r   r^  rV  r  )z!init_declarator_list_opt -> emptyr  r   p_init_declarator_list_optrV  r  )z0init_declarator_list_opt -> init_declarator_listr  r   r_  rV  r  )zinitializer_list_opt -> emptyr$  r   p_initializer_list_optrV  r  )z(initializer_list_opt -> initializer_listr$  r   r`  rV  r  )z parameter_type_list_opt -> emptyr  r   p_parameter_type_list_optrV  r  )z.parameter_type_list_opt -> parameter_type_listr  r   ra  rV  r  )z#struct_declarator_list_opt -> emptyr  r   p_struct_declarator_list_optrV  r  )z4struct_declarator_list_opt -> struct_declarator_listr  r   rb  rV  r  )z type_qualifier_list_opt -> emptyr  r   p_type_qualifier_list_optrV  r  )z.type_qualifier_list_opt -> type_qualifier_listr  r   rc  rV  r  )zdirect_id_declarator -> IDr  r   p_direct_id_declarator_1rV  rA  )z3direct_id_declarator -> LPAREN id_declarator RPARENr  r   p_direct_id_declarator_2rV  rA  )zpdirect_id_declarator -> direct_id_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKETr  r   p_direct_id_declarator_3rV  rA  )zsdirect_id_declarator -> direct_id_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKETr  r   p_direct_id_declarator_4rV  rA  )zodirect_id_declarator -> direct_id_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKETr  r   rg  rV  r  )z\direct_id_declarator -> direct_id_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKETr  r   p_direct_id_declarator_5rV  rA  )zNdirect_id_declarator -> direct_id_declarator LPAREN parameter_type_list RPARENr  r   p_direct_id_declarator_6rV  rA  )zNdirect_id_declarator -> direct_id_declarator LPAREN identifier_list_opt RPARENr  r   ri  rV  r  )z"direct_typeid_declarator -> TYPEIDr&  r   p_direct_typeid_declarator_1rV  rA  )z;direct_typeid_declarator -> LPAREN typeid_declarator RPARENr&  r   p_direct_typeid_declarator_2rV  rA  )zxdirect_typeid_declarator -> direct_typeid_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKETr&  r   p_direct_typeid_declarator_3rV  rA  )z{direct_typeid_declarator -> direct_typeid_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKETr&  r   p_direct_typeid_declarator_4rV  rA  )zwdirect_typeid_declarator -> direct_typeid_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKETr&  r   rm  rV  r  )zddirect_typeid_declarator -> direct_typeid_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKETr&  r   p_direct_typeid_declarator_5rV  rA  )zVdirect_typeid_declarator -> direct_typeid_declarator LPAREN parameter_type_list RPARENr&  r   p_direct_typeid_declarator_6rV  rA  )zVdirect_typeid_declarator -> direct_typeid_declarator LPAREN identifier_list_opt RPARENr&  r   ro  rV  r  )z*direct_typeid_noparen_declarator -> TYPEIDr=  r   $p_direct_typeid_noparen_declarator_1rV  rA  )zdirect_typeid_noparen_declarator -> direct_typeid_noparen_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKETr=  r   $p_direct_typeid_noparen_declarator_3rV  rA  )zdirect_typeid_noparen_declarator -> direct_typeid_noparen_declarator LBRACKET STATIC type_qualifier_list_opt assignment_expression RBRACKETr=  r   $p_direct_typeid_noparen_declarator_4rV  rA  )zdirect_typeid_noparen_declarator -> direct_typeid_noparen_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKETr=  r   rr  rV  r  )ztdirect_typeid_noparen_declarator -> direct_typeid_noparen_declarator LBRACKET type_qualifier_list_opt TIMES RBRACKETr=  r   $p_direct_typeid_noparen_declarator_5rV  rA  )zfdirect_typeid_noparen_declarator -> direct_typeid_noparen_declarator LPAREN parameter_type_list RPARENr=  r   $p_direct_typeid_noparen_declarator_6rV  rA  )zfdirect_typeid_noparen_declarator -> direct_typeid_noparen_declarator LPAREN identifier_list_opt RPARENr=  r   rt  rV  r  )z%id_declarator -> direct_id_declaratorr>  r   p_id_declarator_1rV  rA  )z-id_declarator -> pointer direct_id_declaratorr>  r   p_id_declarator_2rV  rA  )z-typeid_declarator -> direct_typeid_declaratorr  r   p_typeid_declarator_1rV  rA  )z5typeid_declarator -> pointer direct_typeid_declaratorr  r   p_typeid_declarator_2rV  rA  )z=typeid_noparen_declarator -> direct_typeid_noparen_declaratorr  r   p_typeid_noparen_declarator_1rV  rA  )zEtypeid_noparen_declarator -> pointer direct_typeid_noparen_declaratorr  r   p_typeid_noparen_declarator_2rV  rA  )z-translation_unit_or_empty -> translation_unitr#  r   p_translation_unit_or_emptyc_parser.pyr  )z"translation_unit_or_empty -> emptyr#  r   r{  r|  r   )z(translation_unit -> external_declarationr  r   p_translation_unit_1r|  r  )z9translation_unit -> translation_unit external_declarationr  r   p_translation_unit_2r|  r  )z+external_declaration -> function_definitionr'  r   p_external_declaration_1r|  r  )z#external_declaration -> declarationr'  r   p_external_declaration_2r|  r   )z$external_declaration -> pp_directiver'  r   p_external_declaration_3r|  r  )z*external_declaration -> pppragma_directiver'  r   r  r|  r  )zexternal_declaration -> SEMIr'  r   p_external_declaration_4r|  r   )z%external_declaration -> static_assertr'  r   p_external_declaration_5r|  r   )z^static_assert -> _STATIC_ASSERT LPAREN constant_expression COMMA unified_string_literal RPARENr  r   p_static_assert_declarationr|  r  )zAstatic_assert -> _STATIC_ASSERT LPAREN constant_expression RPARENr  r   r  r|  r  )zpp_directive -> PPHASHr  r   p_pp_directiver|  r   )zpppragma_directive -> PPPRAGMAr+  r   p_pppragma_directiver|  r   )z*pppragma_directive -> PPPRAGMA PPPRAGMASTRr+  r   r  r|  r   )zLfunction_definition -> id_declarator declaration_list_opt compound_statementrN  r   p_function_definition_1r|  iJ  )zcfunction_definition -> declaration_specifiers id_declarator declaration_list_opt compound_statementrN  r   p_function_definition_2r|  i\  )zstatement -> labeled_statementr,  r   p_statementr|  ik  )z!statement -> expression_statementr,  r   r  r|  il  )zstatement -> compound_statementr,  r   r  r|  im  )z statement -> selection_statementr,  r   r  r|  in  )z statement -> iteration_statementr,  r   r  r|  io  )zstatement -> jump_statementr,  r   r  r|  ip  )zstatement -> pppragma_directiver,  r   r  r|  iq  )zstatement -> static_assertr,  r   r  r|  ir  )z7pragmacomp_or_statement -> pppragma_directive statementr(  r   p_pragmacomp_or_statementr|  i  )z$pragmacomp_or_statement -> statementr(  r   r  r|  i  )z<decl_body -> declaration_specifiers init_declarator_list_optrQ  r   p_decl_bodyr|  i  )zGdecl_body -> declaration_specifiers_no_type id_init_declarator_list_optrQ  r   r  r|  i  )zdeclaration -> decl_body SEMIr3  r   p_declarationr|  i  )zdeclaration_list -> declarationr  r   p_declaration_listr|  i  )z0declaration_list -> declaration_list declarationr  r   r  r|  i  )zSdeclaration_specifiers_no_type -> type_qualifier declaration_specifiers_no_type_optr4  r   "p_declaration_specifiers_no_type_1r|  i  )z\declaration_specifiers_no_type -> storage_class_specifier declaration_specifiers_no_type_optr4  r   "p_declaration_specifiers_no_type_2r|  i  )zWdeclaration_specifiers_no_type -> function_specifier declaration_specifiers_no_type_optr4  r   "p_declaration_specifiers_no_type_3r|  i  )zUdeclaration_specifiers_no_type -> atomic_specifier declaration_specifiers_no_type_optr4  r   "p_declaration_specifiers_no_type_4r|  i  )zXdeclaration_specifiers_no_type -> alignment_specifier declaration_specifiers_no_type_optr4  r   "p_declaration_specifiers_no_type_5r|  i  )z?declaration_specifiers -> declaration_specifiers type_qualifierrK  r   p_declaration_specifiers_1r|  i"  )zHdeclaration_specifiers -> declaration_specifiers storage_class_specifierrK  r   p_declaration_specifiers_2r|  i'  )zCdeclaration_specifiers -> declaration_specifiers function_specifierrK  r   p_declaration_specifiers_3r|  i,  )zIdeclaration_specifiers -> declaration_specifiers type_specifier_no_typeidrK  r   p_declaration_specifiers_4r|  i1  )z(declaration_specifiers -> type_specifierrK  r   p_declaration_specifiers_5r|  i6  )zGdeclaration_specifiers -> declaration_specifiers_no_type type_specifierrK  r   p_declaration_specifiers_6r|  i;  )zDdeclaration_specifiers -> declaration_specifiers alignment_specifierrK  r   p_declaration_specifiers_7r|  i@  )zstorage_class_specifier -> AUTOr!  r   p_storage_class_specifierr|  iE  )z#storage_class_specifier -> REGISTERr!  r   r  r|  iF  )z!storage_class_specifier -> STATICr!  r   r  r|  iG  )z!storage_class_specifier -> EXTERNr!  r   r  r|  iH  )z"storage_class_specifier -> TYPEDEFr!  r   r  r|  iI  )z(storage_class_specifier -> _THREAD_LOCALr!  r   r  r|  iJ  )zfunction_specifier -> INLINErR  r   p_function_specifierr|  iO  )zfunction_specifier -> _NORETURNrR  r   r  r|  iP  )z type_specifier_no_typeid -> VOIDr;  r   p_type_specifier_no_typeidr|  iU  )z!type_specifier_no_typeid -> _BOOLr;  r   r  r|  iV  )z type_specifier_no_typeid -> CHARr;  r   r  r|  iW  )z!type_specifier_no_typeid -> SHORTr;  r   r  r|  iX  )ztype_specifier_no_typeid -> INTr;  r   r  r|  iY  )z type_specifier_no_typeid -> LONGr;  r   r  r|  iZ  )z!type_specifier_no_typeid -> FLOATr;  r   r  r|  i[  )z"type_specifier_no_typeid -> DOUBLEr;  r   r  r|  i\  )z$type_specifier_no_typeid -> _COMPLEXr;  r   r  r|  i]  )z"type_specifier_no_typeid -> SIGNEDr;  r   r  r|  i^  )z$type_specifier_no_typeid -> UNSIGNEDr;  r   r  r|  i_  )z$type_specifier_no_typeid -> __INT128r;  r   r  r|  i`  )ztype_specifier -> typedef_namer  r   p_type_specifierr|  ie  )z type_specifier -> enum_specifierr  r   r  r|  if  )z+type_specifier -> struct_or_union_specifierr  r   r  r|  ig  )z*type_specifier -> type_specifier_no_typeidr  r   r  r|  ih  )z"type_specifier -> atomic_specifierr  r   r  r|  ii  )z3atomic_specifier -> _ATOMIC LPAREN type_name RPARENr.  r   p_atomic_specifierr|  io  )ztype_qualifier -> CONSTr  r   p_type_qualifierr|  iv  )ztype_qualifier -> RESTRICTr  r   r  r|  iw  )ztype_qualifier -> VOLATILEr  r   r  r|  ix  )ztype_qualifier -> _ATOMICr  r   r  r|  iy  )z'init_declarator_list -> init_declaratorr  r   p_init_declarator_listr|  i~  )zBinit_declarator_list -> init_declarator_list COMMA init_declaratorr  r   r  r|  i  )zinit_declarator -> declaratorr  r   p_init_declaratorr|  i  )z0init_declarator -> declarator EQUALS initializerr  r   r  r|  i  )z-id_init_declarator_list -> id_init_declaratorr  r   p_id_init_declarator_listr|  i  )zHid_init_declarator_list -> id_init_declarator_list COMMA init_declaratorr  r   r  r|  i  )z#id_init_declarator -> id_declaratorr  r   p_id_init_declaratorr|  i  )z6id_init_declarator -> id_declarator EQUALS initializerr  r   r  r|  i  )zMspecifier_qualifier_list -> specifier_qualifier_list type_specifier_no_typeidrS  r   p_specifier_qualifier_list_1r|  i  )zCspecifier_qualifier_list -> specifier_qualifier_list type_qualifierrS  r   p_specifier_qualifier_list_2r|  i  )z*specifier_qualifier_list -> type_specifierrS  r   p_specifier_qualifier_list_3r|  i  )z>specifier_qualifier_list -> type_qualifier_list type_specifierrS  r   p_specifier_qualifier_list_4r|  i  )z/specifier_qualifier_list -> alignment_specifierrS  r   p_specifier_qualifier_list_5r|  i  )zHspecifier_qualifier_list -> specifier_qualifier_list alignment_specifierrS  r   p_specifier_qualifier_list_6r|  i  )z/struct_or_union_specifier -> struct_or_union IDr  r   p_struct_or_union_specifier_1r|  i  )z3struct_or_union_specifier -> struct_or_union TYPEIDr  r   r  r|  i  )z[struct_or_union_specifier -> struct_or_union brace_open struct_declaration_list brace_closer  r   p_struct_or_union_specifier_2r|  i  )zCstruct_or_union_specifier -> struct_or_union brace_open brace_closer  r   r  r|  i  )z^struct_or_union_specifier -> struct_or_union ID brace_open struct_declaration_list brace_closer  r   p_struct_or_union_specifier_3r|  i  )zFstruct_or_union_specifier -> struct_or_union ID brace_open brace_closer  r   r  r|  i  )zbstruct_or_union_specifier -> struct_or_union TYPEID brace_open struct_declaration_list brace_closer  r   r  r|  i  )zJstruct_or_union_specifier -> struct_or_union TYPEID brace_open brace_closer  r   r  r|  i  )zstruct_or_union -> STRUCTrC  r   p_struct_or_unionr|  i  )zstruct_or_union -> UNIONrC  r   r  r|  i  )z-struct_declaration_list -> struct_declarationr  r   p_struct_declaration_listr|  i  )zEstruct_declaration_list -> struct_declaration_list struct_declarationr  r   r  r|  i  )zNstruct_declaration -> specifier_qualifier_list struct_declarator_list_opt SEMIr<  r   p_struct_declaration_1r|  i  )zstruct_declaration -> SEMIr<  r   p_struct_declaration_2r|  i#  )z(struct_declaration -> pppragma_directiver<  r   p_struct_declaration_3r|  i(  )z+struct_declarator_list -> struct_declaratorr/  r   p_struct_declarator_listr|  i-  )zHstruct_declarator_list -> struct_declarator_list COMMA struct_declaratorr/  r   r  r|  i.  )zstruct_declarator -> declaratorr  r   p_struct_declarator_1r|  i6  )z9struct_declarator -> declarator COLON constant_expressionr  r   p_struct_declarator_2r|  i;  )z.struct_declarator -> COLON constant_expressionr  r   r  r|  i<  )zenum_specifier -> ENUM IDrP  r   p_enum_specifier_1r|  iD  )zenum_specifier -> ENUM TYPEIDrP  r   r  r|  iE  )z=enum_specifier -> ENUM brace_open enumerator_list brace_closerP  r   p_enum_specifier_2r|  iJ  )z@enum_specifier -> ENUM ID brace_open enumerator_list brace_closerP  r   p_enum_specifier_3r|  iO  )zDenum_specifier -> ENUM TYPEID brace_open enumerator_list brace_closerP  r   r  r|  iP  )zenumerator_list -> enumeratorr6  r   p_enumerator_listr|  iU  )z(enumerator_list -> enumerator_list COMMAr6  r   r  r|  iV  )z3enumerator_list -> enumerator_list COMMA enumeratorr6  r   r  r|  iW  )z7alignment_specifier -> _ALIGNAS LPAREN type_name RPARENr  r   p_alignment_specifierr|  ib  )zAalignment_specifier -> _ALIGNAS LPAREN constant_expression RPARENr  r   r  r|  ic  )zenumerator -> IDr  r   p_enumeratorr|  ih  )z+enumerator -> ID EQUALS constant_expressionr  r   r  r|  ii  )zdeclarator -> id_declaratorr  r   p_declaratorr|  ix  )zdeclarator -> typeid_declaratorr  r   r  r|  iy  )z(pointer -> TIMES type_qualifier_list_optr  r   	p_pointerr|  i  )z0pointer -> TIMES type_qualifier_list_opt pointerr  r   r  r|  i  )z%type_qualifier_list -> type_qualifierrH  r   p_type_qualifier_listr|  i  )z9type_qualifier_list -> type_qualifier_list type_qualifierrH  r   r  r|  i  )z%parameter_type_list -> parameter_listrG  r   p_parameter_type_listr|  i  )z4parameter_type_list -> parameter_list COMMA ELLIPSISrG  r   r  r|  i  )z'parameter_list -> parameter_declarationr  r   p_parameter_listr|  i  )z<parameter_list -> parameter_list COMMA parameter_declarationr  r   r  r|  i  )z=parameter_declaration -> declaration_specifiers id_declaratorr1  r   p_parameter_declaration_1r|  i*  )zIparameter_declaration -> declaration_specifiers typeid_noparen_declaratorr1  r   r  r|  i+  )zGparameter_declaration -> declaration_specifiers abstract_declarator_optr1  r   p_parameter_declaration_2r|  i6  )zidentifier_list -> identifierrL  r   p_identifier_listr|  iV  )z3identifier_list -> identifier_list COMMA identifierrL  r   r  r|  iW  )z$initializer -> assignment_expressionr  r   p_initializer_1r|  i`  )z:initializer -> brace_open initializer_list_opt brace_closer  r   p_initializer_2r|  ie  )z<initializer -> brace_open initializer_list COMMA brace_closer  r   r  r|  if  )z/initializer_list -> designation_opt initializerrA  r   p_initializer_listr|  in  )zFinitializer_list -> initializer_list COMMA designation_opt initializerrA  r   r  r|  io  )z%designation -> designator_list EQUALSr   r   p_designationr|  iz  )zdesignator_list -> designatorr  r   p_designator_listr|  i  )z-designator_list -> designator_list designatorr  r   r  r|  i  )z3designator -> LBRACKET constant_expression RBRACKETrI  r   p_designatorr|  i  )zdesignator -> PERIOD identifierrI  r   r  r|  i  )z=type_name -> specifier_qualifier_list abstract_declarator_optr)  r   p_type_namer|  i  )zabstract_declarator -> pointerr  r   p_abstract_declarator_1r|  i  )z9abstract_declarator -> pointer direct_abstract_declaratorr  r   p_abstract_declarator_2r|  i  )z1abstract_declarator -> direct_abstract_declaratorr  r   p_abstract_declarator_3r|  i  )z?direct_abstract_declarator -> LPAREN abstract_declarator RPARENr  r   p_direct_abstract_declarator_1r|  i  )zddirect_abstract_declarator -> direct_abstract_declarator LBRACKET assignment_expression_opt RBRACKETr  r   p_direct_abstract_declarator_2r|  i  )zadirect_abstract_declarator -> LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKETr  r   p_direct_abstract_declarator_3r|  i  )zPdirect_abstract_declarator -> direct_abstract_declarator LBRACKET TIMES RBRACKETr  r   p_direct_abstract_declarator_4r|  i  )z5direct_abstract_declarator -> LBRACKET TIMES RBRACKETr  r   p_direct_abstract_declarator_5r|  i  )z^direct_abstract_declarator -> direct_abstract_declarator LPAREN parameter_type_list_opt RPARENr  r   p_direct_abstract_declarator_6r|  i  )zCdirect_abstract_declarator -> LPAREN parameter_type_list_opt RPARENr  r   p_direct_abstract_declarator_7r|  i  )zblock_item -> declarationr7  r   p_block_itemr|  i  )zblock_item -> statementr7  r   r  r|  i  )zblock_item_list -> block_itemr  r   p_block_item_listr|  i  )z-block_item_list -> block_item_list block_itemr  r   r  r|  i  )z@compound_statement -> brace_open block_item_list_opt brace_closer  r   p_compound_statement_1r|  i  )z5labeled_statement -> ID COLON pragmacomp_or_statementr  r   p_labeled_statement_1r|  i  )zKlabeled_statement -> CASE constant_expression COLON pragmacomp_or_statementr  r   p_labeled_statement_2r|  i  )z:labeled_statement -> DEFAULT COLON pragmacomp_or_statementr  r   p_labeled_statement_3r|  i  )zJselection_statement -> IF LPAREN expression RPAREN pragmacomp_or_statementr?  r   p_selection_statement_1r|  i  )zYselection_statement -> IF LPAREN expression RPAREN statement ELSE pragmacomp_or_statementr?  r   p_selection_statement_2r|  i  )zNselection_statement -> SWITCH LPAREN expression RPAREN pragmacomp_or_statementr?  r   p_selection_statement_3r|  i  )zMiteration_statement -> WHILE LPAREN expression RPAREN pragmacomp_or_statementr  r   p_iteration_statement_1r|  i!  )zUiteration_statement -> DO pragmacomp_or_statement WHILE LPAREN expression RPAREN SEMIr  r   p_iteration_statement_2r|  i%  )zwiteration_statement -> FOR LPAREN expression_opt SEMI expression_opt SEMI expression_opt RPAREN pragmacomp_or_statementr  r.  p_iteration_statement_3r|  i)  )zoiteration_statement -> FOR LPAREN declaration expression_opt SEMI expression_opt RPAREN pragmacomp_or_statementr  r  p_iteration_statement_4r|  i-  )zjump_statement -> GOTO ID SEMIr5  r   p_jump_statement_1r|  i2  )zjump_statement -> BREAK SEMIr5  r   p_jump_statement_2r|  i6  )zjump_statement -> CONTINUE SEMIr5  r   p_jump_statement_3r|  i:  )z(jump_statement -> RETURN expression SEMIr5  r   p_jump_statement_4r|  i>  )zjump_statement -> RETURN SEMIr5  r   r  r|  i?  )z+expression_statement -> expression_opt SEMIr  r   p_expression_statementr|  iD  )z#expression -> assignment_expressionr   r   p_expressionr|  iK  )z4expression -> expression COMMA assignment_expressionr   r   r  r|  iL  )z9assignment_expression -> LPAREN compound_statement RPARENrE  r   #p_parenthesized_compound_expressionr|  iX  )ztypedef_name -> TYPEIDr*  r   p_typedef_namer|  i\  )z/assignment_expression -> conditional_expressionrE  r   p_assignment_expressionr|  i`  )zSassignment_expression -> unary_expression assignment_operator assignment_expressionrE  r   r  r|  ia  )zassignment_operator -> EQUALSr  r   p_assignment_operatorr|  in  )zassignment_operator -> XOREQUALr  r   r  r|  io  )z!assignment_operator -> TIMESEQUALr  r   r  r|  ip  )zassignment_operator -> DIVEQUALr  r   r  r|  iq  )zassignment_operator -> MODEQUALr  r   r  r|  ir  )z assignment_operator -> PLUSEQUALr  r   r  r|  is  )z!assignment_operator -> MINUSEQUALr  r   r  r|  it  )z"assignment_operator -> LSHIFTEQUALr  r   r  r|  iu  )z"assignment_operator -> RSHIFTEQUALr  r   r  r|  iv  )zassignment_operator -> ANDEQUALr  r   r  r|  iw  )zassignment_operator -> OREQUALr  r   r  r|  ix  )z-constant_expression -> conditional_expressionr8  r   p_constant_expressionr|  i}  )z+conditional_expression -> binary_expressionrT  r   p_conditional_expressionr|  i  )zZconditional_expression -> binary_expression CONDOP expression COLON conditional_expressionrT  r   r  r|  i  )z$binary_expression -> cast_expressionrO  r   p_binary_expressionr|  i  )z>binary_expression -> binary_expression TIMES binary_expressionrO  r   r  r|  i  )z?binary_expression -> binary_expression DIVIDE binary_expressionrO  r   r  r|  i  )z<binary_expression -> binary_expression MOD binary_expressionrO  r   r  r|  i  )z=binary_expression -> binary_expression PLUS binary_expressionrO  r   r  r|  i  )z>binary_expression -> binary_expression MINUS binary_expressionrO  r   r  r|  i  )z?binary_expression -> binary_expression RSHIFT binary_expressionrO  r   r  r|  i  )z?binary_expression -> binary_expression LSHIFT binary_expressionrO  r   r  r|  i  )z;binary_expression -> binary_expression LT binary_expressionrO  r   r  r|  i  )z;binary_expression -> binary_expression LE binary_expressionrO  r   r  r|  i  )z;binary_expression -> binary_expression GE binary_expressionrO  r   r  r|  i  )z;binary_expression -> binary_expression GT binary_expressionrO  r   r  r|  i  )z;binary_expression -> binary_expression EQ binary_expressionrO  r   r  r|  i  )z;binary_expression -> binary_expression NE binary_expressionrO  r   r  r|  i  )z<binary_expression -> binary_expression AND binary_expressionrO  r   r  r|  i  )z;binary_expression -> binary_expression OR binary_expressionrO  r   r  r|  i  )z<binary_expression -> binary_expression XOR binary_expressionrO  r   r  r|  i  )z=binary_expression -> binary_expression LAND binary_expressionrO  r   r  r|  i  )z<binary_expression -> binary_expression LOR binary_expressionrO  r   r  r|  i  )z#cast_expression -> unary_expressionr-  r   p_cast_expression_1r|  i  )z:cast_expression -> LPAREN type_name RPAREN cast_expressionr-  r   p_cast_expression_2r|  i  )z&unary_expression -> postfix_expressionr  r   p_unary_expression_1r|  i  )z-unary_expression -> PLUSPLUS unary_expressionr  r   p_unary_expression_2r|  i  )z/unary_expression -> MINUSMINUS unary_expressionr  r   r  r|  i  )z2unary_expression -> unary_operator cast_expressionr  r   r  r|  i  )z+unary_expression -> SIZEOF unary_expressionr  r   p_unary_expression_3r|  i  )z2unary_expression -> SIZEOF LPAREN type_name RPARENr  r   r  r|  i  )z4unary_expression -> _ALIGNOF LPAREN type_name RPARENr  r   r  r|  i  )zunary_operator -> ANDrB  r   p_unary_operatorr|  i  )zunary_operator -> TIMESrB  r   r  r|  i  )zunary_operator -> PLUSrB  r   r  r|  i  )zunary_operator -> MINUSrB  r   r  r|  i  )zunary_operator -> NOTrB  r   r  r|  i  )zunary_operator -> LNOTrB  r   r  r|  i  )z(postfix_expression -> primary_expressionr@  r   p_postfix_expression_1r|  i  )zEpostfix_expression -> postfix_expression LBRACKET expression RBRACKETr@  r   p_postfix_expression_2r|  i  )zOpostfix_expression -> postfix_expression LPAREN argument_expression_list RPARENr@  r   p_postfix_expression_3r|  i  )z6postfix_expression -> postfix_expression LPAREN RPARENr@  r   r  r|  i  )z2postfix_expression -> postfix_expression PERIOD IDr@  r   p_postfix_expression_4r|  i  )z6postfix_expression -> postfix_expression PERIOD TYPEIDr@  r   r  r|  i  )z1postfix_expression -> postfix_expression ARROW IDr@  r   r  r|  i  )z5postfix_expression -> postfix_expression ARROW TYPEIDr@  r   r  r|  i  )z1postfix_expression -> postfix_expression PLUSPLUSr@  r   p_postfix_expression_5r|  i  )z3postfix_expression -> postfix_expression MINUSMINUSr@  r   r  r|  i  )zUpostfix_expression -> LPAREN type_name RPAREN brace_open initializer_list brace_closer@  r   p_postfix_expression_6r|  i  )z[postfix_expression -> LPAREN type_name RPAREN brace_open initializer_list COMMA brace_closer@  r   r  r|  i  )z primary_expression -> identifierr2  r   p_primary_expression_1r|  i  )zprimary_expression -> constantr2  r   p_primary_expression_2r|  i  )z,primary_expression -> unified_string_literalr2  r   p_primary_expression_3r|  i  )z-primary_expression -> unified_wstring_literalr2  r   r  r|  i  )z.primary_expression -> LPAREN expression RPARENr2  r   p_primary_expression_4r|  i  )zWprimary_expression -> OFFSETOF LPAREN type_name COMMA offsetof_member_designator RPARENr2  r   p_primary_expression_5r|  i   )z(offsetof_member_designator -> identifierr
  r   p_offsetof_member_designatorr|  i  )zJoffsetof_member_designator -> offsetof_member_designator PERIOD identifierr
  r   r  r|  i	  )zUoffsetof_member_designator -> offsetof_member_designator LBRACKET expression RBRACKETr
  r   r  r|  i
  )z1argument_expression_list -> assignment_expressionr  r   p_argument_expression_listr|  i  )zPargument_expression_list -> argument_expression_list COMMA assignment_expressionr  r   r   r|  i  )zidentifier -> IDr	  r   p_identifierr|  i   )zconstant -> INT_CONST_DECr:  r   p_constant_1r|  i$  )zconstant -> INT_CONST_OCTr:  r   r  r|  i%  )zconstant -> INT_CONST_HEXr:  r   r  r|  i&  )zconstant -> INT_CONST_BINr:  r   r  r|  i'  )zconstant -> INT_CONST_CHARr:  r   r  r|  i(  )zconstant -> FLOAT_CONSTr:  r   p_constant_2r|  i;  )zconstant -> HEX_FLOAT_CONSTr:  r   r  r|  i<  )zconstant -> CHAR_CONSTr:  r   p_constant_3r|  iL  )zconstant -> WCHAR_CONSTr:  r   r  r|  iM  )zconstant -> U8CHAR_CONSTr:  r   r  r|  iN  )zconstant -> U16CHAR_CONSTr:  r   r  r|  iO  )zconstant -> U32CHAR_CONSTr:  r   r  r|  iP  )z(unified_string_literal -> STRING_LITERALr  r   p_unified_string_literalr|  i[  )z?unified_string_literal -> unified_string_literal STRING_LITERALr  r   r  r|  i\  )z*unified_wstring_literal -> WSTRING_LITERALr"  r   p_unified_wstring_literalr|  if  )z+unified_wstring_literal -> U8STRING_LITERALr"  r   r  r|  ig  )z,unified_wstring_literal -> U16STRING_LITERALr"  r   r  r|  ih  )z,unified_wstring_literal -> U32STRING_LITERALr"  r   r  r|  ii  )zBunified_wstring_literal -> unified_wstring_literal WSTRING_LITERALr"  r   r  r|  ij  )zCunified_wstring_literal -> unified_wstring_literal U8STRING_LITERALr"  r   r  r|  ik  )zDunified_wstring_literal -> unified_wstring_literal U16STRING_LITERALr"  r   r  r|  il  )zDunified_wstring_literal -> unified_wstring_literal U32STRING_LITERALr"  r   r  r|  im  )zbrace_open -> LBRACEr  r   p_brace_openr|  iw  )zbrace_close -> RBRACEr%  r   p_brace_closer|  i}  )zempty -> <empty>r0  r   p_emptyr|  i  N)_tabversion
_lr_method_lr_signature_lr_action_items
_lr_actionitems_k_vzip_x_y_lr_goto_items_lr_goto_lr_productions r  r  >/opt/certbot/lib/python3.10/site-packages/pycparser/yacctab.py<module>   sH                  2 