widl: Update to current Wine version.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
diff --git a/mingw-w64-tools/widl/VERSION b/mingw-w64-tools/widl/VERSION
index 6f46d8c..434c0c0 100644
--- a/mingw-w64-tools/widl/VERSION
+++ b/mingw-w64-tools/widl/VERSION
@@ -1 +1 @@
-WIDL version 8.12
+WIDL version 8.13
diff --git a/mingw-w64-tools/widl/configure b/mingw-w64-tools/widl/configure
index 6533ecb..7f58d46 100755
--- a/mingw-w64-tools/widl/configure
+++ b/mingw-w64-tools/widl/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for widl 8.12.
+# Generated by GNU Autoconf 2.71 for widl 8.13.
 #
 # Report bugs to <mingw-w64-public@lists.sourceforge.net>.
 #
@@ -610,8 +610,8 @@
 # Identity of this package.
 PACKAGE_NAME='widl'
 PACKAGE_TARNAME='widl'
-PACKAGE_VERSION='8.12'
-PACKAGE_STRING='widl 8.12'
+PACKAGE_VERSION='8.13'
+PACKAGE_STRING='widl 8.13'
 PACKAGE_BUGREPORT='mingw-w64-public@lists.sourceforge.net'
 PACKAGE_URL=''
 
@@ -1319,7 +1319,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures widl 8.12 to adapt to many kinds of systems.
+\`configure' configures widl 8.13 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1391,7 +1391,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of widl 8.12:";;
+     short | recursive ) echo "Configuration of widl 8.13:";;
    esac
   cat <<\_ACEOF
 
@@ -1493,7 +1493,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-widl configure 8.12
+widl configure 8.13
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1905,7 +1905,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by widl $as_me 8.12, which was
+It was created by widl $as_me 8.13, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3295,7 +3295,7 @@
 
 # Define the identity of the package.
  PACKAGE='widl'
- VERSION='8.12'
+ VERSION='8.13'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -5789,7 +5789,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by widl $as_me 8.12, which was
+This file was extended by widl $as_me 8.13, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -5857,7 +5857,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-widl config.status 8.12
+widl config.status 8.13
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff --git a/mingw-w64-tools/widl/include/winnt.h b/mingw-w64-tools/widl/include/winnt.h
index 9892605..a012299 100644
--- a/mingw-w64-tools/widl/include/winnt.h
+++ b/mingw-w64-tools/widl/include/winnt.h
@@ -871,6 +871,8 @@
 #define MAXDWORD      0xffffffff
 #define MAXLONGLONG   (((LONGLONG)0x7fffffff << 32) | 0xffffffff)
 
+#define UNICODE_NULL ((WCHAR)0)
+
 #define UNICODE_STRING_MAX_CHARS 32767
 
 #define FIELD_OFFSET(type, field) ((LONG)offsetof(type, field))
@@ -5466,12 +5468,6 @@
 #define	FILE_256_BYTE_ALIGNMENT		0x000000ff
 #define	FILE_512_BYTE_ALIGNMENT		0x000001ff
 
-#define COMPRESSION_FORMAT_NONE         0
-#define COMPRESSION_FORMAT_DEFAULT      1
-#define COMPRESSION_FORMAT_LZNT1        2
-#define COMPRESSION_ENGINE_STANDARD     0
-#define COMPRESSION_ENGINE_MAXIMUM      256
-
 #define MAILSLOT_NO_MESSAGE             ((DWORD)-1)
 #define MAILSLOT_WAIT_FOREVER           ((DWORD)-1)
 
diff --git a/mingw-w64-tools/widl/src/attribute.c b/mingw-w64-tools/widl/src/attribute.c
index 5ea13a0..bcd804e 100644
--- a/mingw-w64-tools/widl/src/attribute.c
+++ b/mingw-w64-tools/widl/src/attribute.c
@@ -153,6 +153,7 @@
     /* ATTR_CUSTOM */              { 0, 0, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, "custom" },
     /* ATTR_DECODE */              { 0, 0, 0,  1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "decode" },
     /* ATTR_DEFAULT */             { 0, 0, 0,  1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, "default" },
+    /* ATTR_DEFAULT_OVERLOAD */    { 0, 0, 0,  0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "default_overload" },
     /* ATTR_DEFAULTBIND */         { 0, 0, 0,  0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "defaultbind" },
     /* ATTR_DEFAULTCOLLELEM */     { 0, 0, 0,  0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "defaultcollelem" },
     /* ATTR_DEFAULTVALUE */        { 0, 0, 0,  0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "defaultvalue" },
diff --git a/mingw-w64-tools/widl/src/parser.l b/mingw-w64-tools/widl/src/parser.l
index afbdf71..951998d 100644
--- a/mingw-w64-tools/widl/src/parser.l
+++ b/mingw-w64-tools/widl/src/parser.l
@@ -254,6 +254,7 @@
     control                                     { return tCONTROL; }
     custom                                      { return tCUSTOM; }
     decode                                      { return tDECODE; }
+    default_overload                            { return tDEFAULT_OVERLOAD; }
     defaultbind                                 { return tDEFAULTBIND; }
     defaultcollelem                             { return tDEFAULTCOLLELEM; }
     defaultvalue                                { return tDEFAULTVALUE; }
diff --git a/mingw-w64-tools/widl/src/parser.tab.c b/mingw-w64-tools/widl/src/parser.tab.c
index a70a6ef..2800f6d 100644
--- a/mingw-w64-tools/widl/src/parser.tab.c
+++ b/mingw-w64-tools/widl/src/parser.tab.c
@@ -303,153 +303,154 @@
     tDEFAULT = 319,                /* tDEFAULT  */
     tDEFAULTBIND = 320,            /* tDEFAULTBIND  */
     tDELEGATE = 321,               /* tDELEGATE  */
-    tDEFAULTCOLLELEM = 322,        /* tDEFAULTCOLLELEM  */
-    tDEFAULTVALUE = 323,           /* tDEFAULTVALUE  */
-    tDEFAULTVTABLE = 324,          /* tDEFAULTVTABLE  */
-    tDEPRECATED = 325,             /* tDEPRECATED  */
-    tDISABLECONSISTENCYCHECK = 326, /* tDISABLECONSISTENCYCHECK  */
-    tDISPLAYBIND = 327,            /* tDISPLAYBIND  */
-    tDISPINTERFACE = 328,          /* tDISPINTERFACE  */
-    tDLLNAME = 329,                /* tDLLNAME  */
-    tDONTFREE = 330,               /* tDONTFREE  */
-    tDOUBLE = 331,                 /* tDOUBLE  */
-    tDUAL = 332,                   /* tDUAL  */
-    tENABLEALLOCATE = 333,         /* tENABLEALLOCATE  */
-    tENCODE = 334,                 /* tENCODE  */
-    tENDPOINT = 335,               /* tENDPOINT  */
-    tENTRY = 336,                  /* tENTRY  */
-    tENUM = 337,                   /* tENUM  */
-    tERRORSTATUST = 338,           /* tERRORSTATUST  */
-    tEVENTADD = 339,               /* tEVENTADD  */
-    tEVENTREMOVE = 340,            /* tEVENTREMOVE  */
-    tEXCLUSIVETO = 341,            /* tEXCLUSIVETO  */
-    tEXPLICITHANDLE = 342,         /* tEXPLICITHANDLE  */
-    tEXTERN = 343,                 /* tEXTERN  */
-    tFALSE = 344,                  /* tFALSE  */
-    tFAULTSTATUS = 345,            /* tFAULTSTATUS  */
-    tFLAGS = 346,                  /* tFLAGS  */
-    tFLOAT = 347,                  /* tFLOAT  */
-    tFORCEALLOCATE = 348,          /* tFORCEALLOCATE  */
-    tHANDLE = 349,                 /* tHANDLE  */
-    tHANDLET = 350,                /* tHANDLET  */
-    tHELPCONTEXT = 351,            /* tHELPCONTEXT  */
-    tHELPFILE = 352,               /* tHELPFILE  */
-    tHELPSTRING = 353,             /* tHELPSTRING  */
-    tHELPSTRINGCONTEXT = 354,      /* tHELPSTRINGCONTEXT  */
-    tHELPSTRINGDLL = 355,          /* tHELPSTRINGDLL  */
-    tHIDDEN = 356,                 /* tHIDDEN  */
-    tHYPER = 357,                  /* tHYPER  */
-    tID = 358,                     /* tID  */
-    tIDEMPOTENT = 359,             /* tIDEMPOTENT  */
-    tIGNORE = 360,                 /* tIGNORE  */
-    tIIDIS = 361,                  /* tIIDIS  */
-    tIMMEDIATEBIND = 362,          /* tIMMEDIATEBIND  */
-    tIMPLICITHANDLE = 363,         /* tIMPLICITHANDLE  */
-    tIMPORT = 364,                 /* tIMPORT  */
-    tIMPORTLIB = 365,              /* tIMPORTLIB  */
-    tIN = 366,                     /* tIN  */
-    tIN_LINE = 367,                /* tIN_LINE  */
-    tINLINE = 368,                 /* tINLINE  */
-    tINPUTSYNC = 369,              /* tINPUTSYNC  */
-    tINT = 370,                    /* tINT  */
-    tINT32 = 371,                  /* tINT32  */
-    tINT3264 = 372,                /* tINT3264  */
-    tINT64 = 373,                  /* tINT64  */
-    tINTERFACE = 374,              /* tINTERFACE  */
-    tLCID = 375,                   /* tLCID  */
-    tLENGTHIS = 376,               /* tLENGTHIS  */
-    tLIBRARY = 377,                /* tLIBRARY  */
-    tLICENSED = 378,               /* tLICENSED  */
-    tLOCAL = 379,                  /* tLOCAL  */
-    tLONG = 380,                   /* tLONG  */
-    tMARSHALINGBEHAVIOR = 381,     /* tMARSHALINGBEHAVIOR  */
-    tMAYBE = 382,                  /* tMAYBE  */
-    tMESSAGE = 383,                /* tMESSAGE  */
-    tMETHODS = 384,                /* tMETHODS  */
-    tMODULE = 385,                 /* tMODULE  */
-    tMTA = 386,                    /* tMTA  */
-    tNAMESPACE = 387,              /* tNAMESPACE  */
-    tNOCODE = 388,                 /* tNOCODE  */
-    tNONBROWSABLE = 389,           /* tNONBROWSABLE  */
-    tNONCREATABLE = 390,           /* tNONCREATABLE  */
-    tNONE = 391,                   /* tNONE  */
-    tNONEXTENSIBLE = 392,          /* tNONEXTENSIBLE  */
-    tNOTIFY = 393,                 /* tNOTIFY  */
-    tNOTIFYFLAG = 394,             /* tNOTIFYFLAG  */
-    tNULL = 395,                   /* tNULL  */
-    tOBJECT = 396,                 /* tOBJECT  */
-    tODL = 397,                    /* tODL  */
-    tOLEAUTOMATION = 398,          /* tOLEAUTOMATION  */
-    tOPTIMIZE = 399,               /* tOPTIMIZE  */
-    tOPTIONAL = 400,               /* tOPTIONAL  */
-    tOUT = 401,                    /* tOUT  */
-    tOVERLOAD = 402,               /* tOVERLOAD  */
-    tPARTIALIGNORE = 403,          /* tPARTIALIGNORE  */
-    tPOINTERDEFAULT = 404,         /* tPOINTERDEFAULT  */
-    tPRAGMA_WARNING = 405,         /* tPRAGMA_WARNING  */
-    tPROGID = 406,                 /* tPROGID  */
-    tPROPERTIES = 407,             /* tPROPERTIES  */
-    tPROPGET = 408,                /* tPROPGET  */
-    tPROPPUT = 409,                /* tPROPPUT  */
-    tPROPPUTREF = 410,             /* tPROPPUTREF  */
-    tPROTECTED = 411,              /* tPROTECTED  */
-    tPROXY = 412,                  /* tPROXY  */
-    tPTR = 413,                    /* tPTR  */
-    tPUBLIC = 414,                 /* tPUBLIC  */
-    tRANGE = 415,                  /* tRANGE  */
-    tREADONLY = 416,               /* tREADONLY  */
-    tREF = 417,                    /* tREF  */
-    tREGISTER = 418,               /* tREGISTER  */
-    tREPRESENTAS = 419,            /* tREPRESENTAS  */
-    tREQUESTEDIT = 420,            /* tREQUESTEDIT  */
-    tREQUIRES = 421,               /* tREQUIRES  */
-    tRESTRICTED = 422,             /* tRESTRICTED  */
-    tRETVAL = 423,                 /* tRETVAL  */
-    tRUNTIMECLASS = 424,           /* tRUNTIMECLASS  */
-    tSAFEARRAY = 425,              /* tSAFEARRAY  */
-    tSHORT = 426,                  /* tSHORT  */
-    tSIGNED = 427,                 /* tSIGNED  */
-    tSINGLENODE = 428,             /* tSINGLENODE  */
-    tSIZEIS = 429,                 /* tSIZEIS  */
-    tSIZEOF = 430,                 /* tSIZEOF  */
-    tSMALL = 431,                  /* tSMALL  */
-    tSOURCE = 432,                 /* tSOURCE  */
-    tSTANDARD = 433,               /* tSTANDARD  */
-    tSTATIC = 434,                 /* tSTATIC  */
-    tSTRICTCONTEXTHANDLE = 435,    /* tSTRICTCONTEXTHANDLE  */
-    tSTRING = 436,                 /* tSTRING  */
-    tSTRUCT = 437,                 /* tSTRUCT  */
-    tSWITCH = 438,                 /* tSWITCH  */
-    tSWITCHIS = 439,               /* tSWITCHIS  */
-    tSWITCHTYPE = 440,             /* tSWITCHTYPE  */
-    tTHREADING = 441,              /* tTHREADING  */
-    tTRANSMITAS = 442,             /* tTRANSMITAS  */
-    tTRUE = 443,                   /* tTRUE  */
-    tTYPEDEF = 444,                /* tTYPEDEF  */
-    tUIDEFAULT = 445,              /* tUIDEFAULT  */
-    tUNION = 446,                  /* tUNION  */
-    tUNIQUE = 447,                 /* tUNIQUE  */
-    tUNSIGNED = 448,               /* tUNSIGNED  */
-    tUSESGETLASTERROR = 449,       /* tUSESGETLASTERROR  */
-    tUSERMARSHAL = 450,            /* tUSERMARSHAL  */
-    tUUID = 451,                   /* tUUID  */
-    tV1ENUM = 452,                 /* tV1ENUM  */
-    tVARARG = 453,                 /* tVARARG  */
-    tVERSION = 454,                /* tVERSION  */
-    tVIPROGID = 455,               /* tVIPROGID  */
-    tVOID = 456,                   /* tVOID  */
-    tWCHAR = 457,                  /* tWCHAR  */
-    tWIREMARSHAL = 458,            /* tWIREMARSHAL  */
-    tAPARTMENT = 459,              /* tAPARTMENT  */
-    tNEUTRAL = 460,                /* tNEUTRAL  */
-    tSINGLE = 461,                 /* tSINGLE  */
-    tFREE = 462,                   /* tFREE  */
-    tBOTH = 463,                   /* tBOTH  */
-    CAST = 464,                    /* CAST  */
-    PPTR = 465,                    /* PPTR  */
-    POS = 466,                     /* POS  */
-    NEG = 467,                     /* NEG  */
-    ADDRESSOF = 468                /* ADDRESSOF  */
+    tDEFAULT_OVERLOAD = 322,       /* tDEFAULT_OVERLOAD  */
+    tDEFAULTCOLLELEM = 323,        /* tDEFAULTCOLLELEM  */
+    tDEFAULTVALUE = 324,           /* tDEFAULTVALUE  */
+    tDEFAULTVTABLE = 325,          /* tDEFAULTVTABLE  */
+    tDEPRECATED = 326,             /* tDEPRECATED  */
+    tDISABLECONSISTENCYCHECK = 327, /* tDISABLECONSISTENCYCHECK  */
+    tDISPLAYBIND = 328,            /* tDISPLAYBIND  */
+    tDISPINTERFACE = 329,          /* tDISPINTERFACE  */
+    tDLLNAME = 330,                /* tDLLNAME  */
+    tDONTFREE = 331,               /* tDONTFREE  */
+    tDOUBLE = 332,                 /* tDOUBLE  */
+    tDUAL = 333,                   /* tDUAL  */
+    tENABLEALLOCATE = 334,         /* tENABLEALLOCATE  */
+    tENCODE = 335,                 /* tENCODE  */
+    tENDPOINT = 336,               /* tENDPOINT  */
+    tENTRY = 337,                  /* tENTRY  */
+    tENUM = 338,                   /* tENUM  */
+    tERRORSTATUST = 339,           /* tERRORSTATUST  */
+    tEVENTADD = 340,               /* tEVENTADD  */
+    tEVENTREMOVE = 341,            /* tEVENTREMOVE  */
+    tEXCLUSIVETO = 342,            /* tEXCLUSIVETO  */
+    tEXPLICITHANDLE = 343,         /* tEXPLICITHANDLE  */
+    tEXTERN = 344,                 /* tEXTERN  */
+    tFALSE = 345,                  /* tFALSE  */
+    tFAULTSTATUS = 346,            /* tFAULTSTATUS  */
+    tFLAGS = 347,                  /* tFLAGS  */
+    tFLOAT = 348,                  /* tFLOAT  */
+    tFORCEALLOCATE = 349,          /* tFORCEALLOCATE  */
+    tHANDLE = 350,                 /* tHANDLE  */
+    tHANDLET = 351,                /* tHANDLET  */
+    tHELPCONTEXT = 352,            /* tHELPCONTEXT  */
+    tHELPFILE = 353,               /* tHELPFILE  */
+    tHELPSTRING = 354,             /* tHELPSTRING  */
+    tHELPSTRINGCONTEXT = 355,      /* tHELPSTRINGCONTEXT  */
+    tHELPSTRINGDLL = 356,          /* tHELPSTRINGDLL  */
+    tHIDDEN = 357,                 /* tHIDDEN  */
+    tHYPER = 358,                  /* tHYPER  */
+    tID = 359,                     /* tID  */
+    tIDEMPOTENT = 360,             /* tIDEMPOTENT  */
+    tIGNORE = 361,                 /* tIGNORE  */
+    tIIDIS = 362,                  /* tIIDIS  */
+    tIMMEDIATEBIND = 363,          /* tIMMEDIATEBIND  */
+    tIMPLICITHANDLE = 364,         /* tIMPLICITHANDLE  */
+    tIMPORT = 365,                 /* tIMPORT  */
+    tIMPORTLIB = 366,              /* tIMPORTLIB  */
+    tIN = 367,                     /* tIN  */
+    tIN_LINE = 368,                /* tIN_LINE  */
+    tINLINE = 369,                 /* tINLINE  */
+    tINPUTSYNC = 370,              /* tINPUTSYNC  */
+    tINT = 371,                    /* tINT  */
+    tINT32 = 372,                  /* tINT32  */
+    tINT3264 = 373,                /* tINT3264  */
+    tINT64 = 374,                  /* tINT64  */
+    tINTERFACE = 375,              /* tINTERFACE  */
+    tLCID = 376,                   /* tLCID  */
+    tLENGTHIS = 377,               /* tLENGTHIS  */
+    tLIBRARY = 378,                /* tLIBRARY  */
+    tLICENSED = 379,               /* tLICENSED  */
+    tLOCAL = 380,                  /* tLOCAL  */
+    tLONG = 381,                   /* tLONG  */
+    tMARSHALINGBEHAVIOR = 382,     /* tMARSHALINGBEHAVIOR  */
+    tMAYBE = 383,                  /* tMAYBE  */
+    tMESSAGE = 384,                /* tMESSAGE  */
+    tMETHODS = 385,                /* tMETHODS  */
+    tMODULE = 386,                 /* tMODULE  */
+    tMTA = 387,                    /* tMTA  */
+    tNAMESPACE = 388,              /* tNAMESPACE  */
+    tNOCODE = 389,                 /* tNOCODE  */
+    tNONBROWSABLE = 390,           /* tNONBROWSABLE  */
+    tNONCREATABLE = 391,           /* tNONCREATABLE  */
+    tNONE = 392,                   /* tNONE  */
+    tNONEXTENSIBLE = 393,          /* tNONEXTENSIBLE  */
+    tNOTIFY = 394,                 /* tNOTIFY  */
+    tNOTIFYFLAG = 395,             /* tNOTIFYFLAG  */
+    tNULL = 396,                   /* tNULL  */
+    tOBJECT = 397,                 /* tOBJECT  */
+    tODL = 398,                    /* tODL  */
+    tOLEAUTOMATION = 399,          /* tOLEAUTOMATION  */
+    tOPTIMIZE = 400,               /* tOPTIMIZE  */
+    tOPTIONAL = 401,               /* tOPTIONAL  */
+    tOUT = 402,                    /* tOUT  */
+    tOVERLOAD = 403,               /* tOVERLOAD  */
+    tPARTIALIGNORE = 404,          /* tPARTIALIGNORE  */
+    tPOINTERDEFAULT = 405,         /* tPOINTERDEFAULT  */
+    tPRAGMA_WARNING = 406,         /* tPRAGMA_WARNING  */
+    tPROGID = 407,                 /* tPROGID  */
+    tPROPERTIES = 408,             /* tPROPERTIES  */
+    tPROPGET = 409,                /* tPROPGET  */
+    tPROPPUT = 410,                /* tPROPPUT  */
+    tPROPPUTREF = 411,             /* tPROPPUTREF  */
+    tPROTECTED = 412,              /* tPROTECTED  */
+    tPROXY = 413,                  /* tPROXY  */
+    tPTR = 414,                    /* tPTR  */
+    tPUBLIC = 415,                 /* tPUBLIC  */
+    tRANGE = 416,                  /* tRANGE  */
+    tREADONLY = 417,               /* tREADONLY  */
+    tREF = 418,                    /* tREF  */
+    tREGISTER = 419,               /* tREGISTER  */
+    tREPRESENTAS = 420,            /* tREPRESENTAS  */
+    tREQUESTEDIT = 421,            /* tREQUESTEDIT  */
+    tREQUIRES = 422,               /* tREQUIRES  */
+    tRESTRICTED = 423,             /* tRESTRICTED  */
+    tRETVAL = 424,                 /* tRETVAL  */
+    tRUNTIMECLASS = 425,           /* tRUNTIMECLASS  */
+    tSAFEARRAY = 426,              /* tSAFEARRAY  */
+    tSHORT = 427,                  /* tSHORT  */
+    tSIGNED = 428,                 /* tSIGNED  */
+    tSINGLENODE = 429,             /* tSINGLENODE  */
+    tSIZEIS = 430,                 /* tSIZEIS  */
+    tSIZEOF = 431,                 /* tSIZEOF  */
+    tSMALL = 432,                  /* tSMALL  */
+    tSOURCE = 433,                 /* tSOURCE  */
+    tSTANDARD = 434,               /* tSTANDARD  */
+    tSTATIC = 435,                 /* tSTATIC  */
+    tSTRICTCONTEXTHANDLE = 436,    /* tSTRICTCONTEXTHANDLE  */
+    tSTRING = 437,                 /* tSTRING  */
+    tSTRUCT = 438,                 /* tSTRUCT  */
+    tSWITCH = 439,                 /* tSWITCH  */
+    tSWITCHIS = 440,               /* tSWITCHIS  */
+    tSWITCHTYPE = 441,             /* tSWITCHTYPE  */
+    tTHREADING = 442,              /* tTHREADING  */
+    tTRANSMITAS = 443,             /* tTRANSMITAS  */
+    tTRUE = 444,                   /* tTRUE  */
+    tTYPEDEF = 445,                /* tTYPEDEF  */
+    tUIDEFAULT = 446,              /* tUIDEFAULT  */
+    tUNION = 447,                  /* tUNION  */
+    tUNIQUE = 448,                 /* tUNIQUE  */
+    tUNSIGNED = 449,               /* tUNSIGNED  */
+    tUSESGETLASTERROR = 450,       /* tUSESGETLASTERROR  */
+    tUSERMARSHAL = 451,            /* tUSERMARSHAL  */
+    tUUID = 452,                   /* tUUID  */
+    tV1ENUM = 453,                 /* tV1ENUM  */
+    tVARARG = 454,                 /* tVARARG  */
+    tVERSION = 455,                /* tVERSION  */
+    tVIPROGID = 456,               /* tVIPROGID  */
+    tVOID = 457,                   /* tVOID  */
+    tWCHAR = 458,                  /* tWCHAR  */
+    tWIREMARSHAL = 459,            /* tWIREMARSHAL  */
+    tAPARTMENT = 460,              /* tAPARTMENT  */
+    tNEUTRAL = 461,                /* tNEUTRAL  */
+    tSINGLE = 462,                 /* tSINGLE  */
+    tFREE = 463,                   /* tFREE  */
+    tBOTH = 464,                   /* tBOTH  */
+    CAST = 465,                    /* CAST  */
+    PPTR = 466,                    /* PPTR  */
+    POS = 467,                     /* POS  */
+    NEG = 468,                     /* NEG  */
+    ADDRESSOF = 469                /* ADDRESSOF  */
   };
   typedef enum parser_tokentype parser_token_kind_t;
 #endif
@@ -488,7 +489,7 @@
 	enum function_specifier function_specifier;
 	struct namespace *namespace;
 
-#line 492 "tools/widl/parser.tab.c"
+#line 493 "tools/widl/parser.tab.c"
 
 };
 typedef union PARSER_STYPE PARSER_STYPE;
@@ -528,7 +529,7 @@
              else init_location( &(cur), &YYRHSLOC( rhs, 0 ), NULL ); } while(0)
 
 
-#line 532 "tools/widl/parser.tab.c"
+#line 533 "tools/widl/parser.tab.c"
 
 
 /* Symbol kind.  */
@@ -602,324 +603,325 @@
   YYSYMBOL_tDEFAULT = 64,                  /* tDEFAULT  */
   YYSYMBOL_tDEFAULTBIND = 65,              /* tDEFAULTBIND  */
   YYSYMBOL_tDELEGATE = 66,                 /* tDELEGATE  */
-  YYSYMBOL_tDEFAULTCOLLELEM = 67,          /* tDEFAULTCOLLELEM  */
-  YYSYMBOL_tDEFAULTVALUE = 68,             /* tDEFAULTVALUE  */
-  YYSYMBOL_tDEFAULTVTABLE = 69,            /* tDEFAULTVTABLE  */
-  YYSYMBOL_tDEPRECATED = 70,               /* tDEPRECATED  */
-  YYSYMBOL_tDISABLECONSISTENCYCHECK = 71,  /* tDISABLECONSISTENCYCHECK  */
-  YYSYMBOL_tDISPLAYBIND = 72,              /* tDISPLAYBIND  */
-  YYSYMBOL_tDISPINTERFACE = 73,            /* tDISPINTERFACE  */
-  YYSYMBOL_tDLLNAME = 74,                  /* tDLLNAME  */
-  YYSYMBOL_tDONTFREE = 75,                 /* tDONTFREE  */
-  YYSYMBOL_tDOUBLE = 76,                   /* tDOUBLE  */
-  YYSYMBOL_tDUAL = 77,                     /* tDUAL  */
-  YYSYMBOL_tENABLEALLOCATE = 78,           /* tENABLEALLOCATE  */
-  YYSYMBOL_tENCODE = 79,                   /* tENCODE  */
-  YYSYMBOL_tENDPOINT = 80,                 /* tENDPOINT  */
-  YYSYMBOL_tENTRY = 81,                    /* tENTRY  */
-  YYSYMBOL_tENUM = 82,                     /* tENUM  */
-  YYSYMBOL_tERRORSTATUST = 83,             /* tERRORSTATUST  */
-  YYSYMBOL_tEVENTADD = 84,                 /* tEVENTADD  */
-  YYSYMBOL_tEVENTREMOVE = 85,              /* tEVENTREMOVE  */
-  YYSYMBOL_tEXCLUSIVETO = 86,              /* tEXCLUSIVETO  */
-  YYSYMBOL_tEXPLICITHANDLE = 87,           /* tEXPLICITHANDLE  */
-  YYSYMBOL_tEXTERN = 88,                   /* tEXTERN  */
-  YYSYMBOL_tFALSE = 89,                    /* tFALSE  */
-  YYSYMBOL_tFAULTSTATUS = 90,              /* tFAULTSTATUS  */
-  YYSYMBOL_tFLAGS = 91,                    /* tFLAGS  */
-  YYSYMBOL_tFLOAT = 92,                    /* tFLOAT  */
-  YYSYMBOL_tFORCEALLOCATE = 93,            /* tFORCEALLOCATE  */
-  YYSYMBOL_tHANDLE = 94,                   /* tHANDLE  */
-  YYSYMBOL_tHANDLET = 95,                  /* tHANDLET  */
-  YYSYMBOL_tHELPCONTEXT = 96,              /* tHELPCONTEXT  */
-  YYSYMBOL_tHELPFILE = 97,                 /* tHELPFILE  */
-  YYSYMBOL_tHELPSTRING = 98,               /* tHELPSTRING  */
-  YYSYMBOL_tHELPSTRINGCONTEXT = 99,        /* tHELPSTRINGCONTEXT  */
-  YYSYMBOL_tHELPSTRINGDLL = 100,           /* tHELPSTRINGDLL  */
-  YYSYMBOL_tHIDDEN = 101,                  /* tHIDDEN  */
-  YYSYMBOL_tHYPER = 102,                   /* tHYPER  */
-  YYSYMBOL_tID = 103,                      /* tID  */
-  YYSYMBOL_tIDEMPOTENT = 104,              /* tIDEMPOTENT  */
-  YYSYMBOL_tIGNORE = 105,                  /* tIGNORE  */
-  YYSYMBOL_tIIDIS = 106,                   /* tIIDIS  */
-  YYSYMBOL_tIMMEDIATEBIND = 107,           /* tIMMEDIATEBIND  */
-  YYSYMBOL_tIMPLICITHANDLE = 108,          /* tIMPLICITHANDLE  */
-  YYSYMBOL_tIMPORT = 109,                  /* tIMPORT  */
-  YYSYMBOL_tIMPORTLIB = 110,               /* tIMPORTLIB  */
-  YYSYMBOL_tIN = 111,                      /* tIN  */
-  YYSYMBOL_tIN_LINE = 112,                 /* tIN_LINE  */
-  YYSYMBOL_tINLINE = 113,                  /* tINLINE  */
-  YYSYMBOL_tINPUTSYNC = 114,               /* tINPUTSYNC  */
-  YYSYMBOL_tINT = 115,                     /* tINT  */
-  YYSYMBOL_tINT32 = 116,                   /* tINT32  */
-  YYSYMBOL_tINT3264 = 117,                 /* tINT3264  */
-  YYSYMBOL_tINT64 = 118,                   /* tINT64  */
-  YYSYMBOL_tINTERFACE = 119,               /* tINTERFACE  */
-  YYSYMBOL_tLCID = 120,                    /* tLCID  */
-  YYSYMBOL_tLENGTHIS = 121,                /* tLENGTHIS  */
-  YYSYMBOL_tLIBRARY = 122,                 /* tLIBRARY  */
-  YYSYMBOL_tLICENSED = 123,                /* tLICENSED  */
-  YYSYMBOL_tLOCAL = 124,                   /* tLOCAL  */
-  YYSYMBOL_tLONG = 125,                    /* tLONG  */
-  YYSYMBOL_tMARSHALINGBEHAVIOR = 126,      /* tMARSHALINGBEHAVIOR  */
-  YYSYMBOL_tMAYBE = 127,                   /* tMAYBE  */
-  YYSYMBOL_tMESSAGE = 128,                 /* tMESSAGE  */
-  YYSYMBOL_tMETHODS = 129,                 /* tMETHODS  */
-  YYSYMBOL_tMODULE = 130,                  /* tMODULE  */
-  YYSYMBOL_tMTA = 131,                     /* tMTA  */
-  YYSYMBOL_tNAMESPACE = 132,               /* tNAMESPACE  */
-  YYSYMBOL_tNOCODE = 133,                  /* tNOCODE  */
-  YYSYMBOL_tNONBROWSABLE = 134,            /* tNONBROWSABLE  */
-  YYSYMBOL_tNONCREATABLE = 135,            /* tNONCREATABLE  */
-  YYSYMBOL_tNONE = 136,                    /* tNONE  */
-  YYSYMBOL_tNONEXTENSIBLE = 137,           /* tNONEXTENSIBLE  */
-  YYSYMBOL_tNOTIFY = 138,                  /* tNOTIFY  */
-  YYSYMBOL_tNOTIFYFLAG = 139,              /* tNOTIFYFLAG  */
-  YYSYMBOL_tNULL = 140,                    /* tNULL  */
-  YYSYMBOL_tOBJECT = 141,                  /* tOBJECT  */
-  YYSYMBOL_tODL = 142,                     /* tODL  */
-  YYSYMBOL_tOLEAUTOMATION = 143,           /* tOLEAUTOMATION  */
-  YYSYMBOL_tOPTIMIZE = 144,                /* tOPTIMIZE  */
-  YYSYMBOL_tOPTIONAL = 145,                /* tOPTIONAL  */
-  YYSYMBOL_tOUT = 146,                     /* tOUT  */
-  YYSYMBOL_tOVERLOAD = 147,                /* tOVERLOAD  */
-  YYSYMBOL_tPARTIALIGNORE = 148,           /* tPARTIALIGNORE  */
-  YYSYMBOL_tPOINTERDEFAULT = 149,          /* tPOINTERDEFAULT  */
-  YYSYMBOL_tPRAGMA_WARNING = 150,          /* tPRAGMA_WARNING  */
-  YYSYMBOL_tPROGID = 151,                  /* tPROGID  */
-  YYSYMBOL_tPROPERTIES = 152,              /* tPROPERTIES  */
-  YYSYMBOL_tPROPGET = 153,                 /* tPROPGET  */
-  YYSYMBOL_tPROPPUT = 154,                 /* tPROPPUT  */
-  YYSYMBOL_tPROPPUTREF = 155,              /* tPROPPUTREF  */
-  YYSYMBOL_tPROTECTED = 156,               /* tPROTECTED  */
-  YYSYMBOL_tPROXY = 157,                   /* tPROXY  */
-  YYSYMBOL_tPTR = 158,                     /* tPTR  */
-  YYSYMBOL_tPUBLIC = 159,                  /* tPUBLIC  */
-  YYSYMBOL_tRANGE = 160,                   /* tRANGE  */
-  YYSYMBOL_tREADONLY = 161,                /* tREADONLY  */
-  YYSYMBOL_tREF = 162,                     /* tREF  */
-  YYSYMBOL_tREGISTER = 163,                /* tREGISTER  */
-  YYSYMBOL_tREPRESENTAS = 164,             /* tREPRESENTAS  */
-  YYSYMBOL_tREQUESTEDIT = 165,             /* tREQUESTEDIT  */
-  YYSYMBOL_tREQUIRES = 166,                /* tREQUIRES  */
-  YYSYMBOL_tRESTRICTED = 167,              /* tRESTRICTED  */
-  YYSYMBOL_tRETVAL = 168,                  /* tRETVAL  */
-  YYSYMBOL_tRUNTIMECLASS = 169,            /* tRUNTIMECLASS  */
-  YYSYMBOL_tSAFEARRAY = 170,               /* tSAFEARRAY  */
-  YYSYMBOL_tSHORT = 171,                   /* tSHORT  */
-  YYSYMBOL_tSIGNED = 172,                  /* tSIGNED  */
-  YYSYMBOL_tSINGLENODE = 173,              /* tSINGLENODE  */
-  YYSYMBOL_tSIZEIS = 174,                  /* tSIZEIS  */
-  YYSYMBOL_tSIZEOF = 175,                  /* tSIZEOF  */
-  YYSYMBOL_tSMALL = 176,                   /* tSMALL  */
-  YYSYMBOL_tSOURCE = 177,                  /* tSOURCE  */
-  YYSYMBOL_tSTANDARD = 178,                /* tSTANDARD  */
-  YYSYMBOL_tSTATIC = 179,                  /* tSTATIC  */
-  YYSYMBOL_tSTRICTCONTEXTHANDLE = 180,     /* tSTRICTCONTEXTHANDLE  */
-  YYSYMBOL_tSTRING = 181,                  /* tSTRING  */
-  YYSYMBOL_tSTRUCT = 182,                  /* tSTRUCT  */
-  YYSYMBOL_tSWITCH = 183,                  /* tSWITCH  */
-  YYSYMBOL_tSWITCHIS = 184,                /* tSWITCHIS  */
-  YYSYMBOL_tSWITCHTYPE = 185,              /* tSWITCHTYPE  */
-  YYSYMBOL_tTHREADING = 186,               /* tTHREADING  */
-  YYSYMBOL_tTRANSMITAS = 187,              /* tTRANSMITAS  */
-  YYSYMBOL_tTRUE = 188,                    /* tTRUE  */
-  YYSYMBOL_tTYPEDEF = 189,                 /* tTYPEDEF  */
-  YYSYMBOL_tUIDEFAULT = 190,               /* tUIDEFAULT  */
-  YYSYMBOL_tUNION = 191,                   /* tUNION  */
-  YYSYMBOL_tUNIQUE = 192,                  /* tUNIQUE  */
-  YYSYMBOL_tUNSIGNED = 193,                /* tUNSIGNED  */
-  YYSYMBOL_tUSESGETLASTERROR = 194,        /* tUSESGETLASTERROR  */
-  YYSYMBOL_tUSERMARSHAL = 195,             /* tUSERMARSHAL  */
-  YYSYMBOL_tUUID = 196,                    /* tUUID  */
-  YYSYMBOL_tV1ENUM = 197,                  /* tV1ENUM  */
-  YYSYMBOL_tVARARG = 198,                  /* tVARARG  */
-  YYSYMBOL_tVERSION = 199,                 /* tVERSION  */
-  YYSYMBOL_tVIPROGID = 200,                /* tVIPROGID  */
-  YYSYMBOL_tVOID = 201,                    /* tVOID  */
-  YYSYMBOL_tWCHAR = 202,                   /* tWCHAR  */
-  YYSYMBOL_tWIREMARSHAL = 203,             /* tWIREMARSHAL  */
-  YYSYMBOL_tAPARTMENT = 204,               /* tAPARTMENT  */
-  YYSYMBOL_tNEUTRAL = 205,                 /* tNEUTRAL  */
-  YYSYMBOL_tSINGLE = 206,                  /* tSINGLE  */
-  YYSYMBOL_tFREE = 207,                    /* tFREE  */
-  YYSYMBOL_tBOTH = 208,                    /* tBOTH  */
-  YYSYMBOL_209_ = 209,                     /* ','  */
-  YYSYMBOL_210_ = 210,                     /* '?'  */
-  YYSYMBOL_211_ = 211,                     /* ':'  */
-  YYSYMBOL_212_ = 212,                     /* '|'  */
-  YYSYMBOL_213_ = 213,                     /* '^'  */
-  YYSYMBOL_214_ = 214,                     /* '&'  */
-  YYSYMBOL_215_ = 215,                     /* '<'  */
-  YYSYMBOL_216_ = 216,                     /* '>'  */
-  YYSYMBOL_217_ = 217,                     /* '-'  */
-  YYSYMBOL_218_ = 218,                     /* '+'  */
-  YYSYMBOL_219_ = 219,                     /* '*'  */
-  YYSYMBOL_220_ = 220,                     /* '/'  */
-  YYSYMBOL_221_ = 221,                     /* '%'  */
-  YYSYMBOL_222_ = 222,                     /* '!'  */
-  YYSYMBOL_223_ = 223,                     /* '~'  */
-  YYSYMBOL_CAST = 224,                     /* CAST  */
-  YYSYMBOL_PPTR = 225,                     /* PPTR  */
-  YYSYMBOL_POS = 226,                      /* POS  */
-  YYSYMBOL_NEG = 227,                      /* NEG  */
-  YYSYMBOL_ADDRESSOF = 228,                /* ADDRESSOF  */
-  YYSYMBOL_229_ = 229,                     /* '.'  */
-  YYSYMBOL_230_ = 230,                     /* '['  */
-  YYSYMBOL_231_ = 231,                     /* ']'  */
-  YYSYMBOL_232_ = 232,                     /* ';'  */
-  YYSYMBOL_233_ = 233,                     /* '{'  */
-  YYSYMBOL_234_ = 234,                     /* '}'  */
-  YYSYMBOL_235_ = 235,                     /* '('  */
-  YYSYMBOL_236_ = 236,                     /* ')'  */
-  YYSYMBOL_237_ = 237,                     /* '='  */
-  YYSYMBOL_YYACCEPT = 238,                 /* $accept  */
-  YYSYMBOL_input = 239,                    /* input  */
-  YYSYMBOL_m_acf = 240,                    /* m_acf  */
-  YYSYMBOL_decl_statements = 241,          /* decl_statements  */
-  YYSYMBOL_decl_block = 242,               /* decl_block  */
-  YYSYMBOL_imp_decl_statements = 243,      /* imp_decl_statements  */
-  YYSYMBOL_imp_decl_block = 244,           /* imp_decl_block  */
-  YYSYMBOL_gbl_statements = 245,           /* gbl_statements  */
-  YYSYMBOL_246_1 = 246,                    /* $@1  */
-  YYSYMBOL_imp_statements = 247,           /* imp_statements  */
-  YYSYMBOL_248_2 = 248,                    /* $@2  */
-  YYSYMBOL_int_statements = 249,           /* int_statements  */
-  YYSYMBOL_semicolon_opt = 250,            /* semicolon_opt  */
-  YYSYMBOL_statement = 251,                /* statement  */
-  YYSYMBOL_pragma_warning = 252,           /* pragma_warning  */
-  YYSYMBOL_warnings = 253,                 /* warnings  */
-  YYSYMBOL_typedecl = 254,                 /* typedecl  */
-  YYSYMBOL_cppquote = 255,                 /* cppquote  */
-  YYSYMBOL_import_start = 256,             /* import_start  */
-  YYSYMBOL_import = 257,                   /* import  */
-  YYSYMBOL_importlib = 258,                /* importlib  */
-  YYSYMBOL_libraryhdr = 259,               /* libraryhdr  */
-  YYSYMBOL_library_start = 260,            /* library_start  */
-  YYSYMBOL_librarydef = 261,               /* librarydef  */
-  YYSYMBOL_m_args = 262,                   /* m_args  */
-  YYSYMBOL_arg_list = 263,                 /* arg_list  */
-  YYSYMBOL_args = 264,                     /* args  */
-  YYSYMBOL_arg = 265,                      /* arg  */
-  YYSYMBOL_array = 266,                    /* array  */
-  YYSYMBOL_m_attributes = 267,             /* m_attributes  */
-  YYSYMBOL_attributes = 268,               /* attributes  */
-  YYSYMBOL_attrib_list = 269,              /* attrib_list  */
-  YYSYMBOL_str_list = 270,                 /* str_list  */
-  YYSYMBOL_marshaling_behavior = 271,      /* marshaling_behavior  */
-  YYSYMBOL_contract_ver = 272,             /* contract_ver  */
-  YYSYMBOL_contract_req = 273,             /* contract_req  */
-  YYSYMBOL_static_attr = 274,              /* static_attr  */
-  YYSYMBOL_activatable_attr = 275,         /* activatable_attr  */
-  YYSYMBOL_access_attr = 276,              /* access_attr  */
-  YYSYMBOL_composable_attr = 277,          /* composable_attr  */
-  YYSYMBOL_deprecated_attr = 278,          /* deprecated_attr  */
-  YYSYMBOL_attribute = 279,                /* attribute  */
-  YYSYMBOL_callconv = 280,                 /* callconv  */
-  YYSYMBOL_cases = 281,                    /* cases  */
-  YYSYMBOL_case = 282,                     /* case  */
-  YYSYMBOL_enums = 283,                    /* enums  */
-  YYSYMBOL_enum_list = 284,                /* enum_list  */
-  YYSYMBOL_enum_member = 285,              /* enum_member  */
-  YYSYMBOL_enum = 286,                     /* enum  */
-  YYSYMBOL_enumdef = 287,                  /* enumdef  */
-  YYSYMBOL_m_exprs = 288,                  /* m_exprs  */
-  YYSYMBOL_m_expr = 289,                   /* m_expr  */
-  YYSYMBOL_expr = 290,                     /* expr  */
-  YYSYMBOL_expr_list_int_const = 291,      /* expr_list_int_const  */
-  YYSYMBOL_expr_int_const = 292,           /* expr_int_const  */
-  YYSYMBOL_expr_const = 293,               /* expr_const  */
-  YYSYMBOL_fields = 294,                   /* fields  */
-  YYSYMBOL_field = 295,                    /* field  */
-  YYSYMBOL_ne_union_field = 296,           /* ne_union_field  */
-  YYSYMBOL_ne_union_fields = 297,          /* ne_union_fields  */
-  YYSYMBOL_union_field = 298,              /* union_field  */
-  YYSYMBOL_s_field = 299,                  /* s_field  */
-  YYSYMBOL_funcdef = 300,                  /* funcdef  */
-  YYSYMBOL_declaration = 301,              /* declaration  */
-  YYSYMBOL_m_ident = 302,                  /* m_ident  */
-  YYSYMBOL_m_typename = 303,               /* m_typename  */
-  YYSYMBOL_typename = 304,                 /* typename  */
-  YYSYMBOL_ident = 305,                    /* ident  */
-  YYSYMBOL_base_type = 306,                /* base_type  */
-  YYSYMBOL_m_int = 307,                    /* m_int  */
-  YYSYMBOL_int_std = 308,                  /* int_std  */
-  YYSYMBOL_namespace_pfx = 309,            /* namespace_pfx  */
-  YYSYMBOL_qualified_type = 310,           /* qualified_type  */
-  YYSYMBOL_parameterized_type = 311,       /* parameterized_type  */
-  YYSYMBOL_parameterized_type_arg = 312,   /* parameterized_type_arg  */
-  YYSYMBOL_parameterized_type_args = 313,  /* parameterized_type_args  */
-  YYSYMBOL_coclass = 314,                  /* coclass  */
-  YYSYMBOL_coclassdef = 315,               /* coclassdef  */
-  YYSYMBOL_runtimeclass = 316,             /* runtimeclass  */
-  YYSYMBOL_runtimeclass_def = 317,         /* runtimeclass_def  */
-  YYSYMBOL_apicontract = 318,              /* apicontract  */
-  YYSYMBOL_apicontract_def = 319,          /* apicontract_def  */
-  YYSYMBOL_namespacedef = 320,             /* namespacedef  */
-  YYSYMBOL_class_interfaces = 321,         /* class_interfaces  */
-  YYSYMBOL_class_interface = 322,          /* class_interface  */
-  YYSYMBOL_dispinterface = 323,            /* dispinterface  */
-  YYSYMBOL_dispattributes = 324,           /* dispattributes  */
-  YYSYMBOL_dispint_props = 325,            /* dispint_props  */
-  YYSYMBOL_dispint_meths = 326,            /* dispint_meths  */
-  YYSYMBOL_dispinterfacedef = 327,         /* dispinterfacedef  */
-  YYSYMBOL_inherit = 328,                  /* inherit  */
-  YYSYMBOL_type_parameter = 329,           /* type_parameter  */
-  YYSYMBOL_type_parameters = 330,          /* type_parameters  */
-  YYSYMBOL_interface = 331,                /* interface  */
-  YYSYMBOL_332_3 = 332,                    /* $@3  */
-  YYSYMBOL_333_4 = 333,                    /* $@4  */
-  YYSYMBOL_delegatedef = 334,              /* delegatedef  */
-  YYSYMBOL_335_5 = 335,                    /* $@5  */
-  YYSYMBOL_336_6 = 336,                    /* $@6  */
-  YYSYMBOL_required_types = 337,           /* required_types  */
-  YYSYMBOL_requires = 338,                 /* requires  */
-  YYSYMBOL_interfacedef = 339,             /* interfacedef  */
-  YYSYMBOL_340_7 = 340,                    /* $@7  */
-  YYSYMBOL_interfaceref = 341,             /* interfaceref  */
-  YYSYMBOL_dispinterfaceref = 342,         /* dispinterfaceref  */
-  YYSYMBOL_module = 343,                   /* module  */
-  YYSYMBOL_moduledef = 344,                /* moduledef  */
-  YYSYMBOL_storage_cls_spec = 345,         /* storage_cls_spec  */
-  YYSYMBOL_function_specifier = 346,       /* function_specifier  */
-  YYSYMBOL_type_qualifier = 347,           /* type_qualifier  */
-  YYSYMBOL_m_type_qual_list = 348,         /* m_type_qual_list  */
-  YYSYMBOL_decl_spec = 349,                /* decl_spec  */
-  YYSYMBOL_unqualified_decl_spec = 350,    /* unqualified_decl_spec  */
-  YYSYMBOL_m_decl_spec_no_type = 351,      /* m_decl_spec_no_type  */
-  YYSYMBOL_decl_spec_no_type = 352,        /* decl_spec_no_type  */
-  YYSYMBOL_declarator = 353,               /* declarator  */
-  YYSYMBOL_direct_declarator = 354,        /* direct_declarator  */
-  YYSYMBOL_abstract_declarator = 355,      /* abstract_declarator  */
-  YYSYMBOL_abstract_declarator_no_direct = 356, /* abstract_declarator_no_direct  */
-  YYSYMBOL_m_abstract_declarator = 357,    /* m_abstract_declarator  */
-  YYSYMBOL_abstract_direct_declarator = 358, /* abstract_direct_declarator  */
-  YYSYMBOL_any_declarator = 359,           /* any_declarator  */
-  YYSYMBOL_any_declarator_no_direct = 360, /* any_declarator_no_direct  */
-  YYSYMBOL_m_any_declarator = 361,         /* m_any_declarator  */
-  YYSYMBOL_any_direct_declarator = 362,    /* any_direct_declarator  */
-  YYSYMBOL_declarator_list = 363,          /* declarator_list  */
-  YYSYMBOL_m_bitfield = 364,               /* m_bitfield  */
-  YYSYMBOL_struct_declarator = 365,        /* struct_declarator  */
-  YYSYMBOL_struct_declarator_list = 366,   /* struct_declarator_list  */
-  YYSYMBOL_init_declarator = 367,          /* init_declarator  */
-  YYSYMBOL_threading_type = 368,           /* threading_type  */
-  YYSYMBOL_pointer_type = 369,             /* pointer_type  */
-  YYSYMBOL_structdef = 370,                /* structdef  */
-  YYSYMBOL_unqualified_type = 371,         /* unqualified_type  */
-  YYSYMBOL_type = 372,                     /* type  */
-  YYSYMBOL_typedef = 373,                  /* typedef  */
-  YYSYMBOL_uniondef = 374,                 /* uniondef  */
-  YYSYMBOL_version = 375,                  /* version  */
-  YYSYMBOL_acf_statements = 376,           /* acf_statements  */
-  YYSYMBOL_acf_int_statements = 377,       /* acf_int_statements  */
-  YYSYMBOL_acf_int_statement = 378,        /* acf_int_statement  */
-  YYSYMBOL_acf_interface = 379,            /* acf_interface  */
-  YYSYMBOL_acf_attributes = 380,           /* acf_attributes  */
-  YYSYMBOL_acf_attribute_list = 381,       /* acf_attribute_list  */
-  YYSYMBOL_acf_attribute = 382,            /* acf_attribute  */
-  YYSYMBOL_allocate_option_list = 383,     /* allocate_option_list  */
-  YYSYMBOL_allocate_option = 384           /* allocate_option  */
+  YYSYMBOL_tDEFAULT_OVERLOAD = 67,         /* tDEFAULT_OVERLOAD  */
+  YYSYMBOL_tDEFAULTCOLLELEM = 68,          /* tDEFAULTCOLLELEM  */
+  YYSYMBOL_tDEFAULTVALUE = 69,             /* tDEFAULTVALUE  */
+  YYSYMBOL_tDEFAULTVTABLE = 70,            /* tDEFAULTVTABLE  */
+  YYSYMBOL_tDEPRECATED = 71,               /* tDEPRECATED  */
+  YYSYMBOL_tDISABLECONSISTENCYCHECK = 72,  /* tDISABLECONSISTENCYCHECK  */
+  YYSYMBOL_tDISPLAYBIND = 73,              /* tDISPLAYBIND  */
+  YYSYMBOL_tDISPINTERFACE = 74,            /* tDISPINTERFACE  */
+  YYSYMBOL_tDLLNAME = 75,                  /* tDLLNAME  */
+  YYSYMBOL_tDONTFREE = 76,                 /* tDONTFREE  */
+  YYSYMBOL_tDOUBLE = 77,                   /* tDOUBLE  */
+  YYSYMBOL_tDUAL = 78,                     /* tDUAL  */
+  YYSYMBOL_tENABLEALLOCATE = 79,           /* tENABLEALLOCATE  */
+  YYSYMBOL_tENCODE = 80,                   /* tENCODE  */
+  YYSYMBOL_tENDPOINT = 81,                 /* tENDPOINT  */
+  YYSYMBOL_tENTRY = 82,                    /* tENTRY  */
+  YYSYMBOL_tENUM = 83,                     /* tENUM  */
+  YYSYMBOL_tERRORSTATUST = 84,             /* tERRORSTATUST  */
+  YYSYMBOL_tEVENTADD = 85,                 /* tEVENTADD  */
+  YYSYMBOL_tEVENTREMOVE = 86,              /* tEVENTREMOVE  */
+  YYSYMBOL_tEXCLUSIVETO = 87,              /* tEXCLUSIVETO  */
+  YYSYMBOL_tEXPLICITHANDLE = 88,           /* tEXPLICITHANDLE  */
+  YYSYMBOL_tEXTERN = 89,                   /* tEXTERN  */
+  YYSYMBOL_tFALSE = 90,                    /* tFALSE  */
+  YYSYMBOL_tFAULTSTATUS = 91,              /* tFAULTSTATUS  */
+  YYSYMBOL_tFLAGS = 92,                    /* tFLAGS  */
+  YYSYMBOL_tFLOAT = 93,                    /* tFLOAT  */
+  YYSYMBOL_tFORCEALLOCATE = 94,            /* tFORCEALLOCATE  */
+  YYSYMBOL_tHANDLE = 95,                   /* tHANDLE  */
+  YYSYMBOL_tHANDLET = 96,                  /* tHANDLET  */
+  YYSYMBOL_tHELPCONTEXT = 97,              /* tHELPCONTEXT  */
+  YYSYMBOL_tHELPFILE = 98,                 /* tHELPFILE  */
+  YYSYMBOL_tHELPSTRING = 99,               /* tHELPSTRING  */
+  YYSYMBOL_tHELPSTRINGCONTEXT = 100,       /* tHELPSTRINGCONTEXT  */
+  YYSYMBOL_tHELPSTRINGDLL = 101,           /* tHELPSTRINGDLL  */
+  YYSYMBOL_tHIDDEN = 102,                  /* tHIDDEN  */
+  YYSYMBOL_tHYPER = 103,                   /* tHYPER  */
+  YYSYMBOL_tID = 104,                      /* tID  */
+  YYSYMBOL_tIDEMPOTENT = 105,              /* tIDEMPOTENT  */
+  YYSYMBOL_tIGNORE = 106,                  /* tIGNORE  */
+  YYSYMBOL_tIIDIS = 107,                   /* tIIDIS  */
+  YYSYMBOL_tIMMEDIATEBIND = 108,           /* tIMMEDIATEBIND  */
+  YYSYMBOL_tIMPLICITHANDLE = 109,          /* tIMPLICITHANDLE  */
+  YYSYMBOL_tIMPORT = 110,                  /* tIMPORT  */
+  YYSYMBOL_tIMPORTLIB = 111,               /* tIMPORTLIB  */
+  YYSYMBOL_tIN = 112,                      /* tIN  */
+  YYSYMBOL_tIN_LINE = 113,                 /* tIN_LINE  */
+  YYSYMBOL_tINLINE = 114,                  /* tINLINE  */
+  YYSYMBOL_tINPUTSYNC = 115,               /* tINPUTSYNC  */
+  YYSYMBOL_tINT = 116,                     /* tINT  */
+  YYSYMBOL_tINT32 = 117,                   /* tINT32  */
+  YYSYMBOL_tINT3264 = 118,                 /* tINT3264  */
+  YYSYMBOL_tINT64 = 119,                   /* tINT64  */
+  YYSYMBOL_tINTERFACE = 120,               /* tINTERFACE  */
+  YYSYMBOL_tLCID = 121,                    /* tLCID  */
+  YYSYMBOL_tLENGTHIS = 122,                /* tLENGTHIS  */
+  YYSYMBOL_tLIBRARY = 123,                 /* tLIBRARY  */
+  YYSYMBOL_tLICENSED = 124,                /* tLICENSED  */
+  YYSYMBOL_tLOCAL = 125,                   /* tLOCAL  */
+  YYSYMBOL_tLONG = 126,                    /* tLONG  */
+  YYSYMBOL_tMARSHALINGBEHAVIOR = 127,      /* tMARSHALINGBEHAVIOR  */
+  YYSYMBOL_tMAYBE = 128,                   /* tMAYBE  */
+  YYSYMBOL_tMESSAGE = 129,                 /* tMESSAGE  */
+  YYSYMBOL_tMETHODS = 130,                 /* tMETHODS  */
+  YYSYMBOL_tMODULE = 131,                  /* tMODULE  */
+  YYSYMBOL_tMTA = 132,                     /* tMTA  */
+  YYSYMBOL_tNAMESPACE = 133,               /* tNAMESPACE  */
+  YYSYMBOL_tNOCODE = 134,                  /* tNOCODE  */
+  YYSYMBOL_tNONBROWSABLE = 135,            /* tNONBROWSABLE  */
+  YYSYMBOL_tNONCREATABLE = 136,            /* tNONCREATABLE  */
+  YYSYMBOL_tNONE = 137,                    /* tNONE  */
+  YYSYMBOL_tNONEXTENSIBLE = 138,           /* tNONEXTENSIBLE  */
+  YYSYMBOL_tNOTIFY = 139,                  /* tNOTIFY  */
+  YYSYMBOL_tNOTIFYFLAG = 140,              /* tNOTIFYFLAG  */
+  YYSYMBOL_tNULL = 141,                    /* tNULL  */
+  YYSYMBOL_tOBJECT = 142,                  /* tOBJECT  */
+  YYSYMBOL_tODL = 143,                     /* tODL  */
+  YYSYMBOL_tOLEAUTOMATION = 144,           /* tOLEAUTOMATION  */
+  YYSYMBOL_tOPTIMIZE = 145,                /* tOPTIMIZE  */
+  YYSYMBOL_tOPTIONAL = 146,                /* tOPTIONAL  */
+  YYSYMBOL_tOUT = 147,                     /* tOUT  */
+  YYSYMBOL_tOVERLOAD = 148,                /* tOVERLOAD  */
+  YYSYMBOL_tPARTIALIGNORE = 149,           /* tPARTIALIGNORE  */
+  YYSYMBOL_tPOINTERDEFAULT = 150,          /* tPOINTERDEFAULT  */
+  YYSYMBOL_tPRAGMA_WARNING = 151,          /* tPRAGMA_WARNING  */
+  YYSYMBOL_tPROGID = 152,                  /* tPROGID  */
+  YYSYMBOL_tPROPERTIES = 153,              /* tPROPERTIES  */
+  YYSYMBOL_tPROPGET = 154,                 /* tPROPGET  */
+  YYSYMBOL_tPROPPUT = 155,                 /* tPROPPUT  */
+  YYSYMBOL_tPROPPUTREF = 156,              /* tPROPPUTREF  */
+  YYSYMBOL_tPROTECTED = 157,               /* tPROTECTED  */
+  YYSYMBOL_tPROXY = 158,                   /* tPROXY  */
+  YYSYMBOL_tPTR = 159,                     /* tPTR  */
+  YYSYMBOL_tPUBLIC = 160,                  /* tPUBLIC  */
+  YYSYMBOL_tRANGE = 161,                   /* tRANGE  */
+  YYSYMBOL_tREADONLY = 162,                /* tREADONLY  */
+  YYSYMBOL_tREF = 163,                     /* tREF  */
+  YYSYMBOL_tREGISTER = 164,                /* tREGISTER  */
+  YYSYMBOL_tREPRESENTAS = 165,             /* tREPRESENTAS  */
+  YYSYMBOL_tREQUESTEDIT = 166,             /* tREQUESTEDIT  */
+  YYSYMBOL_tREQUIRES = 167,                /* tREQUIRES  */
+  YYSYMBOL_tRESTRICTED = 168,              /* tRESTRICTED  */
+  YYSYMBOL_tRETVAL = 169,                  /* tRETVAL  */
+  YYSYMBOL_tRUNTIMECLASS = 170,            /* tRUNTIMECLASS  */
+  YYSYMBOL_tSAFEARRAY = 171,               /* tSAFEARRAY  */
+  YYSYMBOL_tSHORT = 172,                   /* tSHORT  */
+  YYSYMBOL_tSIGNED = 173,                  /* tSIGNED  */
+  YYSYMBOL_tSINGLENODE = 174,              /* tSINGLENODE  */
+  YYSYMBOL_tSIZEIS = 175,                  /* tSIZEIS  */
+  YYSYMBOL_tSIZEOF = 176,                  /* tSIZEOF  */
+  YYSYMBOL_tSMALL = 177,                   /* tSMALL  */
+  YYSYMBOL_tSOURCE = 178,                  /* tSOURCE  */
+  YYSYMBOL_tSTANDARD = 179,                /* tSTANDARD  */
+  YYSYMBOL_tSTATIC = 180,                  /* tSTATIC  */
+  YYSYMBOL_tSTRICTCONTEXTHANDLE = 181,     /* tSTRICTCONTEXTHANDLE  */
+  YYSYMBOL_tSTRING = 182,                  /* tSTRING  */
+  YYSYMBOL_tSTRUCT = 183,                  /* tSTRUCT  */
+  YYSYMBOL_tSWITCH = 184,                  /* tSWITCH  */
+  YYSYMBOL_tSWITCHIS = 185,                /* tSWITCHIS  */
+  YYSYMBOL_tSWITCHTYPE = 186,              /* tSWITCHTYPE  */
+  YYSYMBOL_tTHREADING = 187,               /* tTHREADING  */
+  YYSYMBOL_tTRANSMITAS = 188,              /* tTRANSMITAS  */
+  YYSYMBOL_tTRUE = 189,                    /* tTRUE  */
+  YYSYMBOL_tTYPEDEF = 190,                 /* tTYPEDEF  */
+  YYSYMBOL_tUIDEFAULT = 191,               /* tUIDEFAULT  */
+  YYSYMBOL_tUNION = 192,                   /* tUNION  */
+  YYSYMBOL_tUNIQUE = 193,                  /* tUNIQUE  */
+  YYSYMBOL_tUNSIGNED = 194,                /* tUNSIGNED  */
+  YYSYMBOL_tUSESGETLASTERROR = 195,        /* tUSESGETLASTERROR  */
+  YYSYMBOL_tUSERMARSHAL = 196,             /* tUSERMARSHAL  */
+  YYSYMBOL_tUUID = 197,                    /* tUUID  */
+  YYSYMBOL_tV1ENUM = 198,                  /* tV1ENUM  */
+  YYSYMBOL_tVARARG = 199,                  /* tVARARG  */
+  YYSYMBOL_tVERSION = 200,                 /* tVERSION  */
+  YYSYMBOL_tVIPROGID = 201,                /* tVIPROGID  */
+  YYSYMBOL_tVOID = 202,                    /* tVOID  */
+  YYSYMBOL_tWCHAR = 203,                   /* tWCHAR  */
+  YYSYMBOL_tWIREMARSHAL = 204,             /* tWIREMARSHAL  */
+  YYSYMBOL_tAPARTMENT = 205,               /* tAPARTMENT  */
+  YYSYMBOL_tNEUTRAL = 206,                 /* tNEUTRAL  */
+  YYSYMBOL_tSINGLE = 207,                  /* tSINGLE  */
+  YYSYMBOL_tFREE = 208,                    /* tFREE  */
+  YYSYMBOL_tBOTH = 209,                    /* tBOTH  */
+  YYSYMBOL_210_ = 210,                     /* ','  */
+  YYSYMBOL_211_ = 211,                     /* '?'  */
+  YYSYMBOL_212_ = 212,                     /* ':'  */
+  YYSYMBOL_213_ = 213,                     /* '|'  */
+  YYSYMBOL_214_ = 214,                     /* '^'  */
+  YYSYMBOL_215_ = 215,                     /* '&'  */
+  YYSYMBOL_216_ = 216,                     /* '<'  */
+  YYSYMBOL_217_ = 217,                     /* '>'  */
+  YYSYMBOL_218_ = 218,                     /* '-'  */
+  YYSYMBOL_219_ = 219,                     /* '+'  */
+  YYSYMBOL_220_ = 220,                     /* '*'  */
+  YYSYMBOL_221_ = 221,                     /* '/'  */
+  YYSYMBOL_222_ = 222,                     /* '%'  */
+  YYSYMBOL_223_ = 223,                     /* '!'  */
+  YYSYMBOL_224_ = 224,                     /* '~'  */
+  YYSYMBOL_CAST = 225,                     /* CAST  */
+  YYSYMBOL_PPTR = 226,                     /* PPTR  */
+  YYSYMBOL_POS = 227,                      /* POS  */
+  YYSYMBOL_NEG = 228,                      /* NEG  */
+  YYSYMBOL_ADDRESSOF = 229,                /* ADDRESSOF  */
+  YYSYMBOL_230_ = 230,                     /* '.'  */
+  YYSYMBOL_231_ = 231,                     /* '['  */
+  YYSYMBOL_232_ = 232,                     /* ']'  */
+  YYSYMBOL_233_ = 233,                     /* ';'  */
+  YYSYMBOL_234_ = 234,                     /* '{'  */
+  YYSYMBOL_235_ = 235,                     /* '}'  */
+  YYSYMBOL_236_ = 236,                     /* '('  */
+  YYSYMBOL_237_ = 237,                     /* ')'  */
+  YYSYMBOL_238_ = 238,                     /* '='  */
+  YYSYMBOL_YYACCEPT = 239,                 /* $accept  */
+  YYSYMBOL_input = 240,                    /* input  */
+  YYSYMBOL_m_acf = 241,                    /* m_acf  */
+  YYSYMBOL_decl_statements = 242,          /* decl_statements  */
+  YYSYMBOL_decl_block = 243,               /* decl_block  */
+  YYSYMBOL_imp_decl_statements = 244,      /* imp_decl_statements  */
+  YYSYMBOL_imp_decl_block = 245,           /* imp_decl_block  */
+  YYSYMBOL_gbl_statements = 246,           /* gbl_statements  */
+  YYSYMBOL_247_1 = 247,                    /* $@1  */
+  YYSYMBOL_imp_statements = 248,           /* imp_statements  */
+  YYSYMBOL_249_2 = 249,                    /* $@2  */
+  YYSYMBOL_int_statements = 250,           /* int_statements  */
+  YYSYMBOL_semicolon_opt = 251,            /* semicolon_opt  */
+  YYSYMBOL_statement = 252,                /* statement  */
+  YYSYMBOL_pragma_warning = 253,           /* pragma_warning  */
+  YYSYMBOL_warnings = 254,                 /* warnings  */
+  YYSYMBOL_typedecl = 255,                 /* typedecl  */
+  YYSYMBOL_cppquote = 256,                 /* cppquote  */
+  YYSYMBOL_import_start = 257,             /* import_start  */
+  YYSYMBOL_import = 258,                   /* import  */
+  YYSYMBOL_importlib = 259,                /* importlib  */
+  YYSYMBOL_libraryhdr = 260,               /* libraryhdr  */
+  YYSYMBOL_library_start = 261,            /* library_start  */
+  YYSYMBOL_librarydef = 262,               /* librarydef  */
+  YYSYMBOL_m_args = 263,                   /* m_args  */
+  YYSYMBOL_arg_list = 264,                 /* arg_list  */
+  YYSYMBOL_args = 265,                     /* args  */
+  YYSYMBOL_arg = 266,                      /* arg  */
+  YYSYMBOL_array = 267,                    /* array  */
+  YYSYMBOL_m_attributes = 268,             /* m_attributes  */
+  YYSYMBOL_attributes = 269,               /* attributes  */
+  YYSYMBOL_attrib_list = 270,              /* attrib_list  */
+  YYSYMBOL_str_list = 271,                 /* str_list  */
+  YYSYMBOL_marshaling_behavior = 272,      /* marshaling_behavior  */
+  YYSYMBOL_contract_ver = 273,             /* contract_ver  */
+  YYSYMBOL_contract_req = 274,             /* contract_req  */
+  YYSYMBOL_static_attr = 275,              /* static_attr  */
+  YYSYMBOL_activatable_attr = 276,         /* activatable_attr  */
+  YYSYMBOL_access_attr = 277,              /* access_attr  */
+  YYSYMBOL_composable_attr = 278,          /* composable_attr  */
+  YYSYMBOL_deprecated_attr = 279,          /* deprecated_attr  */
+  YYSYMBOL_attribute = 280,                /* attribute  */
+  YYSYMBOL_callconv = 281,                 /* callconv  */
+  YYSYMBOL_cases = 282,                    /* cases  */
+  YYSYMBOL_case = 283,                     /* case  */
+  YYSYMBOL_enums = 284,                    /* enums  */
+  YYSYMBOL_enum_list = 285,                /* enum_list  */
+  YYSYMBOL_enum_member = 286,              /* enum_member  */
+  YYSYMBOL_enum = 287,                     /* enum  */
+  YYSYMBOL_enumdef = 288,                  /* enumdef  */
+  YYSYMBOL_m_exprs = 289,                  /* m_exprs  */
+  YYSYMBOL_m_expr = 290,                   /* m_expr  */
+  YYSYMBOL_expr = 291,                     /* expr  */
+  YYSYMBOL_expr_list_int_const = 292,      /* expr_list_int_const  */
+  YYSYMBOL_expr_int_const = 293,           /* expr_int_const  */
+  YYSYMBOL_expr_const = 294,               /* expr_const  */
+  YYSYMBOL_fields = 295,                   /* fields  */
+  YYSYMBOL_field = 296,                    /* field  */
+  YYSYMBOL_ne_union_field = 297,           /* ne_union_field  */
+  YYSYMBOL_ne_union_fields = 298,          /* ne_union_fields  */
+  YYSYMBOL_union_field = 299,              /* union_field  */
+  YYSYMBOL_s_field = 300,                  /* s_field  */
+  YYSYMBOL_funcdef = 301,                  /* funcdef  */
+  YYSYMBOL_declaration = 302,              /* declaration  */
+  YYSYMBOL_m_ident = 303,                  /* m_ident  */
+  YYSYMBOL_m_typename = 304,               /* m_typename  */
+  YYSYMBOL_typename = 305,                 /* typename  */
+  YYSYMBOL_ident = 306,                    /* ident  */
+  YYSYMBOL_base_type = 307,                /* base_type  */
+  YYSYMBOL_m_int = 308,                    /* m_int  */
+  YYSYMBOL_int_std = 309,                  /* int_std  */
+  YYSYMBOL_namespace_pfx = 310,            /* namespace_pfx  */
+  YYSYMBOL_qualified_type = 311,           /* qualified_type  */
+  YYSYMBOL_parameterized_type = 312,       /* parameterized_type  */
+  YYSYMBOL_parameterized_type_arg = 313,   /* parameterized_type_arg  */
+  YYSYMBOL_parameterized_type_args = 314,  /* parameterized_type_args  */
+  YYSYMBOL_coclass = 315,                  /* coclass  */
+  YYSYMBOL_coclassdef = 316,               /* coclassdef  */
+  YYSYMBOL_runtimeclass = 317,             /* runtimeclass  */
+  YYSYMBOL_runtimeclass_def = 318,         /* runtimeclass_def  */
+  YYSYMBOL_apicontract = 319,              /* apicontract  */
+  YYSYMBOL_apicontract_def = 320,          /* apicontract_def  */
+  YYSYMBOL_namespacedef = 321,             /* namespacedef  */
+  YYSYMBOL_class_interfaces = 322,         /* class_interfaces  */
+  YYSYMBOL_class_interface = 323,          /* class_interface  */
+  YYSYMBOL_dispinterface = 324,            /* dispinterface  */
+  YYSYMBOL_dispattributes = 325,           /* dispattributes  */
+  YYSYMBOL_dispint_props = 326,            /* dispint_props  */
+  YYSYMBOL_dispint_meths = 327,            /* dispint_meths  */
+  YYSYMBOL_dispinterfacedef = 328,         /* dispinterfacedef  */
+  YYSYMBOL_inherit = 329,                  /* inherit  */
+  YYSYMBOL_type_parameter = 330,           /* type_parameter  */
+  YYSYMBOL_type_parameters = 331,          /* type_parameters  */
+  YYSYMBOL_interface = 332,                /* interface  */
+  YYSYMBOL_333_3 = 333,                    /* $@3  */
+  YYSYMBOL_334_4 = 334,                    /* $@4  */
+  YYSYMBOL_delegatedef = 335,              /* delegatedef  */
+  YYSYMBOL_336_5 = 336,                    /* $@5  */
+  YYSYMBOL_337_6 = 337,                    /* $@6  */
+  YYSYMBOL_required_types = 338,           /* required_types  */
+  YYSYMBOL_requires = 339,                 /* requires  */
+  YYSYMBOL_interfacedef = 340,             /* interfacedef  */
+  YYSYMBOL_341_7 = 341,                    /* $@7  */
+  YYSYMBOL_interfaceref = 342,             /* interfaceref  */
+  YYSYMBOL_dispinterfaceref = 343,         /* dispinterfaceref  */
+  YYSYMBOL_module = 344,                   /* module  */
+  YYSYMBOL_moduledef = 345,                /* moduledef  */
+  YYSYMBOL_storage_cls_spec = 346,         /* storage_cls_spec  */
+  YYSYMBOL_function_specifier = 347,       /* function_specifier  */
+  YYSYMBOL_type_qualifier = 348,           /* type_qualifier  */
+  YYSYMBOL_m_type_qual_list = 349,         /* m_type_qual_list  */
+  YYSYMBOL_decl_spec = 350,                /* decl_spec  */
+  YYSYMBOL_unqualified_decl_spec = 351,    /* unqualified_decl_spec  */
+  YYSYMBOL_m_decl_spec_no_type = 352,      /* m_decl_spec_no_type  */
+  YYSYMBOL_decl_spec_no_type = 353,        /* decl_spec_no_type  */
+  YYSYMBOL_declarator = 354,               /* declarator  */
+  YYSYMBOL_direct_declarator = 355,        /* direct_declarator  */
+  YYSYMBOL_abstract_declarator = 356,      /* abstract_declarator  */
+  YYSYMBOL_abstract_declarator_no_direct = 357, /* abstract_declarator_no_direct  */
+  YYSYMBOL_m_abstract_declarator = 358,    /* m_abstract_declarator  */
+  YYSYMBOL_abstract_direct_declarator = 359, /* abstract_direct_declarator  */
+  YYSYMBOL_any_declarator = 360,           /* any_declarator  */
+  YYSYMBOL_any_declarator_no_direct = 361, /* any_declarator_no_direct  */
+  YYSYMBOL_m_any_declarator = 362,         /* m_any_declarator  */
+  YYSYMBOL_any_direct_declarator = 363,    /* any_direct_declarator  */
+  YYSYMBOL_declarator_list = 364,          /* declarator_list  */
+  YYSYMBOL_m_bitfield = 365,               /* m_bitfield  */
+  YYSYMBOL_struct_declarator = 366,        /* struct_declarator  */
+  YYSYMBOL_struct_declarator_list = 367,   /* struct_declarator_list  */
+  YYSYMBOL_init_declarator = 368,          /* init_declarator  */
+  YYSYMBOL_threading_type = 369,           /* threading_type  */
+  YYSYMBOL_pointer_type = 370,             /* pointer_type  */
+  YYSYMBOL_structdef = 371,                /* structdef  */
+  YYSYMBOL_unqualified_type = 372,         /* unqualified_type  */
+  YYSYMBOL_type = 373,                     /* type  */
+  YYSYMBOL_typedef = 374,                  /* typedef  */
+  YYSYMBOL_uniondef = 375,                 /* uniondef  */
+  YYSYMBOL_version = 376,                  /* version  */
+  YYSYMBOL_acf_statements = 377,           /* acf_statements  */
+  YYSYMBOL_acf_int_statements = 378,       /* acf_int_statements  */
+  YYSYMBOL_acf_int_statement = 379,        /* acf_int_statement  */
+  YYSYMBOL_acf_interface = 380,            /* acf_interface  */
+  YYSYMBOL_acf_attributes = 381,           /* acf_attributes  */
+  YYSYMBOL_acf_attribute_list = 382,       /* acf_attribute_list  */
+  YYSYMBOL_acf_attribute = 383,            /* acf_attribute  */
+  YYSYMBOL_allocate_option_list = 384,     /* allocate_option_list  */
+  YYSYMBOL_allocate_option = 385           /* allocate_option  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -1250,19 +1252,19 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3739
+#define YYLAST   3781
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  238
+#define YYNTOKENS  239
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  147
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  499
+#define YYNRULES  500
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  924
+#define YYNSTATES  925
 
 /* YYMAXUTOK -- Last valid token kind.  */
-#define YYMAXUTOK   468
+#define YYMAXUTOK   469
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -1279,16 +1281,16 @@
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   222,     2,     2,     2,   221,   214,     2,
-     235,   236,   219,   218,   209,   217,   229,   220,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   211,   232,
-     215,   237,   216,   210,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   223,     2,     2,     2,   222,   215,     2,
+     236,   237,   220,   219,   210,   218,   230,   221,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   212,   233,
+     216,   238,   217,   211,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   230,     2,   231,   213,     2,     2,     2,     2,     2,
+       2,   231,     2,   232,   214,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   233,   212,   234,   223,     2,     2,     2,
+       2,     2,     2,   234,   213,   235,   224,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1322,63 +1324,64 @@
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   224,   225,   226,   227,   228
+     205,   206,   207,   208,   209,   225,   226,   227,   228,   229
 };
 
 #if PARSER_DEBUG
 /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       0,   368,   368,   384,   385,   389,   390,   396,   400,   401,
-     406,   410,   411,   411,   413,   414,   415,   416,   417,   420,
-     423,   424,   426,   427,   429,   430,   431,   432,   436,   437,
-     438,   439,   439,   441,   442,   443,   444,   447,   448,   450,
-     451,   453,   454,   455,   456,   457,   461,   462,   466,   467,
-     471,   472,   473,   474,   475,   476,   477,   480,   488,   496,
-     497,   501,   502,   503,   504,   505,   506,   507,   508,   509,
-     512,   515,   517,   520,   524,   526,   530,   535,   536,   539,
-     540,   543,   544,   548,   553,   560,   564,   565,   569,   570,
-     574,   577,   578,   579,   582,   583,   587,   588,   589,   593,
-     594,   598,   606,   613,   617,   621,   622,   626,   634,   639,
-     640,   641,   642,   643,   644,   645,   646,   647,   648,   649,
-     650,   651,   652,   653,   654,   655,   656,   657,   658,   659,
-     663,   664,   665,   666,   667,   668,   669,   670,   671,   672,
-     673,   674,   675,   676,   677,   678,   679,   680,   684,   685,
-     686,   687,   688,   689,   690,   691,   692,   694,   695,   696,
-     697,   698,   699,   700,   701,   702,   703,   704,   705,   706,
-     707,   708,   709,   711,   712,   713,   714,   715,   716,   717,
-     718,   719,   720,   721,   722,   723,   724,   725,   726,   727,
-     728,   729,   730,   731,   732,   733,   734,   735,   740,   741,
-     742,   743,   744,   745,   746,   747,   748,   749,   750,   751,
-     752,   753,   754,   755,   756,   757,   758,   759,   760,   761,
-     762,   763,   764,   767,   768,   769,   770,   774,   775,   778,
-     782,   789,   790,   791,   794,   798,   810,   815,   819,   824,
-     827,   828,   832,   833,   836,   837,   838,   839,   840,   841,
-     842,   843,   844,   845,   846,   847,   848,   849,   850,   851,
-     852,   853,   854,   855,   856,   857,   858,   859,   860,   861,
-     862,   863,   864,   865,   866,   867,   868,   869,   870,   871,
-     872,   873,   875,   877,   878,   881,   882,   885,   891,   898,
-     899,   902,   907,   914,   915,   919,   920,   924,   925,   928,
-     932,   938,   946,   950,   956,   957,   961,   962,   965,   966,
-     969,   972,   973,   974,   975,   976,   977,   978,   979,   980,
-     981,   982,   986,   987,   990,   991,   992,   993,   994,   995,
-     996,   997,   998,  1002,  1003,  1007,  1008,  1011,  1016,  1017,
-    1018,  1019,  1020,  1024,  1025,  1029,  1032,  1036,  1039,  1044,
-    1047,  1051,  1052,  1056,  1057,  1061,  1062,  1065,  1068,  1071,
-    1072,  1075,  1076,  1080,  1082,  1087,  1088,  1089,  1092,  1096,
-    1097,  1101,  1102,  1102,  1102,  1106,  1111,  1112,  1110,  1119,
-    1120,  1121,  1122,  1126,  1127,  1130,  1130,  1143,  1147,  1148,
-    1149,  1153,  1156,  1159,  1164,  1165,  1166,  1170,  1174,  1178,
-    1179,  1182,  1183,  1187,  1189,  1194,  1195,  1199,  1200,  1201,
-    1205,  1207,  1208,  1212,  1213,  1214,  1215,  1220,  1222,  1223,
-    1228,  1230,  1235,  1236,  1241,  1242,  1243,  1244,  1248,  1256,
-    1258,  1259,  1264,  1266,  1271,  1272,  1279,  1280,  1281,  1282,
-    1283,  1287,  1294,  1295,  1299,  1300,  1303,  1310,  1311,  1316,
-    1317,  1321,  1322,  1323,  1324,  1325,  1326,  1330,  1331,  1332,
-    1335,  1339,  1340,  1341,  1342,  1343,  1344,  1345,  1346,  1347,
-    1348,  1352,  1353,  1354,  1357,  1364,  1366,  1372,  1373,  1374,
-    1378,  1379,  1383,  1384,  1388,  1395,  1404,  1405,  1409,  1410,
-    1414,  1416,  1417,  1418,  1422,  1423,  1428,  1429,  1430,  1431
+       0,   369,   369,   385,   386,   390,   391,   397,   401,   402,
+     407,   411,   412,   412,   414,   415,   416,   417,   418,   421,
+     424,   425,   427,   428,   430,   431,   432,   433,   437,   438,
+     439,   440,   440,   442,   443,   444,   445,   448,   449,   451,
+     452,   454,   455,   456,   457,   458,   462,   463,   467,   468,
+     472,   473,   474,   475,   476,   477,   478,   481,   489,   497,
+     498,   502,   503,   504,   505,   506,   507,   508,   509,   510,
+     513,   516,   518,   521,   525,   527,   531,   536,   537,   540,
+     541,   544,   545,   549,   554,   561,   565,   566,   570,   571,
+     575,   578,   579,   580,   583,   584,   588,   589,   590,   594,
+     595,   599,   607,   614,   618,   622,   623,   627,   635,   640,
+     641,   642,   643,   644,   645,   646,   647,   648,   649,   650,
+     651,   652,   653,   654,   655,   656,   657,   658,   659,   660,
+     664,   665,   666,   667,   668,   669,   670,   671,   672,   673,
+     674,   675,   676,   677,   678,   679,   680,   681,   682,   686,
+     687,   688,   689,   690,   691,   692,   693,   694,   696,   697,
+     698,   699,   700,   701,   702,   703,   704,   705,   706,   707,
+     708,   709,   710,   711,   713,   714,   715,   716,   717,   718,
+     719,   720,   721,   722,   723,   724,   725,   726,   727,   728,
+     729,   730,   731,   732,   733,   734,   735,   736,   737,   742,
+     743,   744,   745,   746,   747,   748,   749,   750,   751,   752,
+     753,   754,   755,   756,   757,   758,   759,   760,   761,   762,
+     763,   764,   765,   766,   769,   770,   771,   772,   776,   777,
+     780,   784,   791,   792,   793,   796,   800,   812,   817,   821,
+     826,   829,   830,   834,   835,   838,   839,   840,   841,   842,
+     843,   844,   845,   846,   847,   848,   849,   850,   851,   852,
+     853,   854,   855,   856,   857,   858,   859,   860,   861,   862,
+     863,   864,   865,   866,   867,   868,   869,   870,   871,   872,
+     873,   874,   875,   877,   879,   880,   883,   884,   887,   893,
+     900,   901,   904,   909,   916,   917,   921,   922,   926,   927,
+     930,   934,   940,   948,   952,   958,   959,   963,   964,   967,
+     968,   971,   974,   975,   976,   977,   978,   979,   980,   981,
+     982,   983,   984,   988,   989,   992,   993,   994,   995,   996,
+     997,   998,   999,  1000,  1004,  1005,  1009,  1010,  1013,  1018,
+    1019,  1020,  1021,  1022,  1026,  1027,  1031,  1034,  1038,  1041,
+    1046,  1049,  1053,  1054,  1058,  1059,  1063,  1064,  1067,  1070,
+    1073,  1074,  1077,  1078,  1082,  1084,  1089,  1090,  1091,  1094,
+    1098,  1099,  1103,  1104,  1104,  1104,  1108,  1113,  1114,  1112,
+    1121,  1122,  1123,  1124,  1128,  1129,  1132,  1132,  1145,  1149,
+    1150,  1151,  1155,  1158,  1161,  1166,  1167,  1168,  1172,  1176,
+    1180,  1181,  1184,  1185,  1189,  1191,  1196,  1197,  1201,  1202,
+    1203,  1207,  1209,  1210,  1214,  1215,  1216,  1217,  1222,  1224,
+    1225,  1230,  1232,  1237,  1238,  1243,  1244,  1245,  1246,  1250,
+    1258,  1260,  1261,  1266,  1268,  1273,  1274,  1281,  1282,  1283,
+    1284,  1285,  1289,  1296,  1297,  1301,  1302,  1305,  1312,  1313,
+    1318,  1319,  1323,  1324,  1325,  1326,  1327,  1328,  1332,  1333,
+    1334,  1337,  1341,  1342,  1343,  1344,  1345,  1346,  1347,  1348,
+    1349,  1350,  1354,  1355,  1356,  1359,  1366,  1368,  1374,  1375,
+    1376,  1380,  1381,  1385,  1386,  1390,  1397,  1406,  1407,  1411,
+    1412,  1416,  1418,  1419,  1420,  1424,  1425,  1430,  1431,  1432,
+    1433
 };
 #endif
 
@@ -1407,63 +1410,63 @@
   "tCONTEXTHANDLE", "tCONTEXTHANDLENOSERIALIZE", "tCONTEXTHANDLESERIALIZE",
   "tCONTRACT", "tCONTRACTVERSION", "tCONTROL", "tCPPQUOTE", "tCUSTOM",
   "tDECLARE", "tDECODE", "tDEFAULT", "tDEFAULTBIND", "tDELEGATE",
-  "tDEFAULTCOLLELEM", "tDEFAULTVALUE", "tDEFAULTVTABLE", "tDEPRECATED",
-  "tDISABLECONSISTENCYCHECK", "tDISPLAYBIND", "tDISPINTERFACE", "tDLLNAME",
-  "tDONTFREE", "tDOUBLE", "tDUAL", "tENABLEALLOCATE", "tENCODE",
-  "tENDPOINT", "tENTRY", "tENUM", "tERRORSTATUST", "tEVENTADD",
-  "tEVENTREMOVE", "tEXCLUSIVETO", "tEXPLICITHANDLE", "tEXTERN", "tFALSE",
-  "tFAULTSTATUS", "tFLAGS", "tFLOAT", "tFORCEALLOCATE", "tHANDLE",
-  "tHANDLET", "tHELPCONTEXT", "tHELPFILE", "tHELPSTRING",
-  "tHELPSTRINGCONTEXT", "tHELPSTRINGDLL", "tHIDDEN", "tHYPER", "tID",
-  "tIDEMPOTENT", "tIGNORE", "tIIDIS", "tIMMEDIATEBIND", "tIMPLICITHANDLE",
-  "tIMPORT", "tIMPORTLIB", "tIN", "tIN_LINE", "tINLINE", "tINPUTSYNC",
-  "tINT", "tINT32", "tINT3264", "tINT64", "tINTERFACE", "tLCID",
-  "tLENGTHIS", "tLIBRARY", "tLICENSED", "tLOCAL", "tLONG",
-  "tMARSHALINGBEHAVIOR", "tMAYBE", "tMESSAGE", "tMETHODS", "tMODULE",
-  "tMTA", "tNAMESPACE", "tNOCODE", "tNONBROWSABLE", "tNONCREATABLE",
-  "tNONE", "tNONEXTENSIBLE", "tNOTIFY", "tNOTIFYFLAG", "tNULL", "tOBJECT",
-  "tODL", "tOLEAUTOMATION", "tOPTIMIZE", "tOPTIONAL", "tOUT", "tOVERLOAD",
-  "tPARTIALIGNORE", "tPOINTERDEFAULT", "tPRAGMA_WARNING", "tPROGID",
-  "tPROPERTIES", "tPROPGET", "tPROPPUT", "tPROPPUTREF", "tPROTECTED",
-  "tPROXY", "tPTR", "tPUBLIC", "tRANGE", "tREADONLY", "tREF", "tREGISTER",
-  "tREPRESENTAS", "tREQUESTEDIT", "tREQUIRES", "tRESTRICTED", "tRETVAL",
-  "tRUNTIMECLASS", "tSAFEARRAY", "tSHORT", "tSIGNED", "tSINGLENODE",
-  "tSIZEIS", "tSIZEOF", "tSMALL", "tSOURCE", "tSTANDARD", "tSTATIC",
-  "tSTRICTCONTEXTHANDLE", "tSTRING", "tSTRUCT", "tSWITCH", "tSWITCHIS",
-  "tSWITCHTYPE", "tTHREADING", "tTRANSMITAS", "tTRUE", "tTYPEDEF",
-  "tUIDEFAULT", "tUNION", "tUNIQUE", "tUNSIGNED", "tUSESGETLASTERROR",
-  "tUSERMARSHAL", "tUUID", "tV1ENUM", "tVARARG", "tVERSION", "tVIPROGID",
-  "tVOID", "tWCHAR", "tWIREMARSHAL", "tAPARTMENT", "tNEUTRAL", "tSINGLE",
-  "tFREE", "tBOTH", "','", "'?'", "':'", "'|'", "'^'", "'&'", "'<'", "'>'",
-  "'-'", "'+'", "'*'", "'/'", "'%'", "'!'", "'~'", "CAST", "PPTR", "POS",
-  "NEG", "ADDRESSOF", "'.'", "'['", "']'", "';'", "'{'", "'}'", "'('",
-  "')'", "'='", "$accept", "input", "m_acf", "decl_statements",
-  "decl_block", "imp_decl_statements", "imp_decl_block", "gbl_statements",
-  "$@1", "imp_statements", "$@2", "int_statements", "semicolon_opt",
-  "statement", "pragma_warning", "warnings", "typedecl", "cppquote",
-  "import_start", "import", "importlib", "libraryhdr", "library_start",
-  "librarydef", "m_args", "arg_list", "args", "arg", "array",
-  "m_attributes", "attributes", "attrib_list", "str_list",
-  "marshaling_behavior", "contract_ver", "contract_req", "static_attr",
-  "activatable_attr", "access_attr", "composable_attr", "deprecated_attr",
-  "attribute", "callconv", "cases", "case", "enums", "enum_list",
-  "enum_member", "enum", "enumdef", "m_exprs", "m_expr", "expr",
-  "expr_list_int_const", "expr_int_const", "expr_const", "fields", "field",
-  "ne_union_field", "ne_union_fields", "union_field", "s_field", "funcdef",
-  "declaration", "m_ident", "m_typename", "typename", "ident", "base_type",
-  "m_int", "int_std", "namespace_pfx", "qualified_type",
-  "parameterized_type", "parameterized_type_arg",
-  "parameterized_type_args", "coclass", "coclassdef", "runtimeclass",
-  "runtimeclass_def", "apicontract", "apicontract_def", "namespacedef",
-  "class_interfaces", "class_interface", "dispinterface", "dispattributes",
-  "dispint_props", "dispint_meths", "dispinterfacedef", "inherit",
-  "type_parameter", "type_parameters", "interface", "$@3", "$@4",
-  "delegatedef", "$@5", "$@6", "required_types", "requires",
-  "interfacedef", "$@7", "interfaceref", "dispinterfaceref", "module",
-  "moduledef", "storage_cls_spec", "function_specifier", "type_qualifier",
-  "m_type_qual_list", "decl_spec", "unqualified_decl_spec",
-  "m_decl_spec_no_type", "decl_spec_no_type", "declarator",
-  "direct_declarator", "abstract_declarator",
+  "tDEFAULT_OVERLOAD", "tDEFAULTCOLLELEM", "tDEFAULTVALUE",
+  "tDEFAULTVTABLE", "tDEPRECATED", "tDISABLECONSISTENCYCHECK",
+  "tDISPLAYBIND", "tDISPINTERFACE", "tDLLNAME", "tDONTFREE", "tDOUBLE",
+  "tDUAL", "tENABLEALLOCATE", "tENCODE", "tENDPOINT", "tENTRY", "tENUM",
+  "tERRORSTATUST", "tEVENTADD", "tEVENTREMOVE", "tEXCLUSIVETO",
+  "tEXPLICITHANDLE", "tEXTERN", "tFALSE", "tFAULTSTATUS", "tFLAGS",
+  "tFLOAT", "tFORCEALLOCATE", "tHANDLE", "tHANDLET", "tHELPCONTEXT",
+  "tHELPFILE", "tHELPSTRING", "tHELPSTRINGCONTEXT", "tHELPSTRINGDLL",
+  "tHIDDEN", "tHYPER", "tID", "tIDEMPOTENT", "tIGNORE", "tIIDIS",
+  "tIMMEDIATEBIND", "tIMPLICITHANDLE", "tIMPORT", "tIMPORTLIB", "tIN",
+  "tIN_LINE", "tINLINE", "tINPUTSYNC", "tINT", "tINT32", "tINT3264",
+  "tINT64", "tINTERFACE", "tLCID", "tLENGTHIS", "tLIBRARY", "tLICENSED",
+  "tLOCAL", "tLONG", "tMARSHALINGBEHAVIOR", "tMAYBE", "tMESSAGE",
+  "tMETHODS", "tMODULE", "tMTA", "tNAMESPACE", "tNOCODE", "tNONBROWSABLE",
+  "tNONCREATABLE", "tNONE", "tNONEXTENSIBLE", "tNOTIFY", "tNOTIFYFLAG",
+  "tNULL", "tOBJECT", "tODL", "tOLEAUTOMATION", "tOPTIMIZE", "tOPTIONAL",
+  "tOUT", "tOVERLOAD", "tPARTIALIGNORE", "tPOINTERDEFAULT",
+  "tPRAGMA_WARNING", "tPROGID", "tPROPERTIES", "tPROPGET", "tPROPPUT",
+  "tPROPPUTREF", "tPROTECTED", "tPROXY", "tPTR", "tPUBLIC", "tRANGE",
+  "tREADONLY", "tREF", "tREGISTER", "tREPRESENTAS", "tREQUESTEDIT",
+  "tREQUIRES", "tRESTRICTED", "tRETVAL", "tRUNTIMECLASS", "tSAFEARRAY",
+  "tSHORT", "tSIGNED", "tSINGLENODE", "tSIZEIS", "tSIZEOF", "tSMALL",
+  "tSOURCE", "tSTANDARD", "tSTATIC", "tSTRICTCONTEXTHANDLE", "tSTRING",
+  "tSTRUCT", "tSWITCH", "tSWITCHIS", "tSWITCHTYPE", "tTHREADING",
+  "tTRANSMITAS", "tTRUE", "tTYPEDEF", "tUIDEFAULT", "tUNION", "tUNIQUE",
+  "tUNSIGNED", "tUSESGETLASTERROR", "tUSERMARSHAL", "tUUID", "tV1ENUM",
+  "tVARARG", "tVERSION", "tVIPROGID", "tVOID", "tWCHAR", "tWIREMARSHAL",
+  "tAPARTMENT", "tNEUTRAL", "tSINGLE", "tFREE", "tBOTH", "','", "'?'",
+  "':'", "'|'", "'^'", "'&'", "'<'", "'>'", "'-'", "'+'", "'*'", "'/'",
+  "'%'", "'!'", "'~'", "CAST", "PPTR", "POS", "NEG", "ADDRESSOF", "'.'",
+  "'['", "']'", "';'", "'{'", "'}'", "'('", "')'", "'='", "$accept",
+  "input", "m_acf", "decl_statements", "decl_block", "imp_decl_statements",
+  "imp_decl_block", "gbl_statements", "$@1", "imp_statements", "$@2",
+  "int_statements", "semicolon_opt", "statement", "pragma_warning",
+  "warnings", "typedecl", "cppquote", "import_start", "import",
+  "importlib", "libraryhdr", "library_start", "librarydef", "m_args",
+  "arg_list", "args", "arg", "array", "m_attributes", "attributes",
+  "attrib_list", "str_list", "marshaling_behavior", "contract_ver",
+  "contract_req", "static_attr", "activatable_attr", "access_attr",
+  "composable_attr", "deprecated_attr", "attribute", "callconv", "cases",
+  "case", "enums", "enum_list", "enum_member", "enum", "enumdef",
+  "m_exprs", "m_expr", "expr", "expr_list_int_const", "expr_int_const",
+  "expr_const", "fields", "field", "ne_union_field", "ne_union_fields",
+  "union_field", "s_field", "funcdef", "declaration", "m_ident",
+  "m_typename", "typename", "ident", "base_type", "m_int", "int_std",
+  "namespace_pfx", "qualified_type", "parameterized_type",
+  "parameterized_type_arg", "parameterized_type_args", "coclass",
+  "coclassdef", "runtimeclass", "runtimeclass_def", "apicontract",
+  "apicontract_def", "namespacedef", "class_interfaces", "class_interface",
+  "dispinterface", "dispattributes", "dispint_props", "dispint_meths",
+  "dispinterfacedef", "inherit", "type_parameter", "type_parameters",
+  "interface", "$@3", "$@4", "delegatedef", "$@5", "$@6", "required_types",
+  "requires", "interfacedef", "$@7", "interfaceref", "dispinterfaceref",
+  "module", "moduledef", "storage_cls_spec", "function_specifier",
+  "type_qualifier", "m_type_qual_list", "decl_spec",
+  "unqualified_decl_spec", "m_decl_spec_no_type", "decl_spec_no_type",
+  "declarator", "direct_declarator", "abstract_declarator",
   "abstract_declarator_no_direct", "m_abstract_declarator",
   "abstract_direct_declarator", "any_declarator",
   "any_declarator_no_direct", "m_any_declarator", "any_direct_declarator",
@@ -1483,12 +1486,12 @@
 }
 #endif
 
-#define YYPACT_NINF (-659)
+#define YYPACT_NINF (-704)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-487)
+#define YYTABLE_NINF (-488)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -1497,99 +1500,99 @@
    STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -659,   137,  1874,  -659,   -61,  -659,   -35,   -15,   176,  -659,
-    -659,  -659,   176,  -659,   -33,   -25,   176,  -659,   327,  -659,
-    -659,  -659,  -659,   101,   214,  -659,  -659,  -659,  -659,  -659,
-     176,   101,   259,    60,  -659,   176,    71,   101,   497,  -659,
-    -659,   328,   362,   497,  -659,  -659,  3536,  -659,  -659,  -659,
-    -659,    50,  -659,  -659,  -659,  -659,  -659,    -4,  2935,    81,
-      87,  -659,  -659,  -659,   366,   138,  -659,   143,  -659,   149,
-    -659,   164,  -659,  -105,   171,   195,   173,   175,  -659,  -659,
-    -659,   177,   177,   177,   147,  1427,   178,  -659,   177,   179,
-     181,  -659,   120,  -659,   -15,   290,  -659,  -659,  -659,  -659,
-     406,  -659,  -659,   129,   183,  -659,  -659,  -659,   185,   203,
-    -659,  -659,   111,  -659,  1427,  -659,  -659,   169,   188,   -68,
-     -84,  -659,   187,  -659,   189,  -659,  -659,   191,  -659,  -659,
-    -659,   192,   193,  -659,  -659,   196,  -659,  -659,  -659,   198,
-     199,  -659,   204,  -659,  -659,  -659,  -659,   207,  -659,   208,
-    -659,  -659,   209,  -659,  -659,  -659,   211,   212,  -659,  -659,
-     213,  -659,  -659,  -659,  -659,  -659,   215,   217,   220,   221,
-     223,  -659,   230,  -659,  -659,   231,  -659,   235,  -659,  -659,
-     239,   240,  -659,  -659,   241,  -659,  -659,  -659,  -659,  -659,
-    -659,  -659,  -659,  -659,  -659,  -659,   244,  -659,  -659,   245,
-    -659,   246,   257,  -659,  -659,  -659,  -659,  -659,  -659,  -659,
-     260,  -659,  -659,   261,  -659,  -659,  -659,   262,  -659,   263,
-    -659,  -659,   270,   271,   272,   273,  -659,  -659,  -659,   274,
-     275,  -659,  -659,   276,   279,   280,   -53,  -659,  -659,  -659,
-    2006,  1135,  1427,   176,   200,   205,   367,   176,   371,   374,
-     258,   284,   285,   306,   286,  -659,   147,   288,   289,  -659,
-     265,   307,  3241,  -659,  -659,  -659,   470,  -659,  -659,   294,
-    -659,  -659,  -659,  -659,  -659,  -659,  -659,  -659,  -659,  -659,
-    -659,  -659,   147,   147,  -659,  -659,   291,   -38,  -659,  -659,
-    -659,   177,  -659,  -659,  -659,   298,  -659,  -659,  -659,   -27,
-    -659,  -659,   518,   293,   -31,    54,  -659,  -659,   324,   325,
-     302,  -659,   311,  -659,  3139,   532,   538,   176,   946,  3139,
-    3139,   551,   547,   946,   559,   560,   561,   946,  3139,   946,
-     562,   569,   946,   570,   946,   946,  2472,   946,   946,    55,
-     571,   574,   -37,   576,   946,  1427,   946,  3139,   946,  1427,
-     281,  1427,  1427,   580,   238,   588,  1427,  3536,   368,  -659,
-     370,   365,  -659,  -659,  -659,  -659,   369,  -659,   373,  -659,
-     376,  -659,    68,   377,   378,  -659,  -659,  -659,   173,   176,
-    -659,  3139,  -659,  -659,   383,  -659,   383,   -75,  -659,  -659,
-     387,   386,   389,   306,  -659,  -659,  -659,   366,    93,   385,
-    -659,   -86,  -659,  -659,   -21,   104,   388,  -659,   946,   218,
-    2472,  -659,  -659,    25,   120,  -659,   392,  -659,   387,  -659,
-     176,   394,   397,   384,  -659,   176,   623,   623,  -659,    88,
-     200,    94,  -659,   400,   421,   401,   402,   405,  -659,  -659,
-    -659,  -659,  -659,  -659,  -659,  -659,  -659,   398,  -659,   946,
-     946,   946,   946,   946,   946,   887,  2716,  -107,  -659,   408,
-     437,   411,   439,   424,   418,   446,  2716,   420,   448,   422,
-     425,  -659,   -97,   426,   427,   428,   434,   438,   440,   441,
-     442,  2363,   449,  3139,   133,   451,   -96,  -659,  2716,  -659,
-    -659,  -659,   452,   454,   455,   458,   459,   487,   461,   -66,
-     462,   491,  2477,   466,  -659,  -659,  -659,  -659,  -659,  -659,
-     467,   468,   471,   472,   431,  -659,   480,   481,   482,  -659,
-    3536,  -659,   710,  -659,  -659,  -659,  -659,  -659,  -659,  -659,
-     -93,   147,  1582,   115,   138,  -659,  -659,   173,   555,  -659,
-    -659,  -659,  3241,  -659,  1445,   512,   -44,   493,  -659,  -659,
-    -659,  -659,   936,  -659,  2607,   492,   520,  -659,  -659,  -659,
-    -659,  -659,  -659,   -42,  -659,  -659,   541,   516,  -659,  -659,
-     116,   946,  -659,  -659,   524,  -659,    36,    53,  -659,  3139,
-    -659,  3139,   498,  -659,   495,  -659,   503,  -659,  3037,  -659,
-    -659,  -659,  3286,    34,    34,    34,    34,    34,    34,  -659,
-    2582,   159,  3378,   177,   946,   946,   734,   946,   946,   946,
-     946,   946,   946,   946,   946,   946,   946,   946,   946,   946,
-     946,   946,   946,   946,   735,   946,   946,  -659,  -659,   144,
-    -659,   551,   733,  -659,   946,  -659,   737,  -659,  -659,   732,
-    -659,  -659,  -659,  -659,  -659,  -659,  -659,  -659,  -659,  -659,
-    -659,   133,  -659,  2138,  -659,   133,  -659,  -659,  -659,   -13,
-    -659,   946,  -659,  -659,  -659,  -659,  -659,  -659,   946,  -659,
-    -659,  -659,  3139,  -659,  -659,  -659,  -659,  -659,  -659,   736,
-    -659,  -659,  -659,  -659,   -29,   507,  -659,  -659,  2472,  -659,
-     535,   173,  -659,   556,  3139,   173,    47,  -659,   117,  -659,
-     387,   513,  -659,  -659,  -659,   536,   517,  1031,   514,  -659,
-    -659,  -659,  2370,    25,  -659,   521,   526,   541,  3241,  -659,
-    -659,   176,   534,  -659,  -659,  -659,   133,   529,   147,   123,
-     176,  -659,  -659,  -659,  -659,   159,  -659,  -659,  2254,  -659,
-     159,  -659,   527,    51,   177,  -659,   283,   283,  -659,   777,
-     777,   463,   463,   802,  2735,  2695,   824,  1631,  1071,   463,
-     463,    40,    40,    34,    34,    34,  -659,  2656,  -659,  -659,
-    -659,   543,  -659,   528,   557,  -659,  -659,    79,  -659,   531,
-     133,   533,  -659,  2472,  -659,  -659,   537,  -659,  -659,   387,
-    -659,   173,  1290,   176,   539,   147,  -659,  -659,   176,   387,
-     540,   544,   173,   138,  -659,   568,  -659,  -659,  -659,  -659,
-    3139,   546,  -659,  -659,  -659,  -659,  -659,   760,  -659,  -659,
-     -32,  -659,  -659,   572,  -659,   -98,  -659,  -659,   549,  -659,
-     548,   372,  -659,   550,   133,   552,  -659,   946,  2472,  -659,
-    -659,   946,  -659,  3139,  -659,  3139,  -659,    79,  -659,  -659,
-    -659,   558,  -659,   553,  -659,  -659,    62,   173,  -659,  -659,
-     563,   366,  -659,  -659,  -659,  -659,   387,  1719,  -659,   573,
-     578,   946,  -659,   133,  -659,  -659,  -659,  -659,    79,  -659,
-    -659,  -659,    34,   564,  2716,  -659,  -659,  -659,  -659,  3241,
-     545,  -659,   579,   138,  -659,   173,  -659,  -659,  -659,  -659,
-      33,  -659,  -659,    64,  2472,  -659,   946,   592,  -659,  -659,
-     581,   582,   595,   165,  -659,  -659,   165,  -659,  -659,   583,
-     173,  -659,  -659,  -659
+    -704,   136,  1892,  -704,   -65,  -704,   -42,   -15,   306,  -704,
+    -704,  -704,   306,  -704,     0,   -10,   306,  -704,   372,  -704,
+    -704,  -704,  -704,    66,   237,  -704,  -704,  -704,  -704,  -704,
+     306,    66,   230,    25,  -704,   306,    59,    66,   575,  -704,
+    -704,   400,   405,   575,  -704,  -704,  3577,  -704,  -704,  -704,
+    -704,    70,  -704,  -704,  -704,  -704,  -704,     6,  2968,   101,
+     108,  -704,  -704,  -704,   408,    67,  -704,   120,  -704,   134,
+    -704,   155,  -704,   117,   171,   198,   179,   185,  -704,  -704,
+    -704,   272,   272,   272,    79,  3244,   188,  -704,   272,   212,
+     232,  -704,    80,  -704,   -15,   172,  -704,  -704,  -704,  -704,
+     301,  -704,  -704,    86,   151,  -704,  -704,  -704,   238,   177,
+    -704,  -704,    82,  -704,  3244,  -704,  -704,   228,   162,   -49,
+     -67,  -704,   204,  -704,   234,  -704,  -704,   236,  -704,  -704,
+    -704,   244,   247,  -704,  -704,   249,  -704,  -704,  -704,   250,
+     251,  -704,   252,  -704,  -704,  -704,  -704,  -704,   253,  -704,
+     254,  -704,  -704,   256,  -704,  -704,  -704,   265,   266,  -704,
+    -704,   267,  -704,  -704,  -704,  -704,  -704,   268,   269,   270,
+     273,   274,  -704,   275,  -704,  -704,   276,  -704,   278,  -704,
+    -704,   280,   281,  -704,  -704,   282,  -704,  -704,  -704,  -704,
+    -704,  -704,  -704,  -704,  -704,  -704,  -704,   284,  -704,  -704,
+     285,  -704,   286,   287,  -704,  -704,  -704,  -704,  -704,  -704,
+    -704,   288,  -704,  -704,   289,  -704,  -704,  -704,   291,  -704,
+     292,  -704,  -704,   293,   298,   300,   303,  -704,  -704,  -704,
+     310,   317,  -704,  -704,   318,   319,   322,   -57,  -704,  -704,
+    -704,  2025,  1164,  3244,   306,   235,   240,   414,   306,   436,
+     448,   243,   304,   279,   307,   308,  -704,    79,   330,   331,
+    -704,   337,   354,  3180,  -704,  -704,  -704,   569,  -704,  -704,
+     342,  -704,  -704,  -704,  -704,  -704,  -704,  -704,  -704,  -704,
+    -704,  -704,  -704,    79,    79,  -704,  -704,   341,   -32,  -704,
+    -704,  -704,   272,  -704,  -704,  -704,   350,  -704,  -704,  -704,
+     -46,  -704,  -704,   583,   360,   -40,   119,  -704,  -704,   379,
+     386,   362,  -704,   364,  -704,  3152,   592,   587,   306,   942,
+    3152,  3152,   598,   589,   942,   597,   600,   602,   942,  3152,
+     942,   603,   610,   942,   611,   942,   942,  2434,   942,   942,
+      40,   612,   616,    -4,   617,   942,  3244,   942,  3152,   942,
+    3244,   241,  3244,  3244,   591,   195,   618,  3244,  3577,   398,
+    -704,   396,   397,  -704,  -704,  -704,  -704,   399,  -704,   401,
+    -704,   403,  -704,   118,   404,   406,  -704,  -704,  -704,   179,
+     306,  -704,  3152,  -704,  -704,   409,  -704,   409,   -64,  -704,
+    -704,   451,   410,   416,   307,  -704,  -704,  -704,   408,   140,
+     420,  -704,   -12,  -704,  -704,    10,    96,   412,  -704,   942,
+     607,  2434,  -704,  -704,    71,    80,  -704,   411,  -704,   451,
+    -704,   306,   418,   431,   417,  -704,   306,   636,   636,  -704,
+     128,   235,   135,  -704,   419,   444,   421,   422,   424,  -704,
+    -704,  -704,  -704,  -704,  -704,  -704,  -704,  -704,   426,  -704,
+     942,   942,   942,   942,   942,   942,   961,  2688,   -92,  -704,
+     427,   447,   428,   453,   439,   438,   463,  2688,   442,   466,
+     445,   446,  -704,   -79,   449,   452,   458,   459,   461,   462,
+     467,   468,   890,   471,  3152,    49,   472,   -66,  -704,  2688,
+    -704,  -704,  -704,   476,   477,   480,   481,   482,   474,   483,
+     -59,   485,   475,  2469,   487,  -704,  -704,  -704,  -704,  -704,
+    -704,   489,   491,   492,   493,   473,  -704,   495,   497,   499,
+    -704,  3577,  -704,   672,  -704,  -704,  -704,  -704,  -704,  -704,
+    -704,   -43,    79,  1532,   152,    67,  -704,  -704,   179,   521,
+    -704,  -704,  -704,  3180,  -704,  1430,   526,   -62,   506,  -704,
+    -704,  -704,  -704,   758,  -704,  2567,   503,   531,  -704,  -704,
+    -704,  -704,  -704,  -704,   -54,  -704,  -704,   552,   528,  -704,
+    -704,   163,   942,  -704,  -704,   535,  -704,    51,    53,  -704,
+    3152,  -704,  3152,   512,  -704,   517,  -704,   518,  -704,  3060,
+    -704,  -704,  -704,  3336,    35,    35,    35,    35,    35,    35,
+    -704,  2542,   126,  3418,   272,   942,   942,   750,   942,   942,
+     942,   942,   942,   942,   942,   942,   942,   942,   942,   942,
+     942,   942,   942,   942,   942,   752,   942,   942,  -704,  -704,
+      -3,  -704,   598,   751,  -704,   942,  -704,   755,  -704,  -704,
+     753,  -704,  -704,  -704,  -704,  -704,  -704,  -704,  -704,  -704,
+    -704,  -704,    49,  -704,  2158,  -704,    49,  -704,  -704,  -704,
+      50,  -704,   942,  -704,  -704,  -704,  -704,  -704,  -704,   942,
+    -704,  -704,  -704,  3152,  -704,  -704,  -704,  -704,  -704,  -704,
+     754,  -704,  -704,  -704,  -704,   -24,   522,  -704,  -704,  2434,
+    -704,   560,   179,  -704,   581,  3152,   179,    41,  -704,   164,
+    -704,   451,   539,  -704,  -704,  -704,   562,   543,  1736,   542,
+    -704,  -704,  -704,  2342,    71,  -704,   547,   544,   552,  3180,
+    -704,  -704,   306,   563,  -704,  -704,  -704,    49,   548,    79,
+     169,   306,  -704,  -704,  -704,  -704,   126,  -704,  -704,  2250,
+    -704,   126,  -704,   549,    77,   272,  -704,   213,   213,  -704,
+     277,   277,   160,   160,  2707,  2726,  2647,  2746,  2771,   207,
+     160,   160,   -13,   -13,    35,    35,    35,  -704,  2619,  -704,
+    -704,  -704,   574,  -704,   550,   579,  -704,  -704,   109,  -704,
+     555,    49,   558,  -704,  2434,  -704,  -704,   561,  -704,  -704,
+     451,  -704,   179,  1297,   306,   564,    79,  -704,  -704,   306,
+     451,   566,   570,   179,    67,  -704,   594,  -704,  -704,  -704,
+    -704,  3152,   573,  -704,  -704,  -704,  -704,  -704,   780,  -704,
+    -704,    57,  -704,  -704,   585,  -704,   -91,  -704,  -704,   568,
+    -704,   572,   113,  -704,   576,    49,   577,  -704,   942,  2434,
+    -704,  -704,   942,  -704,  3152,  -704,  3152,  -704,   109,  -704,
+    -704,  -704,   578,  -704,   595,  -704,  -704,    58,   179,  -704,
+    -704,   586,   408,  -704,  -704,  -704,  -704,   451,  1634,  -704,
+     588,   590,   942,  -704,    49,  -704,  -704,  -704,  -704,   109,
+    -704,  -704,  -704,    35,   596,  2688,  -704,  -704,  -704,  -704,
+    3180,   571,  -704,   599,    67,  -704,   179,  -704,  -704,  -704,
+    -704,    36,  -704,  -704,    72,  2434,  -704,   942,   608,  -704,
+    -704,   601,   604,   623,   224,  -704,  -704,   224,  -704,  -704,
+     605,   179,  -704,  -704,  -704
 };
 
 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1597,139 +1600,139 @@
    means the default is an error.  */
 static const yytype_int16 yydefact[] =
 {
-      11,     0,    88,     1,   308,    55,   470,   480,     0,   319,
-     311,   330,     0,   398,     0,     0,     0,   318,   306,   320,
-     394,   317,   321,   322,     0,   397,   324,   331,   332,   329,
-       0,   322,     0,     0,   396,     0,     0,   322,     0,   326,
-     395,   306,   306,   316,   461,   312,   109,     2,    27,    26,
-      56,     0,    50,    28,    53,    28,    25,     0,    89,   463,
-       0,   335,   462,   313,     0,     0,   473,     0,    19,     0,
+      11,     0,    88,     1,   309,    55,   471,   481,     0,   320,
+     312,   331,     0,   399,     0,     0,     0,   319,   307,   321,
+     395,   318,   322,   323,     0,   398,   325,   332,   333,   330,
+       0,   323,     0,     0,   397,     0,     0,   323,     0,   327,
+     396,   307,   307,   317,   462,   313,   109,     2,    27,    26,
+      56,     0,    50,    28,    53,    28,    25,     0,    89,   464,
+       0,   336,   463,   314,     0,     0,   474,     0,    19,     0,
       23,     0,    21,     0,     0,     0,    48,     0,    17,    16,
-      24,   405,   405,   405,     0,     0,   465,   471,   405,     0,
-     467,   333,     0,     4,   480,     0,   308,   309,   349,   345,
-       0,     5,   357,   464,     0,   307,   323,   328,     0,   371,
-     327,   351,     0,   347,     0,   325,   314,   466,     0,   468,
-       0,   315,     0,   111,     0,   113,   114,     0,   115,   116,
+      24,   406,   406,   406,     0,     0,   466,   472,   406,     0,
+     468,   334,     0,     4,   481,     0,   309,   310,   350,   346,
+       0,     5,   358,   465,     0,   308,   324,   329,     0,   372,
+     328,   352,     0,   348,     0,   326,   315,   467,     0,   469,
+       0,   316,     0,   111,     0,   113,   114,     0,   115,   116,
      117,     0,     0,   120,   122,     0,   123,   124,   125,     0,
-       0,   128,     0,   130,   131,   132,   133,     0,   135,     0,
-     137,   138,     0,   140,   141,   142,     0,     0,   145,   146,
-       0,   148,   149,   150,   151,   152,     0,     0,     0,     0,
-       0,   158,     0,   160,   161,     0,   163,     0,   165,   166,
-     169,     0,   170,   171,     0,   173,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   183,     0,   185,   186,     0,
-     188,     0,     0,   191,   192,   193,   194,   195,   459,   196,
-       0,   198,   457,     0,   200,   201,   202,     0,   204,     0,
-     206,   207,     0,     0,     0,     0,   212,   458,   213,     0,
-       0,   217,   218,     0,     0,     0,     0,    91,   222,    51,
-      88,    88,     0,     0,    88,     0,   306,     0,   306,   306,
-       0,   463,     0,   365,     0,   385,     0,   465,   467,    52,
-     308,   472,     0,    18,    22,    20,     0,    12,    15,     0,
-      49,   387,    14,   409,   406,   408,   407,   223,   224,   225,
-     226,   399,     0,     0,   310,   413,   449,   412,   303,   463,
-     465,   405,   467,   401,    54,     0,   492,   491,   493,     0,
-     488,   481,     0,     0,     0,    88,    71,   372,     0,     0,
-       0,   289,     0,   295,     0,     0,     0,     0,     0,     0,
+       0,   128,     0,   130,   131,   133,   132,   134,     0,   136,
+       0,   138,   139,     0,   141,   142,   143,     0,     0,   146,
+     147,     0,   149,   150,   151,   152,   153,     0,     0,     0,
+       0,     0,   159,     0,   161,   162,     0,   164,     0,   166,
+     167,   170,     0,   171,   172,     0,   174,   175,   176,   177,
+     178,   179,   180,   181,   182,   183,   184,     0,   186,   187,
+       0,   189,     0,     0,   192,   193,   194,   195,   196,   460,
+     197,     0,   199,   458,     0,   201,   202,   203,     0,   205,
+       0,   207,   208,     0,     0,     0,     0,   213,   459,   214,
+       0,     0,   218,   219,     0,     0,     0,     0,    91,   223,
+      51,    88,    88,     0,     0,    88,     0,   307,     0,   307,
+     307,     0,   464,     0,   366,     0,   386,     0,   466,   468,
+      52,   309,   473,     0,    18,    22,    20,     0,    12,    15,
+       0,    49,   388,    14,   410,   407,   409,   408,   224,   225,
+     226,   227,   400,     0,     0,   311,   414,   450,   413,   304,
+     464,   466,   406,   468,   402,    54,     0,   493,   492,   494,
+       0,   489,   482,     0,     0,     0,    88,    71,   373,     0,
+       0,     0,   290,     0,   296,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   242,     0,
-       0,     0,     0,     0,     0,     0,   242,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   109,    90,    72,
-       0,     0,    45,    42,    43,    44,     0,    36,     0,    40,
-       0,    38,     0,     0,     0,    34,    33,    41,    48,     0,
-     392,     0,    89,    46,   464,    74,   466,   468,    75,   353,
-       0,     0,     0,   365,   302,   334,   338,     0,   339,   341,
-     343,     0,   352,    11,     0,     0,     0,   411,     0,     0,
-      77,   415,   402,     0,     0,   487,     0,    70,     0,     7,
-       0,     0,   233,   238,   234,     0,     0,     0,   469,    88,
-      88,    88,   104,     0,     0,     0,     0,     0,   253,   244,
-     245,   246,   250,   251,   252,   247,   248,     0,   249,     0,
-       0,     0,     0,     0,     0,     0,   287,     0,   285,     0,
-       0,     0,     0,    99,     0,     0,   288,     0,     0,     0,
-       0,    94,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   434,     0,     0,   240,   243,    96,
-      97,    98,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   456,   451,   452,   453,   454,   455,
-       0,     0,     0,     0,   477,   479,     0,     0,     0,    92,
-     109,     8,     0,    35,    39,    37,    31,    30,    29,    76,
-       0,     0,    88,    88,   366,   367,   353,    48,   383,   336,
-     340,   342,     0,   337,    88,     0,    88,     0,   400,   410,
-     414,   450,     0,    87,     0,     0,    81,    78,    79,   498,
-     496,   499,   497,     0,   494,   489,   482,     0,   236,   239,
-      88,     0,   368,   369,   373,    59,     0,     0,   460,     0,
-     290,     0,     0,   475,    89,   296,     0,   110,     0,   112,
-     216,   118,     0,   277,   276,   275,   278,   273,   274,   470,
-       0,   422,     0,   405,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   243,
+       0,     0,     0,     0,     0,     0,     0,   243,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   109,    90,
+      72,     0,     0,    45,    42,    43,    44,     0,    36,     0,
+      40,     0,    38,     0,     0,     0,    34,    33,    41,    48,
+       0,   393,     0,    89,    46,   465,    74,   467,   469,    75,
+     354,     0,     0,     0,   366,   303,   335,   339,     0,   340,
+     342,   344,     0,   353,    11,     0,     0,     0,   412,     0,
+       0,    77,   416,   403,     0,     0,   488,     0,    70,     0,
+       7,     0,     0,   234,   239,   235,     0,     0,     0,   470,
+      88,    88,    88,   104,     0,     0,     0,     0,     0,   254,
+     245,   246,   247,   251,   252,   253,   248,   249,     0,   250,
+       0,     0,     0,     0,     0,     0,     0,   288,     0,   286,
+       0,     0,     0,     0,    99,     0,     0,   289,     0,     0,
+       0,     0,    94,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   435,     0,     0,   241,   244,
+      96,    97,    98,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   457,   452,   453,   454,   455,
+     456,     0,     0,     0,     0,   478,   480,     0,     0,     0,
+      92,   109,     8,     0,    35,    39,    37,    31,    30,    29,
+      76,     0,     0,    88,    88,   367,   368,   354,    48,   384,
+     337,   341,   343,     0,   338,    88,     0,    88,     0,   401,
+     411,   415,   451,     0,    87,     0,     0,    81,    78,    79,
+     499,   497,   500,   498,     0,   495,   490,   483,     0,   237,
+     240,    88,     0,   369,   370,   374,    59,     0,     0,   461,
+       0,   291,     0,     0,   476,    89,   297,     0,   110,     0,
+     112,   217,   118,     0,   278,   277,   276,   279,   274,   275,
+     471,     0,   423,     0,   406,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   119,   121,     0,
-     126,     0,     0,   127,     0,   134,     0,   136,   139,     0,
-     143,   144,   147,   153,   154,   155,   156,   157,   159,   162,
-     164,   434,   399,    77,   439,   434,   436,   435,    84,   431,
-     168,   242,   167,   172,   184,   187,   189,   190,     0,   199,
-     203,   205,     0,   208,   209,   211,   210,   214,   215,     0,
-     219,   220,   221,    93,     0,     0,    28,   376,    77,   442,
-     474,    48,    47,     0,    89,    48,     0,   354,    88,   350,
-       0,     0,   344,    13,   359,     0,     0,     0,     0,    86,
-      85,   416,     0,     0,   490,   486,     0,   482,     0,   235,
-     237,     0,     0,    60,    57,    58,     0,   467,     0,   465,
-     304,   294,   293,   101,   103,   422,   284,   399,    77,   426,
-     422,   423,     0,   419,   405,   403,   266,   267,   279,   260,
-     261,   264,   265,   255,   256,     0,   257,   258,   259,   263,
-     262,   269,   268,   271,   272,   270,   280,     0,   286,   106,
-     105,     0,   100,     0,     0,    95,    83,   434,   399,     0,
-     434,     0,   430,    77,   438,   241,     0,   102,   478,     0,
-      10,    48,    88,     0,     0,     0,   393,   346,     0,     0,
-       0,     0,    48,   379,   380,   384,    46,   361,   360,   363,
-       0,     0,   301,   364,    82,    80,   495,     0,   485,   483,
-       0,   370,   374,   444,   447,     0,   292,   299,     0,   305,
-       0,   422,   399,     0,   434,     0,   418,     0,    77,   425,
-     404,     0,   283,     0,   129,     0,   429,   434,   440,   433,
-     437,     0,   197,     0,    73,    32,     0,    48,   443,   391,
-     335,     0,   390,   355,   356,   348,     0,    88,   362,     0,
-       0,     0,   446,     0,   291,   227,   282,   417,   434,   427,
-     421,   424,   281,     0,   254,   107,   108,   432,   441,     0,
-       0,   375,   336,   381,   382,    48,   484,     6,   445,   448,
-       0,   420,   428,     0,    77,   386,     0,     0,   476,   228,
-       0,     0,     0,    88,     9,   377,    88,   298,   230,     0,
-      48,   229,   297,   378
+       0,     0,     0,     0,     0,     0,     0,     0,   119,   121,
+       0,   126,     0,     0,   127,     0,   135,     0,   137,   140,
+       0,   144,   145,   148,   154,   155,   156,   157,   158,   160,
+     163,   165,   435,   400,    77,   440,   435,   437,   436,    84,
+     432,   169,   243,   168,   173,   185,   188,   190,   191,     0,
+     200,   204,   206,     0,   209,   210,   212,   211,   215,   216,
+       0,   220,   221,   222,    93,     0,     0,    28,   377,    77,
+     443,   475,    48,    47,     0,    89,    48,     0,   355,    88,
+     351,     0,     0,   345,    13,   360,     0,     0,     0,     0,
+      86,    85,   417,     0,     0,   491,   487,     0,   483,     0,
+     236,   238,     0,     0,    60,    57,    58,     0,   468,     0,
+     466,   305,   295,   294,   101,   103,   423,   285,   400,    77,
+     427,   423,   424,     0,   420,   406,   404,   267,   268,   280,
+     261,   262,   265,   266,   256,   257,     0,   258,   259,   260,
+     264,   263,   270,   269,   272,   273,   271,   281,     0,   287,
+     106,   105,     0,   100,     0,     0,    95,    83,   435,   400,
+       0,   435,     0,   431,    77,   439,   242,     0,   102,   479,
+       0,    10,    48,    88,     0,     0,     0,   394,   347,     0,
+       0,     0,     0,    48,   380,   381,   385,    46,   362,   361,
+     364,     0,     0,   302,   365,    82,    80,   496,     0,   486,
+     484,     0,   371,   375,   445,   448,     0,   293,   300,     0,
+     306,     0,   423,   400,     0,   435,     0,   419,     0,    77,
+     426,   405,     0,   284,     0,   129,     0,   430,   435,   441,
+     434,   438,     0,   198,     0,    73,    32,     0,    48,   444,
+     392,   336,     0,   391,   356,   357,   349,     0,    88,   363,
+       0,     0,     0,   447,     0,   292,   228,   283,   418,   435,
+     428,   422,   425,   282,     0,   255,   107,   108,   433,   442,
+       0,     0,   376,   337,   382,   383,    48,   485,     6,   446,
+     449,     0,   421,   429,     0,    77,   387,     0,     0,   477,
+     229,     0,     0,     0,    88,     9,   378,    88,   299,   231,
+       0,    48,   230,   298,   379
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -659,  -659,  -659,  -659,  -659,  -659,  -659,   382,  -659,   -51,
-    -659,   -36,  -331,    -1,  -659,   352,  -659,  -659,  -659,  -659,
-    -659,  -659,  -659,    29,  -587,  -659,  -659,  -314,  -276,  -241,
-      -2,  -659,  -659,  -659,   499,  -268,  -659,  -659,  -659,  -659,
-    -659,  -285,   -69,  -659,  -659,  -659,  -659,  -659,   242,    17,
-     445,   153,   304,  -659,  -288,  -319,  -659,  -659,  -659,  -659,
-    -108,  -335,  -659,   109,  -659,    26,    -6,   -63,  -257,    96,
-     256,  -249,  -255,  -246,   277,  -658,    18,    30,    21,    32,
-      23,    37,    38,   295,  -659,    28,  -659,  -659,  -659,  -659,
-     444,   112,    39,    16,  -659,  -659,    43,  -659,  -659,  -659,
-    -659,    46,  -659,  -659,  -659,  -659,    48,  -659,  -659,  -354,
-    -583,     7,   243,   -45,   -55,  -229,  -659,  -659,  -659,  -630,
-    -659,  -655,  -659,  -568,  -659,  -659,  -659,   -43,  -659,   584,
-    -659,   496,    12,  -392,    -8,  -659,    15,  -659,   740,   122,
-    -659,  -659,   127,  -659,   443,  -659,   140
+    -704,  -704,  -704,  -704,  -704,  -704,  -704,   432,  -704,   -52,
+    -704,     5,  -328,    -1,  -704,   437,  -704,  -704,  -704,  -704,
+    -704,  -704,  -704,    29,  -587,  -704,  -704,  -291,  -263,  -240,
+      -2,  -704,  -704,  -704,   502,  -266,  -704,  -704,  -704,  -704,
+    -704,  -271,   -69,  -704,  -704,  -704,  -704,  -704,   257,    17,
+     498,   178,   407,  -704,  -285,  -321,  -704,  -704,  -704,  -704,
+     -73,  -325,  -704,   138,  -704,    56,    -6,   -63,  -252,   233,
+     283,  -219,  -243,  -259,   309,  -703,    16,    30,    21,    32,
+      28,    37,    38,   312,  -704,    20,  -704,  -704,  -704,  -704,
+     456,   125,    60,    11,  -704,  -704,    39,  -704,  -704,  -704,
+    -704,    45,  -704,  -704,  -704,  -704,    47,  -704,  -704,  -364,
+    -503,     7,   262,   -45,   -55,  -194,  -704,  -704,  -704,  -607,
+    -704,  -611,  -704,  -575,  -704,  -704,  -704,    -5,  -704,   613,
+    -704,   529,    12,  -380,    19,  -704,    15,  -704,   770,   153,
+    -704,  -704,   158,  -704,   464,  -704,   167
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-       0,     1,    47,   304,    48,   684,   362,     2,   403,   240,
-     686,   532,   271,   363,    50,   576,    51,    52,    53,    54,
-     364,   250,    55,   365,   555,   556,   557,   558,   654,    57,
-     382,   236,   472,   492,   733,   432,   500,   433,   771,   459,
-     469,   237,   655,   900,   909,   421,   422,   423,   424,   289,
-     486,   487,   456,   457,   458,   467,   429,   580,   585,   431,
-     918,   919,   811,    60,   828,   104,    61,   656,    62,   107,
-      63,    64,    65,    66,   400,   401,   366,   367,   368,   369,
-     370,   371,   372,   533,   697,   373,    75,   546,   707,    76,
-     391,   573,   574,   374,   425,   722,   375,   793,   920,   805,
-     701,   376,   393,   800,   801,   245,   377,    81,    82,    83,
-     405,   484,   601,   273,    85,   286,   287,   741,   835,   742,
-     743,   657,   781,   658,   659,   690,   872,   824,   825,   288,
-     510,   238,   290,    87,    88,    89,   292,   516,    93,   716,
-     717,    94,    95,   299,   300,   563,   564
+       0,     1,    47,   305,    48,   685,   363,     2,   404,   241,
+     687,   533,   272,   364,    50,   577,    51,    52,    53,    54,
+     365,   251,    55,   366,   556,   557,   558,   559,   655,    57,
+     383,   237,   473,   493,   734,   433,   501,   434,   772,   460,
+     470,   238,   656,   901,   910,   422,   423,   424,   425,   290,
+     487,   488,   457,   458,   459,   468,   430,   581,   586,   432,
+     919,   920,   812,    60,   829,   104,    61,   657,    62,   107,
+      63,    64,    65,    66,   401,   402,   367,   368,   369,   370,
+     371,   372,   373,   534,   698,   374,    75,   547,   708,    76,
+     392,   574,   575,   375,   426,   723,   376,   794,   921,   806,
+     702,   377,   394,   801,   802,   246,   378,    81,    82,    83,
+     406,   485,   602,   274,    85,   287,   288,   742,   836,   743,
+     744,   658,   782,   659,   660,   691,   873,   825,   826,   289,
+     511,   239,   291,    87,    88,    89,   293,   517,    93,   717,
+     718,    94,    95,   300,   301,   564,   565
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1737,912 +1740,923 @@
    number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      58,    49,    98,   381,   241,   396,    99,   398,   473,    84,
-     102,   411,   105,   397,    86,   283,   399,    90,    77,    59,
-      67,   285,   482,    69,   109,    71,   274,   274,   274,   113,
-      74,    56,    68,   274,    70,   105,   105,   275,   276,    72,
-      73,   475,   723,   293,   478,    78,   480,   529,    79,   485,
-      80,   548,   461,   406,   407,   606,   497,   559,   261,   723,
-     820,   606,   242,   603,   420,   256,   779,   118,   120,   777,
-     257,   823,   519,   258,   255,   251,   252,   291,   284,   253,
-     906,   254,    96,   776,    97,   705,   489,   782,   418,   551,
-     789,   277,   278,   279,   280,   582,   586,   907,    30,   312,
-     560,   794,   626,   269,  -486,   830,   310,    96,  -308,    97,
-     836,   873,   639,   661,   308,  -308,   277,   278,   279,   280,
-     798,   208,   687,   542,   266,   212,   243,   110,   267,   627,
-     543,   545,    13,   115,   874,   534,    96,     3,    97,   640,
-     662,   397,   688,   661,   535,   277,   278,   279,   280,   313,
-      96,   833,    97,   295,   831,   227,   357,    13,  -308,   277,
-     278,   279,   280,   567,   -66,  -308,   799,   713,    91,   397,
-     670,   277,   278,   279,   280,   309,   549,   542,   358,    96,
-    -309,    97,   414,   296,   870,   244,    46,   283,   579,   581,
-     581,   490,   409,   285,   714,   847,   851,   410,   561,   297,
-     603,   877,   100,   419,   415,   790,   699,   298,   101,   846,
-     744,   706,   849,   283,   283,    92,   106,   409,   823,   285,
-     285,   438,   783,   108,   439,   440,   441,   442,   443,   444,
-      13,   903,   562,   491,   379,   683,   274,   380,    58,    58,
-     105,   385,   105,   105,   514,   515,   412,    84,    84,   878,
-     284,   883,    86,    86,   437,    90,    90,    59,    59,   621,
-     622,   623,   111,   624,   625,    20,   880,   908,    16,   624,
-     625,   721,   724,   542,   118,   120,   284,   284,   890,   887,
-     910,   409,   239,   720,    46,   396,   838,   398,  -231,   725,
-      25,   693,   696,   397,   116,   112,   399,   266,   652,   121,
-     769,   526,   689,   770,   606,   581,   114,   445,   262,   409,
-     901,   284,   540,   -61,   653,   773,   530,   911,    46,   259,
-     734,   434,   578,   281,    46,   739,   460,   462,   583,   420,
-     103,   117,    97,    97,   483,   474,   283,   498,   768,   282,
-      34,   503,   285,   511,   512,    46,    46,    46,   518,   695,
-    -232,   802,   652,   262,   501,  -300,    40,   568,   446,  -300,
-     796,   -62,  -308,   409,   797,   119,   281,    97,   653,   260,
-     384,    97,    97,   284,   386,   263,    97,   387,   737,    97,
-     786,   264,   282,   784,   277,   278,   279,   280,   531,   409,
-       4,   539,    97,   447,   738,    46,   265,   917,   815,   284,
-     602,   -64,  -308,   268,   787,   270,   448,   272,   483,   302,
-     -63,   294,   504,   -65,   284,   303,   305,   306,   307,   572,
-     547,   311,   314,   548,   315,    13,   316,   317,   318,   584,
-      46,   319,   449,   320,   321,   450,   451,   552,   383,   322,
-     453,   454,   323,   324,   325,   803,   326,   327,   328,   553,
-     329,   397,   330,   455,   804,   331,   332,   696,   333,   739,
-     854,   396,   283,   398,   739,   334,   335,   839,   285,   397,
-     336,   865,   399,   402,   337,   338,   339,   548,   284,   340,
-     341,   342,   604,   605,   606,   505,   506,   507,   508,   509,
-     651,   388,   343,   548,   395,   344,   345,   346,   347,   827,
-     619,   620,   621,   622,   623,   348,   349,   350,   351,   352,
-     353,   354,   624,   625,   355,   356,   -67,   390,   389,   392,
-     -68,   -69,  -336,   416,   548,   284,   891,   404,   408,   417,
-     694,   692,   740,   413,   853,   426,   427,   602,   428,    84,
-     397,   435,    58,    49,    86,    11,   430,    90,   274,    59,
-     861,    84,   898,   862,   436,   739,    86,   463,   745,    90,
-      77,    59,    67,   465,   905,    69,   858,    71,   468,   470,
-     471,   476,    74,    56,    68,   885,    70,   886,   477,   479,
-     493,    72,    73,   494,   780,   496,   726,    78,   728,   923,
-      79,   737,    80,   729,   727,   462,   513,   517,   520,    23,
-     522,   523,   409,   521,   541,   524,   570,   738,   525,   527,
-     528,   893,    26,    27,    28,    29,  -308,   397,   912,   536,
-     894,   571,    31,   537,   550,   566,   693,   466,   569,   575,
-     588,   466,   396,   592,   398,   792,   587,   589,   590,   481,
-     397,   591,   488,   399,   628,   284,   629,   630,   631,   284,
-     488,   483,   502,   632,   633,   634,   635,   636,   637,   283,
-     679,   638,   641,   642,   643,   285,   740,   829,    37,   834,
-     644,   740,   581,    39,   645,   581,   646,   647,   648,   462,
-     619,   620,   621,   622,   623,   650,   483,   660,   663,   274,
-     664,   665,   624,   625,   666,   667,   668,   669,   671,   840,
-     672,   256,   674,   675,   676,   810,   257,   677,   678,   258,
-     483,   251,   466,   554,    84,   572,   680,   681,   682,   685,
-     284,   700,   284,   704,   284,   708,   283,   731,   711,   712,
-     715,   718,   285,   721,   730,   732,   483,   748,   766,   772,
-     774,   775,   788,   791,   795,   244,   806,   807,   813,   808,
-     822,    92,   843,   593,   594,   595,   596,   597,   598,   600,
-     818,   826,   740,   837,   844,   869,   845,   848,   889,   850,
-     867,   284,   863,   852,   284,   857,   864,   866,   868,   577,
-     904,   483,   875,   871,   876,   544,   879,   572,   881,   284,
-      58,   499,   859,   860,   888,  -388,   604,   605,   606,    84,
-     902,   609,   610,   913,    86,   896,   916,    90,   921,    59,
-     897,  -389,   719,   914,   785,   922,   812,   256,   915,   702,
-     464,   604,   605,   606,   607,   608,   609,   610,   284,   612,
-     899,   698,   856,   821,   301,   735,   483,   538,   495,   819,
-     394,   284,   817,   604,   605,   606,   607,   608,   609,   610,
-     462,     0,   462,   816,     0,   892,   596,   565,     0,     0,
-       0,     0,     0,     0,     0,   694,   692,   284,     0,     0,
-       0,     0,   284,     0,    84,     0,     0,     0,     0,    86,
-       0,     0,    90,     0,    59,     0,     0,     0,     0,     0,
-     438,     0,   599,   439,   440,   441,   442,   443,   444,     0,
-       0,     0,   483,     0,     0,     0,     0,     0,   746,   747,
-       0,   749,   750,   751,   752,   753,   754,   755,   756,   757,
-     758,   759,   760,   761,   762,   763,   764,   765,     9,   767,
-      10,     0,     0,     0,     0,    11,     0,     0,   466,   438,
-      13,     0,   439,   440,   441,   442,   443,   444,     0,   438,
-       0,     0,   439,   440,   441,   442,   443,   444,     0,     0,
-       0,     0,     0,    17,     0,   488,     0,     0,     0,   246,
-      19,     0,     0,     0,     0,    20,   445,     0,     0,    21,
-       0,     0,    22,     0,     0,     0,     0,     0,     0,    23,
-       0,     0,   617,   618,   619,   620,   621,   622,   623,     0,
-      25,     0,    26,    27,    28,    29,   624,   625,     0,     0,
-       0,     0,    31,     0,   614,   615,   616,   617,   618,   619,
-     620,   621,   622,   623,     0,   445,     0,   446,     0,     0,
-       0,   624,   625,     0,     4,   445,     6,   615,   616,   617,
-     618,   619,   620,   621,   622,   623,     0,     0,     0,     0,
-      34,     0,     0,   624,   625,     0,     0,    36,    37,    38,
-       0,     0,   447,    39,     0,     0,    40,     0,     0,   248,
-       0,     0,     9,     0,    10,   448,   446,     0,   249,    11,
-      43,     0,     0,     0,    13,     0,   446,     0,    44,    45,
-     604,   605,   606,   607,   608,   609,   610,     0,     0,     0,
-       0,   449,     0,     0,   450,   451,   452,    17,     0,   453,
-     454,   447,     0,   246,    19,     0,     0,     0,     0,    20,
-       0,   447,   455,    21,   448,     0,    22,     0,     0,     0,
-       0,     0,     0,    23,   448,     0,     0,     0,     4,     5,
-       6,   882,     0,     0,    25,   884,    26,    27,    28,    29,
-     449,     0,     0,   450,   451,   452,    31,     0,   453,   454,
-     449,     0,     0,   450,   451,   452,     0,   709,   453,   454,
-       8,   455,     0,     0,     0,   466,     9,     0,    10,     0,
-       0,   455,     0,    11,    12,     0,     0,     0,    13,     0,
-       0,     0,     0,     0,    34,    14,     0,   360,     0,     0,
-       0,    36,    37,    38,     0,     0,     0,    39,    16,     0,
-      40,    17,     0,   248,     0,     0,     0,    18,    19,     0,
-       0,     0,   249,    20,    43,     0,     0,    21,     0,     0,
-      22,     0,    44,    45,     0,     0,     0,    23,     0,     0,
-       0,     0,     0,     0,    24,   361,     0,     0,    25,     0,
-      26,    27,    28,    29,    30,     0,     0,     0,     0,     0,
-      31,    46,     0,     0,     0,   809,     0,    32,     0,     0,
+      58,    49,    98,   242,   400,   382,    99,   474,   607,    84,
+     102,   397,   105,    77,    86,   284,   821,    90,    67,    59,
+     399,   286,    74,    69,   109,   412,   275,   275,   275,   113,
+      71,    56,    68,   275,    70,   105,   105,   276,   277,    72,
+      73,    78,   549,   294,   398,   476,   483,    79,   479,    80,
+     481,   530,    96,   486,    97,   462,   607,   724,   262,   724,
+     498,   278,   279,   280,   281,   257,   421,   780,   706,   256,
+     258,   490,   243,   259,   253,   252,   604,   777,   285,   254,
+     419,   783,    96,   907,    97,   309,   255,   520,   552,   407,
+     408,   278,   279,   280,   281,   270,   790,   118,   120,    96,
+     908,    97,   795,   560,   292,  -487,   583,   587,   278,   279,
+     280,   281,    96,   296,    97,   799,   824,   313,   627,   874,
+    -309,   278,   279,   280,   281,   278,   279,   280,   281,   831,
+      30,   640,   536,   311,   837,  -309,     3,   244,   278,   279,
+     280,   281,   875,   297,   662,   628,   310,   561,   535,    13,
+     778,   662,   834,   358,   770,   209,   714,   771,   641,   213,
+     298,   800,    13,   546,   415,    91,    13,   314,   299,    46,
+    -309,   663,   398,   688,  -310,   359,   568,   491,   671,   605,
+     606,   607,   106,   715,   -66,  -309,   416,   904,   284,   228,
+     580,   582,   582,   689,   286,   420,   245,   852,   543,   410,
+     398,   515,   516,   847,   411,   544,   850,   622,   623,   624,
+     700,   791,   550,   604,   284,   284,    92,   625,   626,   492,
+     286,   286,   707,   745,   101,   878,   605,   606,   607,   608,
+     609,   610,   611,   111,   607,   832,   100,   275,   381,    58,
+      58,   105,   386,   105,   105,   562,   108,   413,    84,    84,
+     684,   285,   884,    86,    86,   438,    90,    90,    59,    59,
+     881,   112,   380,   824,   110,   625,   626,   543,   722,   653,
+     115,   909,    16,   888,   871,   891,   848,   285,   285,   563,
+     410,   410,   543,   263,   400,   654,   784,   721,   725,   911,
+     726,   397,   303,   694,   697,   114,   605,   606,   607,   282,
+     399,   610,   611,   240,   902,   118,   120,   582,   410,    96,
+     304,    97,   285,   839,   774,   283,   282,   531,   912,   -62,
+    -309,   116,   435,   735,   398,    13,   121,   461,   463,   653,
+     879,   421,   283,   738,   -61,   484,   475,   284,   690,   740,
+     410,   260,   769,   286,   410,   654,   738,   267,   267,   739,
+      46,   268,   527,   264,  -232,   502,   263,   410,   569,    46,
+     541,    20,   739,   579,   797,   499,    46,   265,   798,   504,
+     584,   512,   513,   505,   285,   103,   519,    97,   620,   621,
+     622,   623,   624,    46,   787,   306,    25,   696,   266,   532,
+     625,   626,   540,   308,    46,    46,   312,   785,  -233,   803,
+     285,   603,  -301,   117,   269,    97,  -301,   788,   119,   484,
+      97,   261,   271,    97,   549,   285,   548,   385,   273,    97,
+     573,   -63,   816,   618,   619,   620,   621,   622,   623,   624,
+     585,   620,   621,   622,   623,   624,    34,   625,   626,   387,
+     315,    97,   805,   625,   626,   295,   506,   507,   508,   509,
+     510,   388,    40,    97,     4,    46,    97,   918,   804,   697,
+     400,   -64,  -309,   284,   855,   -65,    46,   397,   549,   286,
+     316,   307,   317,   740,   384,   866,   399,   389,   740,   285,
+     318,   840,   398,   319,   549,   320,   321,   322,   323,   324,
+     325,   652,   326,   618,   619,   620,   621,   622,   623,   624,
+     398,   327,   328,   329,   330,   331,   332,   625,   626,   333,
+     334,   335,   336,   390,   337,   549,   338,   339,   340,   391,
+     341,   342,   343,   344,   345,   346,   285,   347,   348,   349,
+     892,   695,   693,   741,   350,   828,   351,   -67,   603,   352,
+      84,   863,   393,    58,    49,    86,   353,   854,    90,   275,
+      59,   899,    84,   354,   355,   356,    77,    86,   357,   746,
+      90,    67,    59,   -68,   -69,    74,    69,   396,   906,   740,
+    -337,   398,   403,    71,    56,    68,   405,    70,   886,   409,
+     887,   862,    72,    73,    78,   781,   414,   727,   417,   729,
+      79,   427,    80,   924,   730,   728,   463,   418,   428,   429,
+     431,   436,   859,   437,   464,   466,   469,   514,   895,   471,
+     439,   472,   477,   440,   441,   442,   443,   444,   445,   478,
+     480,   494,   913,    11,   894,   495,   497,   518,   694,   521,
+     522,   400,   524,   523,   525,   793,   526,   528,   397,   529,
+     542,   571,   576,  -309,   537,   567,   285,   399,   398,   551,
+     285,   538,   484,   570,   589,   572,   588,   630,   590,   591,
+     284,   592,   593,   632,   629,   631,   286,   741,   830,   633,
+     835,   398,   741,   635,   582,   634,   637,   582,    23,   636,
+     463,   686,   638,   639,   669,   673,   642,   484,   701,   643,
+     275,    26,    27,    28,    29,   644,   645,   446,   646,   647,
+     841,    31,   257,   680,   648,   649,   811,   258,   651,   661,
+     259,   484,   252,   664,   665,    84,   573,   666,   667,   668,
+     670,   285,   672,   285,   675,   285,   676,   284,   677,   678,
+     679,   467,   681,   286,   682,   467,   683,   484,   705,   709,
+     712,   713,   716,   482,   719,   722,   489,    37,   447,   731,
+     732,   733,    39,   749,   489,   767,   503,   773,   775,   792,
+     789,   439,   776,   741,   440,   441,   442,   443,   444,   445,
+     796,   245,   285,   807,   808,   285,   809,   814,    92,   819,
+     823,   827,   484,   448,   844,   870,   838,   845,   573,   846,
+     285,    58,   849,   860,   861,   851,   449,   872,   853,   864,
+      84,   858,   876,   865,   867,    86,   869,   905,    90,   877,
+      59,   890,   868,   880,   882,   889,   467,   555,   257,  -389,
+     914,   897,   450,   898,   465,   451,   452,   553,   720,   285,
+     454,   455,  -390,   903,   915,   917,   545,   484,   923,   554,
+     786,   916,   285,   456,   922,   500,   813,   822,   446,   699,
+     539,   463,   703,   463,   857,   736,   893,   594,   595,   596,
+     597,   598,   599,   601,   302,   578,   695,   693,   285,   900,
+     395,   820,   496,   285,   818,    84,     0,     0,     0,   566,
+      86,   817,     0,    90,     0,    59,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   447,
+       0,     0,     0,   484,     0,     0,     0,     0,     0,   605,
+     606,   607,   608,   609,   610,   611,   612,   613,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    33,   617,   618,   619,   620,
-     621,   622,   623,     4,     5,     6,     0,     0,    34,     0,
-     624,   625,     0,     0,    35,    36,    37,    38,     0,     0,
-       0,    39,     0,     0,    40,     0,     0,    41,     0,     0,
-       0,     0,     0,     0,     0,     8,    42,     0,    43,     0,
-       0,     9,     0,    10,     0,     0,    44,    45,    11,    12,
-       0,     0,     0,    13,     0,     0,     0,     0,     0,     0,
-      14,     0,   360,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    16,     0,    46,    17,     0,     0,   378,
-       0,     0,    18,    19,     0,     0,     0,     0,    20,     0,
-       0,     0,    21,     0,     0,    22,     0,     0,     0,     0,
-       0,     0,    23,     0,     0,     0,     0,     0,     0,    24,
-     361,     0,     0,    25,     0,    26,    27,    28,    29,    30,
-       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
-       0,     0,    32,     0,     0,     0,     0,     0,     0,     0,
-       4,     0,     6,     0,     0,     0,     0,     0,     0,     0,
-      33,     0,     0,     0,     0,     0,     0,     0,     4,     5,
-       6,     0,     0,    34,     0,     0,     0,     0,     0,    35,
-      36,    37,    38,     0,     0,     0,    39,     0,     9,    40,
-      10,     0,    41,     0,     0,    11,     0,     0,     0,     0,
-       8,    42,     0,    43,     0,     0,     9,     0,    10,     0,
-       0,    44,    45,    11,    12,     0,     0,     0,    13,     0,
-       0,     0,     0,    17,     0,    14,     0,    15,     0,   246,
-      19,     0,     0,     0,     0,     0,     0,     0,    16,    21,
-      46,    17,    22,     0,   855,     0,     0,    18,    19,    23,
+       0,     0,     0,     0,   448,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   439,     0,   449,   440,   441,
+     442,   443,   444,   445,     0,     0,     0,     0,     0,     0,
+     597,     0,     0,     0,   439,     0,   600,   440,   441,   442,
+     443,   444,   445,   450,     0,     0,   451,   452,   453,     0,
+       0,   454,   455,     0,     0,     0,     0,     0,     0,     0,
+     710,     0,     0,     0,   456,     0,     0,     0,     0,     0,
+       0,     0,     9,     0,    10,     0,     0,     0,     0,    11,
+       0,     0,   747,   748,    13,   750,   751,   752,   753,   754,
+     755,   756,   757,   758,   759,   760,   761,   762,   763,   764,
+     765,   766,   446,   768,     0,     0,     0,     0,    17,     0,
+       0,     0,   467,     0,   247,    19,     0,     0,     0,     0,
+      20,   446,     0,     0,    21,     0,     0,    22,     0,     0,
+       0,     0,     0,     0,    23,     0,     0,     0,     0,   489,
+       0,     0,     0,     0,     0,    25,     0,    26,    27,    28,
+      29,     0,     0,   447,     0,     0,     0,    31,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   614,   447,   615,   616,   617,   618,   619,   620,   621,
+     622,   623,   624,     0,     0,     0,     0,     0,   448,     0,
+     625,   626,     0,     0,     0,    34,     0,   650,     0,     0,
+       0,   449,    36,    37,    38,     0,     0,   448,    39,     0,
+       0,    40,     0,     0,   249,     0,     0,     0,     0,     0,
+     449,     0,     0,   250,     0,    43,     0,   450,     0,     0,
+     451,   452,   453,    44,    45,   454,   455,     4,     5,     6,
+       0,     0,     0,     0,     0,     0,   450,     0,   456,   451,
+     452,   453,     0,     0,   454,   455,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   456,     0,     8,
+       0,     0,     0,     0,     0,     9,     0,    10,     0,     0,
+       0,     0,    11,    12,     0,     0,     0,    13,     0,     0,
+       0,     0,     0,     0,    14,     0,   361,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    16,     0,
+       0,    17,     0,     0,     0,   883,     0,    18,    19,   885,
        0,     0,     0,    20,     0,     0,     0,    21,     0,     0,
-      22,     0,    26,    27,    28,    29,     0,    23,     0,     0,
-       0,     0,    31,     0,    24,     0,     0,     0,    25,     0,
+      22,     0,     0,     0,     0,     0,     0,    23,     0,     0,
+       0,     0,     0,     0,    24,   362,     0,     0,    25,   467,
       26,    27,    28,    29,    30,     0,     0,     0,     0,     0,
       31,     0,     0,     0,     0,     0,     0,    32,     0,     0,
-       0,     0,     0,     0,     0,     4,     5,     6,     0,     0,
-       0,     0,     0,     0,     0,    33,     0,    36,    37,    38,
-       0,     0,     0,    39,     0,     0,     0,     0,    34,   248,
-       0,     0,     0,     0,    35,    36,    37,    38,   249,     0,
-      43,    39,     0,     9,    40,    10,     0,    41,    44,    45,
-      11,     0,     0,     0,     0,    13,    42,     0,    43,     0,
-       0,     0,    14,     0,     0,     0,    44,    45,     0,     0,
-     604,   605,   606,   607,   608,   609,   610,     0,    17,     0,
-       0,     0,     0,     0,    18,    19,     0,     0,     0,     0,
-      20,     0,     0,     0,    21,    46,     0,    22,     0,   703,
-       0,     0,     0,     0,    23,     0,     0,     0,     0,     0,
-       0,    24,     0,     0,     0,    25,     0,    26,    27,    28,
-      29,     0,     0,     0,     0,     0,     0,    31,     0,     0,
+       4,     5,     6,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
+       0,     0,     8,     0,    35,    36,    37,    38,     9,     0,
+      10,    39,     0,     0,    40,    11,    12,    41,     0,     0,
+      13,     0,     0,     0,     0,     0,    42,    14,    43,   361,
+       0,     0,     0,     0,     0,     0,    44,    45,     0,     0,
+       0,    16,     0,     0,    17,     0,     0,     0,     0,     0,
+      18,    19,     0,     0,     0,     0,    20,     0,     0,     0,
+      21,     0,     0,    22,     0,    46,     0,     0,     0,   379,
+      23,     0,     0,     0,     0,     0,     0,    24,   362,     0,
+       0,    25,     0,    26,    27,    28,    29,    30,     0,     0,
+       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
+      32,     0,     0,     4,     5,     6,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     4,     5,     6,     0,     0,     0,     0,     0,
-       0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
-       0,     0,    36,    37,    38,     0,     0,     0,    39,     0,
-       9,    40,    10,     0,    41,     0,     0,    11,     0,     0,
-       0,     0,    13,    42,     0,    43,     0,     0,     0,    14,
-       0,     0,     0,    44,    45,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    17,     0,     0,     0,     0,
-       0,    18,    19,     0,     0,     0,     0,    20,     0,     0,
-       0,    21,    46,     0,    22,     0,   691,     0,     0,     0,
-       0,    23,     0,     0,     0,     0,     0,     0,    24,     0,
-       0,     0,    25,     0,    26,    27,    28,    29,     0,     0,
-       0,     0,     0,     0,    31,   616,   617,   618,   619,   620,
-     621,   622,   623,     0,     0,     0,     0,     0,     0,     0,
-     624,   625,     0,     0,     0,     0,     0,     0,     0,    33,
-       0,     0,     0,     0,    -3,     0,     0,     4,     5,     6,
-       0,     0,    34,     0,     0,     0,     0,     0,     0,    36,
-      37,    38,     7,     0,     0,    39,     0,     0,    40,     0,
-       0,    41,     0,     0,     0,     0,     0,     0,     0,     8,
-      42,     0,    43,     0,     0,     9,     0,    10,     0,     0,
-      44,    45,    11,    12,     0,     0,     0,    13,     0,     0,
-       0,     0,     0,     0,    14,     0,    15,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    16,     0,    46,
-      17,     0,     0,   895,     0,     0,    18,    19,     0,     0,
-       0,     0,    20,     0,     0,     0,    21,     0,     0,    22,
-       0,     0,     0,     0,     0,     0,    23,     0,     0,     0,
-       0,     0,     0,    24,     0,     0,     0,    25,     0,    26,
-      27,    28,    29,    30,     0,     0,     0,     0,     0,    31,
-       0,     0,     0,     0,     0,     0,    32,     0,     0,     4,
-       5,     6,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   359,    33,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
-       0,     8,     0,    35,    36,    37,    38,     9,     0,    10,
-      39,     0,     0,    40,    11,    12,    41,     0,     0,    13,
-       0,     0,     0,     0,     0,    42,    14,    43,   360,     0,
-       0,     0,     0,     0,     0,    44,    45,     0,     0,    16,
+       0,    34,     0,     0,     0,     8,     0,    35,    36,    37,
+      38,     9,     0,    10,    39,     0,     0,    40,    11,    12,
+      41,     0,     0,    13,     0,     0,     0,     0,     0,    42,
+      14,    43,    15,     0,     0,     0,     0,     0,     0,    44,
+      45,     0,     0,     0,    16,     0,     0,    17,     0,     0,
+       0,     0,     0,    18,    19,     0,     0,     0,     0,    20,
+       0,     0,     0,    21,     0,     0,    22,     0,    46,     0,
+       0,     0,   856,    23,     0,     4,     5,     6,     0,     0,
+      24,     0,     0,     0,    25,     0,    26,    27,    28,    29,
+      30,     0,     0,     0,     0,     0,    31,     0,     0,     0,
+       0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     9,     0,    10,     0,     0,     0,     0,
+      11,    33,     0,     0,     0,    13,     0,     0,     0,     0,
+       0,     0,    14,     0,    34,     0,     0,     0,     0,     0,
+      35,    36,    37,    38,     0,     0,     0,    39,     0,    17,
+      40,     0,     0,    41,     0,    18,    19,     0,     0,     0,
+       0,    20,    42,     0,    43,    21,     0,     0,    22,     0,
+       0,     0,    44,    45,     0,    23,     0,     4,     5,     6,
+       0,     0,    24,     0,     0,     0,    25,     0,    26,    27,
+      28,    29,     0,     0,     0,     0,     0,     0,    31,     0,
+       0,    46,     0,     0,     0,   704,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     9,     0,    10,     0,     0,
+       0,     0,    11,    33,     0,     0,     0,    13,     0,     0,
+       0,     0,     0,     0,    14,     0,    34,     0,     0,     0,
+       0,     0,     0,    36,    37,    38,     0,     0,     0,    39,
+       0,    17,    40,     0,     0,    41,     0,    18,    19,     0,
+       0,     0,     0,    20,    42,     0,    43,    21,     0,     0,
+      22,     0,     0,     0,    44,    45,     0,    23,     0,     4,
+       0,     6,     0,     0,    24,     0,     0,     0,    25,     0,
+      26,    27,    28,    29,     0,     0,     0,     0,     0,     0,
+      31,     0,     0,    46,     0,     0,     0,   692,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     9,     0,    10,
+       0,     0,     0,     0,    11,    33,     0,     0,     0,    13,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
+       0,     0,     0,     0,     0,    36,    37,    38,     0,     0,
+       0,    39,     0,    17,    40,     0,     0,    41,     0,   247,
+      19,     0,     0,     0,     0,    20,    42,     0,    43,    21,
+       0,     0,    22,     0,     0,     0,    44,    45,     0,    23,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      25,     0,    26,    27,    28,    29,     0,     0,     0,     0,
+       0,     0,    31,     0,     0,    46,     0,     0,     0,   896,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    -3,     0,     0,     4,     5,     6,     0,     0,
+      34,     0,     0,     0,     0,     0,     0,    36,    37,    38,
+       7,     0,     0,    39,     0,     0,    40,     0,     0,   249,
+       0,     0,     0,     0,     0,     0,     0,     8,   250,     0,
+      43,     0,     0,     9,     0,    10,     0,     0,    44,    45,
+      11,    12,     0,     0,     0,    13,     0,     0,     0,     0,
+       0,     0,    14,     0,    15,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    16,    46,     0,    17,
+       0,   810,     0,     0,     0,    18,    19,     0,     0,     0,
+       0,    20,     0,     0,     0,    21,     0,     0,    22,     0,
+       0,     0,     0,     0,     0,    23,     0,     0,     0,     0,
+       0,     0,    24,     0,     0,     0,    25,     0,    26,    27,
+      28,    29,    30,     0,     0,     0,     0,     0,    31,     0,
+       0,     0,     0,     0,     0,    32,     0,     0,     4,     5,
+       6,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   360,    33,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
+       8,     0,    35,    36,    37,    38,     9,     0,    10,    39,
+       0,     0,    40,    11,    12,    41,     0,     0,    13,     0,
+       0,     0,     0,     0,    42,    14,    43,   361,     0,     0,
+       0,     0,     0,     0,    44,    45,     0,     0,     0,    16,
        0,     0,    17,     0,     0,     0,     0,     0,    18,    19,
        0,     0,     0,     0,    20,     0,     0,     0,    21,     0,
-       0,    22,     0,     0,    46,     0,     0,     0,    23,     0,
-       0,     0,     0,     0,     0,    24,   361,     0,     0,    25,
+       0,    22,     0,    46,     0,     0,     0,     0,    23,     0,
+       0,     0,     0,     0,     0,    24,   362,     0,     0,    25,
        0,    26,    27,    28,    29,    30,     0,     0,     0,     0,
        0,    31,     0,     0,     0,     0,     0,     0,    32,     0,
        0,     4,     0,     6,     0,     0,     0,     0,     0,     0,
-     277,   278,   279,   280,     0,     0,    33,     0,     0,     0,
+     278,   279,   280,   281,     0,     0,    33,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
        0,     0,     0,     0,     0,    35,    36,    37,    38,     9,
        0,    10,    39,     0,     0,    40,    11,     0,    41,     0,
        0,    13,     0,     0,     0,     0,     0,    42,     0,    43,
        0,     0,     0,     0,     0,     0,     0,    44,    45,     0,
-       0,     0,     0,     0,    17,     0,     0,     0,     0,     0,
-     246,    19,     0,     0,     0,     0,    20,     0,     0,     0,
-      21,     0,     0,    22,     0,     0,    46,     0,     0,     0,
-      23,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    25,     0,    26,    27,    28,    29,     4,     0,     6,
-       0,     0,     0,    31,     0,     0,   277,   278,   279,   280,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     9,     0,    10,     0,     0,
-       0,    34,    11,     0,     0,     0,     0,    13,    36,    37,
-      38,     0,     0,     0,    39,     0,     0,    40,     0,     0,
-     248,     0,     0,     0,     0,     0,     0,     0,     0,   249,
-      17,    43,     0,     0,     0,     0,   246,    19,     0,    44,
-      45,     0,    20,     0,     0,     0,    21,     0,     0,    22,
-       0,     0,     0,     0,     0,     0,    23,   778,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    25,    46,    26,
-      27,    28,    29,     4,     0,     6,     0,     0,     0,    31,
-       0,     0,   604,   605,   606,   607,   608,   609,   610,   611,
-     612,     0,     0,     0,     0,     0,     0,     0,   814,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     9,     0,    10,     0,     0,     0,    34,    11,     0,
-       0,     0,     0,    13,    36,    37,    38,     0,     0,     0,
-      39,     0,     0,    40,     0,     0,   248,     0,     0,     0,
-       0,     0,     0,     0,     0,   249,    17,    43,     0,     0,
-       0,     0,   246,    19,     0,    44,    45,     0,    20,     0,
-       0,     0,    21,     0,     0,    22,     0,     0,     0,     0,
-       0,     0,    23,   832,     0,     4,     0,     6,     0,     0,
-       0,     0,     0,    25,    46,    26,    27,    28,    29,     0,
-       0,     0,     0,     0,     0,    31,   604,   605,   606,   607,
-     608,   609,   610,   611,   612,     0,     0,     0,     0,     0,
-       0,     0,     0,     9,     0,    10,     0,     0,     0,     0,
-      11,     0,     0,     0,     0,    13,     0,     0,     0,     0,
-       0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
-      36,    37,    38,     0,     0,     0,    39,     0,    17,    40,
-       0,     0,   248,     0,   246,    19,     0,     0,     0,     0,
-      20,   249,     0,    43,    21,     0,     0,    22,     0,     0,
-       0,    44,    45,   613,    23,   614,   615,   616,   617,   618,
-     619,   620,   621,   622,   623,    25,     0,    26,    27,    28,
-      29,     0,   624,   625,     0,     0,     0,    31,     0,   649,
-      46,   604,   605,   606,   607,   608,   609,   610,   611,   612,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   604,   605,   606,   607,
-     608,   609,   610,   611,   612,    34,     0,     0,     0,     0,
-       0,     0,    36,    37,    38,     0,     0,     0,    39,     0,
-       0,    40,     0,     0,   248,     0,     0,     0,     0,     0,
-       0,     0,     0,   249,     0,    43,     0,     0,     0,     0,
-       0,     0,     0,    44,    45,   604,   605,   606,   607,   608,
-     609,   610,   611,   612,     0,     0,     0,   613,     0,   614,
-     615,   616,   617,   618,   619,   620,   621,   622,   623,     0,
-       0,     0,    46,     0,     0,     0,   624,   625,     0,     0,
-       0,     0,     0,   673,   604,   605,   606,   607,   608,   609,
-     610,   611,   612,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   604,   605,   606,   607,   608,
-     609,   610,   611,   612,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   604,   605,   606,   607,   608,   609,
-     610,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   613,     0,   614,   615,   616,   617,   618,   619,
-     620,   621,   622,   623,     0,     0,     0,     0,     0,     0,
-       0,   624,   625,     0,     0,     0,     0,   613,   736,   614,
-     615,   616,   617,   618,   619,   620,   621,   622,   623,     0,
-       0,     0,     0,     0,     0,     0,   624,   625,   710,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   613,     0,   614,   615,
-     616,   617,   618,   619,   620,   621,   622,   623,     0,     0,
-       0,     0,     0,     0,     0,   624,   625,   842,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   613,   841,   614,   615,   616,
-     617,   618,   619,   620,   621,   622,   623,     0,     0,     0,
-       0,     0,     0,     0,   624,   625,   613,     0,   614,   615,
-     616,   617,   618,   619,   620,   621,   622,   623,     4,     0,
-       6,     0,     0,     0,     0,   624,   625,   614,   615,   616,
-     617,   618,   619,   620,   621,   622,   623,     0,     0,     0,
-       0,     0,     0,     0,   624,   625,     0,     0,     0,     0,
-       8,     0,     0,     0,     0,     0,     9,     0,    10,     0,
-       0,     0,     0,    11,    12,     0,     0,     0,    13,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  -358,     0,
-       0,    17,     0,     0,     0,     0,     0,   246,    19,     0,
-       0,     0,     0,    20,     0,     0,     0,    21,     0,     0,
-      22,     0,     0,     0,     0,     0,     0,    23,     0,     0,
-       4,     0,     6,   463,     0,     0,     0,     0,    25,     0,
-      26,    27,    28,    29,    30,     0,     0,   247,     0,     0,
-      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     9,     0,
-      10,     0,     0,     0,     0,    11,     0,     0,     0,     0,
-      13,     0,     0,     0,     0,     0,     0,     0,    34,     0,
-       0,     0,     0,     0,    35,    36,    37,    38,     0,     0,
-       0,    39,     0,    17,    40,     0,     0,   248,     0,   246,
-      19,     0,     0,     0,     0,    20,   249,     0,    43,    21,
-       0,     0,    22,     0,     0,     0,    44,    45,     0,    23,
-       0,     0,     4,     0,     6,     0,     0,     0,     0,     0,
-      25,     0,    26,    27,    28,    29,     0,     0,     0,     0,
-       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       9,     0,    10,     0,     0,     0,     0,    11,     0,     0,
-       0,     0,    13,     0,     0,     0,     0,     0,     0,     0,
-      34,     0,     0,     0,     0,     0,     0,    36,    37,    38,
-       0,     0,     0,    39,     0,    17,    40,     0,     0,   248,
-       0,   246,    19,     0,     0,     0,     0,    20,   249,     0,
-      43,    21,     0,     0,    22,     0,     0,     0,    44,    45,
-       0,    23,     0,     0,     4,     0,    97,     0,     0,     0,
+       0,     0,     0,     0,     0,    17,     0,     0,     0,     0,
+       0,   247,    19,     0,     0,     0,     0,    20,     0,     0,
+       0,    21,     0,     4,    22,     6,    46,     0,     0,     0,
+       0,    23,   278,   279,   280,   281,     0,     0,     0,     0,
        0,     0,    25,     0,    26,    27,    28,    29,     0,     0,
        0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
+       0,     9,     0,    10,     0,     0,     0,     0,    11,     0,
+       0,     0,     0,    13,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     9,     0,    10,     0,     0,     0,     0,    11,
-       0,   599,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,     0,     0,     0,     0,     0,    36,
-      37,    38,     0,     0,     0,    39,     0,    17,    40,     0,
-       0,   248,     0,     0,    19,     0,     0,     9,     0,    10,
-     249,     0,    43,    21,    11,     0,    22,     0,     0,    13,
-      44,    45,     0,    23,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    26,    27,    28,    29,
-       0,     0,    17,     0,     0,     0,    31,     0,   246,    19,
-       0,     0,     0,     0,    20,     0,     0,     0,    21,     0,
-       0,    22,     0,   599,     0,     0,     0,     0,    23,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    25,
-       0,    26,    27,    28,    29,     0,     0,     0,     0,     0,
-       0,    31,    37,    38,     0,     0,     0,    39,     0,     9,
-       0,    10,     0,     0,     0,     0,    11,     0,     0,     0,
-       0,     0,     0,     0,    43,     0,     0,     0,     0,     0,
-       0,     0,     0,    45,     0,     0,     0,     0,     0,    34,
-       0,     0,     0,     0,    17,     0,    36,    37,    38,     0,
-     246,    19,    39,     0,     0,    40,     0,     0,   248,     0,
-      21,     0,     0,    22,     0,     0,     0,   249,     0,    43,
-      23,     0,     0,     0,     0,     0,     0,    44,    45,     0,
-       0,     0,     0,    26,    27,    28,    29,     0,     0,     0,
-       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
+       0,     0,    34,     0,     0,     0,     0,    17,     0,    36,
+      37,    38,     0,   247,    19,    39,     0,     0,    40,    20,
+       0,   249,     0,    21,     0,     4,    22,     6,     0,     0,
+     250,     0,    43,    23,     0,     0,     0,     0,     0,     0,
+      44,    45,     0,     0,    25,     0,    26,    27,    28,    29,
+     815,     0,     0,     0,     0,     0,    31,     0,   779,     0,
+       0,     0,     0,     9,     0,    10,     0,     0,     0,    46,
+      11,     0,     0,     0,     0,    13,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    34,     0,     0,     0,     0,    17,
+       0,    36,    37,    38,     0,   247,    19,    39,     0,     0,
+      40,    20,     0,   249,     0,    21,     0,     4,    22,     6,
+       0,     0,   250,     0,    43,    23,     0,     0,     0,     0,
+       0,     0,    44,    45,     0,     0,    25,     0,    26,    27,
+      28,    29,     0,     0,     0,     0,     0,     0,    31,     0,
+     833,     0,     0,     0,     0,     9,     0,    10,     0,     0,
+       0,    46,    11,     0,     0,     0,     0,    13,   605,   606,
+     607,   608,   609,   610,   611,   612,   613,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
+       0,    17,     0,    36,    37,    38,     0,   247,    19,    39,
+       0,     0,    40,    20,     0,   249,     0,    21,     0,     0,
+      22,     0,     0,     0,   250,     0,    43,    23,     0,     0,
+       0,     0,     0,     0,    44,    45,     0,     0,    25,     0,
+      26,    27,    28,    29,     0,     0,     0,     0,     0,     0,
+      31,   605,   606,   607,   608,   609,   610,   611,   612,   613,
+       0,     0,     0,    46,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   605,   606,   607,   608,
+     609,   610,   611,   612,   613,     0,     0,     0,    34,     0,
+       0,     0,     0,     0,     0,    36,    37,    38,     0,     0,
+       0,    39,     0,     0,    40,     0,     0,   249,     0,     0,
+       0,     0,     0,     0,     0,     0,   250,     0,    43,     0,
+       0,     0,     0,     0,     0,     0,    44,    45,   605,   606,
+     607,   608,   609,   610,   611,   612,   613,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    46,   605,   606,   607,   608,
+     609,   610,   611,   612,   613,     0,     0,     0,     0,     0,
+     614,     0,   615,   616,   617,   618,   619,   620,   621,   622,
+     623,   624,     0,     0,     0,     0,     0,     0,     0,   625,
+     626,     0,     0,     0,     0,     0,   674,   605,   606,   607,
+     608,   609,   610,   611,   612,   613,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   605,   606,   607,   608,
+     609,   610,   611,     0,   613,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   605,   606,   607,   608,   609,
+     610,   611,     0,   614,     0,   615,   616,   617,   618,   619,
+     620,   621,   622,   623,   624,   605,   606,   607,   608,   609,
+     610,   611,   625,   626,     0,     0,     0,     0,   614,   737,
+     615,   616,   617,   618,   619,   620,   621,   622,   623,   624,
+     605,   606,   607,   608,   609,   610,   611,   625,   626,   711,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    36,    37,
-      38,     0,     0,     0,    39,     0,     0,     0,     0,     0,
-     248,     0,     0,     0,     0,   122,   123,     0,     0,   249,
-     124,    43,   125,   126,   127,   128,   129,     0,   130,    44,
-      45,   131,     0,   132,     0,     0,   133,   134,   135,     0,
-     136,   137,   138,   139,   140,   141,     0,   142,     0,   143,
-     144,   145,     0,   146,   147,   148,   149,   150,   151,     0,
-     152,     0,     0,   153,   154,   155,   156,   157,     0,     0,
-     158,   159,   160,   161,     0,     0,   162,   163,     0,   164,
-     165,     0,   166,   167,   168,   169,   170,   171,     0,   172,
-     173,   174,   175,   176,   177,     0,     0,   178,     0,     0,
-     179,     0,     0,     0,     0,     0,   180,   181,     0,   182,
-     183,     0,   184,   185,   186,     0,     0,     0,     0,   187,
-     188,   189,     0,   190,   191,   192,     0,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,     0,   202,     0,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,     0,
-     213,   214,     0,   215,   216,     0,     0,     0,     0,     0,
-     217,     0,     0,   218,     0,   219,   220,   221,     0,     0,
-     222,   223,   224,   225,     0,     0,   226,     0,   227,     0,
-     228,   229,   230,   231,   232,   233,   234,     0,     0,   235
+     614,     0,   615,   616,   617,   618,   619,   620,   621,   622,
+     623,   624,     0,     0,     0,     0,     0,     0,     0,   625,
+     626,   843,     0,     0,     0,     0,     0,     0,   614,   842,
+     615,   616,   617,   618,   619,   620,   621,   622,   623,   624,
+       0,     0,     0,     0,     0,     0,     0,   625,   626,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   614,
+       0,   615,   616,   617,   618,   619,   620,   621,   622,   623,
+     624,     0,     0,     0,     0,     0,     0,     0,   625,   626,
+     615,   616,   617,   618,   619,   620,   621,   622,   623,   624,
+       0,     0,     0,     0,     0,     0,     0,   625,   626,   615,
+     616,   617,   618,   619,   620,   621,   622,   623,   624,     0,
+       0,     0,     0,     0,     0,     0,   625,   626,     0,     0,
+     616,   617,   618,   619,   620,   621,   622,   623,   624,     0,
+       0,     4,     0,     6,     0,     0,   625,   626,     0,     0,
+       0,     0,     0,     0,     0,     0,   617,   618,   619,   620,
+     621,   622,   623,   624,     0,     0,     0,     0,     0,     0,
+       0,   625,   626,     8,     0,     0,     0,     0,     0,     9,
+       0,    10,     0,     0,     0,     0,    11,    12,     0,     0,
+       0,    13,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,  -359,     0,     0,    17,     0,     0,     0,     0,
+       0,   247,    19,     0,     0,     0,     0,    20,     0,     0,
+       0,    21,     0,     4,    22,     6,   464,     0,     0,     0,
+       0,    23,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    25,     0,    26,    27,    28,    29,    30,     0,
+       0,   248,     0,     0,    31,     0,     0,     0,     0,     0,
+       0,     9,     0,    10,     0,     0,     0,     0,    11,     0,
+       0,     0,     0,    13,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    34,     0,     0,     0,     0,    17,    35,    36,
+      37,    38,     0,   247,    19,    39,     0,     0,    40,    20,
+       0,   249,     0,    21,     0,     4,    22,     6,     0,     0,
+     250,     0,    43,    23,     0,     0,     0,     0,     0,     0,
+      44,    45,     0,     0,    25,     0,    26,    27,    28,    29,
+       0,     0,     0,     4,     0,    97,    31,     0,     0,     0,
+       0,     0,     0,     9,     0,    10,     0,     0,     0,     0,
+      11,     0,     0,     0,     0,    13,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     9,     0,    10,    34,     0,     0,     0,    11,    17,
+       0,    36,    37,    38,     0,   247,    19,    39,     0,     0,
+      40,    20,     0,   249,     0,    21,     0,     4,    22,     6,
+       0,     0,   250,     0,    43,    23,     0,    17,     0,     0,
+       0,     0,    44,    45,    19,     0,    25,     0,    26,    27,
+      28,    29,     0,    21,     0,     0,    22,     0,    31,     0,
+       0,     0,     0,    23,     0,     9,     0,    10,     0,     0,
+       0,     0,    11,     0,     0,     0,    26,    27,    28,    29,
+       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
+       0,    17,     0,    36,    37,    38,     0,   247,    19,    39,
+       0,     0,    40,     0,     0,   249,     0,    21,     0,     0,
+      22,   600,     0,     0,   250,     0,    43,    23,     0,     0,
+       0,     0,    37,    38,    44,    45,     0,    39,     0,     0,
+      26,    27,    28,    29,     0,     0,     0,     0,     0,     0,
+      31,     0,     0,     0,    43,     0,     0,     9,     0,    10,
+       0,     0,     0,    45,    11,     0,     0,     0,     0,    13,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    17,     0,    36,    37,    38,     0,   247,
+      19,    39,     0,   600,     0,    20,     0,   249,     0,    21,
+       0,     0,    22,     0,     0,     0,   250,     0,    43,    23,
+       0,     0,     0,     0,     0,     0,    44,    45,     0,     0,
+      25,     0,    26,    27,    28,    29,     0,     0,     0,     9,
+       0,    10,    31,     0,     0,     0,    11,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    17,     0,     0,     0,     0,
+      34,   247,    19,     0,     0,     0,     0,    36,    37,    38,
+       0,    21,     0,    39,    22,     0,    40,     0,     0,   249,
+       0,    23,     0,     0,     0,     0,     0,     0,   250,     0,
+      43,     0,     0,     0,    26,    27,    28,    29,    44,    45,
+       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
+      37,    38,     0,     0,     0,    39,     0,     0,     0,     0,
+       0,   249,     0,     0,     0,     0,   122,   123,     0,     0,
+     250,   124,    43,   125,   126,   127,   128,   129,     0,   130,
+      44,    45,   131,     0,   132,     0,     0,   133,   134,   135,
+       0,   136,   137,   138,   139,   140,   141,     0,   142,     0,
+     143,   144,   145,     0,   146,   147,   148,   149,   150,   151,
+     152,     0,   153,     0,     0,   154,   155,   156,   157,   158,
+       0,     0,   159,   160,   161,   162,     0,     0,   163,   164,
+       0,   165,   166,     0,   167,   168,   169,   170,   171,   172,
+       0,   173,   174,   175,   176,   177,   178,     0,     0,   179,
+       0,     0,   180,     0,     0,     0,     0,     0,   181,   182,
+       0,   183,   184,     0,   185,   186,   187,     0,     0,     0,
+       0,   188,   189,   190,     0,   191,   192,   193,     0,   194,
+     195,   196,   197,   198,   199,   200,   201,   202,     0,   203,
+       0,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+     213,     0,   214,   215,     0,   216,   217,     0,     0,     0,
+       0,     0,   218,     0,     0,   219,     0,   220,   221,   222,
+       0,     0,   223,   224,   225,   226,     0,     0,   227,     0,
+     228,     0,   229,   230,   231,   232,   233,   234,   235,     0,
+       0,   236
 };
 
 static const yytype_int16 yycheck[] =
 {
-       2,     2,     8,   244,    55,   262,    12,   262,   327,     2,
-      16,   287,    18,   262,     2,    84,   262,     2,     2,     2,
-       2,    84,   336,     2,    30,     2,    81,    82,    83,    35,
+       2,     2,     8,    55,   263,   245,    12,   328,    21,     2,
+      16,   263,    18,     2,     2,    84,   719,     2,     2,     2,
+     263,    84,     2,     2,    30,   288,    81,    82,    83,    35,
        2,     2,     2,    88,     2,    41,    42,    82,    83,     2,
-       2,   329,     6,    88,   332,     2,   334,   378,     2,   337,
-       2,   405,   320,   282,   283,    21,   344,    32,    64,     6,
-     718,    21,    66,   455,   305,    58,   653,    41,    42,   652,
-      58,   726,   357,    58,    58,    58,    58,    85,    84,    58,
-      47,    58,     3,   651,     5,   129,    31,   655,   119,   408,
-     119,    12,    13,    14,    15,   430,   431,    64,   119,   183,
-      75,   688,   209,    75,   119,   735,   114,     3,   183,     5,
-     740,   209,   209,   209,     3,   183,    12,    13,    14,    15,
-      73,   158,   215,   209,   229,   162,   130,    31,   233,   236,
-     216,   152,    53,    37,   232,   390,     3,     0,     5,   236,
-     236,   390,   235,   209,   390,    12,    13,    14,    15,   233,
-       3,   738,     5,    33,   737,   192,   209,    53,   233,    12,
-      13,    14,    15,   418,   232,   233,   119,   209,   229,   418,
-     236,    12,    13,    14,    15,    64,   405,   209,   231,     3,
-     215,     5,   209,    63,   216,   189,   230,   256,   429,   430,
-     431,   136,   230,   256,   236,   778,   783,   235,   173,    79,
-     592,   831,   235,   234,   231,   234,   537,    87,   233,   777,
-     602,   546,   780,   282,   283,   230,   115,   230,   873,   282,
-     283,     3,   235,     9,     6,     7,     8,     9,    10,    11,
-      53,   889,   207,   178,   242,   520,   291,   243,   240,   241,
-     246,   247,   248,   249,     6,     7,   291,   240,   241,   832,
-     256,   838,   240,   241,   317,   240,   241,   240,   241,   219,
-     220,   221,     3,   229,   230,    88,   834,   234,    73,   229,
-     230,   209,   236,   209,   248,   249,   282,   283,   216,   847,
-     216,   230,   232,   571,   230,   542,   235,   542,   234,   236,
-     113,   532,   533,   542,    38,   235,   542,   229,   219,    43,
-     156,   233,   531,   159,    21,   546,   235,    89,   215,   230,
-     878,   317,   219,   232,   235,   634,   379,   904,   230,   232,
-     588,   314,   234,   219,   230,   601,   319,   320,   234,   570,
-       3,     3,     5,     5,   336,   328,   405,   345,   626,   235,
-     163,   349,   405,   351,   352,   230,   230,   230,   356,   234,
-     234,   234,   219,   215,   347,   232,   179,   420,   140,   236,
-     691,   232,   233,   230,   695,     3,   219,     5,   235,     3,
-       3,     5,     5,   379,     3,   232,     5,     3,   219,     5,
-     668,   232,   235,   659,    12,    13,    14,    15,   381,   230,
-       3,   397,     5,   175,   235,   230,   232,   232,   712,   405,
-     455,   232,   233,   232,   672,   232,   188,   232,   410,   119,
-     232,   232,   131,   232,   420,     9,   233,   232,   215,   425,
-     404,   233,   235,   777,   235,    53,   235,   235,   235,   431,
-     230,   235,   214,   235,   235,   217,   218,   219,   233,   235,
-     222,   223,   235,   235,   235,   700,   235,   235,   235,   231,
-     235,   700,   235,   235,   700,   235,   235,   698,   235,   735,
-     791,   718,   531,   718,   740,   235,   235,   743,   531,   718,
-     235,   802,   718,     3,   235,   235,   235,   831,   484,   235,
-     235,   235,    19,    20,    21,   204,   205,   206,   207,   208,
-     483,   233,   235,   847,   229,   235,   235,   235,   235,   728,
-     217,   218,   219,   220,   221,   235,   235,   235,   235,   235,
-     235,   235,   229,   230,   235,   235,   232,   211,   233,   233,
-     232,   232,   215,     5,   878,   531,   857,   233,   237,   236,
-     532,   532,   601,   235,   789,   211,   211,   592,   236,   532,
-     789,     9,   544,   544,   532,    48,   235,   532,   603,   532,
-     799,   544,   871,   799,    16,   831,   544,     6,   603,   544,
-     544,   544,   544,    16,   895,   544,   795,   544,     9,     9,
-       9,     9,   544,   544,   544,   843,   544,   845,     9,     9,
-       9,   544,   544,     9,   653,     9,   579,   544,   581,   920,
-     544,   219,   544,   581,   579,   588,    16,     9,   230,   102,
-     235,   232,   230,   233,   219,   232,   209,   235,   232,   232,
-     232,   866,   115,   116,   117,   118,   233,   866,   906,   233,
-     866,   237,   125,   234,   236,   233,   867,   323,   234,     6,
-     209,   327,   889,   235,   889,   686,   236,   236,   236,   335,
-     889,   236,   338,   889,   236,   651,   209,   236,   209,   655,
-     346,   653,   348,   229,   236,   209,   236,   209,   236,   728,
-     229,   236,   236,   236,   236,   728,   735,   730,   171,   738,
-     236,   740,   913,   176,   236,   916,   236,   236,   236,   672,
-     217,   218,   219,   220,   221,   236,   688,   236,   236,   744,
-     236,   236,   229,   230,   236,   236,   209,   236,   236,   744,
-     209,   694,   236,   236,   236,   707,   694,   236,   236,   694,
-     712,   694,   408,   409,   707,   721,   236,   236,   236,     9,
-     726,   166,   728,   211,   730,   232,   795,   232,   236,   209,
-     189,   215,   795,   209,   236,   232,   738,     3,     3,     6,
-       3,     9,     6,   236,   209,   189,   233,   211,   234,   232,
-     216,   230,   209,   449,   450,   451,   452,   453,   454,   455,
-     234,   232,   831,   236,   236,     5,   209,   236,   215,   236,
-     806,   777,   232,   236,   780,   236,   232,   209,   232,   427,
-     235,   783,   233,   211,   236,   403,   236,   793,   236,   795,
-     792,   346,   798,   799,   236,   232,    19,    20,    21,   792,
-     236,    24,    25,   211,   792,   232,   211,   792,   916,   792,
-     232,   232,   570,   232,   661,   232,   707,   810,   236,   542,
-     321,    19,    20,    21,    22,    23,    24,    25,   834,    27,
-     873,   536,   793,   721,    94,   592,   838,   393,   342,   717,
-     256,   847,   715,    19,    20,    21,    22,    23,    24,    25,
-     843,    -1,   845,   713,    -1,   861,   552,   414,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   867,   867,   873,    -1,    -1,
-      -1,    -1,   878,    -1,   867,    -1,    -1,    -1,    -1,   867,
-      -1,    -1,   867,    -1,   867,    -1,    -1,    -1,    -1,    -1,
-       3,    -1,     5,     6,     7,     8,     9,    10,    11,    -1,
-      -1,    -1,   904,    -1,    -1,    -1,    -1,    -1,   604,   605,
-      -1,   607,   608,   609,   610,   611,   612,   613,   614,   615,
-     616,   617,   618,   619,   620,   621,   622,   623,    41,   625,
-      43,    -1,    -1,    -1,    -1,    48,    -1,    -1,   634,     3,
-      53,    -1,     6,     7,     8,     9,    10,    11,    -1,     3,
-      -1,    -1,     6,     7,     8,     9,    10,    11,    -1,    -1,
-      -1,    -1,    -1,    76,    -1,   661,    -1,    -1,    -1,    82,
-      83,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    92,
-      -1,    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,   102,
-      -1,    -1,   215,   216,   217,   218,   219,   220,   221,    -1,
-     113,    -1,   115,   116,   117,   118,   229,   230,    -1,    -1,
-      -1,    -1,   125,    -1,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,    -1,    89,    -1,   140,    -1,    -1,
-      -1,   229,   230,    -1,     3,    89,     5,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,    -1,    -1,    -1,    -1,
-     163,    -1,    -1,   229,   230,    -1,    -1,   170,   171,   172,
-      -1,    -1,   175,   176,    -1,    -1,   179,    -1,    -1,   182,
-      -1,    -1,    41,    -1,    43,   188,   140,    -1,   191,    48,
-     193,    -1,    -1,    -1,    53,    -1,   140,    -1,   201,   202,
-      19,    20,    21,    22,    23,    24,    25,    -1,    -1,    -1,
-      -1,   214,    -1,    -1,   217,   218,   219,    76,    -1,   222,
-     223,   175,    -1,    82,    83,    -1,    -1,    -1,    -1,    88,
-      -1,   175,   235,    92,   188,    -1,    95,    -1,    -1,    -1,
-      -1,    -1,    -1,   102,   188,    -1,    -1,    -1,     3,     4,
-       5,   837,    -1,    -1,   113,   841,   115,   116,   117,   118,
-     214,    -1,    -1,   217,   218,   219,   125,    -1,   222,   223,
-     214,    -1,    -1,   217,   218,   219,    -1,   231,   222,   223,
-      35,   235,    -1,    -1,    -1,   871,    41,    -1,    43,    -1,
-      -1,   235,    -1,    48,    49,    -1,    -1,    -1,    53,    -1,
-      -1,    -1,    -1,    -1,   163,    60,    -1,    62,    -1,    -1,
-      -1,   170,   171,   172,    -1,    -1,    -1,   176,    73,    -1,
-     179,    76,    -1,   182,    -1,    -1,    -1,    82,    83,    -1,
-      -1,    -1,   191,    88,   193,    -1,    -1,    92,    -1,    -1,
-      95,    -1,   201,   202,    -1,    -1,    -1,   102,    -1,    -1,
-      -1,    -1,    -1,    -1,   109,   110,    -1,    -1,   113,    -1,
-     115,   116,   117,   118,   119,    -1,    -1,    -1,    -1,    -1,
-     125,   230,    -1,    -1,    -1,   234,    -1,   132,    -1,    -1,
+       2,     2,   406,    88,   263,   330,   337,     2,   333,     2,
+     335,   379,     3,   338,     5,   321,    21,     6,    64,     6,
+     345,    12,    13,    14,    15,    58,   306,   654,   130,    58,
+      58,    31,    66,    58,    58,    58,   456,   652,    84,    58,
+     120,   656,     3,    47,     5,     3,    58,   358,   409,   283,
+     284,    12,    13,    14,    15,    75,   120,    41,    42,     3,
+      64,     5,   689,    32,    85,   120,   431,   432,    12,    13,
+      14,    15,     3,    33,     5,    74,   727,   184,   210,   210,
+     184,    12,    13,    14,    15,    12,    13,    14,    15,   736,
+     120,   210,   391,   114,   741,   184,     0,   131,    12,    13,
+      14,    15,   233,    63,   210,   237,    64,    76,   391,    53,
+     653,   210,   739,   210,   157,   159,   210,   160,   237,   163,
+      80,   120,    53,   153,   210,   230,    53,   234,    88,   231,
+     234,   237,   391,   216,   216,   232,   419,   137,   237,    19,
+      20,    21,   116,   237,   233,   234,   232,   890,   257,   193,
+     430,   431,   432,   236,   257,   235,   190,   784,   210,   231,
+     419,     6,     7,   778,   236,   217,   781,   220,   221,   222,
+     538,   235,   406,   593,   283,   284,   231,   230,   231,   179,
+     283,   284,   547,   603,   234,   832,    19,    20,    21,    22,
+      23,    24,    25,     3,    21,   738,   236,   292,   244,   241,
+     242,   247,   248,   249,   250,   174,     9,   292,   241,   242,
+     521,   257,   839,   241,   242,   318,   241,   242,   241,   242,
+     835,   236,   243,   874,    31,   230,   231,   210,   210,   220,
+      37,   235,    74,   848,   217,   217,   779,   283,   284,   208,
+     231,   231,   210,   216,   543,   236,   236,   572,   237,   217,
+     237,   543,   120,   533,   534,   236,    19,    20,    21,   220,
+     543,    24,    25,   233,   879,   249,   250,   547,   231,     3,
+       9,     5,   318,   236,   635,   236,   220,   380,   905,   233,
+     234,    38,   315,   589,   543,    53,    43,   320,   321,   220,
+     833,   571,   236,   220,   233,   337,   329,   406,   532,   602,
+     231,   233,   627,   406,   231,   236,   220,   230,   230,   236,
+     231,   234,   234,   233,   235,   348,   216,   231,   421,   231,
+     220,    89,   236,   235,   692,   346,   231,   233,   696,   350,
+     235,   352,   353,   132,   380,     3,   357,     5,   218,   219,
+     220,   221,   222,   231,   669,   234,   114,   235,   233,   382,
+     230,   231,   398,   216,   231,   231,   234,   660,   235,   235,
+     406,   456,   233,     3,   233,     5,   237,   673,     3,   411,
+       5,     3,   233,     5,   778,   421,   405,     3,   233,     5,
+     426,   233,   713,   216,   217,   218,   219,   220,   221,   222,
+     432,   218,   219,   220,   221,   222,   164,   230,   231,     3,
+     236,     5,   701,   230,   231,   233,   205,   206,   207,   208,
+     209,     3,   180,     5,     3,   231,     5,   233,   701,   699,
+     719,   233,   234,   532,   792,   233,   231,   719,   832,   532,
+     236,   233,   236,   736,   234,   803,   719,   234,   741,   485,
+     236,   744,   701,   236,   848,   236,   236,   236,   236,   236,
+     236,   484,   236,   216,   217,   218,   219,   220,   221,   222,
+     719,   236,   236,   236,   236,   236,   236,   230,   231,   236,
+     236,   236,   236,   234,   236,   879,   236,   236,   236,   212,
+     236,   236,   236,   236,   236,   236,   532,   236,   236,   236,
+     858,   533,   533,   602,   236,   729,   236,   233,   593,   236,
+     533,   800,   234,   545,   545,   533,   236,   790,   533,   604,
+     533,   872,   545,   236,   236,   236,   545,   545,   236,   604,
+     545,   545,   545,   233,   233,   545,   545,   230,   896,   832,
+     216,   790,     3,   545,   545,   545,   234,   545,   844,   238,
+     846,   800,   545,   545,   545,   654,   236,   580,     5,   582,
+     545,   212,   545,   921,   582,   580,   589,   237,   212,   237,
+     236,     9,   796,    16,     6,    16,     9,    16,   867,     9,
+       3,     9,     9,     6,     7,     8,     9,    10,    11,     9,
+       9,     9,   907,    48,   867,     9,     9,     9,   868,   231,
+     234,   890,   233,   236,   233,   687,   233,   233,   890,   233,
+     220,   210,     6,   234,   234,   234,   652,   890,   867,   237,
+     656,   235,   654,   235,   210,   238,   237,   210,   237,   237,
+     729,   237,   236,   210,   237,   237,   729,   736,   731,   230,
+     739,   890,   741,   210,   914,   237,   210,   917,   103,   237,
+     673,     9,   237,   237,   210,   210,   237,   689,   167,   237,
+     745,   116,   117,   118,   119,   237,   237,    90,   237,   237,
+     745,   126,   695,   230,   237,   237,   708,   695,   237,   237,
+     695,   713,   695,   237,   237,   708,   722,   237,   237,   237,
+     237,   727,   237,   729,   237,   731,   237,   796,   237,   237,
+     237,   324,   237,   796,   237,   328,   237,   739,   212,   233,
+     237,   210,   190,   336,   216,   210,   339,   172,   141,   237,
+     233,   233,   177,     3,   347,     3,   349,     6,     3,   237,
+       6,     3,     9,   832,     6,     7,     8,     9,    10,    11,
+     210,   190,   778,   234,   212,   781,   233,   235,   231,   235,
+     217,   233,   784,   176,   210,     5,   237,   237,   794,   210,
+     796,   793,   237,   799,   800,   237,   189,   212,   237,   233,
+     793,   237,   234,   233,   210,   793,   233,   236,   793,   237,
+     793,   216,   807,   237,   237,   237,   409,   410,   811,   233,
+     212,   233,   215,   233,   322,   218,   219,   220,   571,   835,
+     223,   224,   233,   237,   233,   212,   404,   839,   233,   232,
+     662,   237,   848,   236,   917,   347,   708,   722,    90,   537,
+     394,   844,   543,   846,   794,   593,   862,   450,   451,   452,
+     453,   454,   455,   456,    94,   428,   868,   868,   874,   874,
+     257,   718,   343,   879,   716,   868,    -1,    -1,    -1,   415,
+     868,   714,    -1,   868,    -1,   868,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   141,
+      -1,    -1,    -1,   905,    -1,    -1,    -1,    -1,    -1,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   150,   215,   216,   217,   218,
-     219,   220,   221,     3,     4,     5,    -1,    -1,   163,    -1,
-     229,   230,    -1,    -1,   169,   170,   171,   172,    -1,    -1,
-      -1,   176,    -1,    -1,   179,    -1,    -1,   182,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    35,   191,    -1,   193,    -1,
-      -1,    41,    -1,    43,    -1,    -1,   201,   202,    48,    49,
-      -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
-      60,    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    73,    -1,   230,    76,    -1,    -1,   234,
-      -1,    -1,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,
-      -1,    -1,    92,    -1,    -1,    95,    -1,    -1,    -1,    -1,
-      -1,    -1,   102,    -1,    -1,    -1,    -1,    -1,    -1,   109,
-     110,    -1,    -1,   113,    -1,   115,   116,   117,   118,   119,
-      -1,    -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,    -1,
-      -1,    -1,   132,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       3,    -1,     5,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
-       5,    -1,    -1,   163,    -1,    -1,    -1,    -1,    -1,   169,
-     170,   171,   172,    -1,    -1,    -1,   176,    -1,    41,   179,
-      43,    -1,   182,    -1,    -1,    48,    -1,    -1,    -1,    -1,
-      35,   191,    -1,   193,    -1,    -1,    41,    -1,    43,    -1,
-      -1,   201,   202,    48,    49,    -1,    -1,    -1,    53,    -1,
-      -1,    -1,    -1,    76,    -1,    60,    -1,    62,    -1,    82,
-      83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    92,
-     230,    76,    95,    -1,   234,    -1,    -1,    82,    83,   102,
-      -1,    -1,    -1,    88,    -1,    -1,    -1,    92,    -1,    -1,
-      95,    -1,   115,   116,   117,   118,    -1,   102,    -1,    -1,
-      -1,    -1,   125,    -1,   109,    -1,    -1,    -1,   113,    -1,
-     115,   116,   117,   118,   119,    -1,    -1,    -1,    -1,    -1,
-     125,    -1,    -1,    -1,    -1,    -1,    -1,   132,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,     3,     4,     5,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   150,    -1,   170,   171,   172,
-      -1,    -1,    -1,   176,    -1,    -1,    -1,    -1,   163,   182,
-      -1,    -1,    -1,    -1,   169,   170,   171,   172,   191,    -1,
-     193,   176,    -1,    41,   179,    43,    -1,   182,   201,   202,
-      48,    -1,    -1,    -1,    -1,    53,   191,    -1,   193,    -1,
-      -1,    -1,    60,    -1,    -1,    -1,   201,   202,    -1,    -1,
-      19,    20,    21,    22,    23,    24,    25,    -1,    76,    -1,
-      -1,    -1,    -1,    -1,    82,    83,    -1,    -1,    -1,    -1,
-      88,    -1,    -1,    -1,    92,   230,    -1,    95,    -1,   234,
-      -1,    -1,    -1,    -1,   102,    -1,    -1,    -1,    -1,    -1,
-      -1,   109,    -1,    -1,    -1,   113,    -1,   115,   116,   117,
-     118,    -1,    -1,    -1,    -1,    -1,    -1,   125,    -1,    -1,
+      -1,    -1,    -1,    -1,   176,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     3,    -1,   189,     6,     7,
+       8,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
+     553,    -1,    -1,    -1,     3,    -1,     5,     6,     7,     8,
+       9,    10,    11,   215,    -1,    -1,   218,   219,   220,    -1,
+      -1,   223,   224,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     232,    -1,    -1,    -1,   236,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    48,
+      -1,    -1,   605,   606,    53,   608,   609,   610,   611,   612,
+     613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
+     623,   624,    90,   626,    -1,    -1,    -1,    -1,    77,    -1,
+      -1,    -1,   635,    -1,    83,    84,    -1,    -1,    -1,    -1,
+      89,    90,    -1,    -1,    93,    -1,    -1,    96,    -1,    -1,
+      -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,   662,
+      -1,    -1,    -1,    -1,    -1,   114,    -1,   116,   117,   118,
+     119,    -1,    -1,   141,    -1,    -1,    -1,   126,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,     3,     4,     5,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
-      -1,    -1,   170,   171,   172,    -1,    -1,    -1,   176,    -1,
-      41,   179,    43,    -1,   182,    -1,    -1,    48,    -1,    -1,
-      -1,    -1,    53,   191,    -1,   193,    -1,    -1,    -1,    60,
-      -1,    -1,    -1,   201,   202,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
-      -1,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,    -1,
-      -1,    92,   230,    -1,    95,    -1,   234,    -1,    -1,    -1,
-      -1,   102,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
-      -1,    -1,   113,    -1,   115,   116,   117,   118,    -1,    -1,
-      -1,    -1,    -1,    -1,   125,   214,   215,   216,   217,   218,
-     219,   220,   221,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     229,   230,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,
-      -1,    -1,    -1,    -1,     0,    -1,    -1,     3,     4,     5,
-      -1,    -1,   163,    -1,    -1,    -1,    -1,    -1,    -1,   170,
-     171,   172,    18,    -1,    -1,   176,    -1,    -1,   179,    -1,
-      -1,   182,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,
-     191,    -1,   193,    -1,    -1,    41,    -1,    43,    -1,    -1,
-     201,   202,    48,    49,    -1,    -1,    -1,    53,    -1,    -1,
-      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,   230,
-      76,    -1,    -1,   234,    -1,    -1,    82,    83,    -1,    -1,
-      -1,    -1,    88,    -1,    -1,    -1,    92,    -1,    -1,    95,
-      -1,    -1,    -1,    -1,    -1,    -1,   102,    -1,    -1,    -1,
-      -1,    -1,    -1,   109,    -1,    -1,    -1,   113,    -1,   115,
-     116,   117,   118,   119,    -1,    -1,    -1,    -1,    -1,   125,
-      -1,    -1,    -1,    -1,    -1,    -1,   132,    -1,    -1,     3,
-       4,     5,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    17,   150,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   163,    -1,    -1,
-      -1,    35,    -1,   169,   170,   171,   172,    41,    -1,    43,
-     176,    -1,    -1,   179,    48,    49,   182,    -1,    -1,    53,
-      -1,    -1,    -1,    -1,    -1,   191,    60,   193,    62,    -1,
-      -1,    -1,    -1,    -1,    -1,   201,   202,    -1,    -1,    73,
-      -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    83,
-      -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,    92,    -1,
-      -1,    95,    -1,    -1,   230,    -1,    -1,    -1,   102,    -1,
-      -1,    -1,    -1,    -1,    -1,   109,   110,    -1,    -1,   113,
-      -1,   115,   116,   117,   118,   119,    -1,    -1,    -1,    -1,
-      -1,   125,    -1,    -1,    -1,    -1,    -1,    -1,   132,    -1,
-      -1,     3,    -1,     5,    -1,    -1,    -1,    -1,    -1,    -1,
-      12,    13,    14,    15,    -1,    -1,   150,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   163,
-      -1,    -1,    -1,    -1,    -1,   169,   170,   171,   172,    41,
-      -1,    43,   176,    -1,    -1,   179,    48,    -1,   182,    -1,
-      -1,    53,    -1,    -1,    -1,    -1,    -1,   191,    -1,   193,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   201,   202,    -1,
-      -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
-      82,    83,    -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,
-      92,    -1,    -1,    95,    -1,    -1,   230,    -1,    -1,    -1,
-     102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   113,    -1,   115,   116,   117,   118,     3,    -1,     5,
-      -1,    -1,    -1,   125,    -1,    -1,    12,    13,    14,    15,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   211,   141,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,    -1,    -1,    -1,    -1,    -1,   176,    -1,
+     230,   231,    -1,    -1,    -1,   164,    -1,   237,    -1,    -1,
+      -1,   189,   171,   172,   173,    -1,    -1,   176,   177,    -1,
+      -1,   180,    -1,    -1,   183,    -1,    -1,    -1,    -1,    -1,
+     189,    -1,    -1,   192,    -1,   194,    -1,   215,    -1,    -1,
+     218,   219,   220,   202,   203,   223,   224,     3,     4,     5,
+      -1,    -1,    -1,    -1,    -1,    -1,   215,    -1,   236,   218,
+     219,   220,    -1,    -1,   223,   224,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   236,    -1,    35,
       -1,    -1,    -1,    -1,    -1,    41,    -1,    43,    -1,    -1,
-      -1,   163,    48,    -1,    -1,    -1,    -1,    53,   170,   171,
-     172,    -1,    -1,    -1,   176,    -1,    -1,   179,    -1,    -1,
-     182,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   191,
-      76,   193,    -1,    -1,    -1,    -1,    82,    83,    -1,   201,
-     202,    -1,    88,    -1,    -1,    -1,    92,    -1,    -1,    95,
-      -1,    -1,    -1,    -1,    -1,    -1,   102,   219,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,   230,   115,
-     116,   117,   118,     3,    -1,     5,    -1,    -1,    -1,   125,
-      -1,    -1,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,
+      -1,    -1,    48,    49,    -1,    -1,    -1,    53,    -1,    -1,
+      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    74,    -1,
+      -1,    77,    -1,    -1,    -1,   838,    -1,    83,    84,   842,
+      -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    -1,    -1,
+      96,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
+      -1,    -1,    -1,    -1,   110,   111,    -1,    -1,   114,   872,
+     116,   117,   118,   119,   120,    -1,    -1,    -1,    -1,    -1,
+     126,    -1,    -1,    -1,    -1,    -1,    -1,   133,    -1,    -1,
+       3,     4,     5,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   151,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,
+      -1,    -1,    35,    -1,   170,   171,   172,   173,    41,    -1,
+      43,   177,    -1,    -1,   180,    48,    49,   183,    -1,    -1,
+      53,    -1,    -1,    -1,    -1,    -1,   192,    60,   194,    62,
+      -1,    -1,    -1,    -1,    -1,    -1,   202,   203,    -1,    -1,
+      -1,    74,    -1,    -1,    77,    -1,    -1,    -1,    -1,    -1,
+      83,    84,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,
+      93,    -1,    -1,    96,    -1,   231,    -1,    -1,    -1,   235,
+     103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,    -1,
+      -1,   114,    -1,   116,   117,   118,   119,   120,    -1,    -1,
+      -1,    -1,    -1,   126,    -1,    -1,    -1,    -1,    -1,    -1,
+     133,    -1,    -1,     3,     4,     5,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   151,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    41,    -1,    43,    -1,    -1,    -1,   163,    48,    -1,
-      -1,    -1,    -1,    53,   170,   171,   172,    -1,    -1,    -1,
-     176,    -1,    -1,   179,    -1,    -1,   182,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   191,    76,   193,    -1,    -1,
-      -1,    -1,    82,    83,    -1,   201,   202,    -1,    88,    -1,
-      -1,    -1,    92,    -1,    -1,    95,    -1,    -1,    -1,    -1,
-      -1,    -1,   102,   219,    -1,     3,    -1,     5,    -1,    -1,
-      -1,    -1,    -1,   113,   230,   115,   116,   117,   118,    -1,
-      -1,    -1,    -1,    -1,    -1,   125,    19,    20,    21,    22,
+      -1,   164,    -1,    -1,    -1,    35,    -1,   170,   171,   172,
+     173,    41,    -1,    43,   177,    -1,    -1,   180,    48,    49,
+     183,    -1,    -1,    53,    -1,    -1,    -1,    -1,    -1,   192,
+      60,   194,    62,    -1,    -1,    -1,    -1,    -1,    -1,   202,
+     203,    -1,    -1,    -1,    74,    -1,    -1,    77,    -1,    -1,
+      -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    89,
+      -1,    -1,    -1,    93,    -1,    -1,    96,    -1,   231,    -1,
+      -1,    -1,   235,   103,    -1,     3,     4,     5,    -1,    -1,
+     110,    -1,    -1,    -1,   114,    -1,   116,   117,   118,   119,
+     120,    -1,    -1,    -1,    -1,    -1,   126,    -1,    -1,    -1,
+      -1,    -1,    -1,   133,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,
+      48,   151,    -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,
+      -1,    -1,    60,    -1,   164,    -1,    -1,    -1,    -1,    -1,
+     170,   171,   172,   173,    -1,    -1,    -1,   177,    -1,    77,
+     180,    -1,    -1,   183,    -1,    83,    84,    -1,    -1,    -1,
+      -1,    89,   192,    -1,   194,    93,    -1,    -1,    96,    -1,
+      -1,    -1,   202,   203,    -1,   103,    -1,     3,     4,     5,
+      -1,    -1,   110,    -1,    -1,    -1,   114,    -1,   116,   117,
+     118,   119,    -1,    -1,    -1,    -1,    -1,    -1,   126,    -1,
+      -1,   231,    -1,    -1,    -1,   235,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    41,    -1,    43,    -1,    -1,
+      -1,    -1,    48,   151,    -1,    -1,    -1,    53,    -1,    -1,
+      -1,    -1,    -1,    -1,    60,    -1,   164,    -1,    -1,    -1,
+      -1,    -1,    -1,   171,   172,   173,    -1,    -1,    -1,   177,
+      -1,    77,   180,    -1,    -1,   183,    -1,    83,    84,    -1,
+      -1,    -1,    -1,    89,   192,    -1,   194,    93,    -1,    -1,
+      96,    -1,    -1,    -1,   202,   203,    -1,   103,    -1,     3,
+      -1,     5,    -1,    -1,   110,    -1,    -1,    -1,   114,    -1,
+     116,   117,   118,   119,    -1,    -1,    -1,    -1,    -1,    -1,
+     126,    -1,    -1,   231,    -1,    -1,    -1,   235,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    43,
+      -1,    -1,    -1,    -1,    48,   151,    -1,    -1,    -1,    53,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,
+      -1,    -1,    -1,    -1,    -1,   171,   172,   173,    -1,    -1,
+      -1,   177,    -1,    77,   180,    -1,    -1,   183,    -1,    83,
+      84,    -1,    -1,    -1,    -1,    89,   192,    -1,   194,    93,
+      -1,    -1,    96,    -1,    -1,    -1,   202,   203,    -1,   103,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     114,    -1,   116,   117,   118,   119,    -1,    -1,    -1,    -1,
+      -1,    -1,   126,    -1,    -1,   231,    -1,    -1,    -1,   235,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     0,    -1,    -1,     3,     4,     5,    -1,    -1,
+     164,    -1,    -1,    -1,    -1,    -1,    -1,   171,   172,   173,
+      18,    -1,    -1,   177,    -1,    -1,   180,    -1,    -1,   183,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,   192,    -1,
+     194,    -1,    -1,    41,    -1,    43,    -1,    -1,   202,   203,
+      48,    49,    -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,
+      -1,    -1,    60,    -1,    62,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    74,   231,    -1,    77,
+      -1,   235,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
+      -1,    89,    -1,    -1,    -1,    93,    -1,    -1,    96,    -1,
+      -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
+      -1,    -1,   110,    -1,    -1,    -1,   114,    -1,   116,   117,
+     118,   119,   120,    -1,    -1,    -1,    -1,    -1,   126,    -1,
+      -1,    -1,    -1,    -1,    -1,   133,    -1,    -1,     3,     4,
+       5,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    17,   151,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,    -1,    -1,
+      35,    -1,   170,   171,   172,   173,    41,    -1,    43,   177,
+      -1,    -1,   180,    48,    49,   183,    -1,    -1,    53,    -1,
+      -1,    -1,    -1,    -1,   192,    60,   194,    62,    -1,    -1,
+      -1,    -1,    -1,    -1,   202,   203,    -1,    -1,    -1,    74,
+      -1,    -1,    77,    -1,    -1,    -1,    -1,    -1,    83,    84,
+      -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    -1,
+      -1,    96,    -1,   231,    -1,    -1,    -1,    -1,   103,    -1,
+      -1,    -1,    -1,    -1,    -1,   110,   111,    -1,    -1,   114,
+      -1,   116,   117,   118,   119,   120,    -1,    -1,    -1,    -1,
+      -1,   126,    -1,    -1,    -1,    -1,    -1,    -1,   133,    -1,
+      -1,     3,    -1,     5,    -1,    -1,    -1,    -1,    -1,    -1,
+      12,    13,    14,    15,    -1,    -1,   151,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   164,
+      -1,    -1,    -1,    -1,    -1,   170,   171,   172,   173,    41,
+      -1,    43,   177,    -1,    -1,   180,    48,    -1,   183,    -1,
+      -1,    53,    -1,    -1,    -1,    -1,    -1,   192,    -1,   194,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   202,   203,    -1,
+      -1,    -1,    -1,    -1,    -1,    77,    -1,    -1,    -1,    -1,
+      -1,    83,    84,    -1,    -1,    -1,    -1,    89,    -1,    -1,
+      -1,    93,    -1,     3,    96,     5,   231,    -1,    -1,    -1,
+      -1,   103,    12,    13,    14,    15,    -1,    -1,    -1,    -1,
+      -1,    -1,   114,    -1,   116,   117,   118,   119,    -1,    -1,
+      -1,    -1,    -1,    -1,   126,    -1,    -1,    -1,    -1,    -1,
+      -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    48,    -1,
+      -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   164,    -1,    -1,    -1,    -1,    77,    -1,   171,
+     172,   173,    -1,    83,    84,   177,    -1,    -1,   180,    89,
+      -1,   183,    -1,    93,    -1,     3,    96,     5,    -1,    -1,
+     192,    -1,   194,   103,    -1,    -1,    -1,    -1,    -1,    -1,
+     202,   203,    -1,    -1,   114,    -1,   116,   117,   118,   119,
+      28,    -1,    -1,    -1,    -1,    -1,   126,    -1,   220,    -1,
+      -1,    -1,    -1,    41,    -1,    43,    -1,    -1,    -1,   231,
+      48,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,    77,
+      -1,   171,   172,   173,    -1,    83,    84,   177,    -1,    -1,
+     180,    89,    -1,   183,    -1,    93,    -1,     3,    96,     5,
+      -1,    -1,   192,    -1,   194,   103,    -1,    -1,    -1,    -1,
+      -1,    -1,   202,   203,    -1,    -1,   114,    -1,   116,   117,
+     118,   119,    -1,    -1,    -1,    -1,    -1,    -1,   126,    -1,
+     220,    -1,    -1,    -1,    -1,    41,    -1,    43,    -1,    -1,
+      -1,   231,    48,    -1,    -1,    -1,    -1,    53,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,    -1,    -1,
+      -1,    77,    -1,   171,   172,   173,    -1,    83,    84,   177,
+      -1,    -1,   180,    89,    -1,   183,    -1,    93,    -1,    -1,
+      96,    -1,    -1,    -1,   192,    -1,   194,   103,    -1,    -1,
+      -1,    -1,    -1,    -1,   202,   203,    -1,    -1,   114,    -1,
+     116,   117,   118,   119,    -1,    -1,    -1,    -1,    -1,    -1,
+     126,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    -1,    -1,   231,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    -1,    -1,    -1,   164,    -1,
+      -1,    -1,    -1,    -1,    -1,   171,   172,   173,    -1,    -1,
+      -1,   177,    -1,    -1,   180,    -1,    -1,   183,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   192,    -1,   194,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   202,   203,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   231,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,
+     211,    -1,   213,   214,   215,   216,   217,   218,   219,   220,
+     221,   222,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   230,
+     231,    -1,    -1,    -1,    -1,    -1,   237,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    19,    20,    21,    22,
+      23,    24,    25,    -1,    27,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    19,    20,    21,    22,    23,
+      24,    25,    -1,   211,    -1,   213,   214,   215,   216,   217,
+     218,   219,   220,   221,   222,    19,    20,    21,    22,    23,
+      24,    25,   230,   231,    -1,    -1,    -1,    -1,   211,   237,
+     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+      19,    20,    21,    22,    23,    24,    25,   230,   231,   232,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     211,    -1,   213,   214,   215,   216,   217,   218,   219,   220,
+     221,   222,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   230,
+     231,   232,    -1,    -1,    -1,    -1,    -1,    -1,   211,   212,
+     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   230,   231,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   211,
+      -1,   213,   214,   215,   216,   217,   218,   219,   220,   221,
+     222,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   230,   231,
+     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   230,   231,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   230,   231,    -1,    -1,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,    -1,
+      -1,     3,    -1,     5,    -1,    -1,   230,   231,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   215,   216,   217,   218,
+     219,   220,   221,   222,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   230,   231,    35,    -1,    -1,    -1,    -1,    -1,    41,
+      -1,    43,    -1,    -1,    -1,    -1,    48,    49,    -1,    -1,
+      -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    74,    -1,    -1,    77,    -1,    -1,    -1,    -1,
+      -1,    83,    84,    -1,    -1,    -1,    -1,    89,    -1,    -1,
+      -1,    93,    -1,     3,    96,     5,     6,    -1,    -1,    -1,
+      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   114,    -1,   116,   117,   118,   119,   120,    -1,
+      -1,   123,    -1,    -1,   126,    -1,    -1,    -1,    -1,    -1,
+      -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    48,    -1,
+      -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   164,    -1,    -1,    -1,    -1,    77,   170,   171,
+     172,   173,    -1,    83,    84,   177,    -1,    -1,   180,    89,
+      -1,   183,    -1,    93,    -1,     3,    96,     5,    -1,    -1,
+     192,    -1,   194,   103,    -1,    -1,    -1,    -1,    -1,    -1,
+     202,   203,    -1,    -1,   114,    -1,   116,   117,   118,   119,
+      -1,    -1,    -1,     3,    -1,     5,   126,    -1,    -1,    -1,
       -1,    -1,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,
       48,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,    -1,    -1,
-     170,   171,   172,    -1,    -1,    -1,   176,    -1,    76,   179,
-      -1,    -1,   182,    -1,    82,    83,    -1,    -1,    -1,    -1,
-      88,   191,    -1,   193,    92,    -1,    -1,    95,    -1,    -1,
-      -1,   201,   202,   210,   102,   212,   213,   214,   215,   216,
-     217,   218,   219,   220,   221,   113,    -1,   115,   116,   117,
-     118,    -1,   229,   230,    -1,    -1,    -1,   125,    -1,   236,
-     230,    19,    20,    21,    22,    23,    24,    25,    26,    27,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,   163,    -1,    -1,    -1,    -1,
-      -1,    -1,   170,   171,   172,    -1,    -1,    -1,   176,    -1,
-      -1,   179,    -1,    -1,   182,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   191,    -1,   193,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   201,   202,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    -1,    -1,   210,    -1,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,    -1,
-      -1,    -1,   230,    -1,    -1,    -1,   229,   230,    -1,    -1,
-      -1,    -1,    -1,   236,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    19,    20,    21,    22,    23,    24,
-      25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    41,    -1,    43,   164,    -1,    -1,    -1,    48,    77,
+      -1,   171,   172,   173,    -1,    83,    84,   177,    -1,    -1,
+     180,    89,    -1,   183,    -1,    93,    -1,     3,    96,     5,
+      -1,    -1,   192,    -1,   194,   103,    -1,    77,    -1,    -1,
+      -1,    -1,   202,   203,    84,    -1,   114,    -1,   116,   117,
+     118,   119,    -1,    93,    -1,    -1,    96,    -1,   126,    -1,
+      -1,    -1,    -1,   103,    -1,    41,    -1,    43,    -1,    -1,
+      -1,    -1,    48,    -1,    -1,    -1,   116,   117,   118,   119,
+      -1,    -1,    -1,    -1,    -1,    -1,   126,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,    -1,    -1,
+      -1,    77,    -1,   171,   172,   173,    -1,    83,    84,   177,
+      -1,    -1,   180,    -1,    -1,   183,    -1,    93,    -1,    -1,
+      96,     5,    -1,    -1,   192,    -1,   194,   103,    -1,    -1,
+      -1,    -1,   172,   173,   202,   203,    -1,   177,    -1,    -1,
+     116,   117,   118,   119,    -1,    -1,    -1,    -1,    -1,    -1,
+     126,    -1,    -1,    -1,   194,    -1,    -1,    41,    -1,    43,
+      -1,    -1,    -1,   203,    48,    -1,    -1,    -1,    -1,    53,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   210,    -1,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   229,   230,    -1,    -1,    -1,    -1,   210,   236,   212,
-     213,   214,   215,   216,   217,   218,   219,   220,   221,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   229,   230,   231,    -1,
+      -1,    -1,    -1,    77,    -1,   171,   172,   173,    -1,    83,
+      84,   177,    -1,     5,    -1,    89,    -1,   183,    -1,    93,
+      -1,    -1,    96,    -1,    -1,    -1,   192,    -1,   194,   103,
+      -1,    -1,    -1,    -1,    -1,    -1,   202,   203,    -1,    -1,
+     114,    -1,   116,   117,   118,   119,    -1,    -1,    -1,    41,
+      -1,    43,   126,    -1,    -1,    -1,    48,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   210,    -1,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   229,   230,   231,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   229,   230,   210,    -1,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,     3,    -1,
-       5,    -1,    -1,    -1,    -1,   229,   230,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   229,   230,    -1,    -1,    -1,    -1,
-      35,    -1,    -1,    -1,    -1,    -1,    41,    -1,    43,    -1,
-      -1,    -1,    -1,    48,    49,    -1,    -1,    -1,    53,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
-      -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    83,    -1,
-      -1,    -1,    -1,    88,    -1,    -1,    -1,    92,    -1,    -1,
-      95,    -1,    -1,    -1,    -1,    -1,    -1,   102,    -1,    -1,
-       3,    -1,     5,     6,    -1,    -1,    -1,    -1,   113,    -1,
-     115,   116,   117,   118,   119,    -1,    -1,   122,    -1,    -1,
-     125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,
-      43,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
-      53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   163,    -1,
-      -1,    -1,    -1,    -1,   169,   170,   171,   172,    -1,    -1,
-      -1,   176,    -1,    76,   179,    -1,    -1,   182,    -1,    82,
-      83,    -1,    -1,    -1,    -1,    88,   191,    -1,   193,    92,
-      -1,    -1,    95,    -1,    -1,    -1,   201,   202,    -1,   102,
-      -1,    -1,     3,    -1,     5,    -1,    -1,    -1,    -1,    -1,
-     113,    -1,   115,   116,   117,   118,    -1,    -1,    -1,    -1,
-      -1,    -1,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      41,    -1,    43,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-      -1,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     163,    -1,    -1,    -1,    -1,    -1,    -1,   170,   171,   172,
-      -1,    -1,    -1,   176,    -1,    76,   179,    -1,    -1,   182,
-      -1,    82,    83,    -1,    -1,    -1,    -1,    88,   191,    -1,
-     193,    92,    -1,    -1,    95,    -1,    -1,    -1,   201,   202,
-      -1,   102,    -1,    -1,     3,    -1,     5,    -1,    -1,    -1,
-      -1,    -1,   113,    -1,   115,   116,   117,   118,    -1,    -1,
-      -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    48,
-      -1,     5,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   163,    -1,    -1,    -1,    -1,    -1,    -1,   170,
-     171,   172,    -1,    -1,    -1,   176,    -1,    76,   179,    -1,
-      -1,   182,    -1,    -1,    83,    -1,    -1,    41,    -1,    43,
-     191,    -1,   193,    92,    48,    -1,    95,    -1,    -1,    53,
-     201,   202,    -1,   102,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   115,   116,   117,   118,
-      -1,    -1,    76,    -1,    -1,    -1,   125,    -1,    82,    83,
-      -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,    92,    -1,
-      -1,    95,    -1,     5,    -1,    -1,    -1,    -1,   102,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   113,
-      -1,   115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,
-      -1,   125,   171,   172,    -1,    -1,    -1,   176,    -1,    41,
-      -1,    43,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   193,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   202,    -1,    -1,    -1,    -1,    -1,   163,
-      -1,    -1,    -1,    -1,    76,    -1,   170,   171,   172,    -1,
-      82,    83,   176,    -1,    -1,   179,    -1,    -1,   182,    -1,
-      92,    -1,    -1,    95,    -1,    -1,    -1,   191,    -1,   193,
-     102,    -1,    -1,    -1,    -1,    -1,    -1,   201,   202,    -1,
-      -1,    -1,    -1,   115,   116,   117,   118,    -1,    -1,    -1,
-      -1,    -1,    -1,   125,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    77,    -1,    -1,    -1,    -1,
+     164,    83,    84,    -1,    -1,    -1,    -1,   171,   172,   173,
+      -1,    93,    -1,   177,    96,    -1,   180,    -1,    -1,   183,
+      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   192,    -1,
+     194,    -1,    -1,    -1,   116,   117,   118,   119,   202,   203,
+      -1,    -1,    -1,    -1,   126,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   170,   171,
-     172,    -1,    -1,    -1,   176,    -1,    -1,    -1,    -1,    -1,
-     182,    -1,    -1,    -1,    -1,    29,    30,    -1,    -1,   191,
-      34,   193,    36,    37,    38,    39,    40,    -1,    42,   201,
-     202,    45,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
-      54,    55,    56,    57,    58,    59,    -1,    61,    -1,    63,
-      64,    65,    -1,    67,    68,    69,    70,    71,    72,    -1,
-      74,    -1,    -1,    77,    78,    79,    80,    81,    -1,    -1,
-      84,    85,    86,    87,    -1,    -1,    90,    91,    -1,    93,
-      94,    -1,    96,    97,    98,    99,   100,   101,    -1,   103,
-     104,   105,   106,   107,   108,    -1,    -1,   111,    -1,    -1,
-     114,    -1,    -1,    -1,    -1,    -1,   120,   121,    -1,   123,
-     124,    -1,   126,   127,   128,    -1,    -1,    -1,    -1,   133,
-     134,   135,    -1,   137,   138,   139,    -1,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,    -1,   151,    -1,   153,
-     154,   155,   156,   157,   158,   159,   160,   161,   162,    -1,
-     164,   165,    -1,   167,   168,    -1,    -1,    -1,    -1,    -1,
-     174,    -1,    -1,   177,    -1,   179,   180,   181,    -1,    -1,
-     184,   185,   186,   187,    -1,    -1,   190,    -1,   192,    -1,
-     194,   195,   196,   197,   198,   199,   200,    -1,    -1,   203
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   171,
+     172,   173,    -1,    -1,    -1,   177,    -1,    -1,    -1,    -1,
+      -1,   183,    -1,    -1,    -1,    -1,    29,    30,    -1,    -1,
+     192,    34,   194,    36,    37,    38,    39,    40,    -1,    42,
+     202,   203,    45,    -1,    47,    -1,    -1,    50,    51,    52,
+      -1,    54,    55,    56,    57,    58,    59,    -1,    61,    -1,
+      63,    64,    65,    -1,    67,    68,    69,    70,    71,    72,
+      73,    -1,    75,    -1,    -1,    78,    79,    80,    81,    82,
+      -1,    -1,    85,    86,    87,    88,    -1,    -1,    91,    92,
+      -1,    94,    95,    -1,    97,    98,    99,   100,   101,   102,
+      -1,   104,   105,   106,   107,   108,   109,    -1,    -1,   112,
+      -1,    -1,   115,    -1,    -1,    -1,    -1,    -1,   121,   122,
+      -1,   124,   125,    -1,   127,   128,   129,    -1,    -1,    -1,
+      -1,   134,   135,   136,    -1,   138,   139,   140,    -1,   142,
+     143,   144,   145,   146,   147,   148,   149,   150,    -1,   152,
+      -1,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,    -1,   165,   166,    -1,   168,   169,    -1,    -1,    -1,
+      -1,    -1,   175,    -1,    -1,   178,    -1,   180,   181,   182,
+      -1,    -1,   185,   186,   187,   188,    -1,    -1,   191,    -1,
+     193,    -1,   195,   196,   197,   198,   199,   200,   201,    -1,
+      -1,   204
 };
 
 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
    state STATE-NUM.  */
 static const yytype_int16 yystos[] =
 {
-       0,   239,   245,     0,     3,     4,     5,    18,    35,    41,
-      43,    48,    49,    53,    60,    62,    73,    76,    82,    83,
-      88,    92,    95,   102,   109,   113,   115,   116,   117,   118,
-     119,   125,   132,   150,   163,   169,   170,   171,   172,   176,
-     179,   182,   191,   193,   201,   202,   230,   240,   242,   251,
-     252,   254,   255,   256,   257,   260,   261,   267,   268,   287,
-     301,   304,   306,   308,   309,   310,   311,   314,   315,   316,
-     317,   318,   319,   320,   323,   324,   327,   331,   334,   339,
-     344,   345,   346,   347,   349,   352,   370,   371,   372,   373,
-     374,   229,   230,   376,   379,   380,     3,     5,   304,   304,
-     235,   233,   304,     3,   303,   304,   115,   307,     9,   304,
-     307,     3,   235,   304,   235,   307,   308,     3,   303,     3,
-     303,   308,    29,    30,    34,    36,    37,    38,    39,    40,
+       0,   240,   246,     0,     3,     4,     5,    18,    35,    41,
+      43,    48,    49,    53,    60,    62,    74,    77,    83,    84,
+      89,    93,    96,   103,   110,   114,   116,   117,   118,   119,
+     120,   126,   133,   151,   164,   170,   171,   172,   173,   177,
+     180,   183,   192,   194,   202,   203,   231,   241,   243,   252,
+     253,   255,   256,   257,   258,   261,   262,   268,   269,   288,
+     302,   305,   307,   309,   310,   311,   312,   315,   316,   317,
+     318,   319,   320,   321,   324,   325,   328,   332,   335,   340,
+     345,   346,   347,   348,   350,   353,   371,   372,   373,   374,
+     375,   230,   231,   377,   380,   381,     3,     5,   305,   305,
+     236,   234,   305,     3,   304,   305,   116,   308,     9,   305,
+     308,     3,   236,   305,   236,   308,   309,     3,   304,     3,
+     304,   309,    29,    30,    34,    36,    37,    38,    39,    40,
       42,    45,    47,    50,    51,    52,    54,    55,    56,    57,
       58,    59,    61,    63,    64,    65,    67,    68,    69,    70,
-      71,    72,    74,    77,    78,    79,    80,    81,    84,    85,
-      86,    87,    90,    91,    93,    94,    96,    97,    98,    99,
-     100,   101,   103,   104,   105,   106,   107,   108,   111,   114,
-     120,   121,   123,   124,   126,   127,   128,   133,   134,   135,
-     137,   138,   139,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   151,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   162,   164,   165,   167,   168,   174,   177,   179,
-     180,   181,   184,   185,   186,   187,   190,   192,   194,   195,
-     196,   197,   198,   199,   200,   203,   269,   279,   369,   232,
-     247,   247,    66,   130,   189,   343,    82,   122,   182,   191,
-     259,   287,   314,   316,   318,   331,   349,   370,   374,   232,
-       3,   304,   215,   232,   232,   232,   229,   233,   232,   323,
-     232,   250,   232,   351,   352,   351,   351,    12,    13,    14,
-      15,   219,   235,   280,   304,   305,   353,   354,   367,   287,
-     370,   372,   374,   351,   232,    33,    63,    79,    87,   381,
-     382,   376,   119,     9,   241,   233,   232,   215,     3,    64,
-     372,   233,   183,   233,   235,   235,   235,   235,   235,   235,
-     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
-     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
-     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
-     235,   235,   235,   235,   235,   235,   235,   209,   231,    17,
-      62,   110,   244,   251,   258,   261,   314,   315,   316,   317,
-     318,   319,   320,   323,   331,   334,   339,   344,   234,   372,
-     304,   267,   268,   233,     3,   304,     3,     3,   233,   233,
-     211,   328,   233,   340,   367,   229,   306,   309,   310,   311,
-     312,   313,     3,   246,   233,   348,   353,   353,   237,   230,
-     235,   266,   351,   235,   209,   231,     5,   236,   119,   234,
-     267,   283,   284,   285,   286,   332,   211,   211,   236,   294,
-     235,   297,   273,   275,   349,     9,    16,   305,     3,     6,
-       7,     8,     9,    10,    11,    89,   140,   175,   188,   214,
-     217,   218,   219,   222,   223,   235,   290,   291,   292,   277,
-     349,   273,   349,     6,   272,    16,   290,   293,     9,   278,
-       9,     9,   270,   293,   349,   292,     9,     9,   292,     9,
-     292,   290,   265,   268,   349,   292,   288,   289,   290,    31,
-     136,   178,   271,     9,     9,   369,     9,   292,   372,   288,
-     274,   349,   290,   372,   131,   204,   205,   206,   207,   208,
-     368,   372,   372,    16,     6,     7,   375,     9,   372,   279,
-     230,   233,   235,   232,   232,   232,   233,   232,   232,   250,
-     305,   349,   249,   321,   310,   311,   233,   234,   328,   304,
-     219,   219,   209,   216,   245,   152,   325,   331,   347,   353,
-     236,   293,   219,   231,   290,   262,   263,   264,   265,    32,
-      75,   173,   207,   383,   384,   382,   233,   310,   305,   234,
-     209,   237,   304,   329,   330,     6,   253,   253,   234,   267,
-     295,   267,   299,   234,   268,   296,   299,   236,   209,   236,
-     236,   236,   235,   290,   290,   290,   290,   290,   290,     5,
-     290,   350,   352,   371,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,   210,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   229,   230,   209,   236,   236,   209,
-     236,   209,   229,   236,   209,   236,   209,   236,   236,   209,
+      71,    72,    73,    75,    78,    79,    80,    81,    82,    85,
+      86,    87,    88,    91,    92,    94,    95,    97,    98,    99,
+     100,   101,   102,   104,   105,   106,   107,   108,   109,   112,
+     115,   121,   122,   124,   125,   127,   128,   129,   134,   135,
+     136,   138,   139,   140,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   152,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   165,   166,   168,   169,   175,   178,
+     180,   181,   182,   185,   186,   187,   188,   191,   193,   195,
+     196,   197,   198,   199,   200,   201,   204,   270,   280,   370,
+     233,   248,   248,    66,   131,   190,   344,    83,   123,   183,
+     192,   260,   288,   315,   317,   319,   332,   350,   371,   375,
+     233,     3,   305,   216,   233,   233,   233,   230,   234,   233,
+     324,   233,   251,   233,   352,   353,   352,   352,    12,    13,
+      14,    15,   220,   236,   281,   305,   306,   354,   355,   368,
+     288,   371,   373,   375,   352,   233,    33,    63,    80,    88,
+     382,   383,   377,   120,     9,   242,   234,   233,   216,     3,
+      64,   373,   234,   184,   234,   236,   236,   236,   236,   236,
      236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
-     236,   349,   219,   235,   266,   280,   305,   359,   361,   362,
-     236,   209,   236,   236,   236,   236,   236,   236,   209,   236,
-     236,   236,   209,   236,   236,   236,   236,   236,   236,   229,
-     236,   236,   236,   279,   243,     9,   248,   215,   235,   353,
-     363,   234,   251,   267,   268,   234,   267,   322,   321,   250,
-     166,   338,   312,   234,   211,   129,   299,   326,   232,   231,
-     231,   236,   209,   209,   236,   189,   377,   378,   215,   286,
-     292,   209,   333,     6,   236,   236,   349,   374,   349,   370,
-     236,   232,   232,   272,   273,   350,   236,   219,   235,   266,
-     280,   355,   357,   358,   371,   351,   290,   290,     3,   290,
-     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
-     290,   290,   290,   290,   290,   290,     3,   290,   292,   156,
-     159,   276,     6,   293,     3,     9,   361,   348,   219,   262,
-     280,   360,   361,   235,   266,   289,   292,   273,     6,   119,
-     234,   236,   247,   335,   262,   209,   250,   250,    73,   119,
-     341,   342,   234,   310,   311,   337,   233,   211,   232,   234,
-     268,   300,   301,   234,    28,   265,   384,   380,   234,   377,
-     313,   329,   216,   359,   365,   366,   232,   353,   302,   305,
-     357,   348,   219,   262,   280,   356,   357,   236,   235,   266,
-     351,   211,   231,   209,   236,   209,   361,   348,   236,   361,
-     236,   262,   236,   310,   250,   234,   330,   236,   353,   304,
-     304,   309,   311,   232,   232,   250,   209,   249,   232,     5,
-     216,   211,   364,   209,   232,   233,   236,   357,   348,   236,
-     361,   236,   290,   262,   290,   273,   273,   361,   236,   215,
-     216,   250,   304,   310,   311,   234,   232,   232,   293,   365,
-     281,   361,   236,   313,   235,   250,    47,    64,   234,   282,
-     216,   262,   292,   211,   232,   236,   211,   232,   298,   299,
-     336,   298,   232,   250
+     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
+     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
+     236,   236,   236,   236,   236,   236,   236,   236,   210,   232,
+      17,    62,   111,   245,   252,   259,   262,   315,   316,   317,
+     318,   319,   320,   321,   324,   332,   335,   340,   345,   235,
+     373,   305,   268,   269,   234,     3,   305,     3,     3,   234,
+     234,   212,   329,   234,   341,   368,   230,   307,   310,   311,
+     312,   313,   314,     3,   247,   234,   349,   354,   354,   238,
+     231,   236,   267,   352,   236,   210,   232,     5,   237,   120,
+     235,   268,   284,   285,   286,   287,   333,   212,   212,   237,
+     295,   236,   298,   274,   276,   350,     9,    16,   306,     3,
+       6,     7,     8,     9,    10,    11,    90,   141,   176,   189,
+     215,   218,   219,   220,   223,   224,   236,   291,   292,   293,
+     278,   350,   274,   350,     6,   273,    16,   291,   294,     9,
+     279,     9,     9,   271,   294,   350,   293,     9,     9,   293,
+       9,   293,   291,   266,   269,   350,   293,   289,   290,   291,
+      31,   137,   179,   272,     9,     9,   370,     9,   293,   373,
+     289,   275,   350,   291,   373,   132,   205,   206,   207,   208,
+     209,   369,   373,   373,    16,     6,     7,   376,     9,   373,
+     280,   231,   234,   236,   233,   233,   233,   234,   233,   233,
+     251,   306,   350,   250,   322,   311,   312,   234,   235,   329,
+     305,   220,   220,   210,   217,   246,   153,   326,   332,   348,
+     354,   237,   294,   220,   232,   291,   263,   264,   265,   266,
+      32,    76,   174,   208,   384,   385,   383,   234,   311,   306,
+     235,   210,   238,   305,   330,   331,     6,   254,   254,   235,
+     268,   296,   268,   300,   235,   269,   297,   300,   237,   210,
+     237,   237,   237,   236,   291,   291,   291,   291,   291,   291,
+       5,   291,   351,   353,   372,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,   211,   213,   214,   215,   216,   217,
+     218,   219,   220,   221,   222,   230,   231,   210,   237,   237,
+     210,   237,   210,   230,   237,   210,   237,   210,   237,   237,
+     210,   237,   237,   237,   237,   237,   237,   237,   237,   237,
+     237,   237,   350,   220,   236,   267,   281,   306,   360,   362,
+     363,   237,   210,   237,   237,   237,   237,   237,   237,   210,
+     237,   237,   237,   210,   237,   237,   237,   237,   237,   237,
+     230,   237,   237,   237,   280,   244,     9,   249,   216,   236,
+     354,   364,   235,   252,   268,   269,   235,   268,   323,   322,
+     251,   167,   339,   313,   235,   212,   130,   300,   327,   233,
+     232,   232,   237,   210,   210,   237,   190,   378,   379,   216,
+     287,   293,   210,   334,     6,   237,   237,   350,   375,   350,
+     371,   237,   233,   233,   273,   274,   351,   237,   220,   236,
+     267,   281,   356,   358,   359,   372,   352,   291,   291,     3,
+     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
+     291,   291,   291,   291,   291,   291,   291,     3,   291,   293,
+     157,   160,   277,     6,   294,     3,     9,   362,   349,   220,
+     263,   281,   361,   362,   236,   267,   290,   293,   274,     6,
+     120,   235,   237,   248,   336,   263,   210,   251,   251,    74,
+     120,   342,   343,   235,   311,   312,   338,   234,   212,   233,
+     235,   269,   301,   302,   235,    28,   266,   385,   381,   235,
+     378,   314,   330,   217,   360,   366,   367,   233,   354,   303,
+     306,   358,   349,   220,   263,   281,   357,   358,   237,   236,
+     267,   352,   212,   232,   210,   237,   210,   362,   349,   237,
+     362,   237,   263,   237,   311,   251,   235,   331,   237,   354,
+     305,   305,   310,   312,   233,   233,   251,   210,   250,   233,
+       5,   217,   212,   365,   210,   233,   234,   237,   358,   349,
+     237,   362,   237,   291,   263,   291,   274,   274,   362,   237,
+     216,   217,   251,   305,   311,   312,   235,   233,   233,   294,
+     366,   282,   362,   237,   314,   236,   251,    47,    64,   235,
+     283,   217,   263,   293,   212,   233,   237,   212,   233,   299,
+     300,   337,   299,   233,   251
 };
 
 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
 static const yytype_int16 yyr1[] =
 {
-       0,   238,   239,   240,   240,   241,   241,   242,   243,   243,
-     244,   245,   246,   245,   245,   245,   245,   245,   245,   245,
-     245,   245,   245,   245,   245,   245,   245,   245,   247,   247,
-     247,   248,   247,   247,   247,   247,   247,   247,   247,   247,
-     247,   247,   247,   247,   247,   247,   249,   249,   250,   250,
-     251,   251,   251,   251,   251,   251,   251,   252,   252,   253,
-     253,   254,   254,   254,   254,   254,   254,   254,   254,   254,
-     255,   256,   257,   258,   259,   260,   261,   262,   262,   263,
-     263,   264,   264,   265,   265,   266,   266,   266,   267,   267,
-     268,   269,   269,   269,   270,   270,   271,   271,   271,   272,
-     272,   273,   274,   275,   275,   276,   276,   277,   278,   279,
-     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
-     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
-     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
-     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
-     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
-     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
-     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
-     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
-     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
-     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
-     279,   279,   279,   279,   279,   279,   279,   279,   279,   279,
-     279,   279,   279,   280,   280,   280,   280,   281,   281,   282,
-     282,   283,   283,   283,   284,   284,   285,   286,   286,   287,
-     288,   288,   289,   289,   290,   290,   290,   290,   290,   290,
-     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
-     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
-     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
-     290,   290,   290,   290,   290,   291,   291,   292,   293,   294,
-     294,   295,   295,   296,   296,   297,   297,   298,   298,   299,
-     299,   300,   301,   301,   302,   302,   303,   303,   304,   304,
-     305,   306,   306,   306,   306,   306,   306,   306,   306,   306,
-     306,   306,   307,   307,   308,   308,   308,   308,   308,   308,
-     308,   308,   308,   309,   309,   310,   310,   311,   312,   312,
-     312,   312,   312,   313,   313,   314,   315,   316,   317,   318,
-     319,   320,   320,   321,   321,   322,   322,   323,   324,   325,
-     325,   326,   326,   327,   327,   328,   328,   328,   329,   330,
-     330,   331,   332,   333,   331,   334,   335,   336,   334,   337,
-     337,   337,   337,   338,   338,   340,   339,   339,   341,   341,
-     341,   342,   343,   344,   345,   345,   345,   346,   347,   348,
-     348,   349,   349,   350,   350,   351,   351,   352,   352,   352,
-     353,   353,   353,   354,   354,   354,   354,   355,   355,   355,
-     356,   356,   357,   357,   358,   358,   358,   358,   358,   359,
-     359,   359,   360,   360,   361,   361,   362,   362,   362,   362,
-     362,   362,   363,   363,   364,   364,   365,   366,   366,   367,
-     367,   368,   368,   368,   368,   368,   368,   369,   369,   369,
-     370,   371,   371,   371,   371,   371,   371,   371,   371,   371,
-     371,   372,   372,   372,   373,   374,   374,   375,   375,   375,
-     376,   376,   377,   377,   378,   379,   380,   380,   381,   381,
-     382,   382,   382,   382,   383,   383,   384,   384,   384,   384
+       0,   239,   240,   241,   241,   242,   242,   243,   244,   244,
+     245,   246,   247,   246,   246,   246,   246,   246,   246,   246,
+     246,   246,   246,   246,   246,   246,   246,   246,   248,   248,
+     248,   249,   248,   248,   248,   248,   248,   248,   248,   248,
+     248,   248,   248,   248,   248,   248,   250,   250,   251,   251,
+     252,   252,   252,   252,   252,   252,   252,   253,   253,   254,
+     254,   255,   255,   255,   255,   255,   255,   255,   255,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   263,   264,
+     264,   265,   265,   266,   266,   267,   267,   267,   268,   268,
+     269,   270,   270,   270,   271,   271,   272,   272,   272,   273,
+     273,   274,   275,   276,   276,   277,   277,   278,   279,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   281,   281,   281,   281,   282,   282,
+     283,   283,   284,   284,   284,   285,   285,   286,   287,   287,
+     288,   289,   289,   290,   290,   291,   291,   291,   291,   291,
+     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
+     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
+     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
+     291,   291,   291,   291,   291,   291,   292,   292,   293,   294,
+     295,   295,   296,   296,   297,   297,   298,   298,   299,   299,
+     300,   300,   301,   302,   302,   303,   303,   304,   304,   305,
+     305,   306,   307,   307,   307,   307,   307,   307,   307,   307,
+     307,   307,   307,   308,   308,   309,   309,   309,   309,   309,
+     309,   309,   309,   309,   310,   310,   311,   311,   312,   313,
+     313,   313,   313,   313,   314,   314,   315,   316,   317,   318,
+     319,   320,   321,   321,   322,   322,   323,   323,   324,   325,
+     326,   326,   327,   327,   328,   328,   329,   329,   329,   330,
+     331,   331,   332,   333,   334,   332,   335,   336,   337,   335,
+     338,   338,   338,   338,   339,   339,   341,   340,   340,   342,
+     342,   342,   343,   344,   345,   346,   346,   346,   347,   348,
+     349,   349,   350,   350,   351,   351,   352,   352,   353,   353,
+     353,   354,   354,   354,   355,   355,   355,   355,   356,   356,
+     356,   357,   357,   358,   358,   359,   359,   359,   359,   359,
+     360,   360,   360,   361,   361,   362,   362,   363,   363,   363,
+     363,   363,   363,   364,   364,   365,   365,   366,   367,   367,
+     368,   368,   369,   369,   369,   369,   369,   369,   370,   370,
+     370,   371,   372,   372,   372,   372,   372,   372,   372,   372,
+     372,   372,   373,   373,   373,   374,   375,   375,   376,   376,
+     376,   377,   377,   378,   378,   379,   380,   381,   381,   382,
+     382,   383,   383,   383,   383,   384,   384,   385,   385,   385,
+     385
 };
 
 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
@@ -2661,43 +2675,44 @@
        3,     3,     3,     3,     1,     1,     1,     5,     5,     0,
        4,     1,     4,     1,     1,     1,     1,     1,     4,     4,
        1,     4,     1,     1,     1,     1,     4,     4,     1,     6,
-       1,     1,     1,     1,     4,     1,     4,     1,     1,     4,
-       1,     1,     1,     4,     4,     1,     1,     4,     1,     1,
-       1,     1,     1,     4,     4,     4,     4,     4,     1,     4,
-       1,     1,     4,     1,     4,     1,     1,     4,     4,     1,
-       1,     1,     4,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     4,     1,     1,     4,     1,     4,
-       4,     1,     1,     1,     1,     1,     1,     6,     1,     4,
-       1,     1,     1,     4,     1,     4,     1,     1,     4,     4,
-       4,     4,     1,     1,     4,     4,     4,     1,     1,     4,
-       4,     4,     1,     1,     1,     1,     1,     0,     2,     4,
-       3,     0,     2,     1,     1,     3,     2,     3,     1,     5,
-       1,     3,     0,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     5,     3,     3,     3,     3,     3,
+       1,     1,     1,     1,     1,     4,     1,     4,     1,     1,
+       4,     1,     1,     1,     4,     4,     1,     1,     4,     1,
+       1,     1,     1,     1,     4,     4,     4,     4,     4,     1,
+       4,     1,     1,     4,     1,     4,     1,     1,     4,     4,
+       1,     1,     1,     4,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     4,     1,     1,     4,     1,
+       4,     4,     1,     1,     1,     1,     1,     1,     6,     1,
+       4,     1,     1,     1,     4,     1,     4,     1,     1,     4,
+       4,     4,     4,     1,     1,     4,     4,     4,     1,     1,
+       4,     4,     4,     1,     1,     1,     1,     1,     0,     2,
+       4,     3,     0,     2,     1,     1,     3,     2,     3,     1,
+       5,     1,     3,     0,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     5,     3,     3,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     2,     2,     2,     2,     2,     2,     3,
-       3,     5,     5,     4,     3,     1,     3,     1,     1,     0,
-       2,     4,     3,     2,     2,     0,     2,     2,     1,     3,
-       2,     1,     3,     2,     0,     1,     0,     1,     1,     1,
-       1,     1,     1,     1,     2,     2,     1,     1,     1,     1,
-       1,     1,     0,     1,     1,     2,     1,     2,     2,     1,
-       1,     1,     1,     2,     3,     1,     2,     4,     1,     1,
-       2,     1,     2,     1,     3,     2,     6,     2,     7,     2,
-       5,     2,     3,     0,     2,     3,     3,     2,     1,     2,
-       3,     2,     3,     6,     6,     0,     2,     2,     1,     1,
-       3,     2,     0,     0,     7,     8,     0,     0,    13,     1,
-       1,     3,     3,     0,     2,     0,     9,     2,     2,     3,
-       2,     2,     2,     6,     1,     1,     1,     1,     1,     0,
-       2,     2,     3,     2,     3,     0,     1,     2,     2,     2,
-       3,     2,     1,     1,     3,     2,     4,     3,     2,     1,
-       3,     2,     0,     1,     3,     2,     1,     3,     4,     3,
-       2,     1,     3,     2,     0,     1,     1,     3,     2,     1,
-       3,     4,     1,     3,     0,     2,     2,     1,     3,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       5,     1,     1,     1,     2,     1,     2,     1,     2,     4,
-       1,     1,     2,     1,     5,     5,    10,     1,     3,     1,
-       0,     2,     0,     2,     4,     6,     0,     3,     1,     3,
-       4,     1,     1,     1,     1,     3,     1,     1,     1,     1
+       3,     3,     3,     3,     2,     2,     2,     2,     2,     2,
+       3,     3,     5,     5,     4,     3,     1,     3,     1,     1,
+       0,     2,     4,     3,     2,     2,     0,     2,     2,     1,
+       3,     2,     1,     3,     2,     0,     1,     0,     1,     1,
+       1,     1,     1,     1,     1,     2,     2,     1,     1,     1,
+       1,     1,     1,     0,     1,     1,     2,     1,     2,     2,
+       1,     1,     1,     1,     2,     3,     1,     2,     4,     1,
+       1,     2,     1,     2,     1,     3,     2,     6,     2,     7,
+       2,     5,     2,     3,     0,     2,     3,     3,     2,     1,
+       2,     3,     2,     3,     6,     6,     0,     2,     2,     1,
+       1,     3,     2,     0,     0,     7,     8,     0,     0,    13,
+       1,     1,     3,     3,     0,     2,     0,     9,     2,     2,
+       3,     2,     2,     2,     6,     1,     1,     1,     1,     1,
+       0,     2,     2,     3,     2,     3,     0,     1,     2,     2,
+       2,     3,     2,     1,     1,     3,     2,     4,     3,     2,
+       1,     3,     2,     0,     1,     3,     2,     1,     3,     4,
+       3,     2,     1,     3,     2,     0,     1,     1,     3,     2,
+       1,     3,     4,     1,     3,     0,     2,     2,     1,     3,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     5,     1,     1,     1,     2,     1,     2,     1,     2,
+       4,     1,     1,     2,     1,     5,     5,    10,     1,     3,
+       1,     0,     2,     0,     2,     4,     6,     0,     3,     1,
+       3,     4,     1,     1,     1,     1,     3,     1,     1,     1,
+       1
 };
 
 
@@ -3553,7 +3568,7 @@
   switch (yyn)
     {
   case 2: /* input: gbl_statements m_acf  */
-#line 368 "tools/widl/parser.y"
+#line 369 "tools/widl/parser.y"
                                                 { (yyvsp[-1].stmt_list) = append_parameterized_type_stmts((yyvsp[-1].stmt_list));
 						  check_statements((yyvsp[-1].stmt_list), FALSE);
 						  check_all_user_types((yyvsp[-1].stmt_list));
@@ -3567,323 +3582,323 @@
 						  write_dlldata((yyvsp[-1].stmt_list));
 						  write_local_stubs((yyvsp[-1].stmt_list));
 						}
-#line 3571 "tools/widl/parser.tab.c"
+#line 3586 "tools/widl/parser.tab.c"
     break;
 
   case 5: /* decl_statements: %empty  */
-#line 389 "tools/widl/parser.y"
+#line 390 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = NULL; }
-#line 3577 "tools/widl/parser.tab.c"
+#line 3592 "tools/widl/parser.tab.c"
     break;
 
   case 6: /* decl_statements: decl_statements tINTERFACE qualified_type '<' parameterized_type_args '>' ';'  */
-#line 391 "tools/widl/parser.y"
+#line 392 "tools/widl/parser.y"
                                                 { parameterized_type_stmts = append_statement(parameterized_type_stmts, make_statement_parameterized_type((yyvsp[-4].type), (yyvsp[-2].typeref_list)));
 						  (yyval.stmt_list) = append_statement((yyvsp[-6].stmt_list), make_statement_reference(type_parameterized_type_specialize_declare((yyvsp[-4].type), (yyvsp[-2].typeref_list))));
 						}
-#line 3585 "tools/widl/parser.tab.c"
+#line 3600 "tools/widl/parser.tab.c"
     break;
 
   case 7: /* decl_block: tDECLARE '{' decl_statements '}'  */
-#line 396 "tools/widl/parser.y"
+#line 397 "tools/widl/parser.y"
                                              { (yyval.stmt_list) = (yyvsp[-1].stmt_list); }
-#line 3591 "tools/widl/parser.tab.c"
+#line 3606 "tools/widl/parser.tab.c"
     break;
 
   case 8: /* imp_decl_statements: %empty  */
-#line 400 "tools/widl/parser.y"
+#line 401 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = NULL; }
-#line 3597 "tools/widl/parser.tab.c"
+#line 3612 "tools/widl/parser.tab.c"
     break;
 
   case 9: /* imp_decl_statements: imp_decl_statements tINTERFACE qualified_type '<' parameterized_type_args '>' ';'  */
-#line 402 "tools/widl/parser.y"
+#line 403 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-6].stmt_list), make_statement_reference(type_parameterized_type_specialize_declare((yyvsp[-4].type), (yyvsp[-2].typeref_list)))); }
-#line 3603 "tools/widl/parser.tab.c"
+#line 3618 "tools/widl/parser.tab.c"
     break;
 
   case 10: /* imp_decl_block: tDECLARE '{' imp_decl_statements '}'  */
-#line 406 "tools/widl/parser.y"
+#line 407 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = (yyvsp[-1].stmt_list); }
-#line 3609 "tools/widl/parser.tab.c"
+#line 3624 "tools/widl/parser.tab.c"
     break;
 
   case 11: /* gbl_statements: %empty  */
-#line 410 "tools/widl/parser.y"
+#line 411 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = NULL; }
-#line 3615 "tools/widl/parser.tab.c"
+#line 3630 "tools/widl/parser.tab.c"
     break;
 
   case 12: /* $@1: %empty  */
-#line 411 "tools/widl/parser.y"
+#line 412 "tools/widl/parser.y"
                                           { push_namespaces((yyvsp[-1].str_list)); }
-#line 3621 "tools/widl/parser.tab.c"
+#line 3636 "tools/widl/parser.tab.c"
     break;
 
   case 13: /* gbl_statements: gbl_statements namespacedef '{' $@1 gbl_statements '}'  */
-#line 412 "tools/widl/parser.y"
+#line 413 "tools/widl/parser.y"
                                                 { pop_namespaces((yyvsp[-4].str_list)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); }
-#line 3627 "tools/widl/parser.tab.c"
+#line 3642 "tools/widl/parser.tab.c"
     break;
 
   case 14: /* gbl_statements: gbl_statements interface ';'  */
-#line 413 "tools/widl/parser.y"
+#line 414 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-2].stmt_list), make_statement_reference((yyvsp[-1].type))); }
-#line 3633 "tools/widl/parser.tab.c"
+#line 3648 "tools/widl/parser.tab.c"
     break;
 
   case 15: /* gbl_statements: gbl_statements dispinterface ';'  */
-#line 414 "tools/widl/parser.y"
+#line 415 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-2].stmt_list), make_statement_reference((yyvsp[-1].type))); }
-#line 3639 "tools/widl/parser.tab.c"
+#line 3654 "tools/widl/parser.tab.c"
     break;
 
   case 16: /* gbl_statements: gbl_statements interfacedef  */
-#line 415 "tools/widl/parser.y"
+#line 416 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
-#line 3645 "tools/widl/parser.tab.c"
+#line 3660 "tools/widl/parser.tab.c"
     break;
 
   case 17: /* gbl_statements: gbl_statements delegatedef  */
-#line 416 "tools/widl/parser.y"
+#line 417 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
-#line 3651 "tools/widl/parser.tab.c"
+#line 3666 "tools/widl/parser.tab.c"
     break;
 
   case 18: /* gbl_statements: gbl_statements coclass ';'  */
-#line 417 "tools/widl/parser.y"
+#line 418 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = (yyvsp[-2].stmt_list);
 						  reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0);
 						}
-#line 3659 "tools/widl/parser.tab.c"
+#line 3674 "tools/widl/parser.tab.c"
     break;
 
   case 19: /* gbl_statements: gbl_statements coclassdef  */
-#line 420 "tools/widl/parser.y"
+#line 421 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
 						  reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0);
 						}
-#line 3667 "tools/widl/parser.tab.c"
+#line 3682 "tools/widl/parser.tab.c"
     break;
 
   case 20: /* gbl_statements: gbl_statements apicontract ';'  */
-#line 423 "tools/widl/parser.y"
+#line 424 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); }
-#line 3673 "tools/widl/parser.tab.c"
+#line 3688 "tools/widl/parser.tab.c"
     break;
 
   case 21: /* gbl_statements: gbl_statements apicontract_def  */
-#line 424 "tools/widl/parser.y"
+#line 425 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
 						  reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0); }
-#line 3680 "tools/widl/parser.tab.c"
+#line 3695 "tools/widl/parser.tab.c"
     break;
 
   case 22: /* gbl_statements: gbl_statements runtimeclass ';'  */
-#line 426 "tools/widl/parser.y"
+#line 427 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); }
-#line 3686 "tools/widl/parser.tab.c"
+#line 3701 "tools/widl/parser.tab.c"
     break;
 
   case 23: /* gbl_statements: gbl_statements runtimeclass_def  */
-#line 427 "tools/widl/parser.y"
+#line 428 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
 	                                          reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0); }
-#line 3693 "tools/widl/parser.tab.c"
+#line 3708 "tools/widl/parser.tab.c"
     break;
 
   case 24: /* gbl_statements: gbl_statements moduledef  */
-#line 429 "tools/widl/parser.y"
+#line 430 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
-#line 3699 "tools/widl/parser.tab.c"
+#line 3714 "tools/widl/parser.tab.c"
     break;
 
   case 25: /* gbl_statements: gbl_statements librarydef  */
-#line 430 "tools/widl/parser.y"
+#line 431 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
-#line 3705 "tools/widl/parser.tab.c"
+#line 3720 "tools/widl/parser.tab.c"
     break;
 
   case 26: /* gbl_statements: gbl_statements statement  */
-#line 431 "tools/widl/parser.y"
+#line 432 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 3711 "tools/widl/parser.tab.c"
+#line 3726 "tools/widl/parser.tab.c"
     break;
 
   case 27: /* gbl_statements: gbl_statements decl_block  */
-#line 432 "tools/widl/parser.y"
+#line 433 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statements((yyvsp[-1].stmt_list), (yyvsp[0].stmt_list)); }
-#line 3717 "tools/widl/parser.tab.c"
+#line 3732 "tools/widl/parser.tab.c"
     break;
 
   case 28: /* imp_statements: %empty  */
-#line 436 "tools/widl/parser.y"
+#line 437 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = NULL; }
-#line 3723 "tools/widl/parser.tab.c"
+#line 3738 "tools/widl/parser.tab.c"
     break;
 
   case 29: /* imp_statements: imp_statements interface ';'  */
-#line 437 "tools/widl/parser.y"
+#line 438 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-2].stmt_list), make_statement_reference((yyvsp[-1].type))); }
-#line 3729 "tools/widl/parser.tab.c"
+#line 3744 "tools/widl/parser.tab.c"
     break;
 
   case 30: /* imp_statements: imp_statements dispinterface ';'  */
-#line 438 "tools/widl/parser.y"
+#line 439 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-2].stmt_list), make_statement_reference((yyvsp[-1].type))); }
-#line 3735 "tools/widl/parser.tab.c"
+#line 3750 "tools/widl/parser.tab.c"
     break;
 
   case 31: /* $@2: %empty  */
-#line 439 "tools/widl/parser.y"
+#line 440 "tools/widl/parser.y"
                                           { push_namespaces((yyvsp[-1].str_list)); }
-#line 3741 "tools/widl/parser.tab.c"
+#line 3756 "tools/widl/parser.tab.c"
     break;
 
   case 32: /* imp_statements: imp_statements namespacedef '{' $@2 imp_statements '}'  */
-#line 440 "tools/widl/parser.y"
+#line 441 "tools/widl/parser.y"
                                                 { pop_namespaces((yyvsp[-4].str_list)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); }
-#line 3747 "tools/widl/parser.tab.c"
+#line 3762 "tools/widl/parser.tab.c"
     break;
 
   case 33: /* imp_statements: imp_statements interfacedef  */
-#line 441 "tools/widl/parser.y"
+#line 442 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
-#line 3753 "tools/widl/parser.tab.c"
+#line 3768 "tools/widl/parser.tab.c"
     break;
 
   case 34: /* imp_statements: imp_statements delegatedef  */
-#line 442 "tools/widl/parser.y"
+#line 443 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
-#line 3759 "tools/widl/parser.tab.c"
+#line 3774 "tools/widl/parser.tab.c"
     break;
 
   case 35: /* imp_statements: imp_statements coclass ';'  */
-#line 443 "tools/widl/parser.y"
+#line 444 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); }
-#line 3765 "tools/widl/parser.tab.c"
+#line 3780 "tools/widl/parser.tab.c"
     break;
 
   case 36: /* imp_statements: imp_statements coclassdef  */
-#line 444 "tools/widl/parser.y"
+#line 445 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
 						  reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0);
 						}
-#line 3773 "tools/widl/parser.tab.c"
+#line 3788 "tools/widl/parser.tab.c"
     break;
 
   case 37: /* imp_statements: imp_statements apicontract ';'  */
-#line 447 "tools/widl/parser.y"
+#line 448 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); }
-#line 3779 "tools/widl/parser.tab.c"
+#line 3794 "tools/widl/parser.tab.c"
     break;
 
   case 38: /* imp_statements: imp_statements apicontract_def  */
-#line 448 "tools/widl/parser.y"
+#line 449 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
 						  reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0); }
-#line 3786 "tools/widl/parser.tab.c"
+#line 3801 "tools/widl/parser.tab.c"
     break;
 
   case 39: /* imp_statements: imp_statements runtimeclass ';'  */
-#line 450 "tools/widl/parser.y"
+#line 451 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); }
-#line 3792 "tools/widl/parser.tab.c"
+#line 3807 "tools/widl/parser.tab.c"
     break;
 
   case 40: /* imp_statements: imp_statements runtimeclass_def  */
-#line 451 "tools/widl/parser.y"
+#line 452 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
 	                                          reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0); }
-#line 3799 "tools/widl/parser.tab.c"
+#line 3814 "tools/widl/parser.tab.c"
     break;
 
   case 41: /* imp_statements: imp_statements moduledef  */
-#line 453 "tools/widl/parser.y"
+#line 454 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
-#line 3805 "tools/widl/parser.tab.c"
+#line 3820 "tools/widl/parser.tab.c"
     break;
 
   case 42: /* imp_statements: imp_statements statement  */
-#line 454 "tools/widl/parser.y"
+#line 455 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 3811 "tools/widl/parser.tab.c"
+#line 3826 "tools/widl/parser.tab.c"
     break;
 
   case 43: /* imp_statements: imp_statements importlib  */
-#line 455 "tools/widl/parser.y"
+#line 456 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_importlib((yyvsp[0].str))); }
-#line 3817 "tools/widl/parser.tab.c"
+#line 3832 "tools/widl/parser.tab.c"
     break;
 
   case 44: /* imp_statements: imp_statements librarydef  */
-#line 456 "tools/widl/parser.y"
+#line 457 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
-#line 3823 "tools/widl/parser.tab.c"
+#line 3838 "tools/widl/parser.tab.c"
     break;
 
   case 45: /* imp_statements: imp_statements imp_decl_block  */
-#line 457 "tools/widl/parser.y"
+#line 458 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statements((yyvsp[-1].stmt_list), (yyvsp[0].stmt_list)); }
-#line 3829 "tools/widl/parser.tab.c"
+#line 3844 "tools/widl/parser.tab.c"
     break;
 
   case 46: /* int_statements: %empty  */
-#line 461 "tools/widl/parser.y"
+#line 462 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = NULL; }
-#line 3835 "tools/widl/parser.tab.c"
+#line 3850 "tools/widl/parser.tab.c"
     break;
 
   case 47: /* int_statements: int_statements statement  */
-#line 462 "tools/widl/parser.y"
+#line 463 "tools/widl/parser.y"
                                                 { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 3841 "tools/widl/parser.tab.c"
+#line 3856 "tools/widl/parser.tab.c"
     break;
 
   case 50: /* statement: cppquote  */
-#line 471 "tools/widl/parser.y"
+#line 472 "tools/widl/parser.y"
                                                 { (yyval.statement) = make_statement_cppquote((yyvsp[0].str)); }
-#line 3847 "tools/widl/parser.tab.c"
+#line 3862 "tools/widl/parser.tab.c"
     break;
 
   case 51: /* statement: typedecl ';'  */
-#line 472 "tools/widl/parser.y"
+#line 473 "tools/widl/parser.y"
                                                 { (yyval.statement) = make_statement_type_decl((yyvsp[-1].type)); }
-#line 3853 "tools/widl/parser.tab.c"
+#line 3868 "tools/widl/parser.tab.c"
     break;
 
   case 52: /* statement: declaration ';'  */
-#line 473 "tools/widl/parser.y"
+#line 474 "tools/widl/parser.y"
                                                 { (yyval.statement) = make_statement_declaration((yyvsp[-1].var)); }
-#line 3859 "tools/widl/parser.tab.c"
+#line 3874 "tools/widl/parser.tab.c"
     break;
 
   case 53: /* statement: import  */
-#line 474 "tools/widl/parser.y"
+#line 475 "tools/widl/parser.y"
                                                 { (yyval.statement) = make_statement_import((yyvsp[0].str)); }
-#line 3865 "tools/widl/parser.tab.c"
+#line 3880 "tools/widl/parser.tab.c"
     break;
 
   case 54: /* statement: typedef ';'  */
-#line 475 "tools/widl/parser.y"
+#line 476 "tools/widl/parser.y"
                                                 { (yyval.statement) = (yyvsp[-1].statement); }
-#line 3871 "tools/widl/parser.tab.c"
+#line 3886 "tools/widl/parser.tab.c"
     break;
 
   case 55: /* statement: aPRAGMA  */
-#line 476 "tools/widl/parser.y"
+#line 477 "tools/widl/parser.y"
                                                 { (yyval.statement) = make_statement_pragma((yyvsp[0].str)); }
-#line 3877 "tools/widl/parser.tab.c"
+#line 3892 "tools/widl/parser.tab.c"
     break;
 
   case 56: /* statement: pragma_warning  */
-#line 477 "tools/widl/parser.y"
+#line 478 "tools/widl/parser.y"
                          { (yyval.statement) = NULL; }
-#line 3883 "tools/widl/parser.tab.c"
+#line 3898 "tools/widl/parser.tab.c"
     break;
 
   case 57: /* pragma_warning: tPRAGMA_WARNING '(' aIDENTIFIER ':' warnings ')'  */
-#line 481 "tools/widl/parser.y"
+#line 482 "tools/widl/parser.y"
                   {
                       int result;
                       (yyval.statement) = NULL;
@@ -3891,1054 +3906,1060 @@
                       if(!result)
                           error_loc("expected \"disable\", \"enable\" or \"default\"\n");
                   }
-#line 3895 "tools/widl/parser.tab.c"
+#line 3910 "tools/widl/parser.tab.c"
     break;
 
   case 58: /* pragma_warning: tPRAGMA_WARNING '(' tDEFAULT ':' warnings ')'  */
-#line 489 "tools/widl/parser.y"
+#line 490 "tools/widl/parser.y"
                   {
                       (yyval.statement) = NULL;
                       do_warning("default", (yyvsp[-1].warning_list));
                   }
-#line 3904 "tools/widl/parser.tab.c"
+#line 3919 "tools/widl/parser.tab.c"
     break;
 
   case 59: /* warnings: aNUM  */
-#line 496 "tools/widl/parser.y"
+#line 497 "tools/widl/parser.y"
                { (yyval.warning_list) = append_warning(NULL, (yyvsp[0].num)); }
-#line 3910 "tools/widl/parser.tab.c"
+#line 3925 "tools/widl/parser.tab.c"
     break;
 
   case 60: /* warnings: warnings aNUM  */
-#line 497 "tools/widl/parser.y"
+#line 498 "tools/widl/parser.y"
                         { (yyval.warning_list) = append_warning((yyvsp[-1].warning_list), (yyvsp[0].num)); }
-#line 3916 "tools/widl/parser.tab.c"
+#line 3931 "tools/widl/parser.tab.c"
     break;
 
   case 62: /* typedecl: tENUM aIDENTIFIER  */
-#line 502 "tools/widl/parser.y"
+#line 503 "tools/widl/parser.y"
                                                 { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 3922 "tools/widl/parser.tab.c"
+#line 3937 "tools/widl/parser.tab.c"
     break;
 
   case 64: /* typedecl: tSTRUCT aIDENTIFIER  */
-#line 504 "tools/widl/parser.y"
+#line 505 "tools/widl/parser.y"
                                                 { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 3928 "tools/widl/parser.tab.c"
+#line 3943 "tools/widl/parser.tab.c"
     break;
 
   case 66: /* typedecl: tUNION aIDENTIFIER  */
-#line 506 "tools/widl/parser.y"
+#line 507 "tools/widl/parser.y"
                                                 { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 3934 "tools/widl/parser.tab.c"
+#line 3949 "tools/widl/parser.tab.c"
     break;
 
   case 67: /* typedecl: attributes enumdef  */
-#line 507 "tools/widl/parser.y"
+#line 508 "tools/widl/parser.y"
                                                 { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_enum_attrs((yyvsp[-1].attr_list)); }
-#line 3940 "tools/widl/parser.tab.c"
+#line 3955 "tools/widl/parser.tab.c"
     break;
 
   case 68: /* typedecl: attributes structdef  */
-#line 508 "tools/widl/parser.y"
+#line 509 "tools/widl/parser.y"
                                                 { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_struct_attrs((yyvsp[-1].attr_list)); }
-#line 3946 "tools/widl/parser.tab.c"
+#line 3961 "tools/widl/parser.tab.c"
     break;
 
   case 69: /* typedecl: attributes uniondef  */
-#line 509 "tools/widl/parser.y"
+#line 510 "tools/widl/parser.y"
                                                 { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_union_attrs((yyvsp[-1].attr_list)); }
-#line 3952 "tools/widl/parser.tab.c"
+#line 3967 "tools/widl/parser.tab.c"
     break;
 
   case 70: /* cppquote: tCPPQUOTE '(' aSTRING ')'  */
-#line 512 "tools/widl/parser.y"
+#line 513 "tools/widl/parser.y"
                                                 { (yyval.str) = (yyvsp[-1].str); }
-#line 3958 "tools/widl/parser.tab.c"
+#line 3973 "tools/widl/parser.tab.c"
     break;
 
   case 71: /* import_start: tIMPORT aSTRING ';'  */
-#line 515 "tools/widl/parser.y"
+#line 516 "tools/widl/parser.y"
                                                 { (yyval.str) = (yyvsp[-1].str); push_import( (yyvsp[-1].str), &yylloc ); }
-#line 3964 "tools/widl/parser.tab.c"
+#line 3979 "tools/widl/parser.tab.c"
     break;
 
   case 72: /* import: import_start imp_statements aEOF  */
-#line 517 "tools/widl/parser.y"
+#line 518 "tools/widl/parser.y"
                                                 { pop_import( &yylloc ); }
-#line 3970 "tools/widl/parser.tab.c"
+#line 3985 "tools/widl/parser.tab.c"
     break;
 
   case 73: /* importlib: tIMPORTLIB '(' aSTRING ')' semicolon_opt  */
-#line 521 "tools/widl/parser.y"
+#line 522 "tools/widl/parser.y"
                                                 { (yyval.str) = (yyvsp[-2].str); if(!parse_only) add_importlib((yyvsp[-2].str), current_typelib); }
-#line 3976 "tools/widl/parser.tab.c"
+#line 3991 "tools/widl/parser.tab.c"
     break;
 
   case 74: /* libraryhdr: tLIBRARY typename  */
-#line 524 "tools/widl/parser.y"
+#line 525 "tools/widl/parser.y"
                                                 { (yyval.str) = (yyvsp[0].str); }
-#line 3982 "tools/widl/parser.tab.c"
+#line 3997 "tools/widl/parser.tab.c"
     break;
 
   case 75: /* library_start: attributes libraryhdr '{'  */
-#line 526 "tools/widl/parser.y"
+#line 527 "tools/widl/parser.y"
                                                 { (yyval.typelib) = make_library((yyvsp[-1].str), check_library_attrs((yyvsp[-1].str), (yyvsp[-2].attr_list)));
 						  if (!parse_only && do_typelib) current_typelib = (yyval.typelib);
 						}
-#line 3990 "tools/widl/parser.tab.c"
+#line 4005 "tools/widl/parser.tab.c"
     break;
 
   case 76: /* librarydef: library_start imp_statements '}' semicolon_opt  */
-#line 531 "tools/widl/parser.y"
+#line 532 "tools/widl/parser.y"
                                                 { (yyval.typelib) = (yyvsp[-3].typelib); (yyval.typelib)->stmts = (yyvsp[-2].stmt_list); }
-#line 3996 "tools/widl/parser.tab.c"
+#line 4011 "tools/widl/parser.tab.c"
     break;
 
   case 77: /* m_args: %empty  */
-#line 535 "tools/widl/parser.y"
+#line 536 "tools/widl/parser.y"
                                                 { (yyval.var_list) = NULL; }
-#line 4002 "tools/widl/parser.tab.c"
+#line 4017 "tools/widl/parser.tab.c"
     break;
 
   case 79: /* arg_list: arg  */
-#line 539 "tools/widl/parser.y"
+#line 540 "tools/widl/parser.y"
                                                 { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); }
-#line 4008 "tools/widl/parser.tab.c"
+#line 4023 "tools/widl/parser.tab.c"
     break;
 
   case 80: /* arg_list: arg_list ',' arg  */
-#line 540 "tools/widl/parser.y"
+#line 541 "tools/widl/parser.y"
                                                 { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) ); }
-#line 4014 "tools/widl/parser.tab.c"
+#line 4029 "tools/widl/parser.tab.c"
     break;
 
   case 82: /* args: arg_list ',' ELLIPSIS  */
-#line 544 "tools/widl/parser.y"
+#line 545 "tools/widl/parser.y"
                                                 { (yyval.var_list) = append_var( (yyvsp[-2].var_list), make_var(xstrdup("...")) ); }
-#line 4020 "tools/widl/parser.tab.c"
+#line 4035 "tools/widl/parser.tab.c"
     break;
 
   case 83: /* arg: attributes decl_spec m_any_declarator  */
-#line 548 "tools/widl/parser.y"
+#line 549 "tools/widl/parser.y"
                                                 { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
 						    error_loc("invalid storage class for function parameter\n");
 						  (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
 						  free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
 						}
-#line 4030 "tools/widl/parser.tab.c"
+#line 4045 "tools/widl/parser.tab.c"
     break;
 
   case 84: /* arg: decl_spec m_any_declarator  */
-#line 553 "tools/widl/parser.y"
+#line 554 "tools/widl/parser.y"
                                                 { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
 						    error_loc("invalid storage class for function parameter\n");
 						  (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
 						  free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
 						}
-#line 4040 "tools/widl/parser.tab.c"
+#line 4055 "tools/widl/parser.tab.c"
     break;
 
   case 85: /* array: '[' expr ']'  */
-#line 560 "tools/widl/parser.y"
+#line 561 "tools/widl/parser.y"
                                                 { (yyval.expr) = (yyvsp[-1].expr);
 						  if (!(yyval.expr)->is_const || (yyval.expr)->cval <= 0)
 						      error_loc("array dimension is not a positive integer constant\n");
 						}
-#line 4049 "tools/widl/parser.tab.c"
+#line 4064 "tools/widl/parser.tab.c"
     break;
 
   case 86: /* array: '[' '*' ']'  */
-#line 564 "tools/widl/parser.y"
+#line 565 "tools/widl/parser.y"
                                                 { (yyval.expr) = make_expr(EXPR_VOID); }
-#line 4055 "tools/widl/parser.tab.c"
+#line 4070 "tools/widl/parser.tab.c"
     break;
 
   case 87: /* array: '[' ']'  */
-#line 565 "tools/widl/parser.y"
+#line 566 "tools/widl/parser.y"
                                                 { (yyval.expr) = make_expr(EXPR_VOID); }
-#line 4061 "tools/widl/parser.tab.c"
+#line 4076 "tools/widl/parser.tab.c"
     break;
 
   case 88: /* m_attributes: %empty  */
-#line 569 "tools/widl/parser.y"
+#line 570 "tools/widl/parser.y"
                                                 { (yyval.attr_list) = NULL; }
-#line 4067 "tools/widl/parser.tab.c"
+#line 4082 "tools/widl/parser.tab.c"
     break;
 
   case 90: /* attributes: '[' attrib_list ']'  */
-#line 574 "tools/widl/parser.y"
+#line 575 "tools/widl/parser.y"
                                                 { (yyval.attr_list) = (yyvsp[-1].attr_list); }
-#line 4073 "tools/widl/parser.tab.c"
+#line 4088 "tools/widl/parser.tab.c"
     break;
 
   case 91: /* attrib_list: attribute  */
-#line 577 "tools/widl/parser.y"
+#line 578 "tools/widl/parser.y"
                                                 { (yyval.attr_list) = append_attr( NULL, (yyvsp[0].attr) ); }
-#line 4079 "tools/widl/parser.tab.c"
+#line 4094 "tools/widl/parser.tab.c"
     break;
 
   case 92: /* attrib_list: attrib_list ',' attribute  */
-#line 578 "tools/widl/parser.y"
+#line 579 "tools/widl/parser.y"
                                                 { (yyval.attr_list) = append_attr( (yyvsp[-2].attr_list), (yyvsp[0].attr) ); }
-#line 4085 "tools/widl/parser.tab.c"
+#line 4100 "tools/widl/parser.tab.c"
     break;
 
   case 93: /* attrib_list: attrib_list ']' '[' attribute  */
-#line 579 "tools/widl/parser.y"
+#line 580 "tools/widl/parser.y"
                                                 { (yyval.attr_list) = append_attr( (yyvsp[-3].attr_list), (yyvsp[0].attr) ); }
-#line 4091 "tools/widl/parser.tab.c"
+#line 4106 "tools/widl/parser.tab.c"
     break;
 
   case 94: /* str_list: aSTRING  */
-#line 582 "tools/widl/parser.y"
+#line 583 "tools/widl/parser.y"
                                                 { (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); }
-#line 4097 "tools/widl/parser.tab.c"
+#line 4112 "tools/widl/parser.tab.c"
     break;
 
   case 95: /* str_list: str_list ',' aSTRING  */
-#line 583 "tools/widl/parser.y"
+#line 584 "tools/widl/parser.y"
                                                 { (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); }
-#line 4103 "tools/widl/parser.tab.c"
+#line 4118 "tools/widl/parser.tab.c"
     break;
 
   case 96: /* marshaling_behavior: tAGILE  */
-#line 587 "tools/widl/parser.y"
+#line 588 "tools/widl/parser.y"
                                                 { (yyval.num) = MARSHALING_AGILE; }
-#line 4109 "tools/widl/parser.tab.c"
+#line 4124 "tools/widl/parser.tab.c"
     break;
 
   case 97: /* marshaling_behavior: tNONE  */
-#line 588 "tools/widl/parser.y"
+#line 589 "tools/widl/parser.y"
                                                 { (yyval.num) = MARSHALING_NONE; }
-#line 4115 "tools/widl/parser.tab.c"
+#line 4130 "tools/widl/parser.tab.c"
     break;
 
   case 98: /* marshaling_behavior: tSTANDARD  */
-#line 589 "tools/widl/parser.y"
+#line 590 "tools/widl/parser.y"
                                                 { (yyval.num) = MARSHALING_STANDARD; }
-#line 4121 "tools/widl/parser.tab.c"
+#line 4136 "tools/widl/parser.tab.c"
     break;
 
   case 99: /* contract_ver: aNUM  */
-#line 593 "tools/widl/parser.y"
+#line 594 "tools/widl/parser.y"
                                                 { (yyval.num) = MAKEVERSION(0, (yyvsp[0].num)); }
-#line 4127 "tools/widl/parser.tab.c"
+#line 4142 "tools/widl/parser.tab.c"
     break;
 
   case 100: /* contract_ver: aNUM '.' aNUM  */
-#line 594 "tools/widl/parser.y"
+#line 595 "tools/widl/parser.y"
                                                 { (yyval.num) = MAKEVERSION((yyvsp[0].num), (yyvsp[-2].num)); }
-#line 4133 "tools/widl/parser.tab.c"
+#line 4148 "tools/widl/parser.tab.c"
     break;
 
   case 101: /* contract_req: decl_spec ',' contract_ver  */
-#line 598 "tools/widl/parser.y"
+#line 599 "tools/widl/parser.y"
                                                 { if ((yyvsp[-2].declspec)->type->type_type != TYPE_APICONTRACT)
 						      error_loc("type %s is not an apicontract\n", (yyvsp[-2].declspec)->type->name);
 						  (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num));
 						  (yyval.expr) = make_exprt(EXPR_GTREQL, declare_var(NULL, (yyvsp[-2].declspec), make_declarator(NULL), 0), (yyval.expr));
 						}
-#line 4143 "tools/widl/parser.tab.c"
+#line 4158 "tools/widl/parser.tab.c"
     break;
 
   case 102: /* static_attr: decl_spec ',' contract_req  */
-#line 606 "tools/widl/parser.y"
+#line 607 "tools/widl/parser.y"
                                                 { if ((yyvsp[-2].declspec)->type->type_type != TYPE_INTERFACE)
 						      error_loc("type %s is not an interface\n", (yyvsp[-2].declspec)->type->name);
 						  (yyval.expr) = make_exprt(EXPR_MEMBER, declare_var(NULL, (yyvsp[-2].declspec), make_declarator(NULL), 0), (yyvsp[0].expr));
 						}
-#line 4152 "tools/widl/parser.tab.c"
-    break;
-
-  case 103: /* activatable_attr: decl_spec ',' contract_req  */
-#line 613 "tools/widl/parser.y"
-                                                { if ((yyvsp[-2].declspec)->type->type_type != TYPE_INTERFACE)
-						      error_loc("type %s is not an interface\n", (yyvsp[-2].declspec)->type->name);
-						  (yyval.expr) = make_exprt(EXPR_MEMBER, declare_var(NULL, (yyvsp[-2].declspec), make_declarator(NULL), 0), (yyvsp[0].expr));
-						}
-#line 4161 "tools/widl/parser.tab.c"
-    break;
-
-  case 104: /* activatable_attr: contract_req  */
-#line 617 "tools/widl/parser.y"
-                                                { (yyval.expr) = (yyvsp[0].expr); }
 #line 4167 "tools/widl/parser.tab.c"
     break;
 
+  case 103: /* activatable_attr: decl_spec ',' contract_req  */
+#line 614 "tools/widl/parser.y"
+                                                { if ((yyvsp[-2].declspec)->type->type_type != TYPE_INTERFACE)
+						      error_loc("type %s is not an interface\n", (yyvsp[-2].declspec)->type->name);
+						  (yyval.expr) = make_exprt(EXPR_MEMBER, declare_var(NULL, (yyvsp[-2].declspec), make_declarator(NULL), 0), (yyvsp[0].expr));
+						}
+#line 4176 "tools/widl/parser.tab.c"
+    break;
+
+  case 104: /* activatable_attr: contract_req  */
+#line 618 "tools/widl/parser.y"
+                                                { (yyval.expr) = (yyvsp[0].expr); }
+#line 4182 "tools/widl/parser.tab.c"
+    break;
+
   case 105: /* access_attr: tPUBLIC  */
-#line 621 "tools/widl/parser.y"
+#line 622 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_PUBLIC, 0 ); }
-#line 4173 "tools/widl/parser.tab.c"
+#line 4188 "tools/widl/parser.tab.c"
     break;
 
   case 106: /* access_attr: tPROTECTED  */
-#line 622 "tools/widl/parser.y"
+#line 623 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_PROTECTED, 0 ); }
-#line 4179 "tools/widl/parser.tab.c"
+#line 4194 "tools/widl/parser.tab.c"
     break;
 
   case 107: /* composable_attr: decl_spec ',' access_attr ',' contract_req  */
-#line 627 "tools/widl/parser.y"
+#line 628 "tools/widl/parser.y"
                                                 { if ((yyvsp[-4].declspec)->type->type_type != TYPE_INTERFACE)
                                                       error_loc( "type %s is not an interface\n", (yyvsp[-4].declspec)->type->name );
                                                   (yyval.expr) = make_exprt( EXPR_MEMBER, declare_var( append_attr( NULL, (yyvsp[-2].attr) ), (yyvsp[-4].declspec), make_declarator( NULL ), 0 ), (yyvsp[0].expr) );
                                                 }
-#line 4188 "tools/widl/parser.tab.c"
+#line 4203 "tools/widl/parser.tab.c"
     break;
 
   case 108: /* deprecated_attr: aSTRING ',' aIDENTIFIER ',' contract_req  */
-#line 635 "tools/widl/parser.y"
+#line 636 "tools/widl/parser.y"
                                                 { (yyval.expr) = make_expr3( EXPR_MEMBER, make_exprs( EXPR_STRLIT, (yyvsp[-4].str) ), make_exprs( EXPR_IDENTIFIER, (yyvsp[-2].str) ), (yyvsp[0].expr) ); }
-#line 4194 "tools/widl/parser.tab.c"
+#line 4209 "tools/widl/parser.tab.c"
     break;
 
   case 109: /* attribute: %empty  */
-#line 639 "tools/widl/parser.y"
+#line 640 "tools/widl/parser.y"
                                                 { (yyval.attr) = NULL; }
-#line 4200 "tools/widl/parser.tab.c"
+#line 4215 "tools/widl/parser.tab.c"
     break;
 
   case 110: /* attribute: tACTIVATABLE '(' activatable_attr ')'  */
-#line 640 "tools/widl/parser.y"
+#line 641 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_ptr( (yyloc), ATTR_ACTIVATABLE, (yyvsp[-1].expr) ); }
-#line 4206 "tools/widl/parser.tab.c"
+#line 4221 "tools/widl/parser.tab.c"
     break;
 
   case 111: /* attribute: tAGGREGATABLE  */
-#line 641 "tools/widl/parser.y"
+#line 642 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_AGGREGATABLE, 0 ); }
-#line 4212 "tools/widl/parser.tab.c"
+#line 4227 "tools/widl/parser.tab.c"
     break;
 
   case 112: /* attribute: tANNOTATION '(' aSTRING ')'  */
-#line 642 "tools/widl/parser.y"
+#line 643 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_ptr( (yyloc), ATTR_ANNOTATION, (yyvsp[-1].str) ); }
-#line 4218 "tools/widl/parser.tab.c"
+#line 4233 "tools/widl/parser.tab.c"
     break;
 
   case 113: /* attribute: tAPPOBJECT  */
-#line 643 "tools/widl/parser.y"
+#line 644 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_APPOBJECT, 0 ); }
-#line 4224 "tools/widl/parser.tab.c"
+#line 4239 "tools/widl/parser.tab.c"
     break;
 
   case 114: /* attribute: tASYNC  */
-#line 644 "tools/widl/parser.y"
+#line 645 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_ASYNC, 0 ); }
-#line 4230 "tools/widl/parser.tab.c"
+#line 4245 "tools/widl/parser.tab.c"
     break;
 
   case 115: /* attribute: tAUTOHANDLE  */
-#line 645 "tools/widl/parser.y"
+#line 646 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_AUTO_HANDLE, 0 ); }
-#line 4236 "tools/widl/parser.tab.c"
+#line 4251 "tools/widl/parser.tab.c"
     break;
 
   case 116: /* attribute: tBINDABLE  */
-#line 646 "tools/widl/parser.y"
+#line 647 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_BINDABLE, 0 ); }
-#line 4242 "tools/widl/parser.tab.c"
+#line 4257 "tools/widl/parser.tab.c"
     break;
 
   case 117: /* attribute: tBROADCAST  */
-#line 647 "tools/widl/parser.y"
+#line 648 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_BROADCAST, 0 ); }
-#line 4248 "tools/widl/parser.tab.c"
+#line 4263 "tools/widl/parser.tab.c"
     break;
 
   case 118: /* attribute: tCALLAS '(' ident ')'  */
-#line 648 "tools/widl/parser.y"
+#line 649 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_ptr( (yyloc), ATTR_CALLAS, (yyvsp[-1].var) ); }
-#line 4254 "tools/widl/parser.tab.c"
+#line 4269 "tools/widl/parser.tab.c"
     break;
 
   case 119: /* attribute: tCASE '(' expr_list_int_const ')'  */
-#line 649 "tools/widl/parser.y"
+#line 650 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_ptr( (yyloc), ATTR_CASE, (yyvsp[-1].expr_list) ); }
-#line 4260 "tools/widl/parser.tab.c"
+#line 4275 "tools/widl/parser.tab.c"
     break;
 
   case 120: /* attribute: tCODE  */
-#line 650 "tools/widl/parser.y"
+#line 651 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_CODE, 0 ); }
-#line 4266 "tools/widl/parser.tab.c"
+#line 4281 "tools/widl/parser.tab.c"
     break;
 
   case 121: /* attribute: tCOMPOSABLE '(' composable_attr ')'  */
-#line 651 "tools/widl/parser.y"
+#line 652 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_ptr( (yyloc), ATTR_COMPOSABLE, (yyvsp[-1].expr) ); }
-#line 4272 "tools/widl/parser.tab.c"
+#line 4287 "tools/widl/parser.tab.c"
     break;
 
   case 122: /* attribute: tCOMMSTATUS  */
-#line 652 "tools/widl/parser.y"
+#line 653 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_COMMSTATUS, 0 ); }
-#line 4278 "tools/widl/parser.tab.c"
+#line 4293 "tools/widl/parser.tab.c"
     break;
 
   case 123: /* attribute: tCONTEXTHANDLE  */
-#line 653 "tools/widl/parser.y"
+#line 654 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_CONTEXTHANDLE, 0 ); }
-#line 4284 "tools/widl/parser.tab.c"
+#line 4299 "tools/widl/parser.tab.c"
     break;
 
   case 124: /* attribute: tCONTEXTHANDLENOSERIALIZE  */
-#line 654 "tools/widl/parser.y"
+#line 655 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_CONTEXTHANDLE, 0 ); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ }
-#line 4290 "tools/widl/parser.tab.c"
+#line 4305 "tools/widl/parser.tab.c"
     break;
 
   case 125: /* attribute: tCONTEXTHANDLESERIALIZE  */
-#line 655 "tools/widl/parser.y"
+#line 656 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_CONTEXTHANDLE, 0 ); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
-#line 4296 "tools/widl/parser.tab.c"
+#line 4311 "tools/widl/parser.tab.c"
     break;
 
   case 126: /* attribute: tCONTRACT '(' contract_req ')'  */
-#line 656 "tools/widl/parser.y"
+#line 657 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_ptr( (yyloc), ATTR_CONTRACT, (yyvsp[-1].expr) ); }
-#line 4302 "tools/widl/parser.tab.c"
+#line 4317 "tools/widl/parser.tab.c"
     break;
 
   case 127: /* attribute: tCONTRACTVERSION '(' contract_ver ')'  */
-#line 657 "tools/widl/parser.y"
+#line 658 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_CONTRACTVERSION, (yyvsp[-1].num) ); }
-#line 4308 "tools/widl/parser.tab.c"
+#line 4323 "tools/widl/parser.tab.c"
     break;
 
   case 128: /* attribute: tCONTROL  */
-#line 658 "tools/widl/parser.y"
+#line 659 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_CONTROL, 0 ); }
-#line 4314 "tools/widl/parser.tab.c"
+#line 4329 "tools/widl/parser.tab.c"
     break;
 
   case 129: /* attribute: tCUSTOM '(' aUUID ',' expr_const ')'  */
-#line 659 "tools/widl/parser.y"
+#line 660 "tools/widl/parser.y"
                                                 { attr_custdata_t *data = xmalloc( sizeof(*data) );
                                                   data->id = *(yyvsp[-3].uuid); data->pval = (yyvsp[-1].expr);
                                                   (yyval.attr) = attr_ptr( (yyloc), ATTR_CUSTOM, data );
                                                 }
-#line 4323 "tools/widl/parser.tab.c"
+#line 4338 "tools/widl/parser.tab.c"
     break;
 
   case 130: /* attribute: tDECODE  */
-#line 663 "tools/widl/parser.y"
+#line 664 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_DECODE, 0 ); }
-#line 4329 "tools/widl/parser.tab.c"
+#line 4344 "tools/widl/parser.tab.c"
     break;
 
   case 131: /* attribute: tDEFAULT  */
-#line 664 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULT, 0 ); }
-#line 4335 "tools/widl/parser.tab.c"
-    break;
-
-  case 132: /* attribute: tDEFAULTBIND  */
 #line 665 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULTBIND, 0 ); }
-#line 4341 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULT, 0 ); }
+#line 4350 "tools/widl/parser.tab.c"
     break;
 
-  case 133: /* attribute: tDEFAULTCOLLELEM  */
+  case 132: /* attribute: tDEFAULT_OVERLOAD  */
 #line 666 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULTCOLLELEM, 0 ); }
-#line 4347 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULT_OVERLOAD, 0 ); }
+#line 4356 "tools/widl/parser.tab.c"
     break;
 
-  case 134: /* attribute: tDEFAULTVALUE '(' expr_const ')'  */
+  case 133: /* attribute: tDEFAULTBIND  */
 #line 667 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_DEFAULTVALUE, (yyvsp[-1].expr) ); }
-#line 4353 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULTBIND, 0 ); }
+#line 4362 "tools/widl/parser.tab.c"
     break;
 
-  case 135: /* attribute: tDEFAULTVTABLE  */
+  case 134: /* attribute: tDEFAULTCOLLELEM  */
 #line 668 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULTVTABLE, 0 ); }
-#line 4359 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULTCOLLELEM, 0 ); }
+#line 4368 "tools/widl/parser.tab.c"
     break;
 
-  case 136: /* attribute: tDEPRECATED '(' deprecated_attr ')'  */
+  case 135: /* attribute: tDEFAULTVALUE '(' expr_const ')'  */
 #line 669 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_DEPRECATED, (yyvsp[-1].expr) ); }
-#line 4365 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_DEFAULTVALUE, (yyvsp[-1].expr) ); }
+#line 4374 "tools/widl/parser.tab.c"
     break;
 
-  case 137: /* attribute: tDISABLECONSISTENCYCHECK  */
+  case 136: /* attribute: tDEFAULTVTABLE  */
 #line 670 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DISABLECONSISTENCYCHECK, 0 ); }
-#line 4371 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULTVTABLE, 0 ); }
+#line 4380 "tools/widl/parser.tab.c"
     break;
 
-  case 138: /* attribute: tDISPLAYBIND  */
+  case 137: /* attribute: tDEPRECATED '(' deprecated_attr ')'  */
 #line 671 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DISPLAYBIND, 0 ); }
-#line 4377 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_DEPRECATED, (yyvsp[-1].expr) ); }
+#line 4386 "tools/widl/parser.tab.c"
     break;
 
-  case 139: /* attribute: tDLLNAME '(' aSTRING ')'  */
+  case 138: /* attribute: tDISABLECONSISTENCYCHECK  */
 #line 672 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_DLLNAME, (yyvsp[-1].str) ); }
-#line 4383 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DISABLECONSISTENCYCHECK, 0 ); }
+#line 4392 "tools/widl/parser.tab.c"
     break;
 
-  case 140: /* attribute: tDUAL  */
+  case 139: /* attribute: tDISPLAYBIND  */
 #line 673 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DUAL, 0 ); }
-#line 4389 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DISPLAYBIND, 0 ); }
+#line 4398 "tools/widl/parser.tab.c"
     break;
 
-  case 141: /* attribute: tENABLEALLOCATE  */
+  case 140: /* attribute: tDLLNAME '(' aSTRING ')'  */
 #line 674 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_ENABLEALLOCATE, 0 ); }
-#line 4395 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_DLLNAME, (yyvsp[-1].str) ); }
+#line 4404 "tools/widl/parser.tab.c"
     break;
 
-  case 142: /* attribute: tENCODE  */
+  case 141: /* attribute: tDUAL  */
 #line 675 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_ENCODE, 0 ); }
-#line 4401 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DUAL, 0 ); }
+#line 4410 "tools/widl/parser.tab.c"
     break;
 
-  case 143: /* attribute: tENDPOINT '(' str_list ')'  */
+  case 142: /* attribute: tENABLEALLOCATE  */
 #line 676 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_ENDPOINT, (yyvsp[-1].str_list) ); }
-#line 4407 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_ENABLEALLOCATE, 0 ); }
+#line 4416 "tools/widl/parser.tab.c"
     break;
 
-  case 144: /* attribute: tENTRY '(' expr_const ')'  */
+  case 143: /* attribute: tENCODE  */
 #line 677 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_ENTRY, (yyvsp[-1].expr) ); }
-#line 4413 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_ENCODE, 0 ); }
+#line 4422 "tools/widl/parser.tab.c"
     break;
 
-  case 145: /* attribute: tEVENTADD  */
+  case 144: /* attribute: tENDPOINT '(' str_list ')'  */
 #line 678 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_EVENTADD, 0 ); }
-#line 4419 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_ENDPOINT, (yyvsp[-1].str_list) ); }
+#line 4428 "tools/widl/parser.tab.c"
     break;
 
-  case 146: /* attribute: tEVENTREMOVE  */
+  case 145: /* attribute: tENTRY '(' expr_const ')'  */
 #line 679 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_EVENTREMOVE, 0 ); }
-#line 4425 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_ENTRY, (yyvsp[-1].expr) ); }
+#line 4434 "tools/widl/parser.tab.c"
     break;
 
-  case 147: /* attribute: tEXCLUSIVETO '(' decl_spec ')'  */
+  case 146: /* attribute: tEVENTADD  */
 #line 680 "tools/widl/parser.y"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_EVENTADD, 0 ); }
+#line 4440 "tools/widl/parser.tab.c"
+    break;
+
+  case 147: /* attribute: tEVENTREMOVE  */
+#line 681 "tools/widl/parser.y"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_EVENTREMOVE, 0 ); }
+#line 4446 "tools/widl/parser.tab.c"
+    break;
+
+  case 148: /* attribute: tEXCLUSIVETO '(' decl_spec ')'  */
+#line 682 "tools/widl/parser.y"
                                                 { if ((yyvsp[-1].declspec)->type->type_type != TYPE_RUNTIMECLASS)
                                                       error_loc( "type %s is not a runtimeclass\n", (yyvsp[-1].declspec)->type->name );
                                                   (yyval.attr) = attr_ptr( (yyloc), ATTR_EXCLUSIVETO, (yyvsp[-1].declspec)->type );
                                                 }
-#line 4434 "tools/widl/parser.tab.c"
+#line 4455 "tools/widl/parser.tab.c"
     break;
 
-  case 148: /* attribute: tEXPLICITHANDLE  */
-#line 684 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_EXPLICIT_HANDLE, 0 ); }
-#line 4440 "tools/widl/parser.tab.c"
-    break;
-
-  case 149: /* attribute: tFAULTSTATUS  */
-#line 685 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_FAULTSTATUS, 0 ); }
-#line 4446 "tools/widl/parser.tab.c"
-    break;
-
-  case 150: /* attribute: tFLAGS  */
+  case 149: /* attribute: tEXPLICITHANDLE  */
 #line 686 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_FLAGS, 0 ); }
-#line 4452 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_EXPLICIT_HANDLE, 0 ); }
+#line 4461 "tools/widl/parser.tab.c"
     break;
 
-  case 151: /* attribute: tFORCEALLOCATE  */
+  case 150: /* attribute: tFAULTSTATUS  */
 #line 687 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_FORCEALLOCATE, 0 ); }
-#line 4458 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_FAULTSTATUS, 0 ); }
+#line 4467 "tools/widl/parser.tab.c"
     break;
 
-  case 152: /* attribute: tHANDLE  */
+  case 151: /* attribute: tFLAGS  */
 #line 688 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_HANDLE, 0 ); }
-#line 4464 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_FLAGS, 0 ); }
+#line 4473 "tools/widl/parser.tab.c"
     break;
 
-  case 153: /* attribute: tHELPCONTEXT '(' expr_int_const ')'  */
+  case 152: /* attribute: tFORCEALLOCATE  */
 #line 689 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPCONTEXT, (yyvsp[-1].expr) ); }
-#line 4470 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_FORCEALLOCATE, 0 ); }
+#line 4479 "tools/widl/parser.tab.c"
     break;
 
-  case 154: /* attribute: tHELPFILE '(' aSTRING ')'  */
+  case 153: /* attribute: tHANDLE  */
 #line 690 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPFILE, (yyvsp[-1].str) ); }
-#line 4476 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_HANDLE, 0 ); }
+#line 4485 "tools/widl/parser.tab.c"
     break;
 
-  case 155: /* attribute: tHELPSTRING '(' aSTRING ')'  */
+  case 154: /* attribute: tHELPCONTEXT '(' expr_int_const ')'  */
 #line 691 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPSTRING, (yyvsp[-1].str) ); }
-#line 4482 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPCONTEXT, (yyvsp[-1].expr) ); }
+#line 4491 "tools/widl/parser.tab.c"
     break;
 
-  case 156: /* attribute: tHELPSTRINGCONTEXT '(' expr_int_const ')'  */
+  case 155: /* attribute: tHELPFILE '(' aSTRING ')'  */
+#line 692 "tools/widl/parser.y"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPFILE, (yyvsp[-1].str) ); }
+#line 4497 "tools/widl/parser.tab.c"
+    break;
+
+  case 156: /* attribute: tHELPSTRING '(' aSTRING ')'  */
 #line 693 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPSTRINGCONTEXT, (yyvsp[-1].expr) ); }
-#line 4488 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPSTRING, (yyvsp[-1].str) ); }
+#line 4503 "tools/widl/parser.tab.c"
     break;
 
-  case 157: /* attribute: tHELPSTRINGDLL '(' aSTRING ')'  */
-#line 694 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPSTRINGDLL, (yyvsp[-1].str) ); }
-#line 4494 "tools/widl/parser.tab.c"
-    break;
-
-  case 158: /* attribute: tHIDDEN  */
+  case 157: /* attribute: tHELPSTRINGCONTEXT '(' expr_int_const ')'  */
 #line 695 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_HIDDEN, 0 ); }
-#line 4500 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPSTRINGCONTEXT, (yyvsp[-1].expr) ); }
+#line 4509 "tools/widl/parser.tab.c"
     break;
 
-  case 159: /* attribute: tID '(' expr_int_const ')'  */
+  case 158: /* attribute: tHELPSTRINGDLL '(' aSTRING ')'  */
 #line 696 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_ID, (yyvsp[-1].expr) ); }
-#line 4506 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPSTRINGDLL, (yyvsp[-1].str) ); }
+#line 4515 "tools/widl/parser.tab.c"
     break;
 
-  case 160: /* attribute: tIDEMPOTENT  */
+  case 159: /* attribute: tHIDDEN  */
 #line 697 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_IDEMPOTENT, 0 ); }
-#line 4512 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_HIDDEN, 0 ); }
+#line 4521 "tools/widl/parser.tab.c"
     break;
 
-  case 161: /* attribute: tIGNORE  */
+  case 160: /* attribute: tID '(' expr_int_const ')'  */
 #line 698 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_IGNORE, 0 ); }
-#line 4518 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_ID, (yyvsp[-1].expr) ); }
+#line 4527 "tools/widl/parser.tab.c"
     break;
 
-  case 162: /* attribute: tIIDIS '(' expr ')'  */
+  case 161: /* attribute: tIDEMPOTENT  */
 #line 699 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_IIDIS, (yyvsp[-1].expr) ); }
-#line 4524 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_IDEMPOTENT, 0 ); }
+#line 4533 "tools/widl/parser.tab.c"
     break;
 
-  case 163: /* attribute: tIMMEDIATEBIND  */
+  case 162: /* attribute: tIGNORE  */
 #line 700 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_IMMEDIATEBIND, 0 ); }
-#line 4530 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_IGNORE, 0 ); }
+#line 4539 "tools/widl/parser.tab.c"
     break;
 
-  case 164: /* attribute: tIMPLICITHANDLE '(' arg ')'  */
+  case 163: /* attribute: tIIDIS '(' expr ')'  */
 #line 701 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_IMPLICIT_HANDLE, (yyvsp[-1].var) ); }
-#line 4536 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_IIDIS, (yyvsp[-1].expr) ); }
+#line 4545 "tools/widl/parser.tab.c"
     break;
 
-  case 165: /* attribute: tIN  */
+  case 164: /* attribute: tIMMEDIATEBIND  */
 #line 702 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_IN, 0 ); }
-#line 4542 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_IMMEDIATEBIND, 0 ); }
+#line 4551 "tools/widl/parser.tab.c"
     break;
 
-  case 166: /* attribute: tINPUTSYNC  */
+  case 165: /* attribute: tIMPLICITHANDLE '(' arg ')'  */
 #line 703 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_INPUTSYNC, 0 ); }
-#line 4548 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_IMPLICIT_HANDLE, (yyvsp[-1].var) ); }
+#line 4557 "tools/widl/parser.tab.c"
     break;
 
-  case 167: /* attribute: tLENGTHIS '(' m_exprs ')'  */
+  case 166: /* attribute: tIN  */
 #line 704 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_LENGTHIS, (yyvsp[-1].expr_list) ); }
-#line 4554 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_IN, 0 ); }
+#line 4563 "tools/widl/parser.tab.c"
     break;
 
-  case 168: /* attribute: tLCID '(' expr_int_const ')'  */
+  case 167: /* attribute: tINPUTSYNC  */
 #line 705 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_LIBLCID, (yyvsp[-1].expr) ); }
-#line 4560 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_INPUTSYNC, 0 ); }
+#line 4569 "tools/widl/parser.tab.c"
     break;
 
-  case 169: /* attribute: tLCID  */
+  case 168: /* attribute: tLENGTHIS '(' m_exprs ')'  */
 #line 706 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PARAMLCID, 0 ); }
-#line 4566 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_LENGTHIS, (yyvsp[-1].expr_list) ); }
+#line 4575 "tools/widl/parser.tab.c"
     break;
 
-  case 170: /* attribute: tLICENSED  */
+  case 169: /* attribute: tLCID '(' expr_int_const ')'  */
 #line 707 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_LICENSED, 0 ); }
-#line 4572 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_LIBLCID, (yyvsp[-1].expr) ); }
+#line 4581 "tools/widl/parser.tab.c"
     break;
 
-  case 171: /* attribute: tLOCAL  */
+  case 170: /* attribute: tLCID  */
 #line 708 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_LOCAL, 0 ); }
-#line 4578 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PARAMLCID, 0 ); }
+#line 4587 "tools/widl/parser.tab.c"
     break;
 
-  case 172: /* attribute: tMARSHALINGBEHAVIOR '(' marshaling_behavior ')'  */
+  case 171: /* attribute: tLICENSED  */
+#line 709 "tools/widl/parser.y"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_LICENSED, 0 ); }
+#line 4593 "tools/widl/parser.tab.c"
+    break;
+
+  case 172: /* attribute: tLOCAL  */
 #line 710 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_MARSHALING_BEHAVIOR, (yyvsp[-1].num) ); }
-#line 4584 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_LOCAL, 0 ); }
+#line 4599 "tools/widl/parser.tab.c"
     break;
 
-  case 173: /* attribute: tMAYBE  */
-#line 711 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_MAYBE, 0 ); }
-#line 4590 "tools/widl/parser.tab.c"
-    break;
-
-  case 174: /* attribute: tMESSAGE  */
+  case 173: /* attribute: tMARSHALINGBEHAVIOR '(' marshaling_behavior ')'  */
 #line 712 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_MESSAGE, 0 ); }
-#line 4596 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_MARSHALING_BEHAVIOR, (yyvsp[-1].num) ); }
+#line 4605 "tools/widl/parser.tab.c"
     break;
 
-  case 175: /* attribute: tNOCODE  */
+  case 174: /* attribute: tMAYBE  */
 #line 713 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_NOCODE, 0 ); }
-#line 4602 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_MAYBE, 0 ); }
+#line 4611 "tools/widl/parser.tab.c"
     break;
 
-  case 176: /* attribute: tNONBROWSABLE  */
+  case 175: /* attribute: tMESSAGE  */
 #line 714 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_NONBROWSABLE, 0 ); }
-#line 4608 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_MESSAGE, 0 ); }
+#line 4617 "tools/widl/parser.tab.c"
     break;
 
-  case 177: /* attribute: tNONCREATABLE  */
+  case 176: /* attribute: tNOCODE  */
 #line 715 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_NONCREATABLE, 0 ); }
-#line 4614 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_NOCODE, 0 ); }
+#line 4623 "tools/widl/parser.tab.c"
     break;
 
-  case 178: /* attribute: tNONEXTENSIBLE  */
+  case 177: /* attribute: tNONBROWSABLE  */
 #line 716 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_NONEXTENSIBLE, 0 ); }
-#line 4620 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_NONBROWSABLE, 0 ); }
+#line 4629 "tools/widl/parser.tab.c"
     break;
 
-  case 179: /* attribute: tNOTIFY  */
+  case 178: /* attribute: tNONCREATABLE  */
 #line 717 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_NOTIFY, 0 ); }
-#line 4626 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_NONCREATABLE, 0 ); }
+#line 4635 "tools/widl/parser.tab.c"
     break;
 
-  case 180: /* attribute: tNOTIFYFLAG  */
+  case 179: /* attribute: tNONEXTENSIBLE  */
 #line 718 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_NOTIFYFLAG, 0 ); }
-#line 4632 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_NONEXTENSIBLE, 0 ); }
+#line 4641 "tools/widl/parser.tab.c"
     break;
 
-  case 181: /* attribute: tOBJECT  */
+  case 180: /* attribute: tNOTIFY  */
 #line 719 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_OBJECT, 0 ); }
-#line 4638 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_NOTIFY, 0 ); }
+#line 4647 "tools/widl/parser.tab.c"
     break;
 
-  case 182: /* attribute: tODL  */
+  case 181: /* attribute: tNOTIFYFLAG  */
 #line 720 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_ODL, 0 ); }
-#line 4644 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_NOTIFYFLAG, 0 ); }
+#line 4653 "tools/widl/parser.tab.c"
     break;
 
-  case 183: /* attribute: tOLEAUTOMATION  */
+  case 182: /* attribute: tOBJECT  */
 #line 721 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_OLEAUTOMATION, 0 ); }
-#line 4650 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_OBJECT, 0 ); }
+#line 4659 "tools/widl/parser.tab.c"
     break;
 
-  case 184: /* attribute: tOPTIMIZE '(' aSTRING ')'  */
+  case 183: /* attribute: tODL  */
 #line 722 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_OPTIMIZE, (yyvsp[-1].str) ); }
-#line 4656 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_ODL, 0 ); }
+#line 4665 "tools/widl/parser.tab.c"
     break;
 
-  case 185: /* attribute: tOPTIONAL  */
+  case 184: /* attribute: tOLEAUTOMATION  */
 #line 723 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_OPTIONAL, 0 ); }
-#line 4662 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_OLEAUTOMATION, 0 ); }
+#line 4671 "tools/widl/parser.tab.c"
     break;
 
-  case 186: /* attribute: tOUT  */
+  case 185: /* attribute: tOPTIMIZE '(' aSTRING ')'  */
 #line 724 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_OUT, 0 ); }
-#line 4668 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_OPTIMIZE, (yyvsp[-1].str) ); }
+#line 4677 "tools/widl/parser.tab.c"
     break;
 
-  case 187: /* attribute: tOVERLOAD '(' aSTRING ')'  */
+  case 186: /* attribute: tOPTIONAL  */
 #line 725 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_OVERLOAD, (yyvsp[-1].str) ); }
-#line 4674 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_OPTIONAL, 0 ); }
+#line 4683 "tools/widl/parser.tab.c"
     break;
 
-  case 188: /* attribute: tPARTIALIGNORE  */
+  case 187: /* attribute: tOUT  */
 #line 726 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PARTIALIGNORE, 0 ); }
-#line 4680 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_OUT, 0 ); }
+#line 4689 "tools/widl/parser.tab.c"
     break;
 
-  case 189: /* attribute: tPOINTERDEFAULT '(' pointer_type ')'  */
+  case 188: /* attribute: tOVERLOAD '(' aSTRING ')'  */
 #line 727 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_POINTERDEFAULT, (yyvsp[-1].num) ); }
-#line 4686 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_OVERLOAD, (yyvsp[-1].str) ); }
+#line 4695 "tools/widl/parser.tab.c"
     break;
 
-  case 190: /* attribute: tPROGID '(' aSTRING ')'  */
+  case 189: /* attribute: tPARTIALIGNORE  */
 #line 728 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_PROGID, (yyvsp[-1].str) ); }
-#line 4692 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PARTIALIGNORE, 0 ); }
+#line 4701 "tools/widl/parser.tab.c"
     break;
 
-  case 191: /* attribute: tPROPGET  */
+  case 190: /* attribute: tPOINTERDEFAULT '(' pointer_type ')'  */
 #line 729 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PROPGET, 0 ); }
-#line 4698 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_POINTERDEFAULT, (yyvsp[-1].num) ); }
+#line 4707 "tools/widl/parser.tab.c"
     break;
 
-  case 192: /* attribute: tPROPPUT  */
+  case 191: /* attribute: tPROGID '(' aSTRING ')'  */
 #line 730 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PROPPUT, 0 ); }
-#line 4704 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_PROGID, (yyvsp[-1].str) ); }
+#line 4713 "tools/widl/parser.tab.c"
     break;
 
-  case 193: /* attribute: tPROPPUTREF  */
+  case 192: /* attribute: tPROPGET  */
 #line 731 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PROPPUTREF, 0 ); }
-#line 4710 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PROPGET, 0 ); }
+#line 4719 "tools/widl/parser.tab.c"
     break;
 
-  case 194: /* attribute: tPROTECTED  */
+  case 193: /* attribute: tPROPPUT  */
 #line 732 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PROTECTED, 0 ); }
-#line 4716 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PROPPUT, 0 ); }
+#line 4725 "tools/widl/parser.tab.c"
     break;
 
-  case 195: /* attribute: tPROXY  */
+  case 194: /* attribute: tPROPPUTREF  */
 #line 733 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PROXY, 0 ); }
-#line 4722 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PROPPUTREF, 0 ); }
+#line 4731 "tools/widl/parser.tab.c"
     break;
 
-  case 196: /* attribute: tPUBLIC  */
+  case 195: /* attribute: tPROTECTED  */
 #line 734 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PUBLIC, 0 ); }
-#line 4728 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PROTECTED, 0 ); }
+#line 4737 "tools/widl/parser.tab.c"
     break;
 
-  case 197: /* attribute: tRANGE '(' expr_int_const ',' expr_int_const ')'  */
+  case 196: /* attribute: tPROXY  */
+#line 735 "tools/widl/parser.y"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PROXY, 0 ); }
+#line 4743 "tools/widl/parser.tab.c"
+    break;
+
+  case 197: /* attribute: tPUBLIC  */
 #line 736 "tools/widl/parser.y"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_PUBLIC, 0 ); }
+#line 4749 "tools/widl/parser.tab.c"
+    break;
+
+  case 198: /* attribute: tRANGE '(' expr_int_const ',' expr_int_const ')'  */
+#line 738 "tools/widl/parser.y"
                                                 { expr_list_t *list = append_expr( NULL, (yyvsp[-3].expr) );
                                                   list = append_expr( list, (yyvsp[-1].expr) );
                                                   (yyval.attr) = attr_ptr( (yyloc), ATTR_RANGE, list );
                                                 }
-#line 4737 "tools/widl/parser.tab.c"
+#line 4758 "tools/widl/parser.tab.c"
     break;
 
-  case 198: /* attribute: tREADONLY  */
-#line 740 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_READONLY, 0 ); }
-#line 4743 "tools/widl/parser.tab.c"
-    break;
-
-  case 199: /* attribute: tREPRESENTAS '(' type ')'  */
-#line 741 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_REPRESENTAS, (yyvsp[-1].type) ); }
-#line 4749 "tools/widl/parser.tab.c"
-    break;
-
-  case 200: /* attribute: tREQUESTEDIT  */
+  case 199: /* attribute: tREADONLY  */
 #line 742 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_REQUESTEDIT, 0 ); }
-#line 4755 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_READONLY, 0 ); }
+#line 4764 "tools/widl/parser.tab.c"
     break;
 
-  case 201: /* attribute: tRESTRICTED  */
+  case 200: /* attribute: tREPRESENTAS '(' type ')'  */
 #line 743 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_RESTRICTED, 0 ); }
-#line 4761 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_REPRESENTAS, (yyvsp[-1].type) ); }
+#line 4770 "tools/widl/parser.tab.c"
     break;
 
-  case 202: /* attribute: tRETVAL  */
+  case 201: /* attribute: tREQUESTEDIT  */
 #line 744 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_RETVAL, 0 ); }
-#line 4767 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_REQUESTEDIT, 0 ); }
+#line 4776 "tools/widl/parser.tab.c"
     break;
 
-  case 203: /* attribute: tSIZEIS '(' m_exprs ')'  */
+  case 202: /* attribute: tRESTRICTED  */
 #line 745 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_SIZEIS, (yyvsp[-1].expr_list) ); }
-#line 4773 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_RESTRICTED, 0 ); }
+#line 4782 "tools/widl/parser.tab.c"
     break;
 
-  case 204: /* attribute: tSOURCE  */
+  case 203: /* attribute: tRETVAL  */
 #line 746 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_SOURCE, 0 ); }
-#line 4779 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_RETVAL, 0 ); }
+#line 4788 "tools/widl/parser.tab.c"
     break;
 
-  case 205: /* attribute: tSTATIC '(' static_attr ')'  */
+  case 204: /* attribute: tSIZEIS '(' m_exprs ')'  */
 #line 747 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_STATIC, (yyvsp[-1].expr) ); }
-#line 4785 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_SIZEIS, (yyvsp[-1].expr_list) ); }
+#line 4794 "tools/widl/parser.tab.c"
     break;
 
-  case 206: /* attribute: tSTRICTCONTEXTHANDLE  */
+  case 205: /* attribute: tSOURCE  */
 #line 748 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_STRICTCONTEXTHANDLE, 0 ); }
-#line 4791 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_SOURCE, 0 ); }
+#line 4800 "tools/widl/parser.tab.c"
     break;
 
-  case 207: /* attribute: tSTRING  */
+  case 206: /* attribute: tSTATIC '(' static_attr ')'  */
 #line 749 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_STRING, 0 ); }
-#line 4797 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_STATIC, (yyvsp[-1].expr) ); }
+#line 4806 "tools/widl/parser.tab.c"
     break;
 
-  case 208: /* attribute: tSWITCHIS '(' expr ')'  */
+  case 207: /* attribute: tSTRICTCONTEXTHANDLE  */
 #line 750 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_SWITCHIS, (yyvsp[-1].expr) ); }
-#line 4803 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_STRICTCONTEXTHANDLE, 0 ); }
+#line 4812 "tools/widl/parser.tab.c"
     break;
 
-  case 209: /* attribute: tSWITCHTYPE '(' type ')'  */
+  case 208: /* attribute: tSTRING  */
 #line 751 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_SWITCHTYPE, (yyvsp[-1].type) ); }
-#line 4809 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_STRING, 0 ); }
+#line 4818 "tools/widl/parser.tab.c"
     break;
 
-  case 210: /* attribute: tTRANSMITAS '(' type ')'  */
+  case 209: /* attribute: tSWITCHIS '(' expr ')'  */
 #line 752 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_TRANSMITAS, (yyvsp[-1].type) ); }
-#line 4815 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_SWITCHIS, (yyvsp[-1].expr) ); }
+#line 4824 "tools/widl/parser.tab.c"
     break;
 
-  case 211: /* attribute: tTHREADING '(' threading_type ')'  */
+  case 210: /* attribute: tSWITCHTYPE '(' type ')'  */
 #line 753 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_THREADING, (yyvsp[-1].num) ); }
-#line 4821 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_SWITCHTYPE, (yyvsp[-1].type) ); }
+#line 4830 "tools/widl/parser.tab.c"
     break;
 
-  case 212: /* attribute: tUIDEFAULT  */
+  case 211: /* attribute: tTRANSMITAS '(' type ')'  */
 #line 754 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_UIDEFAULT, 0 ); }
-#line 4827 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_TRANSMITAS, (yyvsp[-1].type) ); }
+#line 4836 "tools/widl/parser.tab.c"
     break;
 
-  case 213: /* attribute: tUSESGETLASTERROR  */
+  case 212: /* attribute: tTHREADING '(' threading_type ')'  */
 #line 755 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_USESGETLASTERROR, 0 ); }
-#line 4833 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_THREADING, (yyvsp[-1].num) ); }
+#line 4842 "tools/widl/parser.tab.c"
     break;
 
-  case 214: /* attribute: tUSERMARSHAL '(' type ')'  */
+  case 213: /* attribute: tUIDEFAULT  */
 #line 756 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_USERMARSHAL, (yyvsp[-1].type) ); }
-#line 4839 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_UIDEFAULT, 0 ); }
+#line 4848 "tools/widl/parser.tab.c"
     break;
 
-  case 215: /* attribute: tUUID '(' aUUID ')'  */
+  case 214: /* attribute: tUSESGETLASTERROR  */
 #line 757 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_UUID, (yyvsp[-1].uuid) ); }
-#line 4845 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_USESGETLASTERROR, 0 ); }
+#line 4854 "tools/widl/parser.tab.c"
     break;
 
-  case 216: /* attribute: tASYNCUUID '(' aUUID ')'  */
+  case 215: /* attribute: tUSERMARSHAL '(' type ')'  */
 #line 758 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_ASYNCUUID, (yyvsp[-1].uuid) ); }
-#line 4851 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_USERMARSHAL, (yyvsp[-1].type) ); }
+#line 4860 "tools/widl/parser.tab.c"
     break;
 
-  case 217: /* attribute: tV1ENUM  */
+  case 216: /* attribute: tUUID '(' aUUID ')'  */
 #line 759 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_V1ENUM, 0 ); }
-#line 4857 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_UUID, (yyvsp[-1].uuid) ); }
+#line 4866 "tools/widl/parser.tab.c"
     break;
 
-  case 218: /* attribute: tVARARG  */
+  case 217: /* attribute: tASYNCUUID '(' aUUID ')'  */
 #line 760 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_VARARG, 0 ); }
-#line 4863 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_ASYNCUUID, (yyvsp[-1].uuid) ); }
+#line 4872 "tools/widl/parser.tab.c"
     break;
 
-  case 219: /* attribute: tVERSION '(' version ')'  */
+  case 218: /* attribute: tV1ENUM  */
 #line 761 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_VERSION, (yyvsp[-1].num) ); }
-#line 4869 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_V1ENUM, 0 ); }
+#line 4878 "tools/widl/parser.tab.c"
     break;
 
-  case 220: /* attribute: tVIPROGID '(' aSTRING ')'  */
+  case 219: /* attribute: tVARARG  */
 #line 762 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_VIPROGID, (yyvsp[-1].str) ); }
-#line 4875 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_VARARG, 0 ); }
+#line 4884 "tools/widl/parser.tab.c"
     break;
 
-  case 221: /* attribute: tWIREMARSHAL '(' type ')'  */
+  case 220: /* attribute: tVERSION '(' version ')'  */
 #line 763 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_WIREMARSHAL, (yyvsp[-1].type) ); }
-#line 4881 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_VERSION, (yyvsp[-1].num) ); }
+#line 4890 "tools/widl/parser.tab.c"
     break;
 
-  case 222: /* attribute: pointer_type  */
+  case 221: /* attribute: tVIPROGID '(' aSTRING ')'  */
 #line 764 "tools/widl/parser.y"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_VIPROGID, (yyvsp[-1].str) ); }
+#line 4896 "tools/widl/parser.tab.c"
+    break;
+
+  case 222: /* attribute: tWIREMARSHAL '(' type ')'  */
+#line 765 "tools/widl/parser.y"
+                                                { (yyval.attr) = attr_ptr( (yyloc), ATTR_WIREMARSHAL, (yyvsp[-1].type) ); }
+#line 4902 "tools/widl/parser.tab.c"
+    break;
+
+  case 223: /* attribute: pointer_type  */
+#line 766 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_POINTERTYPE, (yyvsp[0].num) ); }
-#line 4887 "tools/widl/parser.tab.c"
+#line 4908 "tools/widl/parser.tab.c"
     break;
 
-  case 227: /* cases: %empty  */
-#line 774 "tools/widl/parser.y"
+  case 228: /* cases: %empty  */
+#line 776 "tools/widl/parser.y"
                                                 { (yyval.var_list) = NULL; }
-#line 4893 "tools/widl/parser.tab.c"
+#line 4914 "tools/widl/parser.tab.c"
     break;
 
-  case 228: /* cases: cases case  */
-#line 775 "tools/widl/parser.y"
+  case 229: /* cases: cases case  */
+#line 777 "tools/widl/parser.y"
                                                 { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
-#line 4899 "tools/widl/parser.tab.c"
+#line 4920 "tools/widl/parser.tab.c"
     break;
 
-  case 229: /* case: tCASE expr_int_const ':' union_field  */
-#line 778 "tools/widl/parser.y"
+  case 230: /* case: tCASE expr_int_const ':' union_field  */
+#line 780 "tools/widl/parser.y"
                                                 { attr_t *a = attr_ptr( (yyloc), ATTR_CASE, append_expr( NULL, (yyvsp[-2].expr) ) );
                                                   (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var( NULL );
                                                   (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
                                                 }
-#line 4908 "tools/widl/parser.tab.c"
+#line 4929 "tools/widl/parser.tab.c"
     break;
 
-  case 230: /* case: tDEFAULT ':' union_field  */
-#line 782 "tools/widl/parser.y"
+  case 231: /* case: tDEFAULT ':' union_field  */
+#line 784 "tools/widl/parser.y"
                                                 { attr_t *a = attr_int( (yyloc), ATTR_DEFAULT, 0 );
                                                   (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var( NULL );
                                                   (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
                                                 }
-#line 4917 "tools/widl/parser.tab.c"
+#line 4938 "tools/widl/parser.tab.c"
     break;
 
-  case 231: /* enums: %empty  */
-#line 789 "tools/widl/parser.y"
+  case 232: /* enums: %empty  */
+#line 791 "tools/widl/parser.y"
                                                 { (yyval.var_list) = NULL; }
-#line 4923 "tools/widl/parser.tab.c"
+#line 4944 "tools/widl/parser.tab.c"
     break;
 
-  case 232: /* enums: enum_list ','  */
-#line 790 "tools/widl/parser.y"
+  case 233: /* enums: enum_list ','  */
+#line 792 "tools/widl/parser.y"
                                                 { (yyval.var_list) = (yyvsp[-1].var_list); }
-#line 4929 "tools/widl/parser.tab.c"
+#line 4950 "tools/widl/parser.tab.c"
     break;
 
-  case 234: /* enum_list: enum  */
-#line 794 "tools/widl/parser.y"
+  case 235: /* enum_list: enum  */
+#line 796 "tools/widl/parser.y"
                                                 { if (!(yyvsp[0].var)->eval)
 						    (yyvsp[0].var)->eval = make_exprl(EXPR_NUM, 0 /* default for first enum entry */);
                                                   (yyval.var_list) = append_var( NULL, (yyvsp[0].var) );
 						}
-#line 4938 "tools/widl/parser.tab.c"
+#line 4959 "tools/widl/parser.tab.c"
     break;
 
-  case 235: /* enum_list: enum_list ',' enum  */
-#line 798 "tools/widl/parser.y"
+  case 236: /* enum_list: enum_list ',' enum  */
+#line 800 "tools/widl/parser.y"
                                                 { if (!(yyvsp[0].var)->eval)
                                                   {
                                                     var_t *last = LIST_ENTRY( list_tail((yyval.var_list)), var_t, entry );
@@ -4949,901 +4970,901 @@
                                                   }
                                                   (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) );
 						}
-#line 4953 "tools/widl/parser.tab.c"
+#line 4974 "tools/widl/parser.tab.c"
     break;
 
-  case 236: /* enum_member: m_attributes ident  */
-#line 810 "tools/widl/parser.y"
+  case 237: /* enum_member: m_attributes ident  */
+#line 812 "tools/widl/parser.y"
                                                 { (yyval.var) = (yyvsp[0].var);
 						  (yyval.var)->attrs = check_enum_member_attrs((yyvsp[-1].attr_list));
 						}
-#line 4961 "tools/widl/parser.tab.c"
+#line 4982 "tools/widl/parser.tab.c"
     break;
 
-  case 237: /* enum: enum_member '=' expr_int_const  */
-#line 815 "tools/widl/parser.y"
+  case 238: /* enum: enum_member '=' expr_int_const  */
+#line 817 "tools/widl/parser.y"
                                                 { (yyval.var) = reg_const((yyvsp[-2].var));
 						  (yyval.var)->eval = (yyvsp[0].expr);
                                                   (yyval.var)->declspec.type = type_new_int(TYPE_BASIC_INT, 0);
 						}
-#line 4970 "tools/widl/parser.tab.c"
+#line 4991 "tools/widl/parser.tab.c"
     break;
 
-  case 238: /* enum: enum_member  */
-#line 819 "tools/widl/parser.y"
+  case 239: /* enum: enum_member  */
+#line 821 "tools/widl/parser.y"
                                                 { (yyval.var) = reg_const((yyvsp[0].var));
                                                   (yyval.var)->declspec.type = type_new_int(TYPE_BASIC_INT, 0);
 						}
-#line 4978 "tools/widl/parser.tab.c"
+#line 4999 "tools/widl/parser.tab.c"
     break;
 
-  case 239: /* enumdef: tENUM m_typename '{' enums '}'  */
-#line 824 "tools/widl/parser.y"
+  case 240: /* enumdef: tENUM m_typename '{' enums '}'  */
+#line 826 "tools/widl/parser.y"
                                                 { (yyval.type) = type_new_enum((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
-#line 4984 "tools/widl/parser.tab.c"
+#line 5005 "tools/widl/parser.tab.c"
     break;
 
-  case 240: /* m_exprs: m_expr  */
-#line 827 "tools/widl/parser.y"
+  case 241: /* m_exprs: m_expr  */
+#line 829 "tools/widl/parser.y"
                                                 { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
-#line 4990 "tools/widl/parser.tab.c"
+#line 5011 "tools/widl/parser.tab.c"
     break;
 
-  case 241: /* m_exprs: m_exprs ',' m_expr  */
-#line 828 "tools/widl/parser.y"
+  case 242: /* m_exprs: m_exprs ',' m_expr  */
+#line 830 "tools/widl/parser.y"
                                                 { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
-#line 4996 "tools/widl/parser.tab.c"
+#line 5017 "tools/widl/parser.tab.c"
     break;
 
-  case 242: /* m_expr: %empty  */
-#line 832 "tools/widl/parser.y"
+  case 243: /* m_expr: %empty  */
+#line 834 "tools/widl/parser.y"
                                                 { (yyval.expr) = make_expr(EXPR_VOID); }
-#line 5002 "tools/widl/parser.tab.c"
+#line 5023 "tools/widl/parser.tab.c"
     break;
 
-  case 244: /* expr: aNUM  */
-#line 836 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); }
-#line 5008 "tools/widl/parser.tab.c"
-    break;
-
-  case 245: /* expr: aHEXNUM  */
-#line 837 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); }
-#line 5014 "tools/widl/parser.tab.c"
-    break;
-
-  case 246: /* expr: aDOUBLE  */
+  case 245: /* expr: aNUM  */
 #line 838 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); }
-#line 5020 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); }
+#line 5029 "tools/widl/parser.tab.c"
     break;
 
-  case 247: /* expr: tFALSE  */
+  case 246: /* expr: aHEXNUM  */
 #line 839 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); }
-#line 5026 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); }
+#line 5035 "tools/widl/parser.tab.c"
     break;
 
-  case 248: /* expr: tNULL  */
+  case 247: /* expr: aDOUBLE  */
 #line 840 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_exprl(EXPR_NUM, 0); }
-#line 5032 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); }
+#line 5041 "tools/widl/parser.tab.c"
     break;
 
-  case 249: /* expr: tTRUE  */
+  case 248: /* expr: tFALSE  */
 #line 841 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); }
-#line 5038 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); }
+#line 5047 "tools/widl/parser.tab.c"
     break;
 
-  case 250: /* expr: aSTRING  */
+  case 249: /* expr: tNULL  */
 #line 842 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[0].str)); }
-#line 5044 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_exprl(EXPR_NUM, 0); }
+#line 5053 "tools/widl/parser.tab.c"
     break;
 
-  case 251: /* expr: aWSTRING  */
+  case 250: /* expr: tTRUE  */
 #line 843 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[0].str)); }
-#line 5050 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); }
+#line 5059 "tools/widl/parser.tab.c"
     break;
 
-  case 252: /* expr: aSQSTRING  */
+  case 251: /* expr: aSTRING  */
 #line 844 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[0].str)); }
-#line 5056 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[0].str)); }
+#line 5065 "tools/widl/parser.tab.c"
     break;
 
-  case 253: /* expr: aIDENTIFIER  */
+  case 252: /* expr: aWSTRING  */
 #line 845 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); }
-#line 5062 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[0].str)); }
+#line 5071 "tools/widl/parser.tab.c"
     break;
 
-  case 254: /* expr: expr '?' expr ':' expr  */
+  case 253: /* expr: aSQSTRING  */
 #line 846 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5068 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[0].str)); }
+#line 5077 "tools/widl/parser.tab.c"
     break;
 
-  case 255: /* expr: expr LOGICALOR expr  */
+  case 254: /* expr: aIDENTIFIER  */
 #line 847 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5074 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); }
+#line 5083 "tools/widl/parser.tab.c"
     break;
 
-  case 256: /* expr: expr LOGICALAND expr  */
+  case 255: /* expr: expr '?' expr ':' expr  */
 #line 848 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5080 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5089 "tools/widl/parser.tab.c"
     break;
 
-  case 257: /* expr: expr '|' expr  */
+  case 256: /* expr: expr LOGICALOR expr  */
 #line 849 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5086 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5095 "tools/widl/parser.tab.c"
     break;
 
-  case 258: /* expr: expr '^' expr  */
+  case 257: /* expr: expr LOGICALAND expr  */
 #line 850 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5092 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5101 "tools/widl/parser.tab.c"
     break;
 
-  case 259: /* expr: expr '&' expr  */
+  case 258: /* expr: expr '|' expr  */
 #line 851 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5098 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5107 "tools/widl/parser.tab.c"
     break;
 
-  case 260: /* expr: expr EQUALITY expr  */
+  case 259: /* expr: expr '^' expr  */
 #line 852 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5104 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5113 "tools/widl/parser.tab.c"
     break;
 
-  case 261: /* expr: expr INEQUALITY expr  */
+  case 260: /* expr: expr '&' expr  */
 #line 853 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5110 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5119 "tools/widl/parser.tab.c"
     break;
 
-  case 262: /* expr: expr '>' expr  */
+  case 261: /* expr: expr EQUALITY expr  */
 #line 854 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5116 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5125 "tools/widl/parser.tab.c"
     break;
 
-  case 263: /* expr: expr '<' expr  */
+  case 262: /* expr: expr INEQUALITY expr  */
 #line 855 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5122 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5131 "tools/widl/parser.tab.c"
     break;
 
-  case 264: /* expr: expr GREATEREQUAL expr  */
+  case 263: /* expr: expr '>' expr  */
 #line 856 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5128 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5137 "tools/widl/parser.tab.c"
     break;
 
-  case 265: /* expr: expr LESSEQUAL expr  */
+  case 264: /* expr: expr '<' expr  */
 #line 857 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5134 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5143 "tools/widl/parser.tab.c"
     break;
 
-  case 266: /* expr: expr SHL expr  */
+  case 265: /* expr: expr GREATEREQUAL expr  */
 #line 858 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5140 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5149 "tools/widl/parser.tab.c"
     break;
 
-  case 267: /* expr: expr SHR expr  */
+  case 266: /* expr: expr LESSEQUAL expr  */
 #line 859 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5146 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5155 "tools/widl/parser.tab.c"
     break;
 
-  case 268: /* expr: expr '+' expr  */
+  case 267: /* expr: expr SHL expr  */
 #line 860 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5152 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5161 "tools/widl/parser.tab.c"
     break;
 
-  case 269: /* expr: expr '-' expr  */
+  case 268: /* expr: expr SHR expr  */
 #line 861 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5158 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5167 "tools/widl/parser.tab.c"
     break;
 
-  case 270: /* expr: expr '%' expr  */
+  case 269: /* expr: expr '+' expr  */
 #line 862 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5164 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5173 "tools/widl/parser.tab.c"
     break;
 
-  case 271: /* expr: expr '*' expr  */
+  case 270: /* expr: expr '-' expr  */
 #line 863 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5170 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5179 "tools/widl/parser.tab.c"
     break;
 
-  case 272: /* expr: expr '/' expr  */
+  case 271: /* expr: expr '%' expr  */
 #line 864 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 5176 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5185 "tools/widl/parser.tab.c"
     break;
 
-  case 273: /* expr: '!' expr  */
+  case 272: /* expr: expr '*' expr  */
 #line 865 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[0].expr)); }
-#line 5182 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5191 "tools/widl/parser.tab.c"
     break;
 
-  case 274: /* expr: '~' expr  */
+  case 273: /* expr: expr '/' expr  */
 #line 866 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); }
-#line 5188 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 5197 "tools/widl/parser.tab.c"
     break;
 
-  case 275: /* expr: '+' expr  */
+  case 274: /* expr: '!' expr  */
 #line 867 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[0].expr)); }
-#line 5194 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[0].expr)); }
+#line 5203 "tools/widl/parser.tab.c"
     break;
 
-  case 276: /* expr: '-' expr  */
+  case 275: /* expr: '~' expr  */
 #line 868 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); }
-#line 5200 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); }
+#line 5209 "tools/widl/parser.tab.c"
     break;
 
-  case 277: /* expr: '&' expr  */
+  case 276: /* expr: '+' expr  */
 #line 869 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); }
-#line 5206 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[0].expr)); }
+#line 5215 "tools/widl/parser.tab.c"
     break;
 
-  case 278: /* expr: '*' expr  */
+  case 277: /* expr: '-' expr  */
 #line 870 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); }
-#line 5212 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); }
+#line 5221 "tools/widl/parser.tab.c"
     break;
 
-  case 279: /* expr: expr MEMBERPTR aIDENTIFIER  */
+  case 278: /* expr: '&' expr  */
 #line 871 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[-2].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
-#line 5218 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); }
+#line 5227 "tools/widl/parser.tab.c"
     break;
 
-  case 280: /* expr: expr '.' aIDENTIFIER  */
+  case 279: /* expr: '*' expr  */
 #line 872 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[-2].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
-#line 5224 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); }
+#line 5233 "tools/widl/parser.tab.c"
     break;
 
-  case 281: /* expr: '(' unqualified_decl_spec m_abstract_declarator ')' expr  */
+  case 280: /* expr: expr MEMBERPTR aIDENTIFIER  */
+#line 873 "tools/widl/parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[-2].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
+#line 5239 "tools/widl/parser.tab.c"
+    break;
+
+  case 281: /* expr: expr '.' aIDENTIFIER  */
 #line 874 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[-3].declspec), (yyvsp[-2].declarator), 0), (yyvsp[0].expr)); free((yyvsp[-3].declspec)); free((yyvsp[-2].declarator)); }
-#line 5230 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[-2].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
+#line 5245 "tools/widl/parser.tab.c"
     break;
 
-  case 282: /* expr: tSIZEOF '(' unqualified_decl_spec m_abstract_declarator ')'  */
+  case 282: /* expr: '(' unqualified_decl_spec m_abstract_declarator ')' expr  */
 #line 876 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[-2].declspec), (yyvsp[-1].declarator), 0), NULL); free((yyvsp[-2].declspec)); free((yyvsp[-1].declarator)); }
-#line 5236 "tools/widl/parser.tab.c"
+                                                { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[-3].declspec), (yyvsp[-2].declarator), 0), (yyvsp[0].expr)); free((yyvsp[-3].declspec)); free((yyvsp[-2].declarator)); }
+#line 5251 "tools/widl/parser.tab.c"
     break;
 
-  case 283: /* expr: expr '[' expr ']'  */
-#line 877 "tools/widl/parser.y"
-                                                { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[-3].expr), (yyvsp[-1].expr)); }
-#line 5242 "tools/widl/parser.tab.c"
-    break;
-
-  case 284: /* expr: '(' expr ')'  */
+  case 283: /* expr: tSIZEOF '(' unqualified_decl_spec m_abstract_declarator ')'  */
 #line 878 "tools/widl/parser.y"
+                                                { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[-2].declspec), (yyvsp[-1].declarator), 0), NULL); free((yyvsp[-2].declspec)); free((yyvsp[-1].declarator)); }
+#line 5257 "tools/widl/parser.tab.c"
+    break;
+
+  case 284: /* expr: expr '[' expr ']'  */
+#line 879 "tools/widl/parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[-3].expr), (yyvsp[-1].expr)); }
+#line 5263 "tools/widl/parser.tab.c"
+    break;
+
+  case 285: /* expr: '(' expr ')'  */
+#line 880 "tools/widl/parser.y"
                                                 { (yyval.expr) = (yyvsp[-1].expr); }
-#line 5248 "tools/widl/parser.tab.c"
+#line 5269 "tools/widl/parser.tab.c"
     break;
 
-  case 285: /* expr_list_int_const: expr_int_const  */
-#line 881 "tools/widl/parser.y"
+  case 286: /* expr_list_int_const: expr_int_const  */
+#line 883 "tools/widl/parser.y"
                                                 { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
-#line 5254 "tools/widl/parser.tab.c"
+#line 5275 "tools/widl/parser.tab.c"
     break;
 
-  case 286: /* expr_list_int_const: expr_list_int_const ',' expr_int_const  */
-#line 882 "tools/widl/parser.y"
+  case 287: /* expr_list_int_const: expr_list_int_const ',' expr_int_const  */
+#line 884 "tools/widl/parser.y"
                                                         { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
-#line 5260 "tools/widl/parser.tab.c"
+#line 5281 "tools/widl/parser.tab.c"
     break;
 
-  case 287: /* expr_int_const: expr  */
-#line 885 "tools/widl/parser.y"
+  case 288: /* expr_int_const: expr  */
+#line 887 "tools/widl/parser.y"
                                                 { (yyval.expr) = (yyvsp[0].expr);
 						  if (!(yyval.expr)->is_const)
 						      error_loc("expression is not an integer constant\n");
 						}
-#line 5269 "tools/widl/parser.tab.c"
+#line 5290 "tools/widl/parser.tab.c"
     break;
 
-  case 288: /* expr_const: expr  */
-#line 891 "tools/widl/parser.y"
+  case 289: /* expr_const: expr  */
+#line 893 "tools/widl/parser.y"
                                                 { (yyval.expr) = (yyvsp[0].expr);
 						  if (!(yyval.expr)->is_const && (yyval.expr)->type != EXPR_STRLIT && (yyval.expr)->type != EXPR_WSTRLIT)
 						      error_loc("expression is not constant\n");
 						}
-#line 5278 "tools/widl/parser.tab.c"
+#line 5299 "tools/widl/parser.tab.c"
     break;
 
-  case 289: /* fields: %empty  */
-#line 898 "tools/widl/parser.y"
+  case 290: /* fields: %empty  */
+#line 900 "tools/widl/parser.y"
                                                 { (yyval.var_list) = NULL; }
-#line 5284 "tools/widl/parser.tab.c"
+#line 5305 "tools/widl/parser.tab.c"
     break;
 
-  case 290: /* fields: fields field  */
-#line 899 "tools/widl/parser.y"
+  case 291: /* fields: fields field  */
+#line 901 "tools/widl/parser.y"
                                                 { (yyval.var_list) = append_var_list((yyvsp[-1].var_list), (yyvsp[0].var_list)); }
-#line 5290 "tools/widl/parser.tab.c"
+#line 5311 "tools/widl/parser.tab.c"
     break;
 
-  case 291: /* field: m_attributes decl_spec struct_declarator_list ';'  */
-#line 903 "tools/widl/parser.y"
+  case 292: /* field: m_attributes decl_spec struct_declarator_list ';'  */
+#line 905 "tools/widl/parser.y"
                                                 { const char *first = LIST_ENTRY(list_head((yyvsp[-1].declarator_list)), declarator_t, entry)->var->name;
 						  check_field_attrs(first, (yyvsp[-3].attr_list));
 						  (yyval.var_list) = set_var_types((yyvsp[-3].attr_list), (yyvsp[-2].declspec), (yyvsp[-1].declarator_list));
 						}
-#line 5299 "tools/widl/parser.tab.c"
+#line 5320 "tools/widl/parser.tab.c"
     break;
 
-  case 292: /* field: m_attributes uniondef ';'  */
-#line 907 "tools/widl/parser.y"
+  case 293: /* field: m_attributes uniondef ';'  */
+#line 909 "tools/widl/parser.y"
                                                 { var_t *v = make_var(NULL);
 						  v->declspec.type = (yyvsp[-1].type); v->attrs = (yyvsp[-2].attr_list);
 						  (yyval.var_list) = append_var(NULL, v);
 						}
-#line 5308 "tools/widl/parser.tab.c"
+#line 5329 "tools/widl/parser.tab.c"
     break;
 
-  case 293: /* ne_union_field: s_field ';'  */
-#line 914 "tools/widl/parser.y"
+  case 294: /* ne_union_field: s_field ';'  */
+#line 916 "tools/widl/parser.y"
                                                 { (yyval.var) = (yyvsp[-1].var); }
-#line 5314 "tools/widl/parser.tab.c"
+#line 5335 "tools/widl/parser.tab.c"
     break;
 
-  case 294: /* ne_union_field: attributes ';'  */
-#line 915 "tools/widl/parser.y"
+  case 295: /* ne_union_field: attributes ';'  */
+#line 917 "tools/widl/parser.y"
                                                 { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[-1].attr_list); }
-#line 5320 "tools/widl/parser.tab.c"
+#line 5341 "tools/widl/parser.tab.c"
     break;
 
-  case 295: /* ne_union_fields: %empty  */
-#line 919 "tools/widl/parser.y"
+  case 296: /* ne_union_fields: %empty  */
+#line 921 "tools/widl/parser.y"
                                                 { (yyval.var_list) = NULL; }
-#line 5326 "tools/widl/parser.tab.c"
+#line 5347 "tools/widl/parser.tab.c"
     break;
 
-  case 296: /* ne_union_fields: ne_union_fields ne_union_field  */
-#line 920 "tools/widl/parser.y"
+  case 297: /* ne_union_fields: ne_union_fields ne_union_field  */
+#line 922 "tools/widl/parser.y"
                                                 { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
-#line 5332 "tools/widl/parser.tab.c"
+#line 5353 "tools/widl/parser.tab.c"
     break;
 
-  case 297: /* union_field: s_field ';'  */
-#line 924 "tools/widl/parser.y"
+  case 298: /* union_field: s_field ';'  */
+#line 926 "tools/widl/parser.y"
                                                 { (yyval.var) = (yyvsp[-1].var); }
-#line 5338 "tools/widl/parser.tab.c"
+#line 5359 "tools/widl/parser.tab.c"
     break;
 
-  case 298: /* union_field: ';'  */
-#line 925 "tools/widl/parser.y"
+  case 299: /* union_field: ';'  */
+#line 927 "tools/widl/parser.y"
                                                 { (yyval.var) = NULL; }
-#line 5344 "tools/widl/parser.tab.c"
+#line 5365 "tools/widl/parser.tab.c"
     break;
 
-  case 299: /* s_field: m_attributes decl_spec declarator  */
-#line 928 "tools/widl/parser.y"
+  case 300: /* s_field: m_attributes decl_spec declarator  */
+#line 930 "tools/widl/parser.y"
                                                 { (yyval.var) = declare_var(check_field_attrs((yyvsp[0].declarator)->var->name, (yyvsp[-2].attr_list)),
 						                (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
 						  free((yyvsp[0].declarator));
 						}
-#line 5353 "tools/widl/parser.tab.c"
+#line 5374 "tools/widl/parser.tab.c"
     break;
 
-  case 300: /* s_field: m_attributes structdef  */
-#line 932 "tools/widl/parser.y"
+  case 301: /* s_field: m_attributes structdef  */
+#line 934 "tools/widl/parser.y"
                                                 { var_t *v = make_var(NULL);
 						  v->declspec.type = (yyvsp[0].type); v->attrs = (yyvsp[-1].attr_list);
 						  (yyval.var) = v;
 						}
-#line 5362 "tools/widl/parser.tab.c"
+#line 5383 "tools/widl/parser.tab.c"
     break;
 
-  case 301: /* funcdef: declaration  */
-#line 938 "tools/widl/parser.y"
+  case 302: /* funcdef: declaration  */
+#line 940 "tools/widl/parser.y"
                                                 { (yyval.var) = (yyvsp[0].var);
 						  if (type_get_type((yyval.var)->declspec.type) != TYPE_FUNCTION)
 						    error_loc("only methods may be declared inside the methods section of a dispinterface\n");
 						  check_function_attrs((yyval.var)->name, (yyval.var)->attrs);
 						}
-#line 5372 "tools/widl/parser.tab.c"
+#line 5393 "tools/widl/parser.tab.c"
     break;
 
-  case 302: /* declaration: attributes decl_spec init_declarator  */
-#line 947 "tools/widl/parser.y"
+  case 303: /* declaration: attributes decl_spec init_declarator  */
+#line 949 "tools/widl/parser.y"
                                                 { (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
 						  free((yyvsp[0].declarator));
 						}
-#line 5380 "tools/widl/parser.tab.c"
+#line 5401 "tools/widl/parser.tab.c"
     break;
 
-  case 303: /* declaration: decl_spec init_declarator  */
-#line 950 "tools/widl/parser.y"
+  case 304: /* declaration: decl_spec init_declarator  */
+#line 952 "tools/widl/parser.y"
                                                 { (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
 						  free((yyvsp[0].declarator));
 						}
-#line 5388 "tools/widl/parser.tab.c"
+#line 5409 "tools/widl/parser.tab.c"
     break;
 
-  case 304: /* m_ident: %empty  */
-#line 956 "tools/widl/parser.y"
+  case 305: /* m_ident: %empty  */
+#line 958 "tools/widl/parser.y"
                                                 { (yyval.var) = NULL; }
-#line 5394 "tools/widl/parser.tab.c"
+#line 5415 "tools/widl/parser.tab.c"
     break;
 
-  case 306: /* m_typename: %empty  */
-#line 961 "tools/widl/parser.y"
+  case 307: /* m_typename: %empty  */
+#line 963 "tools/widl/parser.y"
                                                 { (yyval.str) = NULL; }
-#line 5400 "tools/widl/parser.tab.c"
+#line 5421 "tools/widl/parser.tab.c"
     break;
 
-  case 310: /* ident: typename  */
-#line 969 "tools/widl/parser.y"
+  case 311: /* ident: typename  */
+#line 971 "tools/widl/parser.y"
                                                 { (yyval.var) = make_var((yyvsp[0].str)); }
-#line 5406 "tools/widl/parser.tab.c"
+#line 5427 "tools/widl/parser.tab.c"
     break;
 
-  case 311: /* base_type: tBYTE  */
-#line 972 "tools/widl/parser.y"
+  case 312: /* base_type: tBYTE  */
+#line 974 "tools/widl/parser.y"
                                                 { (yyval.type) = find_type_or_error( NULL, "byte" ); }
-#line 5412 "tools/widl/parser.tab.c"
+#line 5433 "tools/widl/parser.tab.c"
     break;
 
-  case 312: /* base_type: tWCHAR  */
-#line 973 "tools/widl/parser.y"
-                                                { (yyval.type) = find_type_or_error( NULL, "wchar_t" ); }
-#line 5418 "tools/widl/parser.tab.c"
-    break;
-
-  case 314: /* base_type: tSIGNED int_std  */
+  case 313: /* base_type: tWCHAR  */
 #line 975 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), -1); }
-#line 5424 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = find_type_or_error( NULL, "wchar_t" ); }
+#line 5439 "tools/widl/parser.tab.c"
     break;
 
-  case 315: /* base_type: tUNSIGNED int_std  */
-#line 976 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), 1); }
-#line 5430 "tools/widl/parser.tab.c"
-    break;
-
-  case 316: /* base_type: tUNSIGNED  */
+  case 315: /* base_type: tSIGNED int_std  */
 #line 977 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); }
-#line 5436 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), -1); }
+#line 5445 "tools/widl/parser.tab.c"
     break;
 
-  case 317: /* base_type: tFLOAT  */
+  case 316: /* base_type: tUNSIGNED int_std  */
 #line 978 "tools/widl/parser.y"
-                                                { (yyval.type) = find_type_or_error( NULL, "float" ); }
-#line 5442 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), 1); }
+#line 5451 "tools/widl/parser.tab.c"
     break;
 
-  case 318: /* base_type: tDOUBLE  */
+  case 317: /* base_type: tUNSIGNED  */
 #line 979 "tools/widl/parser.y"
-                                                { (yyval.type) = find_type_or_error( NULL, "double" ); }
-#line 5448 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); }
+#line 5457 "tools/widl/parser.tab.c"
     break;
 
-  case 319: /* base_type: tBOOLEAN  */
+  case 318: /* base_type: tFLOAT  */
 #line 980 "tools/widl/parser.y"
-                                                { (yyval.type) = find_type_or_error( NULL, "boolean" ); }
-#line 5454 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = find_type_or_error( NULL, "float" ); }
+#line 5463 "tools/widl/parser.tab.c"
     break;
 
-  case 320: /* base_type: tERRORSTATUST  */
+  case 319: /* base_type: tDOUBLE  */
 #line 981 "tools/widl/parser.y"
-                                                { (yyval.type) = find_type_or_error( NULL, "error_status_t" ); }
-#line 5460 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = find_type_or_error( NULL, "double" ); }
+#line 5469 "tools/widl/parser.tab.c"
     break;
 
-  case 321: /* base_type: tHANDLET  */
+  case 320: /* base_type: tBOOLEAN  */
 #line 982 "tools/widl/parser.y"
+                                                { (yyval.type) = find_type_or_error( NULL, "boolean" ); }
+#line 5475 "tools/widl/parser.tab.c"
+    break;
+
+  case 321: /* base_type: tERRORSTATUST  */
+#line 983 "tools/widl/parser.y"
+                                                { (yyval.type) = find_type_or_error( NULL, "error_status_t" ); }
+#line 5481 "tools/widl/parser.tab.c"
+    break;
+
+  case 322: /* base_type: tHANDLET  */
+#line 984 "tools/widl/parser.y"
                                                 { (yyval.type) = find_type_or_error( NULL, "handle_t" ); }
-#line 5466 "tools/widl/parser.tab.c"
+#line 5487 "tools/widl/parser.tab.c"
     break;
 
-  case 324: /* int_std: tINT  */
-#line 990 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); }
-#line 5472 "tools/widl/parser.tab.c"
-    break;
-
-  case 325: /* int_std: tSHORT m_int  */
-#line 991 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); }
-#line 5478 "tools/widl/parser.tab.c"
-    break;
-
-  case 326: /* int_std: tSMALL  */
+  case 325: /* int_std: tINT  */
 #line 992 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); }
-#line 5484 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); }
+#line 5493 "tools/widl/parser.tab.c"
     break;
 
-  case 327: /* int_std: tLONG m_int  */
+  case 326: /* int_std: tSHORT m_int  */
 #line 993 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_int(TYPE_BASIC_LONG, 0); }
-#line 5490 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); }
+#line 5499 "tools/widl/parser.tab.c"
     break;
 
-  case 328: /* int_std: tHYPER m_int  */
+  case 327: /* int_std: tSMALL  */
 #line 994 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); }
-#line 5496 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); }
+#line 5505 "tools/widl/parser.tab.c"
     break;
 
-  case 329: /* int_std: tINT64  */
+  case 328: /* int_std: tLONG m_int  */
 #line 995 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); }
-#line 5502 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_LONG, 0); }
+#line 5511 "tools/widl/parser.tab.c"
     break;
 
-  case 330: /* int_std: tCHAR  */
+  case 329: /* int_std: tHYPER m_int  */
 #line 996 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); }
-#line 5508 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); }
+#line 5517 "tools/widl/parser.tab.c"
     break;
 
-  case 331: /* int_std: tINT32  */
+  case 330: /* int_std: tINT64  */
 #line 997 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); }
-#line 5514 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); }
+#line 5523 "tools/widl/parser.tab.c"
     break;
 
-  case 332: /* int_std: tINT3264  */
+  case 331: /* int_std: tCHAR  */
 #line 998 "tools/widl/parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); }
+#line 5529 "tools/widl/parser.tab.c"
+    break;
+
+  case 332: /* int_std: tINT32  */
+#line 999 "tools/widl/parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); }
+#line 5535 "tools/widl/parser.tab.c"
+    break;
+
+  case 333: /* int_std: tINT3264  */
+#line 1000 "tools/widl/parser.y"
                                                 { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); }
-#line 5520 "tools/widl/parser.tab.c"
+#line 5541 "tools/widl/parser.tab.c"
     break;
 
-  case 333: /* namespace_pfx: aIDENTIFIER '.'  */
-#line 1002 "tools/widl/parser.y"
+  case 334: /* namespace_pfx: aIDENTIFIER '.'  */
+#line 1004 "tools/widl/parser.y"
                                                 { (yyval.namespace) = find_namespace_or_error(&global_namespace, (yyvsp[-1].str)); }
-#line 5526 "tools/widl/parser.tab.c"
+#line 5547 "tools/widl/parser.tab.c"
     break;
 
-  case 334: /* namespace_pfx: namespace_pfx aIDENTIFIER '.'  */
-#line 1003 "tools/widl/parser.y"
+  case 335: /* namespace_pfx: namespace_pfx aIDENTIFIER '.'  */
+#line 1005 "tools/widl/parser.y"
                                                 { (yyval.namespace) = find_namespace_or_error((yyvsp[-2].namespace), (yyvsp[-1].str)); }
-#line 5532 "tools/widl/parser.tab.c"
+#line 5553 "tools/widl/parser.tab.c"
     break;
 
-  case 335: /* qualified_type: typename  */
-#line 1007 "tools/widl/parser.y"
+  case 336: /* qualified_type: typename  */
+#line 1009 "tools/widl/parser.y"
                                                 { (yyval.type) = find_type_or_error(current_namespace, (yyvsp[0].str)); }
-#line 5538 "tools/widl/parser.tab.c"
+#line 5559 "tools/widl/parser.tab.c"
     break;
 
-  case 336: /* qualified_type: namespace_pfx typename  */
-#line 1008 "tools/widl/parser.y"
+  case 337: /* qualified_type: namespace_pfx typename  */
+#line 1010 "tools/widl/parser.y"
                                                 { (yyval.type) = find_type_or_error((yyvsp[-1].namespace), (yyvsp[0].str)); }
-#line 5544 "tools/widl/parser.tab.c"
+#line 5565 "tools/widl/parser.tab.c"
     break;
 
-  case 337: /* parameterized_type: qualified_type '<' parameterized_type_args '>'  */
-#line 1012 "tools/widl/parser.y"
+  case 338: /* parameterized_type: qualified_type '<' parameterized_type_args '>'  */
+#line 1014 "tools/widl/parser.y"
                                                 { (yyval.type) = find_parameterized_type((yyvsp[-3].type), (yyvsp[-1].typeref_list)); }
-#line 5550 "tools/widl/parser.tab.c"
+#line 5571 "tools/widl/parser.tab.c"
     break;
 
-  case 338: /* parameterized_type_arg: base_type  */
-#line 1016 "tools/widl/parser.y"
-                                                { (yyval.type) = (yyvsp[0].type); }
-#line 5556 "tools/widl/parser.tab.c"
-    break;
-
-  case 339: /* parameterized_type_arg: qualified_type  */
-#line 1017 "tools/widl/parser.y"
-                                                { (yyval.type) = (yyvsp[0].type); }
-#line 5562 "tools/widl/parser.tab.c"
-    break;
-
-  case 340: /* parameterized_type_arg: qualified_type '*'  */
+  case 339: /* parameterized_type_arg: base_type  */
 #line 1018 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_pointer((yyvsp[-1].type)); }
-#line 5568 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 5577 "tools/widl/parser.tab.c"
     break;
 
-  case 341: /* parameterized_type_arg: parameterized_type  */
+  case 340: /* parameterized_type_arg: qualified_type  */
 #line 1019 "tools/widl/parser.y"
                                                 { (yyval.type) = (yyvsp[0].type); }
-#line 5574 "tools/widl/parser.tab.c"
+#line 5583 "tools/widl/parser.tab.c"
     break;
 
-  case 342: /* parameterized_type_arg: parameterized_type '*'  */
+  case 341: /* parameterized_type_arg: qualified_type '*'  */
 #line 1020 "tools/widl/parser.y"
                                                 { (yyval.type) = type_new_pointer((yyvsp[-1].type)); }
-#line 5580 "tools/widl/parser.tab.c"
+#line 5589 "tools/widl/parser.tab.c"
     break;
 
-  case 343: /* parameterized_type_args: parameterized_type_arg  */
-#line 1024 "tools/widl/parser.y"
-                                                { (yyval.typeref_list) = append_typeref(NULL, make_typeref((yyvsp[0].type))); }
-#line 5586 "tools/widl/parser.tab.c"
+  case 342: /* parameterized_type_arg: parameterized_type  */
+#line 1021 "tools/widl/parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 5595 "tools/widl/parser.tab.c"
     break;
 
-  case 344: /* parameterized_type_args: parameterized_type_args ',' parameterized_type_arg  */
+  case 343: /* parameterized_type_arg: parameterized_type '*'  */
+#line 1022 "tools/widl/parser.y"
+                                                { (yyval.type) = type_new_pointer((yyvsp[-1].type)); }
+#line 5601 "tools/widl/parser.tab.c"
+    break;
+
+  case 344: /* parameterized_type_args: parameterized_type_arg  */
 #line 1026 "tools/widl/parser.y"
+                                                { (yyval.typeref_list) = append_typeref(NULL, make_typeref((yyvsp[0].type))); }
+#line 5607 "tools/widl/parser.tab.c"
+    break;
+
+  case 345: /* parameterized_type_args: parameterized_type_args ',' parameterized_type_arg  */
+#line 1028 "tools/widl/parser.y"
                                                 { (yyval.typeref_list) = append_typeref((yyvsp[-2].typeref_list), make_typeref((yyvsp[0].type))); }
-#line 5592 "tools/widl/parser.tab.c"
+#line 5613 "tools/widl/parser.tab.c"
     break;
 
-  case 345: /* coclass: tCOCLASS typename  */
-#line 1029 "tools/widl/parser.y"
+  case 346: /* coclass: tCOCLASS typename  */
+#line 1031 "tools/widl/parser.y"
                                                 { (yyval.type) = type_coclass_declare((yyvsp[0].str)); }
-#line 5598 "tools/widl/parser.tab.c"
+#line 5619 "tools/widl/parser.tab.c"
     break;
 
-  case 346: /* coclassdef: attributes coclass '{' class_interfaces '}' semicolon_opt  */
-#line 1033 "tools/widl/parser.y"
+  case 347: /* coclassdef: attributes coclass '{' class_interfaces '}' semicolon_opt  */
+#line 1035 "tools/widl/parser.y"
                                                 { (yyval.type) = type_coclass_define((yyvsp[-4].type), (yyvsp[-5].attr_list), (yyvsp[-2].typeref_list)); }
-#line 5604 "tools/widl/parser.tab.c"
+#line 5625 "tools/widl/parser.tab.c"
     break;
 
-  case 347: /* runtimeclass: tRUNTIMECLASS typename  */
-#line 1036 "tools/widl/parser.y"
+  case 348: /* runtimeclass: tRUNTIMECLASS typename  */
+#line 1038 "tools/widl/parser.y"
                                                 { (yyval.type) = type_runtimeclass_declare((yyvsp[0].str), current_namespace); }
-#line 5610 "tools/widl/parser.tab.c"
+#line 5631 "tools/widl/parser.tab.c"
     break;
 
-  case 348: /* runtimeclass_def: attributes runtimeclass inherit '{' class_interfaces '}' semicolon_opt  */
-#line 1040 "tools/widl/parser.y"
+  case 349: /* runtimeclass_def: attributes runtimeclass inherit '{' class_interfaces '}' semicolon_opt  */
+#line 1042 "tools/widl/parser.y"
                                                 { if ((yyvsp[-4].type) && type_get_type((yyvsp[-4].type)) != TYPE_RUNTIMECLASS) error_loc("%s is not a runtimeclass\n", (yyvsp[-4].type)->name);
 						  (yyval.type) = type_runtimeclass_define((yyvsp[-5].type), (yyvsp[-6].attr_list), (yyvsp[-2].typeref_list)); }
-#line 5617 "tools/widl/parser.tab.c"
+#line 5638 "tools/widl/parser.tab.c"
     break;
 
-  case 349: /* apicontract: tAPICONTRACT typename  */
-#line 1044 "tools/widl/parser.y"
+  case 350: /* apicontract: tAPICONTRACT typename  */
+#line 1046 "tools/widl/parser.y"
                                                 { (yyval.type) = type_apicontract_declare((yyvsp[0].str), current_namespace); }
-#line 5623 "tools/widl/parser.tab.c"
+#line 5644 "tools/widl/parser.tab.c"
     break;
 
-  case 350: /* apicontract_def: attributes apicontract '{' '}' semicolon_opt  */
-#line 1048 "tools/widl/parser.y"
+  case 351: /* apicontract_def: attributes apicontract '{' '}' semicolon_opt  */
+#line 1050 "tools/widl/parser.y"
                                                 { (yyval.type) = type_apicontract_define((yyvsp[-3].type), (yyvsp[-4].attr_list)); }
-#line 5629 "tools/widl/parser.tab.c"
+#line 5650 "tools/widl/parser.tab.c"
     break;
 
-  case 351: /* namespacedef: tNAMESPACE aIDENTIFIER  */
-#line 1051 "tools/widl/parser.y"
+  case 352: /* namespacedef: tNAMESPACE aIDENTIFIER  */
+#line 1053 "tools/widl/parser.y"
                                                 { (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); }
-#line 5635 "tools/widl/parser.tab.c"
+#line 5656 "tools/widl/parser.tab.c"
     break;
 
-  case 352: /* namespacedef: namespacedef '.' aIDENTIFIER  */
-#line 1052 "tools/widl/parser.y"
+  case 353: /* namespacedef: namespacedef '.' aIDENTIFIER  */
+#line 1054 "tools/widl/parser.y"
                                                 { (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); }
-#line 5641 "tools/widl/parser.tab.c"
+#line 5662 "tools/widl/parser.tab.c"
     break;
 
-  case 353: /* class_interfaces: %empty  */
-#line 1056 "tools/widl/parser.y"
+  case 354: /* class_interfaces: %empty  */
+#line 1058 "tools/widl/parser.y"
                                                 { (yyval.typeref_list) = NULL; }
-#line 5647 "tools/widl/parser.tab.c"
+#line 5668 "tools/widl/parser.tab.c"
     break;
 
-  case 354: /* class_interfaces: class_interfaces class_interface  */
-#line 1057 "tools/widl/parser.y"
+  case 355: /* class_interfaces: class_interfaces class_interface  */
+#line 1059 "tools/widl/parser.y"
                                                 { (yyval.typeref_list) = append_typeref( (yyvsp[-1].typeref_list), (yyvsp[0].typeref) ); }
-#line 5653 "tools/widl/parser.tab.c"
+#line 5674 "tools/widl/parser.tab.c"
     break;
 
-  case 355: /* class_interface: m_attributes interfaceref ';'  */
-#line 1061 "tools/widl/parser.y"
+  case 356: /* class_interface: m_attributes interfaceref ';'  */
+#line 1063 "tools/widl/parser.y"
                                                 { (yyval.typeref) = make_typeref((yyvsp[-1].type)); (yyval.typeref)->attrs = (yyvsp[-2].attr_list); }
-#line 5659 "tools/widl/parser.tab.c"
+#line 5680 "tools/widl/parser.tab.c"
     break;
 
-  case 356: /* class_interface: m_attributes dispinterfaceref ';'  */
-#line 1062 "tools/widl/parser.y"
+  case 357: /* class_interface: m_attributes dispinterfaceref ';'  */
+#line 1064 "tools/widl/parser.y"
                                                 { (yyval.typeref) = make_typeref((yyvsp[-1].type)); (yyval.typeref)->attrs = (yyvsp[-2].attr_list); }
-#line 5665 "tools/widl/parser.tab.c"
+#line 5686 "tools/widl/parser.tab.c"
     break;
 
-  case 357: /* dispinterface: tDISPINTERFACE typename  */
-#line 1065 "tools/widl/parser.y"
+  case 358: /* dispinterface: tDISPINTERFACE typename  */
+#line 1067 "tools/widl/parser.y"
                                                 { (yyval.type) = type_dispinterface_declare((yyvsp[0].str)); }
-#line 5671 "tools/widl/parser.tab.c"
+#line 5692 "tools/widl/parser.tab.c"
     break;
 
-  case 358: /* dispattributes: attributes  */
-#line 1068 "tools/widl/parser.y"
+  case 359: /* dispattributes: attributes  */
+#line 1070 "tools/widl/parser.y"
                                                 { (yyval.attr_list) = append_attr( (yyvsp[0].attr_list), attr_int( (yyloc), ATTR_DISPINTERFACE, 0 ) ); }
-#line 5677 "tools/widl/parser.tab.c"
+#line 5698 "tools/widl/parser.tab.c"
     break;
 
-  case 359: /* dispint_props: tPROPERTIES ':'  */
-#line 1071 "tools/widl/parser.y"
+  case 360: /* dispint_props: tPROPERTIES ':'  */
+#line 1073 "tools/widl/parser.y"
                                                 { (yyval.var_list) = NULL; }
-#line 5683 "tools/widl/parser.tab.c"
+#line 5704 "tools/widl/parser.tab.c"
     break;
 
-  case 360: /* dispint_props: dispint_props s_field ';'  */
-#line 1072 "tools/widl/parser.y"
+  case 361: /* dispint_props: dispint_props s_field ';'  */
+#line 1074 "tools/widl/parser.y"
                                                 { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
-#line 5689 "tools/widl/parser.tab.c"
+#line 5710 "tools/widl/parser.tab.c"
     break;
 
-  case 361: /* dispint_meths: tMETHODS ':'  */
-#line 1075 "tools/widl/parser.y"
+  case 362: /* dispint_meths: tMETHODS ':'  */
+#line 1077 "tools/widl/parser.y"
                                                 { (yyval.var_list) = NULL; }
-#line 5695 "tools/widl/parser.tab.c"
+#line 5716 "tools/widl/parser.tab.c"
     break;
 
-  case 362: /* dispint_meths: dispint_meths funcdef ';'  */
-#line 1076 "tools/widl/parser.y"
+  case 363: /* dispint_meths: dispint_meths funcdef ';'  */
+#line 1078 "tools/widl/parser.y"
                                                 { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
-#line 5701 "tools/widl/parser.tab.c"
+#line 5722 "tools/widl/parser.tab.c"
     break;
 
-  case 363: /* dispinterfacedef: dispattributes dispinterface '{' dispint_props dispint_meths '}'  */
-#line 1081 "tools/widl/parser.y"
-                                                { (yyval.type) = type_dispinterface_define((yyvsp[-4].type), (yyvsp[-5].attr_list), (yyvsp[-2].var_list), (yyvsp[-1].var_list)); }
-#line 5707 "tools/widl/parser.tab.c"
-    break;
-
-  case 364: /* dispinterfacedef: dispattributes dispinterface '{' interface ';' '}'  */
+  case 364: /* dispinterfacedef: dispattributes dispinterface '{' dispint_props dispint_meths '}'  */
 #line 1083 "tools/widl/parser.y"
+                                                { (yyval.type) = type_dispinterface_define((yyvsp[-4].type), (yyvsp[-5].attr_list), (yyvsp[-2].var_list), (yyvsp[-1].var_list)); }
+#line 5728 "tools/widl/parser.tab.c"
+    break;
+
+  case 365: /* dispinterfacedef: dispattributes dispinterface '{' interface ';' '}'  */
+#line 1085 "tools/widl/parser.y"
                                                 { (yyval.type) = type_dispinterface_define_from_iface((yyvsp[-4].type), (yyvsp[-5].attr_list), (yyvsp[-2].type)); }
-#line 5713 "tools/widl/parser.tab.c"
+#line 5734 "tools/widl/parser.tab.c"
     break;
 
-  case 365: /* inherit: %empty  */
-#line 1087 "tools/widl/parser.y"
-                                                { (yyval.type) = NULL; }
-#line 5719 "tools/widl/parser.tab.c"
-    break;
-
-  case 366: /* inherit: ':' qualified_type  */
-#line 1088 "tools/widl/parser.y"
-                                                { (yyval.type) = (yyvsp[0].type); }
-#line 5725 "tools/widl/parser.tab.c"
-    break;
-
-  case 367: /* inherit: ':' parameterized_type  */
+  case 366: /* inherit: %empty  */
 #line 1089 "tools/widl/parser.y"
+                                                { (yyval.type) = NULL; }
+#line 5740 "tools/widl/parser.tab.c"
+    break;
+
+  case 367: /* inherit: ':' qualified_type  */
+#line 1090 "tools/widl/parser.y"
                                                 { (yyval.type) = (yyvsp[0].type); }
-#line 5731 "tools/widl/parser.tab.c"
+#line 5746 "tools/widl/parser.tab.c"
     break;
 
-  case 368: /* type_parameter: typename  */
-#line 1092 "tools/widl/parser.y"
+  case 368: /* inherit: ':' parameterized_type  */
+#line 1091 "tools/widl/parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 5752 "tools/widl/parser.tab.c"
+    break;
+
+  case 369: /* type_parameter: typename  */
+#line 1094 "tools/widl/parser.y"
                                                 { (yyval.type) = get_type(TYPE_PARAMETER, (yyvsp[0].str), parameters_namespace, 0); }
-#line 5737 "tools/widl/parser.tab.c"
+#line 5758 "tools/widl/parser.tab.c"
     break;
 
-  case 369: /* type_parameters: type_parameter  */
-#line 1096 "tools/widl/parser.y"
+  case 370: /* type_parameters: type_parameter  */
+#line 1098 "tools/widl/parser.y"
                                                 { (yyval.typeref_list) = append_typeref(NULL, make_typeref((yyvsp[0].type))); }
-#line 5743 "tools/widl/parser.tab.c"
+#line 5764 "tools/widl/parser.tab.c"
     break;
 
-  case 370: /* type_parameters: type_parameters ',' type_parameter  */
-#line 1097 "tools/widl/parser.y"
+  case 371: /* type_parameters: type_parameters ',' type_parameter  */
+#line 1099 "tools/widl/parser.y"
                                                 { (yyval.typeref_list) = append_typeref((yyvsp[-2].typeref_list), make_typeref((yyvsp[0].type))); }
-#line 5749 "tools/widl/parser.tab.c"
+#line 5770 "tools/widl/parser.tab.c"
     break;
 
-  case 371: /* interface: tINTERFACE typename  */
-#line 1101 "tools/widl/parser.y"
-                                                { (yyval.type) = type_interface_declare((yyvsp[0].str), current_namespace); }
-#line 5755 "tools/widl/parser.tab.c"
-    break;
-
-  case 372: /* $@3: %empty  */
-#line 1102 "tools/widl/parser.y"
-                                  { push_parameters_namespace((yyvsp[-1].str)); }
-#line 5761 "tools/widl/parser.tab.c"
-    break;
-
-  case 373: /* $@4: %empty  */
-#line 1102 "tools/widl/parser.y"
-                                                                                     { pop_parameters_namespace((yyvsp[-3].str)); }
-#line 5767 "tools/widl/parser.tab.c"
-    break;
-
-  case 374: /* interface: tINTERFACE typename '<' $@3 type_parameters $@4 '>'  */
+  case 372: /* interface: tINTERFACE typename  */
 #line 1103 "tools/widl/parser.y"
-                                                { (yyval.type) = type_parameterized_interface_declare((yyvsp[-5].str), current_namespace, (yyvsp[-2].typeref_list)); }
-#line 5773 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_interface_declare((yyvsp[0].str), current_namespace); }
+#line 5776 "tools/widl/parser.tab.c"
     break;
 
-  case 375: /* delegatedef: m_attributes tDELEGATE type ident '(' m_args ')' semicolon_opt  */
-#line 1107 "tools/widl/parser.y"
+  case 373: /* $@3: %empty  */
+#line 1104 "tools/widl/parser.y"
+                                  { push_parameters_namespace((yyvsp[-1].str)); }
+#line 5782 "tools/widl/parser.tab.c"
+    break;
+
+  case 374: /* $@4: %empty  */
+#line 1104 "tools/widl/parser.y"
+                                                                                     { pop_parameters_namespace((yyvsp[-3].str)); }
+#line 5788 "tools/widl/parser.tab.c"
+    break;
+
+  case 375: /* interface: tINTERFACE typename '<' $@3 type_parameters $@4 '>'  */
+#line 1105 "tools/widl/parser.y"
+                                                { (yyval.type) = type_parameterized_interface_declare((yyvsp[-5].str), current_namespace, (yyvsp[-2].typeref_list)); }
+#line 5794 "tools/widl/parser.tab.c"
+    break;
+
+  case 376: /* delegatedef: m_attributes tDELEGATE type ident '(' m_args ')' semicolon_opt  */
+#line 1109 "tools/widl/parser.y"
                                                 { (yyval.type) = type_delegate_declare((yyvsp[-4].var)->name, current_namespace);
 						  (yyval.type) = type_delegate_define((yyval.type), (yyvsp[-7].attr_list), append_statement(NULL, make_statement_delegate((yyvsp[-5].type), (yyvsp[-2].var_list))));
 						}
-#line 5781 "tools/widl/parser.tab.c"
+#line 5802 "tools/widl/parser.tab.c"
     break;
 
-  case 376: /* $@5: %empty  */
-#line 1111 "tools/widl/parser.y"
-              { push_parameters_namespace((yyvsp[-1].var)->name); }
-#line 5787 "tools/widl/parser.tab.c"
-    break;
-
-  case 377: /* $@6: %empty  */
-#line 1112 "tools/widl/parser.y"
-                         { pop_parameters_namespace((yyvsp[-7].var)->name); }
-#line 5793 "tools/widl/parser.tab.c"
-    break;
-
-  case 378: /* delegatedef: m_attributes tDELEGATE type ident '<' $@5 type_parameters '>' '(' m_args ')' $@6 semicolon_opt  */
+  case 377: /* $@5: %empty  */
 #line 1113 "tools/widl/parser.y"
+              { push_parameters_namespace((yyvsp[-1].var)->name); }
+#line 5808 "tools/widl/parser.tab.c"
+    break;
+
+  case 378: /* $@6: %empty  */
+#line 1114 "tools/widl/parser.y"
+                         { pop_parameters_namespace((yyvsp[-7].var)->name); }
+#line 5814 "tools/widl/parser.tab.c"
+    break;
+
+  case 379: /* delegatedef: m_attributes tDELEGATE type ident '<' $@5 type_parameters '>' '(' m_args ')' $@6 semicolon_opt  */
+#line 1115 "tools/widl/parser.y"
                                                 { (yyval.type) = type_parameterized_delegate_declare((yyvsp[-9].var)->name, current_namespace, (yyvsp[-6].typeref_list));
 						  (yyval.type) = type_parameterized_delegate_define((yyval.type), (yyvsp[-12].attr_list), append_statement(NULL, make_statement_delegate((yyvsp[-10].type), (yyvsp[-3].var_list))));
 						}
-#line 5801 "tools/widl/parser.tab.c"
+#line 5822 "tools/widl/parser.tab.c"
     break;
 
-  case 379: /* required_types: qualified_type  */
-#line 1119 "tools/widl/parser.y"
-                                                { (yyval.typeref_list) = append_typeref(NULL, make_typeref((yyvsp[0].type))); }
-#line 5807 "tools/widl/parser.tab.c"
-    break;
-
-  case 380: /* required_types: parameterized_type  */
-#line 1120 "tools/widl/parser.y"
-                                                { (yyval.typeref_list) = append_typeref(NULL, make_typeref((yyvsp[0].type))); }
-#line 5813 "tools/widl/parser.tab.c"
-    break;
-
-  case 381: /* required_types: required_types ',' qualified_type  */
+  case 380: /* required_types: qualified_type  */
 #line 1121 "tools/widl/parser.y"
-                                                { (yyval.typeref_list) = append_typeref((yyvsp[-2].typeref_list), make_typeref((yyvsp[0].type))); }
-#line 5819 "tools/widl/parser.tab.c"
+                                                { (yyval.typeref_list) = append_typeref(NULL, make_typeref((yyvsp[0].type))); }
+#line 5828 "tools/widl/parser.tab.c"
     break;
 
-  case 382: /* required_types: required_types ',' parameterized_type  */
+  case 381: /* required_types: parameterized_type  */
 #line 1122 "tools/widl/parser.y"
+                                                { (yyval.typeref_list) = append_typeref(NULL, make_typeref((yyvsp[0].type))); }
+#line 5834 "tools/widl/parser.tab.c"
+    break;
+
+  case 382: /* required_types: required_types ',' qualified_type  */
+#line 1123 "tools/widl/parser.y"
                                                 { (yyval.typeref_list) = append_typeref((yyvsp[-2].typeref_list), make_typeref((yyvsp[0].type))); }
-#line 5825 "tools/widl/parser.tab.c"
+#line 5840 "tools/widl/parser.tab.c"
     break;
 
-  case 383: /* requires: %empty  */
-#line 1126 "tools/widl/parser.y"
+  case 383: /* required_types: required_types ',' parameterized_type  */
+#line 1124 "tools/widl/parser.y"
+                                                { (yyval.typeref_list) = append_typeref((yyvsp[-2].typeref_list), make_typeref((yyvsp[0].type))); }
+#line 5846 "tools/widl/parser.tab.c"
+    break;
+
+  case 384: /* requires: %empty  */
+#line 1128 "tools/widl/parser.y"
                                                 { (yyval.typeref_list) = NULL; }
-#line 5831 "tools/widl/parser.tab.c"
+#line 5852 "tools/widl/parser.tab.c"
     break;
 
-  case 384: /* requires: tREQUIRES required_types  */
-#line 1127 "tools/widl/parser.y"
+  case 385: /* requires: tREQUIRES required_types  */
+#line 1129 "tools/widl/parser.y"
                                                 { (yyval.typeref_list) = (yyvsp[0].typeref_list); }
-#line 5837 "tools/widl/parser.tab.c"
+#line 5858 "tools/widl/parser.tab.c"
     break;
 
-  case 385: /* $@7: %empty  */
-#line 1130 "tools/widl/parser.y"
-                                                { if ((yyvsp[0].type)->type_type == TYPE_PARAMETERIZED_TYPE) push_parameters_namespace((yyvsp[0].type)->name); }
-#line 5843 "tools/widl/parser.tab.c"
-    break;
-
-  case 386: /* interfacedef: attributes interface $@7 inherit requires '{' int_statements '}' semicolon_opt  */
+  case 386: /* $@7: %empty  */
 #line 1132 "tools/widl/parser.y"
+                                                { if ((yyvsp[0].type)->type_type == TYPE_PARAMETERIZED_TYPE) push_parameters_namespace((yyvsp[0].type)->name); }
+#line 5864 "tools/widl/parser.tab.c"
+    break;
+
+  case 387: /* interfacedef: attributes interface $@7 inherit requires '{' int_statements '}' semicolon_opt  */
+#line 1134 "tools/widl/parser.y"
                                                 { if ((yyvsp[-7].type)->type_type == TYPE_PARAMETERIZED_TYPE)
 						  {
 						      (yyval.type) = type_parameterized_interface_define((yyvsp[-7].type), (yyvsp[-8].attr_list), (yyvsp[-5].type), (yyvsp[-2].stmt_list), (yyvsp[-4].typeref_list));
@@ -5855,643 +5876,643 @@
 						      check_async_uuid((yyval.type));
 						  }
 						}
-#line 5859 "tools/widl/parser.tab.c"
+#line 5880 "tools/widl/parser.tab.c"
     break;
 
-  case 387: /* interfacedef: dispinterfacedef semicolon_opt  */
-#line 1143 "tools/widl/parser.y"
+  case 388: /* interfacedef: dispinterfacedef semicolon_opt  */
+#line 1145 "tools/widl/parser.y"
                                                 { (yyval.type) = (yyvsp[-1].type); }
-#line 5865 "tools/widl/parser.tab.c"
+#line 5886 "tools/widl/parser.tab.c"
     break;
 
-  case 388: /* interfaceref: tINTERFACE typename  */
-#line 1147 "tools/widl/parser.y"
-                                                { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 5871 "tools/widl/parser.tab.c"
-    break;
-
-  case 389: /* interfaceref: tINTERFACE namespace_pfx typename  */
-#line 1148 "tools/widl/parser.y"
-                                                { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), (yyvsp[-1].namespace), 0); }
-#line 5877 "tools/widl/parser.tab.c"
-    break;
-
-  case 390: /* interfaceref: tINTERFACE parameterized_type  */
+  case 389: /* interfaceref: tINTERFACE typename  */
 #line 1149 "tools/widl/parser.y"
-                                                { if (type_get_type(((yyval.type) = (yyvsp[0].type))) != TYPE_INTERFACE) error_loc("%s is not an interface\n", (yyval.type)->name); }
-#line 5883 "tools/widl/parser.tab.c"
-    break;
-
-  case 391: /* dispinterfaceref: tDISPINTERFACE typename  */
-#line 1153 "tools/widl/parser.y"
                                                 { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 5889 "tools/widl/parser.tab.c"
+#line 5892 "tools/widl/parser.tab.c"
     break;
 
-  case 392: /* module: tMODULE typename  */
-#line 1156 "tools/widl/parser.y"
+  case 390: /* interfaceref: tINTERFACE namespace_pfx typename  */
+#line 1150 "tools/widl/parser.y"
+                                                { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), (yyvsp[-1].namespace), 0); }
+#line 5898 "tools/widl/parser.tab.c"
+    break;
+
+  case 391: /* interfaceref: tINTERFACE parameterized_type  */
+#line 1151 "tools/widl/parser.y"
+                                                { if (type_get_type(((yyval.type) = (yyvsp[0].type))) != TYPE_INTERFACE) error_loc("%s is not an interface\n", (yyval.type)->name); }
+#line 5904 "tools/widl/parser.tab.c"
+    break;
+
+  case 392: /* dispinterfaceref: tDISPINTERFACE typename  */
+#line 1155 "tools/widl/parser.y"
+                                                { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
+#line 5910 "tools/widl/parser.tab.c"
+    break;
+
+  case 393: /* module: tMODULE typename  */
+#line 1158 "tools/widl/parser.y"
                                                 { (yyval.type) = type_module_declare((yyvsp[0].str)); }
-#line 5895 "tools/widl/parser.tab.c"
+#line 5916 "tools/widl/parser.tab.c"
     break;
 
-  case 393: /* moduledef: m_attributes module '{' int_statements '}' semicolon_opt  */
-#line 1160 "tools/widl/parser.y"
+  case 394: /* moduledef: m_attributes module '{' int_statements '}' semicolon_opt  */
+#line 1162 "tools/widl/parser.y"
                                                 { (yyval.type) = type_module_define((yyvsp[-4].type), (yyvsp[-5].attr_list), (yyvsp[-2].stmt_list)); }
-#line 5901 "tools/widl/parser.tab.c"
+#line 5922 "tools/widl/parser.tab.c"
     break;
 
-  case 394: /* storage_cls_spec: tEXTERN  */
-#line 1164 "tools/widl/parser.y"
-                                                { (yyval.stgclass) = STG_EXTERN; }
-#line 5907 "tools/widl/parser.tab.c"
-    break;
-
-  case 395: /* storage_cls_spec: tSTATIC  */
-#line 1165 "tools/widl/parser.y"
-                                                { (yyval.stgclass) = STG_STATIC; }
-#line 5913 "tools/widl/parser.tab.c"
-    break;
-
-  case 396: /* storage_cls_spec: tREGISTER  */
+  case 395: /* storage_cls_spec: tEXTERN  */
 #line 1166 "tools/widl/parser.y"
+                                                { (yyval.stgclass) = STG_EXTERN; }
+#line 5928 "tools/widl/parser.tab.c"
+    break;
+
+  case 396: /* storage_cls_spec: tSTATIC  */
+#line 1167 "tools/widl/parser.y"
+                                                { (yyval.stgclass) = STG_STATIC; }
+#line 5934 "tools/widl/parser.tab.c"
+    break;
+
+  case 397: /* storage_cls_spec: tREGISTER  */
+#line 1168 "tools/widl/parser.y"
                                                 { (yyval.stgclass) = STG_REGISTER; }
-#line 5919 "tools/widl/parser.tab.c"
+#line 5940 "tools/widl/parser.tab.c"
     break;
 
-  case 397: /* function_specifier: tINLINE  */
-#line 1170 "tools/widl/parser.y"
+  case 398: /* function_specifier: tINLINE  */
+#line 1172 "tools/widl/parser.y"
                                                 { (yyval.function_specifier) = FUNCTION_SPECIFIER_INLINE; }
-#line 5925 "tools/widl/parser.tab.c"
+#line 5946 "tools/widl/parser.tab.c"
     break;
 
-  case 398: /* type_qualifier: tCONST  */
-#line 1174 "tools/widl/parser.y"
+  case 399: /* type_qualifier: tCONST  */
+#line 1176 "tools/widl/parser.y"
                                                 { (yyval.type_qualifier) = TYPE_QUALIFIER_CONST; }
-#line 5931 "tools/widl/parser.tab.c"
+#line 5952 "tools/widl/parser.tab.c"
     break;
 
-  case 399: /* m_type_qual_list: %empty  */
-#line 1178 "tools/widl/parser.y"
+  case 400: /* m_type_qual_list: %empty  */
+#line 1180 "tools/widl/parser.y"
                                                 { (yyval.type_qualifier) = 0; }
-#line 5937 "tools/widl/parser.tab.c"
+#line 5958 "tools/widl/parser.tab.c"
     break;
 
-  case 400: /* m_type_qual_list: m_type_qual_list type_qualifier  */
-#line 1179 "tools/widl/parser.y"
+  case 401: /* m_type_qual_list: m_type_qual_list type_qualifier  */
+#line 1181 "tools/widl/parser.y"
                                                 { (yyval.type_qualifier) = (yyvsp[-1].type_qualifier) | (yyvsp[0].type_qualifier); }
-#line 5943 "tools/widl/parser.tab.c"
+#line 5964 "tools/widl/parser.tab.c"
     break;
 
-  case 401: /* decl_spec: type m_decl_spec_no_type  */
-#line 1182 "tools/widl/parser.y"
-                                                { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, STG_NONE, 0, 0); }
-#line 5949 "tools/widl/parser.tab.c"
-    break;
-
-  case 402: /* decl_spec: decl_spec_no_type type m_decl_spec_no_type  */
+  case 402: /* decl_spec: type m_decl_spec_no_type  */
 #line 1184 "tools/widl/parser.y"
-                                                { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), STG_NONE, 0, 0); }
-#line 5955 "tools/widl/parser.tab.c"
-    break;
-
-  case 403: /* unqualified_decl_spec: unqualified_type m_decl_spec_no_type  */
-#line 1188 "tools/widl/parser.y"
                                                 { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, STG_NONE, 0, 0); }
-#line 5961 "tools/widl/parser.tab.c"
+#line 5970 "tools/widl/parser.tab.c"
     break;
 
-  case 404: /* unqualified_decl_spec: decl_spec_no_type unqualified_type m_decl_spec_no_type  */
-#line 1190 "tools/widl/parser.y"
+  case 403: /* decl_spec: decl_spec_no_type type m_decl_spec_no_type  */
+#line 1186 "tools/widl/parser.y"
                                                 { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), STG_NONE, 0, 0); }
-#line 5967 "tools/widl/parser.tab.c"
+#line 5976 "tools/widl/parser.tab.c"
     break;
 
-  case 405: /* m_decl_spec_no_type: %empty  */
-#line 1194 "tools/widl/parser.y"
+  case 404: /* unqualified_decl_spec: unqualified_type m_decl_spec_no_type  */
+#line 1190 "tools/widl/parser.y"
+                                                { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, STG_NONE, 0, 0); }
+#line 5982 "tools/widl/parser.tab.c"
+    break;
+
+  case 405: /* unqualified_decl_spec: decl_spec_no_type unqualified_type m_decl_spec_no_type  */
+#line 1192 "tools/widl/parser.y"
+                                                { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), STG_NONE, 0, 0); }
+#line 5988 "tools/widl/parser.tab.c"
+    break;
+
+  case 406: /* m_decl_spec_no_type: %empty  */
+#line 1196 "tools/widl/parser.y"
                                                 { (yyval.declspec) = NULL; }
-#line 5973 "tools/widl/parser.tab.c"
+#line 5994 "tools/widl/parser.tab.c"
     break;
 
-  case 407: /* decl_spec_no_type: type_qualifier m_decl_spec_no_type  */
-#line 1199 "tools/widl/parser.y"
-                                                { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, STG_NONE, (yyvsp[-1].type_qualifier), 0); }
-#line 5979 "tools/widl/parser.tab.c"
-    break;
-
-  case 408: /* decl_spec_no_type: function_specifier m_decl_spec_no_type  */
-#line 1200 "tools/widl/parser.y"
-                                                  { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, STG_NONE, 0, (yyvsp[-1].function_specifier)); }
-#line 5985 "tools/widl/parser.tab.c"
-    break;
-
-  case 409: /* decl_spec_no_type: storage_cls_spec m_decl_spec_no_type  */
+  case 408: /* decl_spec_no_type: type_qualifier m_decl_spec_no_type  */
 #line 1201 "tools/widl/parser.y"
+                                                { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, STG_NONE, (yyvsp[-1].type_qualifier), 0); }
+#line 6000 "tools/widl/parser.tab.c"
+    break;
+
+  case 409: /* decl_spec_no_type: function_specifier m_decl_spec_no_type  */
+#line 1202 "tools/widl/parser.y"
+                                                  { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, STG_NONE, 0, (yyvsp[-1].function_specifier)); }
+#line 6006 "tools/widl/parser.tab.c"
+    break;
+
+  case 410: /* decl_spec_no_type: storage_cls_spec m_decl_spec_no_type  */
+#line 1203 "tools/widl/parser.y"
                                                 { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].stgclass), 0, 0); }
-#line 5991 "tools/widl/parser.tab.c"
+#line 6012 "tools/widl/parser.tab.c"
     break;
 
-  case 410: /* declarator: '*' m_type_qual_list declarator  */
-#line 1206 "tools/widl/parser.y"
+  case 411: /* declarator: '*' m_type_qual_list declarator  */
+#line 1208 "tools/widl/parser.y"
                                                 { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
-#line 5997 "tools/widl/parser.tab.c"
+#line 6018 "tools/widl/parser.tab.c"
     break;
 
-  case 411: /* declarator: callconv declarator  */
-#line 1207 "tools/widl/parser.y"
+  case 412: /* declarator: callconv declarator  */
+#line 1209 "tools/widl/parser.y"
                                                 { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); }
-#line 6003 "tools/widl/parser.tab.c"
+#line 6024 "tools/widl/parser.tab.c"
     break;
 
-  case 413: /* direct_declarator: ident  */
-#line 1212 "tools/widl/parser.y"
-                                                { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
-#line 6009 "tools/widl/parser.tab.c"
-    break;
-
-  case 414: /* direct_declarator: '(' declarator ')'  */
-#line 1213 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 6015 "tools/widl/parser.tab.c"
-    break;
-
-  case 415: /* direct_declarator: direct_declarator array  */
+  case 414: /* direct_declarator: ident  */
 #line 1214 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); }
-#line 6021 "tools/widl/parser.tab.c"
-    break;
-
-  case 416: /* direct_declarator: direct_declarator '(' m_args ')'  */
-#line 1215 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[-3].declarator); append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0); }
-#line 6027 "tools/widl/parser.tab.c"
-    break;
-
-  case 417: /* abstract_declarator: '*' m_type_qual_list m_abstract_declarator  */
-#line 1221 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
-#line 6033 "tools/widl/parser.tab.c"
-    break;
-
-  case 418: /* abstract_declarator: callconv m_abstract_declarator  */
-#line 1222 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); }
-#line 6039 "tools/widl/parser.tab.c"
-    break;
-
-  case 420: /* abstract_declarator_no_direct: '*' m_type_qual_list m_any_declarator  */
-#line 1229 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
-#line 6045 "tools/widl/parser.tab.c"
-    break;
-
-  case 421: /* abstract_declarator_no_direct: callconv m_any_declarator  */
-#line 1230 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); }
-#line 6051 "tools/widl/parser.tab.c"
-    break;
-
-  case 422: /* m_abstract_declarator: %empty  */
-#line 1235 "tools/widl/parser.y"
-                                                { (yyval.declarator) = make_declarator(NULL); }
-#line 6057 "tools/widl/parser.tab.c"
-    break;
-
-  case 424: /* abstract_direct_declarator: '(' abstract_declarator_no_direct ')'  */
-#line 1241 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 6063 "tools/widl/parser.tab.c"
-    break;
-
-  case 425: /* abstract_direct_declarator: abstract_direct_declarator array  */
-#line 1242 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); }
-#line 6069 "tools/widl/parser.tab.c"
-    break;
-
-  case 426: /* abstract_direct_declarator: array  */
-#line 1243 "tools/widl/parser.y"
-                                                { (yyval.declarator) = make_declarator(NULL); append_array((yyval.declarator), (yyvsp[0].expr)); }
-#line 6075 "tools/widl/parser.tab.c"
-    break;
-
-  case 427: /* abstract_direct_declarator: '(' m_args ')'  */
-#line 1245 "tools/widl/parser.y"
-                                                { (yyval.declarator) = make_declarator(NULL);
-						  append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0);
-						}
-#line 6083 "tools/widl/parser.tab.c"
-    break;
-
-  case 428: /* abstract_direct_declarator: abstract_direct_declarator '(' m_args ')'  */
-#line 1249 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[-3].declarator);
-						  append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0);
-						}
-#line 6091 "tools/widl/parser.tab.c"
-    break;
-
-  case 429: /* any_declarator: '*' m_type_qual_list m_any_declarator  */
-#line 1257 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
-#line 6097 "tools/widl/parser.tab.c"
-    break;
-
-  case 430: /* any_declarator: callconv m_any_declarator  */
-#line 1258 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); }
-#line 6103 "tools/widl/parser.tab.c"
-    break;
-
-  case 432: /* any_declarator_no_direct: '*' m_type_qual_list m_any_declarator  */
-#line 1265 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
-#line 6109 "tools/widl/parser.tab.c"
-    break;
-
-  case 433: /* any_declarator_no_direct: callconv m_any_declarator  */
-#line 1266 "tools/widl/parser.y"
-                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); }
-#line 6115 "tools/widl/parser.tab.c"
-    break;
-
-  case 434: /* m_any_declarator: %empty  */
-#line 1271 "tools/widl/parser.y"
-                                                { (yyval.declarator) = make_declarator(NULL); }
-#line 6121 "tools/widl/parser.tab.c"
-    break;
-
-  case 436: /* any_direct_declarator: ident  */
-#line 1279 "tools/widl/parser.y"
                                                 { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
-#line 6127 "tools/widl/parser.tab.c"
+#line 6030 "tools/widl/parser.tab.c"
     break;
 
-  case 437: /* any_direct_declarator: '(' any_declarator_no_direct ')'  */
-#line 1280 "tools/widl/parser.y"
+  case 415: /* direct_declarator: '(' declarator ')'  */
+#line 1215 "tools/widl/parser.y"
                                                 { (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 6133 "tools/widl/parser.tab.c"
+#line 6036 "tools/widl/parser.tab.c"
     break;
 
-  case 438: /* any_direct_declarator: any_direct_declarator array  */
-#line 1281 "tools/widl/parser.y"
+  case 416: /* direct_declarator: direct_declarator array  */
+#line 1216 "tools/widl/parser.y"
                                                 { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); }
-#line 6139 "tools/widl/parser.tab.c"
+#line 6042 "tools/widl/parser.tab.c"
     break;
 
-  case 439: /* any_direct_declarator: array  */
-#line 1282 "tools/widl/parser.y"
+  case 417: /* direct_declarator: direct_declarator '(' m_args ')'  */
+#line 1217 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[-3].declarator); append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0); }
+#line 6048 "tools/widl/parser.tab.c"
+    break;
+
+  case 418: /* abstract_declarator: '*' m_type_qual_list m_abstract_declarator  */
+#line 1223 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
+#line 6054 "tools/widl/parser.tab.c"
+    break;
+
+  case 419: /* abstract_declarator: callconv m_abstract_declarator  */
+#line 1224 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); }
+#line 6060 "tools/widl/parser.tab.c"
+    break;
+
+  case 421: /* abstract_declarator_no_direct: '*' m_type_qual_list m_any_declarator  */
+#line 1231 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
+#line 6066 "tools/widl/parser.tab.c"
+    break;
+
+  case 422: /* abstract_declarator_no_direct: callconv m_any_declarator  */
+#line 1232 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); }
+#line 6072 "tools/widl/parser.tab.c"
+    break;
+
+  case 423: /* m_abstract_declarator: %empty  */
+#line 1237 "tools/widl/parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL); }
+#line 6078 "tools/widl/parser.tab.c"
+    break;
+
+  case 425: /* abstract_direct_declarator: '(' abstract_declarator_no_direct ')'  */
+#line 1243 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 6084 "tools/widl/parser.tab.c"
+    break;
+
+  case 426: /* abstract_direct_declarator: abstract_direct_declarator array  */
+#line 1244 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); }
+#line 6090 "tools/widl/parser.tab.c"
+    break;
+
+  case 427: /* abstract_direct_declarator: array  */
+#line 1245 "tools/widl/parser.y"
                                                 { (yyval.declarator) = make_declarator(NULL); append_array((yyval.declarator), (yyvsp[0].expr)); }
-#line 6145 "tools/widl/parser.tab.c"
+#line 6096 "tools/widl/parser.tab.c"
     break;
 
-  case 440: /* any_direct_declarator: '(' m_args ')'  */
-#line 1284 "tools/widl/parser.y"
+  case 428: /* abstract_direct_declarator: '(' m_args ')'  */
+#line 1247 "tools/widl/parser.y"
                                                 { (yyval.declarator) = make_declarator(NULL);
 						  append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0);
 						}
-#line 6153 "tools/widl/parser.tab.c"
+#line 6104 "tools/widl/parser.tab.c"
     break;
 
-  case 441: /* any_direct_declarator: any_direct_declarator '(' m_args ')'  */
-#line 1288 "tools/widl/parser.y"
+  case 429: /* abstract_direct_declarator: abstract_direct_declarator '(' m_args ')'  */
+#line 1251 "tools/widl/parser.y"
                                                 { (yyval.declarator) = (yyvsp[-3].declarator);
 						  append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0);
 						}
-#line 6161 "tools/widl/parser.tab.c"
+#line 6112 "tools/widl/parser.tab.c"
     break;
 
-  case 442: /* declarator_list: declarator  */
-#line 1294 "tools/widl/parser.y"
+  case 430: /* any_declarator: '*' m_type_qual_list m_any_declarator  */
+#line 1259 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
+#line 6118 "tools/widl/parser.tab.c"
+    break;
+
+  case 431: /* any_declarator: callconv m_any_declarator  */
+#line 1260 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); }
+#line 6124 "tools/widl/parser.tab.c"
+    break;
+
+  case 433: /* any_declarator_no_direct: '*' m_type_qual_list m_any_declarator  */
+#line 1267 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
+#line 6130 "tools/widl/parser.tab.c"
+    break;
+
+  case 434: /* any_declarator_no_direct: callconv m_any_declarator  */
+#line 1268 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); }
+#line 6136 "tools/widl/parser.tab.c"
+    break;
+
+  case 435: /* m_any_declarator: %empty  */
+#line 1273 "tools/widl/parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL); }
+#line 6142 "tools/widl/parser.tab.c"
+    break;
+
+  case 437: /* any_direct_declarator: ident  */
+#line 1281 "tools/widl/parser.y"
+                                                { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
+#line 6148 "tools/widl/parser.tab.c"
+    break;
+
+  case 438: /* any_direct_declarator: '(' any_declarator_no_direct ')'  */
+#line 1282 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 6154 "tools/widl/parser.tab.c"
+    break;
+
+  case 439: /* any_direct_declarator: any_direct_declarator array  */
+#line 1283 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); }
+#line 6160 "tools/widl/parser.tab.c"
+    break;
+
+  case 440: /* any_direct_declarator: array  */
+#line 1284 "tools/widl/parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL); append_array((yyval.declarator), (yyvsp[0].expr)); }
+#line 6166 "tools/widl/parser.tab.c"
+    break;
+
+  case 441: /* any_direct_declarator: '(' m_args ')'  */
+#line 1286 "tools/widl/parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL);
+						  append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0);
+						}
+#line 6174 "tools/widl/parser.tab.c"
+    break;
+
+  case 442: /* any_direct_declarator: any_direct_declarator '(' m_args ')'  */
+#line 1290 "tools/widl/parser.y"
+                                                { (yyval.declarator) = (yyvsp[-3].declarator);
+						  append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0);
+						}
+#line 6182 "tools/widl/parser.tab.c"
+    break;
+
+  case 443: /* declarator_list: declarator  */
+#line 1296 "tools/widl/parser.y"
                                                 { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
-#line 6167 "tools/widl/parser.tab.c"
+#line 6188 "tools/widl/parser.tab.c"
     break;
 
-  case 443: /* declarator_list: declarator_list ',' declarator  */
-#line 1295 "tools/widl/parser.y"
+  case 444: /* declarator_list: declarator_list ',' declarator  */
+#line 1297 "tools/widl/parser.y"
                                                 { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
-#line 6173 "tools/widl/parser.tab.c"
+#line 6194 "tools/widl/parser.tab.c"
     break;
 
-  case 444: /* m_bitfield: %empty  */
-#line 1299 "tools/widl/parser.y"
+  case 445: /* m_bitfield: %empty  */
+#line 1301 "tools/widl/parser.y"
                                                 { (yyval.expr) = NULL; }
-#line 6179 "tools/widl/parser.tab.c"
+#line 6200 "tools/widl/parser.tab.c"
     break;
 
-  case 445: /* m_bitfield: ':' expr_const  */
-#line 1300 "tools/widl/parser.y"
+  case 446: /* m_bitfield: ':' expr_const  */
+#line 1302 "tools/widl/parser.y"
                                                 { (yyval.expr) = (yyvsp[0].expr); }
-#line 6185 "tools/widl/parser.tab.c"
+#line 6206 "tools/widl/parser.tab.c"
     break;
 
-  case 446: /* struct_declarator: any_declarator m_bitfield  */
-#line 1303 "tools/widl/parser.y"
+  case 447: /* struct_declarator: any_declarator m_bitfield  */
+#line 1305 "tools/widl/parser.y"
                                                 { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->bits = (yyvsp[0].expr);
 						  if (!(yyval.declarator)->bits && !(yyval.declarator)->var->name)
 						    error_loc("unnamed fields are not allowed\n");
 						}
-#line 6194 "tools/widl/parser.tab.c"
+#line 6215 "tools/widl/parser.tab.c"
     break;
 
-  case 447: /* struct_declarator_list: struct_declarator  */
-#line 1310 "tools/widl/parser.y"
-                                                { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
-#line 6200 "tools/widl/parser.tab.c"
-    break;
-
-  case 448: /* struct_declarator_list: struct_declarator_list ',' struct_declarator  */
+  case 448: /* struct_declarator_list: struct_declarator  */
 #line 1312 "tools/widl/parser.y"
+                                                { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
+#line 6221 "tools/widl/parser.tab.c"
+    break;
+
+  case 449: /* struct_declarator_list: struct_declarator_list ',' struct_declarator  */
+#line 1314 "tools/widl/parser.y"
                                                 { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
-#line 6206 "tools/widl/parser.tab.c"
+#line 6227 "tools/widl/parser.tab.c"
     break;
 
-  case 449: /* init_declarator: declarator  */
-#line 1316 "tools/widl/parser.y"
+  case 450: /* init_declarator: declarator  */
+#line 1318 "tools/widl/parser.y"
                                                 { (yyval.declarator) = (yyvsp[0].declarator); }
-#line 6212 "tools/widl/parser.tab.c"
+#line 6233 "tools/widl/parser.tab.c"
     break;
 
-  case 450: /* init_declarator: declarator '=' expr_const  */
-#line 1317 "tools/widl/parser.y"
+  case 451: /* init_declarator: declarator '=' expr_const  */
+#line 1319 "tools/widl/parser.y"
                                                 { (yyval.declarator) = (yyvsp[-2].declarator); (yyvsp[-2].declarator)->var->eval = (yyvsp[0].expr); }
-#line 6218 "tools/widl/parser.tab.c"
+#line 6239 "tools/widl/parser.tab.c"
     break;
 
-  case 451: /* threading_type: tAPARTMENT  */
-#line 1321 "tools/widl/parser.y"
-                                                { (yyval.num) = THREADING_APARTMENT; }
-#line 6224 "tools/widl/parser.tab.c"
-    break;
-
-  case 452: /* threading_type: tNEUTRAL  */
-#line 1322 "tools/widl/parser.y"
-                                                { (yyval.num) = THREADING_NEUTRAL; }
-#line 6230 "tools/widl/parser.tab.c"
-    break;
-
-  case 453: /* threading_type: tSINGLE  */
+  case 452: /* threading_type: tAPARTMENT  */
 #line 1323 "tools/widl/parser.y"
-                                                { (yyval.num) = THREADING_SINGLE; }
-#line 6236 "tools/widl/parser.tab.c"
+                                                { (yyval.num) = THREADING_APARTMENT; }
+#line 6245 "tools/widl/parser.tab.c"
     break;
 
-  case 454: /* threading_type: tFREE  */
+  case 453: /* threading_type: tNEUTRAL  */
 #line 1324 "tools/widl/parser.y"
-                                                { (yyval.num) = THREADING_FREE; }
-#line 6242 "tools/widl/parser.tab.c"
+                                                { (yyval.num) = THREADING_NEUTRAL; }
+#line 6251 "tools/widl/parser.tab.c"
     break;
 
-  case 455: /* threading_type: tBOTH  */
+  case 454: /* threading_type: tSINGLE  */
 #line 1325 "tools/widl/parser.y"
-                                                { (yyval.num) = THREADING_BOTH; }
-#line 6248 "tools/widl/parser.tab.c"
+                                                { (yyval.num) = THREADING_SINGLE; }
+#line 6257 "tools/widl/parser.tab.c"
     break;
 
-  case 456: /* threading_type: tMTA  */
+  case 455: /* threading_type: tFREE  */
 #line 1326 "tools/widl/parser.y"
                                                 { (yyval.num) = THREADING_FREE; }
-#line 6254 "tools/widl/parser.tab.c"
+#line 6263 "tools/widl/parser.tab.c"
     break;
 
-  case 457: /* pointer_type: tREF  */
-#line 1330 "tools/widl/parser.y"
-                                                { (yyval.num) = FC_RP; }
-#line 6260 "tools/widl/parser.tab.c"
+  case 456: /* threading_type: tBOTH  */
+#line 1327 "tools/widl/parser.y"
+                                                { (yyval.num) = THREADING_BOTH; }
+#line 6269 "tools/widl/parser.tab.c"
     break;
 
-  case 458: /* pointer_type: tUNIQUE  */
-#line 1331 "tools/widl/parser.y"
-                                                { (yyval.num) = FC_UP; }
-#line 6266 "tools/widl/parser.tab.c"
+  case 457: /* threading_type: tMTA  */
+#line 1328 "tools/widl/parser.y"
+                                                { (yyval.num) = THREADING_FREE; }
+#line 6275 "tools/widl/parser.tab.c"
     break;
 
-  case 459: /* pointer_type: tPTR  */
+  case 458: /* pointer_type: tREF  */
 #line 1332 "tools/widl/parser.y"
+                                                { (yyval.num) = FC_RP; }
+#line 6281 "tools/widl/parser.tab.c"
+    break;
+
+  case 459: /* pointer_type: tUNIQUE  */
+#line 1333 "tools/widl/parser.y"
+                                                { (yyval.num) = FC_UP; }
+#line 6287 "tools/widl/parser.tab.c"
+    break;
+
+  case 460: /* pointer_type: tPTR  */
+#line 1334 "tools/widl/parser.y"
                                                 { (yyval.num) = FC_FP; }
-#line 6272 "tools/widl/parser.tab.c"
+#line 6293 "tools/widl/parser.tab.c"
     break;
 
-  case 460: /* structdef: tSTRUCT m_typename '{' fields '}'  */
-#line 1335 "tools/widl/parser.y"
+  case 461: /* structdef: tSTRUCT m_typename '{' fields '}'  */
+#line 1337 "tools/widl/parser.y"
                                                 { (yyval.type) = type_new_struct((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
-#line 6278 "tools/widl/parser.tab.c"
+#line 6299 "tools/widl/parser.tab.c"
     break;
 
-  case 461: /* unqualified_type: tVOID  */
-#line 1339 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_void(); }
-#line 6284 "tools/widl/parser.tab.c"
-    break;
-
-  case 462: /* unqualified_type: base_type  */
-#line 1340 "tools/widl/parser.y"
-                                                { (yyval.type) = (yyvsp[0].type); }
-#line 6290 "tools/widl/parser.tab.c"
-    break;
-
-  case 463: /* unqualified_type: enumdef  */
+  case 462: /* unqualified_type: tVOID  */
 #line 1341 "tools/widl/parser.y"
-                                                { (yyval.type) = (yyvsp[0].type); }
-#line 6296 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_new_void(); }
+#line 6305 "tools/widl/parser.tab.c"
     break;
 
-  case 464: /* unqualified_type: tENUM aIDENTIFIER  */
+  case 463: /* unqualified_type: base_type  */
 #line 1342 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 6302 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 6311 "tools/widl/parser.tab.c"
     break;
 
-  case 465: /* unqualified_type: structdef  */
+  case 464: /* unqualified_type: enumdef  */
 #line 1343 "tools/widl/parser.y"
                                                 { (yyval.type) = (yyvsp[0].type); }
-#line 6308 "tools/widl/parser.tab.c"
+#line 6317 "tools/widl/parser.tab.c"
     break;
 
-  case 466: /* unqualified_type: tSTRUCT aIDENTIFIER  */
+  case 465: /* unqualified_type: tENUM aIDENTIFIER  */
 #line 1344 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 6314 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
+#line 6323 "tools/widl/parser.tab.c"
     break;
 
-  case 467: /* unqualified_type: uniondef  */
+  case 466: /* unqualified_type: structdef  */
 #line 1345 "tools/widl/parser.y"
                                                 { (yyval.type) = (yyvsp[0].type); }
-#line 6320 "tools/widl/parser.tab.c"
+#line 6329 "tools/widl/parser.tab.c"
     break;
 
-  case 468: /* unqualified_type: tUNION aIDENTIFIER  */
+  case 467: /* unqualified_type: tSTRUCT aIDENTIFIER  */
 #line 1346 "tools/widl/parser.y"
-                                                { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 6326 "tools/widl/parser.tab.c"
+                                                { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
+#line 6335 "tools/widl/parser.tab.c"
     break;
 
-  case 469: /* unqualified_type: tSAFEARRAY '(' type ')'  */
+  case 468: /* unqualified_type: uniondef  */
 #line 1347 "tools/widl/parser.y"
-                                                { (yyval.type) = make_safearray((yyvsp[-1].type)); }
-#line 6332 "tools/widl/parser.tab.c"
-    break;
-
-  case 470: /* unqualified_type: aKNOWNTYPE  */
-#line 1348 "tools/widl/parser.y"
-                                                { (yyval.type) = find_type_or_error(current_namespace, (yyvsp[0].str)); }
-#line 6338 "tools/widl/parser.tab.c"
-    break;
-
-  case 472: /* type: namespace_pfx typename  */
-#line 1353 "tools/widl/parser.y"
-                                                { (yyval.type) = find_type_or_error((yyvsp[-1].namespace), (yyvsp[0].str)); }
-#line 6344 "tools/widl/parser.tab.c"
-    break;
-
-  case 473: /* type: parameterized_type  */
-#line 1354 "tools/widl/parser.y"
                                                 { (yyval.type) = (yyvsp[0].type); }
-#line 6350 "tools/widl/parser.tab.c"
+#line 6341 "tools/widl/parser.tab.c"
     break;
 
-  case 474: /* typedef: m_attributes tTYPEDEF m_attributes decl_spec declarator_list  */
-#line 1358 "tools/widl/parser.y"
+  case 469: /* unqualified_type: tUNION aIDENTIFIER  */
+#line 1348 "tools/widl/parser.y"
+                                                { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), current_namespace, FALSE, NULL); }
+#line 6347 "tools/widl/parser.tab.c"
+    break;
+
+  case 470: /* unqualified_type: tSAFEARRAY '(' type ')'  */
+#line 1349 "tools/widl/parser.y"
+                                                { (yyval.type) = make_safearray((yyvsp[-1].type)); }
+#line 6353 "tools/widl/parser.tab.c"
+    break;
+
+  case 471: /* unqualified_type: aKNOWNTYPE  */
+#line 1350 "tools/widl/parser.y"
+                                                { (yyval.type) = find_type_or_error(current_namespace, (yyvsp[0].str)); }
+#line 6359 "tools/widl/parser.tab.c"
+    break;
+
+  case 473: /* type: namespace_pfx typename  */
+#line 1355 "tools/widl/parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[-1].namespace), (yyvsp[0].str)); }
+#line 6365 "tools/widl/parser.tab.c"
+    break;
+
+  case 474: /* type: parameterized_type  */
+#line 1356 "tools/widl/parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 6371 "tools/widl/parser.tab.c"
+    break;
+
+  case 475: /* typedef: m_attributes tTYPEDEF m_attributes decl_spec declarator_list  */
+#line 1360 "tools/widl/parser.y"
                                                 { (yyvsp[-4].attr_list) = append_attribs((yyvsp[-4].attr_list), (yyvsp[-2].attr_list));
 						  reg_typedefs( (yyloc), (yyvsp[-1].declspec), (yyvsp[0].declarator_list), check_typedef_attrs( (yyvsp[-4].attr_list) ) );
 						  (yyval.statement) = make_statement_typedef((yyvsp[0].declarator_list), !(yyvsp[-1].declspec)->type->defined);
 						}
-#line 6359 "tools/widl/parser.tab.c"
+#line 6380 "tools/widl/parser.tab.c"
     break;
 
-  case 475: /* uniondef: tUNION m_typename '{' ne_union_fields '}'  */
-#line 1365 "tools/widl/parser.y"
+  case 476: /* uniondef: tUNION m_typename '{' ne_union_fields '}'  */
+#line 1367 "tools/widl/parser.y"
                                                 { (yyval.type) = type_new_nonencapsulated_union((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
-#line 6365 "tools/widl/parser.tab.c"
+#line 6386 "tools/widl/parser.tab.c"
     break;
 
-  case 476: /* uniondef: tUNION m_typename tSWITCH '(' s_field ')' m_ident '{' cases '}'  */
-#line 1368 "tools/widl/parser.y"
+  case 477: /* uniondef: tUNION m_typename tSWITCH '(' s_field ')' m_ident '{' cases '}'  */
+#line 1370 "tools/widl/parser.y"
                                                 { (yyval.type) = type_new_encapsulated_union((yyvsp[-8].str), (yyvsp[-5].var), (yyvsp[-3].var), (yyvsp[-1].var_list)); }
-#line 6371 "tools/widl/parser.tab.c"
+#line 6392 "tools/widl/parser.tab.c"
     break;
 
-  case 477: /* version: aNUM  */
-#line 1372 "tools/widl/parser.y"
-                                                { (yyval.num) = MAKEVERSION((yyvsp[0].num), 0); }
-#line 6377 "tools/widl/parser.tab.c"
-    break;
-
-  case 478: /* version: aNUM '.' aNUM  */
-#line 1373 "tools/widl/parser.y"
-                                                { (yyval.num) = MAKEVERSION((yyvsp[-2].num), (yyvsp[0].num)); }
-#line 6383 "tools/widl/parser.tab.c"
-    break;
-
-  case 479: /* version: aHEXNUM  */
+  case 478: /* version: aNUM  */
 #line 1374 "tools/widl/parser.y"
-                                                { (yyval.num) = (yyvsp[0].num); }
-#line 6389 "tools/widl/parser.tab.c"
+                                                { (yyval.num) = MAKEVERSION((yyvsp[0].num), 0); }
+#line 6398 "tools/widl/parser.tab.c"
     break;
 
-  case 484: /* acf_int_statement: tTYPEDEF acf_attributes aKNOWNTYPE ';'  */
-#line 1389 "tools/widl/parser.y"
+  case 479: /* version: aNUM '.' aNUM  */
+#line 1375 "tools/widl/parser.y"
+                                                { (yyval.num) = MAKEVERSION((yyvsp[-2].num), (yyvsp[0].num)); }
+#line 6404 "tools/widl/parser.tab.c"
+    break;
+
+  case 480: /* version: aHEXNUM  */
+#line 1376 "tools/widl/parser.y"
+                                                { (yyval.num) = (yyvsp[0].num); }
+#line 6410 "tools/widl/parser.tab.c"
+    break;
+
+  case 485: /* acf_int_statement: tTYPEDEF acf_attributes aKNOWNTYPE ';'  */
+#line 1391 "tools/widl/parser.y"
                                                 { type_t *type = find_type_or_error(current_namespace, (yyvsp[-1].str));
                                                   type->attrs = append_attr_list(type->attrs, (yyvsp[-2].attr_list));
                                                 }
-#line 6397 "tools/widl/parser.tab.c"
+#line 6418 "tools/widl/parser.tab.c"
     break;
 
-  case 485: /* acf_interface: acf_attributes tINTERFACE aKNOWNTYPE '{' acf_int_statements '}'  */
-#line 1396 "tools/widl/parser.y"
+  case 486: /* acf_interface: acf_attributes tINTERFACE aKNOWNTYPE '{' acf_int_statements '}'  */
+#line 1398 "tools/widl/parser.y"
                                                 {  type_t *iface = find_type_or_error(current_namespace, (yyvsp[-3].str));
                                                    if (type_get_type(iface) != TYPE_INTERFACE)
                                                        error_loc("%s is not an interface\n", iface->name);
                                                    iface->attrs = append_attr_list(iface->attrs, (yyvsp[-5].attr_list));
                                                 }
-#line 6407 "tools/widl/parser.tab.c"
+#line 6428 "tools/widl/parser.tab.c"
     break;
 
-  case 486: /* acf_attributes: %empty  */
-#line 1404 "tools/widl/parser.y"
+  case 487: /* acf_attributes: %empty  */
+#line 1406 "tools/widl/parser.y"
                                                 { (yyval.attr_list) = NULL; }
-#line 6413 "tools/widl/parser.tab.c"
+#line 6434 "tools/widl/parser.tab.c"
     break;
 
-  case 487: /* acf_attributes: '[' acf_attribute_list ']'  */
-#line 1405 "tools/widl/parser.y"
+  case 488: /* acf_attributes: '[' acf_attribute_list ']'  */
+#line 1407 "tools/widl/parser.y"
                                                 { (yyval.attr_list) = (yyvsp[-1].attr_list); }
-#line 6419 "tools/widl/parser.tab.c"
+#line 6440 "tools/widl/parser.tab.c"
     break;
 
-  case 488: /* acf_attribute_list: acf_attribute  */
-#line 1409 "tools/widl/parser.y"
+  case 489: /* acf_attribute_list: acf_attribute  */
+#line 1411 "tools/widl/parser.y"
                                                 { (yyval.attr_list) = append_attr(NULL, (yyvsp[0].attr)); }
-#line 6425 "tools/widl/parser.tab.c"
+#line 6446 "tools/widl/parser.tab.c"
     break;
 
-  case 489: /* acf_attribute_list: acf_attribute_list ',' acf_attribute  */
-#line 1410 "tools/widl/parser.y"
+  case 490: /* acf_attribute_list: acf_attribute_list ',' acf_attribute  */
+#line 1412 "tools/widl/parser.y"
                                                 { (yyval.attr_list) = append_attr((yyvsp[-2].attr_list), (yyvsp[0].attr)); }
-#line 6431 "tools/widl/parser.tab.c"
+#line 6452 "tools/widl/parser.tab.c"
     break;
 
-  case 490: /* acf_attribute: tALLOCATE '(' allocate_option_list ')'  */
-#line 1415 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_ALLOCATE, (yyvsp[-1].num) ); }
-#line 6437 "tools/widl/parser.tab.c"
-    break;
-
-  case 491: /* acf_attribute: tENCODE  */
-#line 1416 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_ENCODE, 0 ); }
-#line 6443 "tools/widl/parser.tab.c"
-    break;
-
-  case 492: /* acf_attribute: tDECODE  */
+  case 491: /* acf_attribute: tALLOCATE '(' allocate_option_list ')'  */
 #line 1417 "tools/widl/parser.y"
-                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DECODE, 0 ); }
-#line 6449 "tools/widl/parser.tab.c"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_ALLOCATE, (yyvsp[-1].num) ); }
+#line 6458 "tools/widl/parser.tab.c"
     break;
 
-  case 493: /* acf_attribute: tEXPLICITHANDLE  */
+  case 492: /* acf_attribute: tENCODE  */
 #line 1418 "tools/widl/parser.y"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_ENCODE, 0 ); }
+#line 6464 "tools/widl/parser.tab.c"
+    break;
+
+  case 493: /* acf_attribute: tDECODE  */
+#line 1419 "tools/widl/parser.y"
+                                                { (yyval.attr) = attr_int( (yyloc), ATTR_DECODE, 0 ); }
+#line 6470 "tools/widl/parser.tab.c"
+    break;
+
+  case 494: /* acf_attribute: tEXPLICITHANDLE  */
+#line 1420 "tools/widl/parser.y"
                                                 { (yyval.attr) = attr_int( (yyloc), ATTR_EXPLICIT_HANDLE, 0 ); }
-#line 6455 "tools/widl/parser.tab.c"
+#line 6476 "tools/widl/parser.tab.c"
     break;
 
-  case 494: /* allocate_option_list: allocate_option  */
-#line 1422 "tools/widl/parser.y"
-                                                { (yyval.num) = (yyvsp[0].num); }
-#line 6461 "tools/widl/parser.tab.c"
-    break;
-
-  case 495: /* allocate_option_list: allocate_option_list ',' allocate_option  */
+  case 495: /* allocate_option_list: allocate_option  */
 #line 1424 "tools/widl/parser.y"
+                                                { (yyval.num) = (yyvsp[0].num); }
+#line 6482 "tools/widl/parser.tab.c"
+    break;
+
+  case 496: /* allocate_option_list: allocate_option_list ',' allocate_option  */
+#line 1426 "tools/widl/parser.y"
                                                 { (yyval.num) = (yyvsp[-2].num) | (yyvsp[0].num); }
-#line 6467 "tools/widl/parser.tab.c"
+#line 6488 "tools/widl/parser.tab.c"
     break;
 
-  case 496: /* allocate_option: tDONTFREE  */
-#line 1428 "tools/widl/parser.y"
-                                                { (yyval.num) = FC_DONT_FREE; }
-#line 6473 "tools/widl/parser.tab.c"
-    break;
-
-  case 497: /* allocate_option: tFREE  */
-#line 1429 "tools/widl/parser.y"
-                                                { (yyval.num) = 0; }
-#line 6479 "tools/widl/parser.tab.c"
-    break;
-
-  case 498: /* allocate_option: tALLNODES  */
+  case 497: /* allocate_option: tDONTFREE  */
 #line 1430 "tools/widl/parser.y"
-                                                { (yyval.num) = FC_ALLOCATE_ALL_NODES; }
-#line 6485 "tools/widl/parser.tab.c"
+                                                { (yyval.num) = FC_DONT_FREE; }
+#line 6494 "tools/widl/parser.tab.c"
     break;
 
-  case 499: /* allocate_option: tSINGLENODE  */
+  case 498: /* allocate_option: tFREE  */
 #line 1431 "tools/widl/parser.y"
                                                 { (yyval.num) = 0; }
-#line 6491 "tools/widl/parser.tab.c"
+#line 6500 "tools/widl/parser.tab.c"
+    break;
+
+  case 499: /* allocate_option: tALLNODES  */
+#line 1432 "tools/widl/parser.y"
+                                                { (yyval.num) = FC_ALLOCATE_ALL_NODES; }
+#line 6506 "tools/widl/parser.tab.c"
+    break;
+
+  case 500: /* allocate_option: tSINGLENODE  */
+#line 1433 "tools/widl/parser.y"
+                                                { (yyval.num) = 0; }
+#line 6512 "tools/widl/parser.tab.c"
     break;
 
 
-#line 6495 "tools/widl/parser.tab.c"
+#line 6516 "tools/widl/parser.tab.c"
 
       default: break;
     }
@@ -6720,7 +6741,7 @@
   return yyresult;
 }
 
-#line 1434 "tools/widl/parser.y"
+#line 1436 "tools/widl/parser.y"
 
 
 static void decl_builtin_basic(const char *name, enum type_basic_type type)
diff --git a/mingw-w64-tools/widl/src/parser.tab.h b/mingw-w64-tools/widl/src/parser.tab.h
index f168fb9..2aee89a 100644
--- a/mingw-w64-tools/widl/src/parser.tab.h
+++ b/mingw-w64-tools/widl/src/parser.tab.h
@@ -134,153 +134,154 @@
     tDEFAULT = 319,                /* tDEFAULT  */
     tDEFAULTBIND = 320,            /* tDEFAULTBIND  */
     tDELEGATE = 321,               /* tDELEGATE  */
-    tDEFAULTCOLLELEM = 322,        /* tDEFAULTCOLLELEM  */
-    tDEFAULTVALUE = 323,           /* tDEFAULTVALUE  */
-    tDEFAULTVTABLE = 324,          /* tDEFAULTVTABLE  */
-    tDEPRECATED = 325,             /* tDEPRECATED  */
-    tDISABLECONSISTENCYCHECK = 326, /* tDISABLECONSISTENCYCHECK  */
-    tDISPLAYBIND = 327,            /* tDISPLAYBIND  */
-    tDISPINTERFACE = 328,          /* tDISPINTERFACE  */
-    tDLLNAME = 329,                /* tDLLNAME  */
-    tDONTFREE = 330,               /* tDONTFREE  */
-    tDOUBLE = 331,                 /* tDOUBLE  */
-    tDUAL = 332,                   /* tDUAL  */
-    tENABLEALLOCATE = 333,         /* tENABLEALLOCATE  */
-    tENCODE = 334,                 /* tENCODE  */
-    tENDPOINT = 335,               /* tENDPOINT  */
-    tENTRY = 336,                  /* tENTRY  */
-    tENUM = 337,                   /* tENUM  */
-    tERRORSTATUST = 338,           /* tERRORSTATUST  */
-    tEVENTADD = 339,               /* tEVENTADD  */
-    tEVENTREMOVE = 340,            /* tEVENTREMOVE  */
-    tEXCLUSIVETO = 341,            /* tEXCLUSIVETO  */
-    tEXPLICITHANDLE = 342,         /* tEXPLICITHANDLE  */
-    tEXTERN = 343,                 /* tEXTERN  */
-    tFALSE = 344,                  /* tFALSE  */
-    tFAULTSTATUS = 345,            /* tFAULTSTATUS  */
-    tFLAGS = 346,                  /* tFLAGS  */
-    tFLOAT = 347,                  /* tFLOAT  */
-    tFORCEALLOCATE = 348,          /* tFORCEALLOCATE  */
-    tHANDLE = 349,                 /* tHANDLE  */
-    tHANDLET = 350,                /* tHANDLET  */
-    tHELPCONTEXT = 351,            /* tHELPCONTEXT  */
-    tHELPFILE = 352,               /* tHELPFILE  */
-    tHELPSTRING = 353,             /* tHELPSTRING  */
-    tHELPSTRINGCONTEXT = 354,      /* tHELPSTRINGCONTEXT  */
-    tHELPSTRINGDLL = 355,          /* tHELPSTRINGDLL  */
-    tHIDDEN = 356,                 /* tHIDDEN  */
-    tHYPER = 357,                  /* tHYPER  */
-    tID = 358,                     /* tID  */
-    tIDEMPOTENT = 359,             /* tIDEMPOTENT  */
-    tIGNORE = 360,                 /* tIGNORE  */
-    tIIDIS = 361,                  /* tIIDIS  */
-    tIMMEDIATEBIND = 362,          /* tIMMEDIATEBIND  */
-    tIMPLICITHANDLE = 363,         /* tIMPLICITHANDLE  */
-    tIMPORT = 364,                 /* tIMPORT  */
-    tIMPORTLIB = 365,              /* tIMPORTLIB  */
-    tIN = 366,                     /* tIN  */
-    tIN_LINE = 367,                /* tIN_LINE  */
-    tINLINE = 368,                 /* tINLINE  */
-    tINPUTSYNC = 369,              /* tINPUTSYNC  */
-    tINT = 370,                    /* tINT  */
-    tINT32 = 371,                  /* tINT32  */
-    tINT3264 = 372,                /* tINT3264  */
-    tINT64 = 373,                  /* tINT64  */
-    tINTERFACE = 374,              /* tINTERFACE  */
-    tLCID = 375,                   /* tLCID  */
-    tLENGTHIS = 376,               /* tLENGTHIS  */
-    tLIBRARY = 377,                /* tLIBRARY  */
-    tLICENSED = 378,               /* tLICENSED  */
-    tLOCAL = 379,                  /* tLOCAL  */
-    tLONG = 380,                   /* tLONG  */
-    tMARSHALINGBEHAVIOR = 381,     /* tMARSHALINGBEHAVIOR  */
-    tMAYBE = 382,                  /* tMAYBE  */
-    tMESSAGE = 383,                /* tMESSAGE  */
-    tMETHODS = 384,                /* tMETHODS  */
-    tMODULE = 385,                 /* tMODULE  */
-    tMTA = 386,                    /* tMTA  */
-    tNAMESPACE = 387,              /* tNAMESPACE  */
-    tNOCODE = 388,                 /* tNOCODE  */
-    tNONBROWSABLE = 389,           /* tNONBROWSABLE  */
-    tNONCREATABLE = 390,           /* tNONCREATABLE  */
-    tNONE = 391,                   /* tNONE  */
-    tNONEXTENSIBLE = 392,          /* tNONEXTENSIBLE  */
-    tNOTIFY = 393,                 /* tNOTIFY  */
-    tNOTIFYFLAG = 394,             /* tNOTIFYFLAG  */
-    tNULL = 395,                   /* tNULL  */
-    tOBJECT = 396,                 /* tOBJECT  */
-    tODL = 397,                    /* tODL  */
-    tOLEAUTOMATION = 398,          /* tOLEAUTOMATION  */
-    tOPTIMIZE = 399,               /* tOPTIMIZE  */
-    tOPTIONAL = 400,               /* tOPTIONAL  */
-    tOUT = 401,                    /* tOUT  */
-    tOVERLOAD = 402,               /* tOVERLOAD  */
-    tPARTIALIGNORE = 403,          /* tPARTIALIGNORE  */
-    tPOINTERDEFAULT = 404,         /* tPOINTERDEFAULT  */
-    tPRAGMA_WARNING = 405,         /* tPRAGMA_WARNING  */
-    tPROGID = 406,                 /* tPROGID  */
-    tPROPERTIES = 407,             /* tPROPERTIES  */
-    tPROPGET = 408,                /* tPROPGET  */
-    tPROPPUT = 409,                /* tPROPPUT  */
-    tPROPPUTREF = 410,             /* tPROPPUTREF  */
-    tPROTECTED = 411,              /* tPROTECTED  */
-    tPROXY = 412,                  /* tPROXY  */
-    tPTR = 413,                    /* tPTR  */
-    tPUBLIC = 414,                 /* tPUBLIC  */
-    tRANGE = 415,                  /* tRANGE  */
-    tREADONLY = 416,               /* tREADONLY  */
-    tREF = 417,                    /* tREF  */
-    tREGISTER = 418,               /* tREGISTER  */
-    tREPRESENTAS = 419,            /* tREPRESENTAS  */
-    tREQUESTEDIT = 420,            /* tREQUESTEDIT  */
-    tREQUIRES = 421,               /* tREQUIRES  */
-    tRESTRICTED = 422,             /* tRESTRICTED  */
-    tRETVAL = 423,                 /* tRETVAL  */
-    tRUNTIMECLASS = 424,           /* tRUNTIMECLASS  */
-    tSAFEARRAY = 425,              /* tSAFEARRAY  */
-    tSHORT = 426,                  /* tSHORT  */
-    tSIGNED = 427,                 /* tSIGNED  */
-    tSINGLENODE = 428,             /* tSINGLENODE  */
-    tSIZEIS = 429,                 /* tSIZEIS  */
-    tSIZEOF = 430,                 /* tSIZEOF  */
-    tSMALL = 431,                  /* tSMALL  */
-    tSOURCE = 432,                 /* tSOURCE  */
-    tSTANDARD = 433,               /* tSTANDARD  */
-    tSTATIC = 434,                 /* tSTATIC  */
-    tSTRICTCONTEXTHANDLE = 435,    /* tSTRICTCONTEXTHANDLE  */
-    tSTRING = 436,                 /* tSTRING  */
-    tSTRUCT = 437,                 /* tSTRUCT  */
-    tSWITCH = 438,                 /* tSWITCH  */
-    tSWITCHIS = 439,               /* tSWITCHIS  */
-    tSWITCHTYPE = 440,             /* tSWITCHTYPE  */
-    tTHREADING = 441,              /* tTHREADING  */
-    tTRANSMITAS = 442,             /* tTRANSMITAS  */
-    tTRUE = 443,                   /* tTRUE  */
-    tTYPEDEF = 444,                /* tTYPEDEF  */
-    tUIDEFAULT = 445,              /* tUIDEFAULT  */
-    tUNION = 446,                  /* tUNION  */
-    tUNIQUE = 447,                 /* tUNIQUE  */
-    tUNSIGNED = 448,               /* tUNSIGNED  */
-    tUSESGETLASTERROR = 449,       /* tUSESGETLASTERROR  */
-    tUSERMARSHAL = 450,            /* tUSERMARSHAL  */
-    tUUID = 451,                   /* tUUID  */
-    tV1ENUM = 452,                 /* tV1ENUM  */
-    tVARARG = 453,                 /* tVARARG  */
-    tVERSION = 454,                /* tVERSION  */
-    tVIPROGID = 455,               /* tVIPROGID  */
-    tVOID = 456,                   /* tVOID  */
-    tWCHAR = 457,                  /* tWCHAR  */
-    tWIREMARSHAL = 458,            /* tWIREMARSHAL  */
-    tAPARTMENT = 459,              /* tAPARTMENT  */
-    tNEUTRAL = 460,                /* tNEUTRAL  */
-    tSINGLE = 461,                 /* tSINGLE  */
-    tFREE = 462,                   /* tFREE  */
-    tBOTH = 463,                   /* tBOTH  */
-    CAST = 464,                    /* CAST  */
-    PPTR = 465,                    /* PPTR  */
-    POS = 466,                     /* POS  */
-    NEG = 467,                     /* NEG  */
-    ADDRESSOF = 468                /* ADDRESSOF  */
+    tDEFAULT_OVERLOAD = 322,       /* tDEFAULT_OVERLOAD  */
+    tDEFAULTCOLLELEM = 323,        /* tDEFAULTCOLLELEM  */
+    tDEFAULTVALUE = 324,           /* tDEFAULTVALUE  */
+    tDEFAULTVTABLE = 325,          /* tDEFAULTVTABLE  */
+    tDEPRECATED = 326,             /* tDEPRECATED  */
+    tDISABLECONSISTENCYCHECK = 327, /* tDISABLECONSISTENCYCHECK  */
+    tDISPLAYBIND = 328,            /* tDISPLAYBIND  */
+    tDISPINTERFACE = 329,          /* tDISPINTERFACE  */
+    tDLLNAME = 330,                /* tDLLNAME  */
+    tDONTFREE = 331,               /* tDONTFREE  */
+    tDOUBLE = 332,                 /* tDOUBLE  */
+    tDUAL = 333,                   /* tDUAL  */
+    tENABLEALLOCATE = 334,         /* tENABLEALLOCATE  */
+    tENCODE = 335,                 /* tENCODE  */
+    tENDPOINT = 336,               /* tENDPOINT  */
+    tENTRY = 337,                  /* tENTRY  */
+    tENUM = 338,                   /* tENUM  */
+    tERRORSTATUST = 339,           /* tERRORSTATUST  */
+    tEVENTADD = 340,               /* tEVENTADD  */
+    tEVENTREMOVE = 341,            /* tEVENTREMOVE  */
+    tEXCLUSIVETO = 342,            /* tEXCLUSIVETO  */
+    tEXPLICITHANDLE = 343,         /* tEXPLICITHANDLE  */
+    tEXTERN = 344,                 /* tEXTERN  */
+    tFALSE = 345,                  /* tFALSE  */
+    tFAULTSTATUS = 346,            /* tFAULTSTATUS  */
+    tFLAGS = 347,                  /* tFLAGS  */
+    tFLOAT = 348,                  /* tFLOAT  */
+    tFORCEALLOCATE = 349,          /* tFORCEALLOCATE  */
+    tHANDLE = 350,                 /* tHANDLE  */
+    tHANDLET = 351,                /* tHANDLET  */
+    tHELPCONTEXT = 352,            /* tHELPCONTEXT  */
+    tHELPFILE = 353,               /* tHELPFILE  */
+    tHELPSTRING = 354,             /* tHELPSTRING  */
+    tHELPSTRINGCONTEXT = 355,      /* tHELPSTRINGCONTEXT  */
+    tHELPSTRINGDLL = 356,          /* tHELPSTRINGDLL  */
+    tHIDDEN = 357,                 /* tHIDDEN  */
+    tHYPER = 358,                  /* tHYPER  */
+    tID = 359,                     /* tID  */
+    tIDEMPOTENT = 360,             /* tIDEMPOTENT  */
+    tIGNORE = 361,                 /* tIGNORE  */
+    tIIDIS = 362,                  /* tIIDIS  */
+    tIMMEDIATEBIND = 363,          /* tIMMEDIATEBIND  */
+    tIMPLICITHANDLE = 364,         /* tIMPLICITHANDLE  */
+    tIMPORT = 365,                 /* tIMPORT  */
+    tIMPORTLIB = 366,              /* tIMPORTLIB  */
+    tIN = 367,                     /* tIN  */
+    tIN_LINE = 368,                /* tIN_LINE  */
+    tINLINE = 369,                 /* tINLINE  */
+    tINPUTSYNC = 370,              /* tINPUTSYNC  */
+    tINT = 371,                    /* tINT  */
+    tINT32 = 372,                  /* tINT32  */
+    tINT3264 = 373,                /* tINT3264  */
+    tINT64 = 374,                  /* tINT64  */
+    tINTERFACE = 375,              /* tINTERFACE  */
+    tLCID = 376,                   /* tLCID  */
+    tLENGTHIS = 377,               /* tLENGTHIS  */
+    tLIBRARY = 378,                /* tLIBRARY  */
+    tLICENSED = 379,               /* tLICENSED  */
+    tLOCAL = 380,                  /* tLOCAL  */
+    tLONG = 381,                   /* tLONG  */
+    tMARSHALINGBEHAVIOR = 382,     /* tMARSHALINGBEHAVIOR  */
+    tMAYBE = 383,                  /* tMAYBE  */
+    tMESSAGE = 384,                /* tMESSAGE  */
+    tMETHODS = 385,                /* tMETHODS  */
+    tMODULE = 386,                 /* tMODULE  */
+    tMTA = 387,                    /* tMTA  */
+    tNAMESPACE = 388,              /* tNAMESPACE  */
+    tNOCODE = 389,                 /* tNOCODE  */
+    tNONBROWSABLE = 390,           /* tNONBROWSABLE  */
+    tNONCREATABLE = 391,           /* tNONCREATABLE  */
+    tNONE = 392,                   /* tNONE  */
+    tNONEXTENSIBLE = 393,          /* tNONEXTENSIBLE  */
+    tNOTIFY = 394,                 /* tNOTIFY  */
+    tNOTIFYFLAG = 395,             /* tNOTIFYFLAG  */
+    tNULL = 396,                   /* tNULL  */
+    tOBJECT = 397,                 /* tOBJECT  */
+    tODL = 398,                    /* tODL  */
+    tOLEAUTOMATION = 399,          /* tOLEAUTOMATION  */
+    tOPTIMIZE = 400,               /* tOPTIMIZE  */
+    tOPTIONAL = 401,               /* tOPTIONAL  */
+    tOUT = 402,                    /* tOUT  */
+    tOVERLOAD = 403,               /* tOVERLOAD  */
+    tPARTIALIGNORE = 404,          /* tPARTIALIGNORE  */
+    tPOINTERDEFAULT = 405,         /* tPOINTERDEFAULT  */
+    tPRAGMA_WARNING = 406,         /* tPRAGMA_WARNING  */
+    tPROGID = 407,                 /* tPROGID  */
+    tPROPERTIES = 408,             /* tPROPERTIES  */
+    tPROPGET = 409,                /* tPROPGET  */
+    tPROPPUT = 410,                /* tPROPPUT  */
+    tPROPPUTREF = 411,             /* tPROPPUTREF  */
+    tPROTECTED = 412,              /* tPROTECTED  */
+    tPROXY = 413,                  /* tPROXY  */
+    tPTR = 414,                    /* tPTR  */
+    tPUBLIC = 415,                 /* tPUBLIC  */
+    tRANGE = 416,                  /* tRANGE  */
+    tREADONLY = 417,               /* tREADONLY  */
+    tREF = 418,                    /* tREF  */
+    tREGISTER = 419,               /* tREGISTER  */
+    tREPRESENTAS = 420,            /* tREPRESENTAS  */
+    tREQUESTEDIT = 421,            /* tREQUESTEDIT  */
+    tREQUIRES = 422,               /* tREQUIRES  */
+    tRESTRICTED = 423,             /* tRESTRICTED  */
+    tRETVAL = 424,                 /* tRETVAL  */
+    tRUNTIMECLASS = 425,           /* tRUNTIMECLASS  */
+    tSAFEARRAY = 426,              /* tSAFEARRAY  */
+    tSHORT = 427,                  /* tSHORT  */
+    tSIGNED = 428,                 /* tSIGNED  */
+    tSINGLENODE = 429,             /* tSINGLENODE  */
+    tSIZEIS = 430,                 /* tSIZEIS  */
+    tSIZEOF = 431,                 /* tSIZEOF  */
+    tSMALL = 432,                  /* tSMALL  */
+    tSOURCE = 433,                 /* tSOURCE  */
+    tSTANDARD = 434,               /* tSTANDARD  */
+    tSTATIC = 435,                 /* tSTATIC  */
+    tSTRICTCONTEXTHANDLE = 436,    /* tSTRICTCONTEXTHANDLE  */
+    tSTRING = 437,                 /* tSTRING  */
+    tSTRUCT = 438,                 /* tSTRUCT  */
+    tSWITCH = 439,                 /* tSWITCH  */
+    tSWITCHIS = 440,               /* tSWITCHIS  */
+    tSWITCHTYPE = 441,             /* tSWITCHTYPE  */
+    tTHREADING = 442,              /* tTHREADING  */
+    tTRANSMITAS = 443,             /* tTRANSMITAS  */
+    tTRUE = 444,                   /* tTRUE  */
+    tTYPEDEF = 445,                /* tTYPEDEF  */
+    tUIDEFAULT = 446,              /* tUIDEFAULT  */
+    tUNION = 447,                  /* tUNION  */
+    tUNIQUE = 448,                 /* tUNIQUE  */
+    tUNSIGNED = 449,               /* tUNSIGNED  */
+    tUSESGETLASTERROR = 450,       /* tUSESGETLASTERROR  */
+    tUSERMARSHAL = 451,            /* tUSERMARSHAL  */
+    tUUID = 452,                   /* tUUID  */
+    tV1ENUM = 453,                 /* tV1ENUM  */
+    tVARARG = 454,                 /* tVARARG  */
+    tVERSION = 455,                /* tVERSION  */
+    tVIPROGID = 456,               /* tVIPROGID  */
+    tVOID = 457,                   /* tVOID  */
+    tWCHAR = 458,                  /* tWCHAR  */
+    tWIREMARSHAL = 459,            /* tWIREMARSHAL  */
+    tAPARTMENT = 460,              /* tAPARTMENT  */
+    tNEUTRAL = 461,                /* tNEUTRAL  */
+    tSINGLE = 462,                 /* tSINGLE  */
+    tFREE = 463,                   /* tFREE  */
+    tBOTH = 464,                   /* tBOTH  */
+    CAST = 465,                    /* CAST  */
+    PPTR = 466,                    /* PPTR  */
+    POS = 467,                     /* POS  */
+    NEG = 468,                     /* NEG  */
+    ADDRESSOF = 469                /* ADDRESSOF  */
   };
   typedef enum parser_tokentype parser_token_kind_t;
 #endif
@@ -319,7 +320,7 @@
 	enum function_specifier function_specifier;
 	struct namespace *namespace;
 
-#line 323 "tools/widl/parser.tab.h"
+#line 324 "tools/widl/parser.tab.h"
 
 };
 typedef union PARSER_STYPE PARSER_STYPE;
@@ -359,6 +360,6 @@
              else init_location( &(cur), &YYRHSLOC( rhs, 0 ), NULL ); } while(0)
 
 
-#line 363 "tools/widl/parser.tab.h"
+#line 364 "tools/widl/parser.tab.h"
 
 #endif /* !YY_PARSER_TOOLS_WIDL_PARSER_TAB_H_INCLUDED  */
diff --git a/mingw-w64-tools/widl/src/parser.y b/mingw-w64-tools/widl/src/parser.y
index 26385a5..f66dc62 100644
--- a/mingw-w64-tools/widl/src/parser.y
+++ b/mingw-w64-tools/widl/src/parser.y
@@ -196,6 +196,7 @@
 %token tDECLARE
 %token tDECODE tDEFAULT tDEFAULTBIND
 %token tDELEGATE
+%token tDEFAULT_OVERLOAD
 %token tDEFAULTCOLLELEM
 %token tDEFAULTVALUE
 %token tDEFAULTVTABLE
@@ -662,6 +663,7 @@
                                                 }
         | tDECODE                               { $$ = attr_int( @$, ATTR_DECODE, 0 ); }
         | tDEFAULT                              { $$ = attr_int( @$, ATTR_DEFAULT, 0 ); }
+        | tDEFAULT_OVERLOAD                     { $$ = attr_int( @$, ATTR_DEFAULT_OVERLOAD, 0 ); }
         | tDEFAULTBIND                          { $$ = attr_int( @$, ATTR_DEFAULTBIND, 0 ); }
         | tDEFAULTCOLLELEM                      { $$ = attr_int( @$, ATTR_DEFAULTCOLLELEM, 0 ); }
         | tDEFAULTVALUE '(' expr_const ')'      { $$ = attr_ptr( @$, ATTR_DEFAULTVALUE, $3 ); }
diff --git a/mingw-w64-tools/widl/src/parser.yy.c b/mingw-w64-tools/widl/src/parser.yy.c
index 3ed0350..d3b54f2 100644
--- a/mingw-w64-tools/widl/src/parser.yy.c
+++ b/mingw-w64-tools/widl/src/parser.yy.c
@@ -639,8 +639,8 @@
 	(yy_hold_char) = *yy_cp; \
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 218
-#define YY_END_OF_BUFFER 219
+#define YY_NUM_RULES 219
+#define YY_END_OF_BUFFER 220
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -648,169 +648,170 @@
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static const flex_int16_t yy_accept[1464] =
+static const flex_int16_t yy_accept[1473] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    4,    4,
-      219,  217,  206,  205,  217,  217,  217,  217,  217,  217,
-      201,  201,  217,  217,  217,  199,  199,  199,  199,  199,
-      199,  143,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  217,  206,  142,  199,  217,  201,  201,  199,  199,
-        8,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      206,  142,  218,    5,    7,  218,    4,    4,    4,  211,
-        0,  203,    0,  215,    0,  204,    0,  209,    0,    0,
+      220,  218,  207,  206,  218,  218,  218,  218,  218,  218,
+      202,  202,  218,  218,  218,  200,  200,  200,  200,  200,
+      200,  144,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  218,  207,  143,  200,  218,  202,  202,  200,  200,
+        8,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      207,  143,  219,    5,    7,  219,    4,    4,    4,  212,
+        0,  204,    0,  216,    0,  205,    0,  210,    0,    0,
 
-      201,  201,  201,    0,  207,  213,  210,  212,  208,  199,
-      199,    0,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  214,    0,  142,
-        0,  142,    0,  199,    0,  201,    0,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,   67,
+      202,  202,  202,    0,  208,  214,  211,  213,  209,  200,
+      200,    0,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  215,    0,  143,
+        0,  143,    0,  200,    0,  202,    0,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,   68,
 
-      199,  199,  199,   73,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,    0,  142,  142,    5,    5,    7,    0,    6,    0,
-        4,    4,    4,  216,  140,  201,  201,  200,  199,    0,
-      202,    0,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      176,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      200,  200,  200,   74,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,    0,  143,  143,    5,    5,    7,    0,    6,    0,
+        4,    4,    4,  217,  141,  202,  202,  201,  200,    0,
+      203,    0,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      177,  200,  200,  200,  200,  200,  200,  200,  200,  200,
 
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,    0,    0,  199,    0,  201,    0,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,   83,  199,  199,  199,  199,
-      199,   93,  199,  199,   97,  199,  199,  199,  199,  107,
-      199,  199,  199,  111,  199,  199,  199,  199,  199,  199,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,    0,    0,  200,    0,  202,    0,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,   84,  200,  200,  200,  200,
+      200,   94,  200,  200,   98,  200,  200,  200,  200,  108,
+      200,  200,  200,  112,  200,  200,  200,  200,  200,  200,
 
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,    6,    4,    4,    0,  200,
-      200,  199,  145,  199,  146,  199,  199,  199,  199,  156,
-      157,  199,  158,  199,  199,  199,  199,  199,  199,  199,
-      199,  167,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  179,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  197,  199,    0,    0,  199,    0,  201,    0,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,   22,  199,  156,  199,  199,   27,  199,  199,  199,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,    6,    4,    4,    0,  201,
+      201,  200,  146,  200,  147,  200,  200,  200,  200,  157,
+      158,  200,  159,  200,  200,  200,  200,  200,  200,  200,
+      200,  168,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  180,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  198,  200,    0,    0,  200,    0,  202,    0,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,   22,  200,  157,  200,  200,   27,  200,  200,  200,
 
-      199,  199,  199,  199,  199,  199,  199,  199,   47,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,   59,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-       76,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,   88,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  132,  199,  199,  199,  199,  199,    4,
-        4,    0,  140,  200,  200,  144,  199,  199,  199,  199,
-      199,  147,  199,  160,  199,  199,  199,  199,  199,  199,
+      200,  200,  200,  200,  200,  200,  200,  200,   48,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,   60,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+       77,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,   89,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  133,  200,  200,  200,  200,  200,    4,
+        4,    0,  141,  201,  201,  145,  200,  200,  200,  200,
+      200,  148,  200,  161,  200,  200,  200,  200,  200,  200,
 
-      199,  199,  170,  199,  172,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  187,  199,  199,
-      190,  199,  199,  199,  199,  199,  195,  199,  199,    0,
-        0,  199,    0,  201,    0,  199,  199,  199,   12,  199,
-      199,  199,  199,  199,   18,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,   51,  199,  199,  199,
-      199,   57,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,   79,  199,   81,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      200,  200,  171,  200,  173,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  188,  200,  200,
+      191,  200,  200,  200,  200,  200,  196,  200,  200,    0,
+        0,  200,    0,  202,    0,  200,  200,  200,   12,  200,
+      200,  200,  200,  200,   18,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,   52,  200,  200,  200,
+      200,   58,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,   80,  200,   82,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
 
-      199,  199,  199,  199,  199,  199,  199,  199,  106,  199,
-      109,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,    4,    3,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  166,
-      199,  169,  199,  173,  175,  199,  199,  199,  181,  199,
-      148,  199,  199,  199,  199,  188,  189,  191,  199,  192,
-      193,  199,  199,  199,    0,    0,  199,    0,  201,    0,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      200,  200,  200,  200,  200,  200,  200,  200,  107,  200,
+      110,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,    4,    3,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  167,
+      200,  170,  200,  174,  176,  200,  200,  200,  182,  200,
+      149,  200,  200,  200,  200,  189,  190,  192,  200,  193,
+      194,  200,  200,  200,    0,    0,  200,    0,  202,    0,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
 
-       36,   37,  199,  199,  199,  199,  199,  199,  199,   49,
-      199,  199,  199,  199,  199,  199,  199,   60,  199,  199,
-      199,   66,  199,   69,   70,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,   85,  199,  199,  199,   90,   92,
-      199,  199,  199,  199,  199,  199,  101,  199,  199,  199,
-      108,  199,  199,  199,  199,  115,  116,  199,  119,  199,
-      121,  199,  123,  193,  199,  199,  199,  129,  199,  199,
-      199,  134,  199,  199,  199,    4,    3,    3,  199,  151,
-      153,  199,  199,  155,  159,  199,  162,  163,  199,  199,
-      199,  199,  199,  199,  178,  180,  199,  199,  199,  199,
+       36,   37,  200,  200,  200,  200,  200,  200,  200,   50,
+      200,  200,  200,  200,  200,  200,  200,   61,  200,  200,
+      200,   67,  200,   70,   71,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,   86,  200,  200,  200,   91,   93,
+      200,  200,  200,  200,  200,  200,  102,  200,  200,  200,
+      109,  200,  200,  200,  200,  116,  117,  200,  120,  200,
+      122,  200,  124,  194,  200,  200,  200,  130,  200,  200,
+      200,  135,  200,  200,  200,    4,    3,    3,  200,  152,
+      154,  200,  200,  156,  160,  200,  163,  164,  200,  200,
+      200,  200,  200,  200,  179,  181,  200,  200,  200,  200,
 
-      199,  149,  194,  199,  198,    0,    0,  199,    0,  201,
-        0,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,   25,  199,  199,  199,  199,  199,
-       35,  163,  199,  199,  199,   45,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,   74,  199,  199,  199,  199,   82,   84,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  102,  103,
-      199,  199,  199,  199,  199,  199,  118,  199,  199,  199,
-      199,  199,  199,  199,  199,  133,  135,  199,  199,    4,
-        3,  199,  199,  199,  199,  199,  164,  199,  199,  171,
+      200,  150,  195,  200,  199,    0,    0,  200,    0,  202,
+        0,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,   25,  200,  200,  200,  200,  200,
+       35,  164,  200,  200,  200,   46,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,   75,  200,  200,  200,  200,   83,   85,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  103,  104,
+      200,  200,  200,  200,  200,  200,  119,  200,  200,  200,
+      200,  200,  200,  200,  200,  134,  136,  200,  200,    4,
+        3,  200,  200,  200,  200,  200,  165,  200,  200,  172,
 
-      199,  199,  199,  199,  184,  185,  199,  196,    0,  138,
-      199,    0,  201,    0,  199,  199,  199,  199,   14,  199,
-      199,  199,  199,  199,   21,  199,  199,   26,  199,  199,
-      199,   33,  199,  199,  199,  199,  199,  199,  199,  199,
-       50,   52,  199,  199,  199,  199,  199,  199,   62,  199,
-      199,  199,  199,  199,  199,   78,  199,  199,  199,  199,
-      199,  199,   95,   96,   98,  199,  199,  199,  199,  110,
-      199,  199,  199,  199,  120,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,    4,    3,  199,  152,  150,
-      199,  161,  199,  199,  174,  177,  182,  199,  199,    0,
+      200,  200,  200,  200,  185,  186,  200,  197,    0,  139,
+      200,    0,  202,    0,  200,  200,  200,  200,   14,  200,
+      200,  200,  200,  200,   21,  200,  200,   26,  200,  200,
+      200,   33,  200,  200,  200,  200,  200,  200,  200,  200,
+      200,   51,   53,  200,  200,  200,  200,  200,  200,   63,
+      200,  200,  200,  200,  200,  200,   79,  200,  200,  200,
+      200,  200,  200,   96,   97,   99,  200,  200,  200,  200,
+      111,  200,  200,  200,  200,  121,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,    4,    3,  200,  153,
+      151,  200,  162,  200,  200,  175,  178,  183,  200,  200,
 
-      199,    0,    0,  201,  199,  199,   13,  199,   16,   17,
-      199,  199,   23,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,   46,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,   77,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  105,  199,
-      199,  199,  199,  199,  124,  199,  126,  199,  128,  199,
-      199,  136,  199,    4,    3,    0,  141,  199,  199,  199,
-      183,  199,    0,  199,    0,    0,  199,  199,   15,   19,
-      199,   24,  199,   29,  199,  199,  199,  199,  199,  199,
-       42,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+        0,  200,    0,    0,  202,  200,  200,   13,  200,   16,
+       17,  200,  200,   23,  200,  200,  200,  200,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,   47,  200,  200,
+      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+       78,  200,  200,  200,  200,  200,  200,  200,  200,  200,
+      106,  200,  200,  200,  200,  200,  125,  200,  127,  200,
+      129,  200,  200,  137,  200,    4,    3,    0,  142,  200,
+      200,  200,  184,  200,    0,  200,    0,    0,  200,  200,
+       15,   19,  200,   24,  200,   29,  200,  200,  200,  200,
+      200,  200,  200,   43,  200,  200,  200,  200,  200,  200,
 
-       63,   68,  199,  199,   75,  199,  199,  199,  199,  199,
-      199,  199,  199,  104,  199,  199,  114,  199,  199,  199,
-      199,  199,  199,  199,    1,    3,  154,  199,  199,  199,
-        0,  199,    0,    0,   10,  199,   20,   28,  199,  199,
-       38,  199,  199,  199,  199,   44,  199,   53,   54,  199,
-      199,  199,   61,  199,  199,  199,  199,  199,  199,  199,
-      199,   91,  199,  199,  199,  199,  113,  117,  199,  125,
-      127,  199,  199,  199,    3,  199,  199,  186,    0,    0,
-        0,    0,   11,  199,  199,  199,   40,  199,  199,  199,
-      199,   56,  199,  199,  199,  199,  199,  199,   86,   87,
+      200,  200,  200,   64,   69,  200,  200,   76,  200,  200,
+      200,  200,  200,  200,  200,  200,  105,  200,  200,  115,
+      200,  200,  200,  200,  200,  200,  200,    1,    3,  155,
+      200,  200,  200,    0,  200,    0,    0,   10,  200,   20,
+       28,  200,  200,  200,   39,  200,  200,  200,  200,   45,
+      200,   54,   55,  200,  200,  200,   62,  200,  200,  200,
+      200,  200,  200,  200,  200,   92,  200,  200,  200,  200,
+      114,  118,  200,  126,  128,  200,  200,  200,    3,  200,
+      200,  187,    0,    0,    0,    0,   11,  200,  200,  200,
+      200,   41,  200,  200,  200,  200,   57,  200,  200,  200,
 
-      199,  199,  199,  199,  112,  199,  130,  199,  137,    3,
-      165,  199,    0,    0,    0,  199,  199,  199,   41,  199,
-      199,  199,  199,  199,   65,   71,  199,  199,   89,   94,
-      199,  199,  199,  199,    3,  168,    0,    0,    0,   30,
-      199,  199,  199,  199,  199,   58,  199,  199,  199,   99,
-      199,  199,  199,    3,    0,    0,    0,  199,   34,   39,
-      199,   48,   55,  199,   72,  199,  100,  199,  199,    2,
-        0,    0,    0,  199,  199,  199,  199,  199,  199,  131,
-        2,    0,    0,    0,  199,  199,  199,   64,  199,  199,
-        0,    0,    0,  199,  199,  199,  199,  199,  139,    0,
+      200,  200,  200,   87,   88,  200,  200,  200,  200,  113,
+      200,  131,  200,  138,    3,  166,  200,    0,    0,    0,
+      200,  200,  200,  200,   42,  200,  200,  200,  200,  200,
+       66,   72,  200,  200,   90,   95,  200,  200,  200,  200,
+        3,  169,    0,    0,    0,   30,  200,  200,  200,  200,
+      200,  200,   59,  200,  200,  200,  100,  200,  200,  200,
+        3,    0,    0,    0,  200,   34,  200,   40,  200,   49,
+       56,  200,   73,  200,  101,  200,  200,    2,    0,    0,
+        0,  200,  200,   38,  200,  200,  200,  200,  132,    2,
+        0,    0,    0,  200,  200,  200,   65,  200,  200,    0,
 
-        0,  199,  199,  199,   80,  199,    0,    0,  199,  199,
-      199,  199,    0,    0,  199,  199,  199,  122,    0,    0,
-      199,  199,  199,    0,    0,  199,  199,  199,    0,    0,
-      199,   32,  199,    0,    0,  199,   43,    0,    0,   31,
+        0,    0,  200,  200,  200,  200,  200,  140,    0,    0,
+      200,  200,  200,   81,  200,    0,    0,  200,  200,  200,
+      200,    0,    0,  200,  200,  200,  123,    0,    0,  200,
+      200,  200,    0,    0,  200,  200,  200,    0,    0,  200,
+       32,  200,    0,    0,  200,   44,    0,    0,   31,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    9,
-        0,    9,    0
+        0,    0,    0,    0,    0,    0,    0,    0,    9,    0,
+        9,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -856,86 +857,86 @@
         4,    4,    4,    4,    4,    1
     } ;
 
-static const flex_int16_t yy_base[1507] =
+static const flex_int16_t yy_base[1516] =
     {   0,
-        0,   65,  113,   66,   60,   67, 2481, 2480,   88,   90,
-     2484, 2487, 2487, 2487, 2462,   64, 2475,   62, 2459, 2468,
-      164,   53,   68, 2458,   73,    0, 2455, 2472, 2443, 2452,
-     2444, 2487,   64, 2418,   36,  146,   48,   51, 2421,   57,
-       58,   59,   61, 2431,   84,   89,  143, 2406, 2416, 2414,
-     2425, 2400,  157,  132,  140,  223,  256,  151,  307, 2442,
-     2487,  165,  165,  248,  309,  198,  287,  186,  313,  292,
+        0,   65,  113,   66,   60,   67, 2490, 2489,   88,   90,
+     2493, 2496, 2496, 2496, 2471,   64, 2484,   62, 2468, 2477,
+      164,   53,   68, 2467,   73,    0, 2464, 2481, 2452, 2461,
+     2453, 2496,   64, 2427,   36,  146,   48,   51, 2430,   57,
+       58,   59,   61, 2440,   84,   89,  143, 2415, 2425, 2423,
+     2434, 2409,  157,  132,  140,  223,  256,  151,  307, 2451,
+     2496,  165,  165,  248,  309,  198,  287,  186,  313,  292,
       314,  177,  321,  252,  218,  331,  188,  257,  356,  162,
-      141, 2462, 2487,  399,    0,  207,    0, 2415, 2414, 2487,
-      248, 2487, 2458, 2487,  195, 2487, 2457, 2487, 2447,  406,
+      141, 2471, 2496,  399,    0,  207,    0, 2424, 2423, 2496,
+      248, 2496, 2467, 2496,  195, 2496, 2466, 2496, 2456,  406,
 
-      220,   65,   84,    0, 2487, 2487, 2487, 2487, 2487,    0,
-     2430,  281, 2429, 2430, 2422,  329, 2411, 2413, 2412, 2392,
-     2402, 2395, 2389, 2389, 2402, 2405,  234, 2389,  344, 2385,
-     2382, 2381, 2383, 2380, 2384, 2384, 2381, 2380,  278, 2393,
-     2380, 2373, 2388, 2378, 2371, 2374,  150, 2374, 2372,  248,
-     2385,  105, 2376, 2368,  185, 2374, 2374, 2487,  386,  144,
-     2372,  312, 2362, 2375,  426,  459,    0,  507, 2389, 2357,
-      297, 2364, 2361,  351, 2349, 2353, 2358,  321, 2356, 2350,
-      277, 2364,  355, 2349,  463, 2348, 2354,  349, 2364,  387,
-     2359,  406, 2342,  439, 2344, 2356, 2346, 2347, 2354, 2352,
+      220,   65,   84,    0, 2496, 2496, 2496, 2496, 2496,    0,
+     2439,  281, 2438, 2439, 2431,  329, 2420, 2422, 2421, 2401,
+     2411, 2404, 2398, 2398, 2411, 2414,  234, 2398,  344, 2394,
+     2391, 2390, 2392, 2389, 2393, 2393, 2390, 2389,  278, 2402,
+     2389, 2382, 2397, 2387, 2380, 2383,  150, 2383, 2381,  248,
+     2394,  105, 2385, 2377,  185, 2383, 2383, 2496,  386,  144,
+     2381,  312, 2371, 2384,  426,  459,    0,  507, 2398, 2366,
+      297, 2373, 2370,  351, 2358, 2362, 2367,  321, 2365, 2359,
+      277, 2373,  355, 2358,  463, 2357, 2363,  349, 2373,  387,
+     2368,  406, 2351,  439, 2353, 2365, 2355, 2356, 2363, 2361,
 
-     2342, 2351,   68,  456, 2345, 2339,  215,  251,  369,  373,
-     2351, 2330,  352, 2340, 2337, 2343, 2327, 2326, 2340,  377,
-     2335, 2328, 2324, 2339, 2326,  498,  444, 2318,  502, 2329,
-     2319, 2335, 2331,  405, 2329, 2324, 2332, 2313, 2312, 2329,
-     2310,  452, 2364, 2363, 2362,  553,    0,  423, 2361,  433,
-        0, 2319, 2308, 2487,  560, 2487, 2487,  429, 2329,  451,
-     2487, 2356, 2330, 2332, 2331, 2302, 2296, 2310, 2310, 2300,
-     2306, 2305, 2306, 2290, 2295, 2287, 2305, 2292, 2302, 2297,
-     2285, 2298, 2286, 2283, 2292, 2295, 2291, 2289, 2278, 2283,
-     2286, 2272, 2282, 2280, 2266, 2281, 2282, 2268, 2274, 2261,
+     2351, 2360,   68,  456, 2354, 2348,  215,  251,  369,  373,
+     2360, 2339,  352, 2349, 2346, 2352, 2336, 2335, 2349,  377,
+     2344, 2337, 2333, 2348, 2335,  498,  444, 2327,  502, 2338,
+     2328, 2344, 2340,  405, 2338, 2333, 2341, 2322, 2321, 2338,
+     2319,  452, 2373, 2372, 2371,  553,    0,  423, 2370,  433,
+        0, 2328, 2317, 2496,  560, 2496, 2496,  429, 2338,  451,
+     2496, 2365, 2339, 2341, 2340, 2311, 2305, 2319, 2319, 2309,
+     2315, 2314, 2315, 2299, 2304, 2296, 2314, 2301, 2311, 2306,
+     2294, 2307, 2295, 2292, 2301, 2304, 2300, 2298, 2287, 2292,
+     2295, 2281, 2291, 2289, 2275, 2290, 2291, 2277, 2283, 2270,
 
-     2261, 2262, 2265, 2273, 2265, 2256, 2272, 2253, 2253, 2267,
-     2256, 2261, 2265, 2267, 2263, 2265, 2253,  592,  625,    0,
-      673, 2255, 2245, 2250,  442, 2246, 2242, 2244, 2244, 2242,
-     2252, 2247, 2253, 2248, 2240, 2248, 2245,  287,  454, 2229,
-      440, 2247, 2229,  506, 2232, 2225, 2232, 2241, 2227, 2225,
-     2222, 2225, 2226, 2225, 2224, 2228, 2231, 2228, 2228, 2215,
-     2226, 2216, 2213, 2225, 2216,  483, 2201, 2188, 2201, 2168,
-     2169, 2172, 2153, 2169, 2151,    0, 2149, 2153,  521, 2158,
-     2161,    0, 2164, 2155,    0, 2145, 2138, 2143,  534,    0,
-     2144, 2135, 2137,    0, 2122, 2118, 2118, 2115, 2129, 2130,
+     2270, 2271, 2274, 2282, 2274, 2265, 2281, 2262, 2262, 2276,
+     2265, 2270, 2274, 2276, 2272, 2274, 2262,  592,  625,    0,
+      673, 2264, 2254, 2259,  442, 2255, 2251, 2253, 2253, 2251,
+     2261, 2256, 2262, 2257, 2249, 2257, 2254,  287,  454, 2238,
+      440, 2256, 2238,  506, 2241, 2234, 2241, 2250, 2236, 2234,
+     2231, 2234, 2235, 2234, 2233, 2237, 2240, 2237, 2237, 2224,
+     2235, 2225, 2222, 2236, 2230,  483, 2222, 2212, 2226, 2219,
+     2213, 2213, 2191, 2178, 2160,    0, 2158, 2162,  521, 2167,
+     2170,    0, 2173, 2164,    0, 2154, 2151, 2156,  534,    0,
+     2157, 2161, 2159,    0, 2144, 2140, 2127, 2124, 2138, 2139,
 
-     2116,  476,  468, 2113, 2127, 2117, 2125,  485,  524, 2121,
-     2119, 2122, 2090, 2092, 2102, 2143, 2093, 2086,  609,  404,
-      489, 2117,    0, 2118,    0, 2081, 2080, 2084, 2093,    0,
-        0, 2085,    0, 2091, 2071, 2073, 2075, 2054, 2067, 2064,
-     2060,    0, 2053, 2052, 2049, 2056, 2049, 2048, 2051, 2046,
-     2058,    0, 2043, 2045, 2024, 2041, 2036, 2021, 2030, 2029,
-     2017, 2031, 2020, 2022, 2024, 2031, 2028, 2023, 2021, 2010,
-     2003,    0, 1991, 1996, 2000, 2006,  706,  739,    0,  787,
-     1983, 1999, 1998, 1988, 1998, 1980, 1979, 1996, 1990, 1992,
-     1990,    0, 1973, 1976,  519, 1963,    0, 1974, 1958,  539,
+     2125,  476,  468, 2122, 2136, 2126, 2134,  485,  524, 2134,
+     2132, 2135, 2116, 2114, 2124, 2165, 2102, 2095,  609,  404,
+      489, 2126,    0, 2127,    0, 2090, 2089, 2093, 2102,    0,
+        0, 2094,    0, 2104, 2084, 2086, 2101, 2076, 2089, 2086,
+     2069,    0, 2062, 2061, 2058, 2065, 2058, 2057, 2060, 2055,
+     2071,    0, 2056, 2058, 2050, 2063, 2058, 2043, 2039, 2038,
+     2026, 2040, 2029, 2031, 2033, 2040, 2037, 2036, 2034, 2023,
+     2029,    0, 2013, 2018, 2022, 2015,  706,  739,    0,  787,
+     1992, 2008, 2007, 1997, 2007, 1989, 1988, 2005, 2003, 2005,
+     2003,    0, 1999, 1998,  519, 1985,    0, 1996, 1967,  539,
 
-     1957, 1967, 1949, 1964, 1966,  536, 1966, 1966,    0, 1953,
-     1956, 1944, 1933, 1924, 1922, 1933, 1921, 1921, 1934,    0,
-     1926,  556, 1932, 1920, 1917, 1925, 1929, 1923, 1918, 1906,
-        0, 1905, 1897, 1898, 1901, 1903, 1906, 1888, 1901, 1886,
-     1885, 1878, 1895, 1897, 1878,  534, 1882, 1884, 1872, 1869,
-      548, 1872, 1851, 1866, 1869, 1858, 1867,  411, 1853, 1869,
-     1857,  591, 1865, 1863, 1857,  549, 1858, 1859, 1840, 1839,
-     1823, 1843, 1835,    0, 1827, 1822, 1830, 1820, 1837, 1836,
-     1815,  664,  801, 2487, 2487,    0, 1843,  636, 1830, 1814,
-     1826,    0, 1807,    0, 1791, 1793, 1798, 1808, 1794, 1802,
+     1966, 1976, 1958, 1973, 1975,  536, 1975, 1975,    0, 1962,
+     1969, 1957, 1946, 1950, 1944, 1955, 1943, 1930, 1943,    0,
+     1935,  556, 1941, 1929, 1926, 1934, 1938, 1932, 1931, 1919,
+        0, 1918, 1923, 1920, 1923, 1925, 1915, 1897, 1910, 1895,
+     1894, 1887, 1904, 1906, 1887,  534, 1895, 1897, 1885, 1895,
+      548, 1894, 1873, 1888, 1878, 1867, 1876,  411, 1862, 1878,
+     1866,  591, 1874, 1872, 1866,  549, 1871, 1872, 1853, 1865,
+     1845, 1865, 1857,    0, 1836, 1831, 1839, 1829, 1846, 1845,
+     1824,  664,  801, 2496, 2496,    0, 1852,  636, 1839, 1827,
+     1839,    0, 1820,    0, 1817, 1815, 1820, 1830, 1803, 1811,
 
-     1806, 1791,    0, 1799,    0, 1783, 1797, 1795, 1782, 1791,
-     1789, 1777, 1767, 1760, 1757, 1758, 1762,    0, 1770, 1767,
-        0, 1769, 1759, 1750, 1761, 1763,    0, 1753, 1762, 1761,
-     1747, 1730,  833,  866,    0,  914, 1744, 1737,    0, 1728,
-     1741, 1740, 1727, 1729, 1738, 1729, 1734, 1732, 1731, 1728,
-     1727, 1708, 1694, 1688,  559, 1698, 1705, 1697, 1705, 1695,
-     1705, 1692, 1698, 1698, 1697, 1692,    0,  555, 1677, 1692,
-     1694,    0, 1680, 1674, 1663, 1668, 1656, 1661, 1659, 1668,
-     1653, 1662, 1667, 1655, 1668, 1655, 1643,    0, 1660,    0,
-     1640, 1645, 1640, 1629, 1638, 1622, 1616, 1620, 1619, 1629,
+     1815, 1800,    0, 1808,    0, 1792, 1806, 1804, 1791, 1804,
+     1802, 1790, 1793, 1782, 1779, 1780, 1771,    0, 1779, 1776,
+        0, 1778, 1768, 1759, 1770, 1772,    0, 1762, 1775, 1774,
+     1760, 1756,  833,  866,    0,  914, 1766, 1759,    0, 1750,
+     1750, 1749, 1736, 1738, 1747, 1738, 1743, 1741, 1740, 1741,
+     1740, 1721, 1720, 1710,  559, 1720, 1727, 1706, 1714, 1704,
+     1714, 1701, 1707, 1707, 1706, 1701,    0,  555, 1690, 1705,
+     1707,    0, 1706, 1696, 1685, 1690, 1665, 1670, 1668, 1677,
+     1662, 1671, 1676, 1664, 1677, 1668, 1656,    0, 1673,    0,
+     1666, 1667, 1662, 1651, 1647, 1631, 1625, 1629, 1628, 1638,
 
-     1623, 1621, 1634, 1625, 1625, 1623, 1593, 1610,    0,  127,
+     1632, 1630, 1643, 1638, 1638, 1636, 1619, 1632,    0,  127,
         0,  155,  219,  297,  355,  447,  462,  479,  492,  524,
       548,  541,  575,  582,  588,  594,  607,  610,  604,  613,
       599,  614,  607,  608,  611,  620,  669,  642,  658,  657,
@@ -960,243 +961,245 @@
       882,    0,    0,  882,    0,  877,  933,  896, 1061, 1094,
         0, 1142,  901,  883,  899,  900,  897,  893,  905,  888,
       896,  906,  893,  893,    0,  917,  928,  928,  935,  916,
-        0,  939,  917,  938,  937,    0,  935,  942,  924,  941,
-      933,  925,  942,  943,  956,  950,  966,  963,  968,  955,
-      956,    0,  952,  969,  975,  971,    0,    0,  968,  968,
-      975,  984,  978,  988,  982,  991,  996,  997,    0,  980,
-      994,  975,  995, 1005,  991, 1002,    0, 1013, 1015, 1033,
-     1005, 1000, 1009, 1004, 1011,    0,    0, 1015, 1007, 1018,
-     1008, 1032, 1065, 1032, 1048, 1045,    0, 1033, 1051,    0,
+        0,  939,  917,  938,  938,    0,  938,  943,  925,  942,
+      934,  940,  943,  948,  958,  951,  967,  964,  970,  956,
+      957,    0,  953,  970,  976,  978,    0,    0,  969,  969,
+      976,  985,  980,  989,  983,  992,  997,  998,    0,  981,
+      995,  984,  996, 1006,  996, 1003,    0, 1014, 1016, 1033,
+     1006, 1001, 1010, 1005, 1012,    0,    0, 1016, 1008, 1019,
+     1009, 1047, 1066, 1037, 1049, 1046,    0, 1034, 1053,    0,
 
-     1052, 1050, 1051, 1052,    0,    0, 1046,    0, 1058, 1097,
-     1054, 1175, 1210, 1103, 1104, 1075, 1081, 1065,    0, 1070,
-     1066, 1067, 1080, 1086,    0, 1071, 1078,    0, 1073, 1082,
-     1093, 1080, 1094, 1089, 1104, 1102, 1105, 1100, 1105, 1099,
-        0,    0, 1097, 1108, 1114, 1122, 1113, 1125,    0, 1117,
-     1118, 1128, 1134, 1121, 1117,    0, 1123, 1137, 1138, 1121,
-     1129, 1141,    0,    0,    0, 1147, 1153, 1153, 1159,    0,
-     1144, 1161, 1161, 1152,    0, 1153, 1150, 1145, 1164, 1172,
-     1153, 1155, 1174, 1179, 1172, 1177, 1193, 1231,    0,    0,
-     1192,    0, 1190, 1177,    0,    0,    0, 1179, 1199, 1195,
+     1053, 1051, 1052, 1053,    0,    0, 1047,    0, 1059, 1098,
+     1068, 1175, 1210, 1104, 1105, 1080, 1083, 1066,    0, 1071,
+     1067, 1069, 1081, 1087,    0, 1072, 1079,    0, 1074, 1089,
+     1094, 1081, 1089, 1096, 1092, 1110, 1103, 1106, 1101, 1107,
+     1101,    0,    0, 1099, 1118, 1124, 1124, 1119, 1127,    0,
+     1119, 1120, 1130, 1136, 1123, 1119,    0, 1125, 1139, 1140,
+     1123, 1144, 1156,    0,    0,    0, 1149, 1159, 1159, 1161,
+        0, 1146, 1163, 1163, 1154,    0, 1155, 1152, 1147, 1166,
+     1174, 1155, 1164, 1190, 1188, 1174, 1179, 1195, 1233,    0,
+        0, 1194,    0, 1192, 1180,    0,    0,    0, 1182, 1201,
 
-     1190, 1260,    0, 1233, 1194, 1205,    0, 1194,    0,    0,
-     1205, 1198,    0, 1191, 1191, 1208, 1213, 1210, 1202, 1205,
-     1206, 1218, 1216, 1206, 1209,    0, 1212, 1203, 1206, 1219,
-     1208, 1214, 1206, 1226, 1221, 1240, 1235, 1245,    0, 1242,
-     1248, 1249, 1243, 1252, 1234, 1248, 1251, 1251,    0, 1258,
-     1250, 1256, 1263, 1254,    0, 1253,    0, 1269,    0, 1263,
-     1253,    0, 1265, 1304, 1259, 1313, 2487, 1257, 1277, 1258,
-        0, 1261, 1268, 1281, 1310,    0, 1286, 1280,    0,    0,
-     1288,    0, 1279,    0, 1285, 1282, 1297, 1290, 1282, 1302,
-        0, 1291, 1302, 1292, 1303, 1294, 1309, 1296, 1315, 1299,
+     1198, 1193, 1260,    0, 1235, 1196, 1207,    0, 1196,    0,
+        0, 1207, 1200,    0, 1193, 1193, 1210, 1215, 1212, 1196,
+     1205, 1208, 1209, 1222, 1220, 1210, 1212,    0, 1215, 1206,
+     1209, 1222, 1213, 1226, 1218, 1236, 1228, 1247, 1242, 1248,
+        0, 1245, 1251, 1252, 1246, 1255, 1237, 1251, 1254, 1254,
+        0, 1267, 1259, 1265, 1266, 1257,    0, 1256,    0, 1272,
+        0, 1266, 1256,    0, 1268, 1307, 1262, 1316, 2496, 1260,
+     1280, 1261,    0, 1264, 1271, 1284, 1313,    0, 1289, 1283,
+        0,    0, 1291,    0, 1282,    0, 1288, 1285, 1299, 1301,
+     1294, 1286, 1306,    0, 1295, 1306, 1296, 1307, 1298, 1319,
 
-     1317,    0, 1313, 1322,    0, 1324, 1313, 1314, 1325, 1321,
-     1320, 1316, 1325,    0, 1331, 1313,    0, 1329, 1315, 1331,
-     1318, 1337, 1319, 1339,    0, 1323,    0, 1339, 1324, 1325,
-     1344, 1383, 1373,    0,    0, 1349,    0,    0, 1351, 1337,
-        0, 1356, 1357, 1351, 1345,    0, 1362,    0,    0, 1352,
-     1348, 1367,    0, 1354, 1358, 1357, 1358, 1371, 1375, 1376,
-     1370,    0, 1368, 1369, 1384, 1367,    0,    0, 1382,    0,
-        0, 1376, 1384, 1378, 1386, 1387, 1393,    0, 1431, 1432,
-     1482,    0,    0, 1384, 1388, 1386,    0, 1394, 1391, 1400,
-     1398,    0, 1383, 1390, 1393, 1402, 1403, 1403,    0,    0,
+     1300, 1319, 1303, 1321,    0, 1317, 1326,    0, 1328, 1317,
+     1318, 1329, 1325, 1324, 1320, 1329,    0, 1335, 1317,    0,
+     1333, 1319, 1335, 1322, 1341, 1323, 1343,    0, 1327,    0,
+     1343, 1328, 1329, 1348, 1387, 1377,    0,    0, 1353,    0,
+        0, 1355, 1341, 1347,    0, 1361, 1362, 1356, 1350,    0,
+     1367,    0,    0, 1357, 1353, 1372,    0, 1359, 1363, 1362,
+     1363, 1382, 1380, 1381, 1375,    0, 1373, 1374, 1389, 1372,
+        0,    0, 1387,    0,    0, 1381, 1389, 1383, 1391, 1392,
+     1398,    0, 1436, 1437, 1487,    0,    0, 1389, 1393, 1391,
+     1392,    0, 1400, 1397, 1406, 1404,    0, 1389, 1396, 1399,
 
-     1404, 1396, 1393, 1391,    0, 1389,    0, 1396,    0, 1409,
-        0, 1396, 1416, 1515, 1446, 1414, 1405, 1416,    0, 1403,
-     1403, 1412, 1420, 1406,    0,    0, 1415, 1420,    0,    0,
-     1424, 1418, 1411, 1414, 1424,    0, 1416, 1463,    0, 1436,
-     1423, 1425, 1419, 1435, 1436,    0, 1437, 1438, 1443,    0,
-     1425, 1446, 1432, 1424, 1435, 1548,    0, 1451,    0,    0,
-     1445,    0,    0, 1427,    0, 1430,    0, 1445, 1436,    0,
-     1454, 1581,    0, 1449, 1466, 1458, 1453, 1465, 1474,    0,
-        0, 1462, 1614,    0, 1458, 1460, 1476,    0, 1465, 1467,
-     1475, 1647, 1524, 1492, 1489, 1478, 1486, 1501, 2487, 1534,
+     1408, 1409, 1409,    0,    0, 1410, 1402, 1399, 1397,    0,
+     1395,    0, 1402,    0, 1415,    0, 1402, 1422, 1520, 1452,
+     1420, 1411, 1412, 1423,    0, 1410, 1410, 1419, 1427, 1413,
+        0,    0, 1422, 1427,    0,    0, 1431, 1425, 1418, 1421,
+     1431,    0, 1423, 1470,    0, 1443, 1430, 1444, 1433, 1427,
+     1443, 1444,    0, 1445, 1446, 1451,    0, 1433, 1454, 1440,
+     1432, 1443, 1553,    0, 1456,    0, 1454,    0, 1454,    0,
+        0, 1444,    0, 1447,    0, 1468, 1459,    0, 1469, 1586,
+        0, 1464, 1475,    0, 1467, 1462, 1474, 1483,    0,    0,
+     1471, 1619,    0, 1467, 1469, 1498,    0, 1487, 1489, 1501,
 
-        0, 1489, 1507, 1509,    0, 1498, 1680,    0, 1502, 1500,
-     1510, 1509, 1713,    0, 1514, 1520, 1522,    0, 1746,    0,
-     1519, 1510, 1532, 1779, 1566, 1530, 1535, 1538, 1570,    0,
-     1517,    0, 1533, 1812,    0, 1540,    0, 1845,    0,    0,
-     1878,    0, 1911,    0, 1944,    0, 1977,    0, 2010,    0,
-     2043,    0, 2076,    0, 2109,    0, 2142,    0, 2175, 2487,
-     1597, 2487, 2487, 2220, 2224, 2228, 2232, 2236, 2238, 2242,
-     2246, 2250, 1582, 2254, 1583, 1584, 1598, 1600, 2258, 1606,
-     1607, 1608, 1609, 1610, 1611, 1612, 1613, 2262, 1614, 1615,
-     1616, 1617, 1631, 1632, 1633, 1638, 1639, 1640, 1641, 1642,
+     1652, 1537, 1505, 1502, 1487, 1495, 1510, 2496, 1543,    0,
+     1498, 1516, 1518,    0, 1507, 1685,    0, 1511, 1522, 1532,
+     1531, 1718,    0, 1540, 1533, 1535,    0, 1751,    0, 1532,
+     1519, 1541, 1784, 1575, 1539, 1544, 1547, 1579,    0, 1526,
+        0, 1542, 1817,    0, 1562,    0, 1850,    0,    0, 1883,
+        0, 1916,    0, 1949,    0, 1982,    0, 2015,    0, 2048,
+        0, 2081,    0, 2114,    0, 2147,    0, 2180, 2496, 1602,
+     2496, 2496, 2225, 2229, 2233, 2237, 2241, 2243, 2247, 2251,
+     2255, 1605, 2259, 1611, 1612, 1613, 1614, 2263, 1615, 1616,
+     1617, 1618, 1619, 1620, 1621, 1622, 2267, 1636, 1637, 1638,
 
-     1643, 1644, 1645, 1646, 1647, 1648
+     1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652,
+     1653, 1654, 1655, 1669, 1670
     } ;
 
-static const flex_int16_t yy_def[1507] =
+static const flex_int16_t yy_def[1516] =
     {   0,
-     1463,    1,    1,    3, 1464, 1464, 1465, 1465, 1466, 1466,
-     1463, 1463, 1463, 1463, 1463, 1467, 1463, 1468, 1463, 1463,
-     1463,   21, 1463, 1463, 1463, 1469, 1469, 1469, 1469, 1469,
-     1469, 1463, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1463, 1463, 1463, 1469, 1467, 1463,   57, 1469,   59,
-     1463,   59,   59,   59,   59,   59,   59, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1463, 1463, 1463, 1463, 1470, 1471, 1472, 1472, 1472, 1463,
-     1467, 1463, 1467, 1463, 1468, 1463, 1468, 1463, 1463, 1463,
+     1472,    1,    1,    3, 1473, 1473, 1474, 1474, 1475, 1475,
+     1472, 1472, 1472, 1472, 1472, 1476, 1472, 1477, 1472, 1472,
+     1472,   21, 1472, 1472, 1472, 1478, 1478, 1478, 1478, 1478,
+     1478, 1472, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1472, 1472, 1472, 1478, 1476, 1472,   57, 1478,   59,
+     1472,   59,   59,   59,   59,   59,   59, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1472, 1472, 1472, 1472, 1479, 1480, 1481, 1481, 1481, 1472,
+     1476, 1472, 1476, 1472, 1477, 1472, 1477, 1472, 1472, 1472,
 
-       21, 1463, 1463, 1473, 1463, 1463, 1463, 1463, 1463, 1469,
-     1469, 1474, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1463, 1463, 1463,
-     1463, 1463, 1463, 1469,   56, 1463, 1475, 1469,  168,  168,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-      168,  168, 1469, 1469,  168, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469,  168, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
+       21, 1472, 1472, 1482, 1472, 1472, 1472, 1472, 1472, 1478,
+     1478, 1483, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1472, 1472, 1472,
+     1472, 1472, 1472, 1478,   56, 1472, 1484, 1478,  168,  168,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+      168,  168, 1478, 1478,  168, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478,  168, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
 
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1463, 1463, 1463, 1463, 1463, 1470, 1471, 1463, 1471,
-     1472, 1472, 1472, 1463, 1463, 1463, 1463, 1473, 1469, 1474,
-     1463, 1474, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1472, 1472, 1472, 1472, 1472, 1479, 1480, 1472, 1480,
+     1481, 1481, 1481, 1472, 1472, 1472, 1472, 1482, 1478, 1483,
+     1472, 1483, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
 
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1463, 1463, 1469,   56, 1463, 1476,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469,  321, 1469, 1469, 1469, 1469,
-      321,  321, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1472, 1472, 1478,   56, 1472, 1485,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478,  321, 1478, 1478, 1478, 1478,
+      321,  321, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
 
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1463, 1472, 1472, 1463, 1463,
-     1463, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1463, 1463, 1469,   56, 1463, 1477, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469,  480, 1469, 1469, 1469, 1469,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1472, 1481, 1481, 1472, 1472,
+     1472, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1472, 1472, 1478,   56, 1472, 1486, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478,  480, 1478, 1478, 1478, 1478,
 
-     1469, 1469,  480, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1472,
-     1472, 1463, 1463, 1463, 1463, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
+     1478, 1478,  480, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1481,
+     1481, 1472, 1472, 1472, 1472, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
 
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1463,
-     1463, 1469,   56, 1463, 1478, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1472,
+     1472, 1478,   56, 1472, 1487, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
 
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1472, 1479, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1463, 1463, 1469,   56, 1463, 1480,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1481, 1488, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1472, 1472, 1478,   56, 1472, 1489,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
 
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1472, 1479, 1479, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1481, 1488, 1488, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
 
-     1469, 1469, 1469, 1469, 1469, 1463, 1463, 1469,   56, 1463,
-     1481, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1472,
-     1479, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
+     1478, 1478, 1478, 1478, 1478, 1472, 1472, 1478,   56, 1472,
+     1490, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1481,
+     1488, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
 
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1463, 1463,
-     1469,   56, 1463, 1463, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1472, 1479, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1463,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1472, 1472,
+     1478,   56, 1472, 1472, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1481, 1488, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
 
-     1469,   56, 1482, 1013, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1472, 1479, 1463, 1463, 1469, 1469, 1469,
-     1469, 1469, 1463, 1469,   56, 1483, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
+     1472, 1478,   56, 1491, 1013, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1481, 1488, 1472, 1472, 1478,
+     1478, 1478, 1478, 1478, 1472, 1478,   56, 1492, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
 
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1472, 1479, 1469, 1469, 1469, 1469,
-     1463, 1469,   56, 1484, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1479, 1469, 1469, 1469, 1463, 1463,
-       56, 1485, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1481, 1488, 1478,
+     1478, 1478, 1478, 1472, 1478,   56, 1493, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1488, 1478,
+     1478, 1478, 1472, 1472,   56, 1494, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
 
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1479,
-     1469, 1469, 1463,   56, 1463, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1479, 1469, 1463, 1102, 1486, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1469, 1469, 1469, 1479, 1463,   56, 1487, 1469, 1469, 1469,
-     1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1488,
-     1463,   56, 1489, 1469, 1469, 1469, 1469, 1469, 1469, 1469,
-     1488, 1463,   56, 1490, 1469, 1469, 1469, 1469, 1469, 1469,
-     1463,   56, 1463, 1469, 1469, 1469, 1469, 1469, 1463, 1102,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1488, 1478, 1478, 1472,   56, 1472,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1488, 1478, 1472, 1103, 1495, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
+     1488, 1472,   56, 1496, 1478, 1478, 1478, 1478, 1478, 1478,
+     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1497, 1472,   56,
+     1498, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1497,
+     1472,   56, 1499, 1478, 1478, 1478, 1478, 1478, 1478, 1472,
 
-     1491, 1469, 1469, 1469, 1469, 1469,   56, 1492, 1469, 1469,
-     1469, 1469,   56, 1493, 1469, 1469, 1469, 1469,   56, 1494,
-     1469, 1469, 1469,   56, 1463, 1469, 1469, 1469, 1102, 1495,
-     1469, 1469, 1469,   56, 1496, 1469, 1469,   56, 1497, 1469,
-       56, 1498,   56, 1499,   56, 1500,   56, 1501,   56, 1502,
-       56, 1503,   56, 1504,   56, 1505,   56, 1506,   56, 1463,
-     1102, 1463,    0, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
+       56, 1472, 1478, 1478, 1478, 1478, 1478, 1472, 1103, 1500,
+     1478, 1478, 1478, 1478, 1478,   56, 1501, 1478, 1478, 1478,
+     1478,   56, 1502, 1478, 1478, 1478, 1478,   56, 1503, 1478,
+     1478, 1478,   56, 1472, 1478, 1478, 1478, 1103, 1504, 1478,
+     1478, 1478,   56, 1505, 1478, 1478,   56, 1506, 1478,   56,
+     1507,   56, 1508,   56, 1509,   56, 1510,   56, 1511,   56,
+     1512,   56, 1513,   56, 1514,   56, 1515,   56, 1472, 1103,
+     1472,    0, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
 
-     1463, 1463, 1463, 1463, 1463, 1463
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472
     } ;
 
-static const flex_int16_t yy_nxt[2554] =
+static const flex_int16_t yy_nxt[2563] =
     {   0,
        12,   13,   14,   15,   16,   12,   17,   18,   12,   12,
        19,   20,   21,   22,   22,   22,   22,   22,   22,   23,
@@ -1206,29 +1209,29 @@
        42,   43,   44,   26,   45,   26,   46,   47,   48,   49,
        50,   51,   26,   26,   26,   52,   53,   81,   92,   96,
        54,   82,   84,   84,   84,   84,   84,   84,   84,   84,
-       84,   84,   84,   84,   84,   84, 1463,  105,  106,  122,
+       84,   84,   84,   84,   84,   84, 1472,  105,  106,  122,
        83,  129,   83,  108,  109,  130,  136,  256,   97,  123,
 
        93,  131,  116,  132,  142,  117,  140,  133,  118,  138,
-      139,  257,  141,  134,  143, 1463,   55,   56,  119,  365,
+      139,  257,  141,  134,  143, 1472,   55,   56,  119,  365,
       137,  120,  366,  145,  256,   57,   58,   58,   58,   58,
        58,   58,  147,  162,  257,   59,   59,   59,   60,   88,
       146,   88,  242,   26,  306,  162,  243,  307,  148,   89,
        61,   89,   62,   63,   64,   65,   66,   67,  159,   68,
        69,  308,  160,   70,   71,   72,   73,   74,  851,   75,
        76,   77,   78,   79,   80,  100,  101,  101,  101,  101,
-      101,  101,  101,  142, 1463,  124,  163,  164,  125,  149,
+      101,  101,  101,  142, 1472,  124,  163,  164,  125,  149,
       150,  102,  126,  143,  151,  299,  103,  104,  163,  127,
 
       128,  152,   96,  157,  153,  300,  170,  852,  161,  241,
-      171,  249,  177, 1463,  102,  172,  144,  173,  178,  174,
+      171,  249,  177, 1472,  102,  172,  144,  173,  178,  174,
       212,  179,  175,  103,  176,  197,  104,   92,  180,  198,
       213,   97,  311,  199,  231,  165,  165,  165,  165,  165,
       165,  165,  312,  250,  232,  165,  165,  165,  165,  137,
-      190,  154,   92, 1463,  133,  292,  371,  225,  191,   93,
+      190,  154,   92, 1472,  133,  292,  371,  225,  191,   93,
       192,  226,  165,  165,  165,  165,  165,  165,  166,  166,
       166,  166,  166,  166,  166,  275,  853,  148,  167,  167,
-      167,  167, 1463,  102,   93,  261,  276,  181,  103,  104,
+      167,  167, 1472,  102,   93,  261,  276,  181,  103,  104,
       182,  220,  372,  303,  126,  167,  167,  167,  167,  167,
 
       167,  183,  128,  293,  233,  221,  102,  184,  222,  234,
@@ -1250,7 +1253,7 @@
       318,  318,  408,  242,  714,  261,  420,  243,  616,  250,
       354,  421,  312,  584,  285,  318,  318,  318,  318,  318,
       318,  319,  319,  319,  319,  319,  319,  319,  356,  420,
-      484,  320,  320,  320,  320, 1463,  102,  262,  421,  303,
+      484,  320,  320,  320,  320, 1472,  102,  262,  421,  303,
       437,  103,  286,  502,  367,  485,  399,  856,  320,  320,
 
       320,  320,  320,  320,  341,  857,  290,  342,  400,  102,
@@ -1304,184 +1307,185 @@
      1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
      1026,  991, 1027,  781,  781,  781,  781,  781,  781,  909,
       909,  909,  909,  909,  909,  909, 1028, 1029, 1030,  909,
-      909,  909,  909, 1031, 1032, 1036, 1037, 1038, 1039, 1033,
-     1034, 1040, 1041, 1042, 1043, 1044,  909,  909,  909,  909,
-      909,  909,  910,  910,  910,  910,  910,  910,  910, 1035,
+      909,  909,  909, 1031, 1032, 1037, 1038, 1033, 1039, 1034,
+     1035, 1040, 1041, 1042, 1043, 1044,  909,  909,  909,  909,
+      909,  909,  910,  910,  910,  910,  910,  910,  910, 1036,
 
      1045, 1046,  911,  911,  911,  911, 1047,  102, 1048, 1049,
      1050, 1051,  103, 1052, 1053, 1054, 1055, 1056, 1057,  911,
       911,  911,  911,  911,  911, 1058, 1059, 1060, 1061, 1062,
       102, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070,  103,
       912,  912,  912,  912,  912,  912,  912, 1071, 1072, 1073,
-      912,  912,  912,  912, 1074, 1075, 1076, 1079, 1080, 1081,
+      912,  912,  912,  912, 1074, 1075, 1076, 1077, 1080, 1081,
      1082, 1083, 1084, 1085, 1086, 1087, 1088,  912,  912,  912,
       912,  912,  912, 1012, 1012, 1012, 1012, 1012, 1012, 1012,
-     1077, 1089, 1090, 1012, 1012, 1012, 1012, 1091, 1092, 1093,
-     1094, 1078, 1095, 1096, 1097, 1098, 1099, 1100, 1010, 1101,
+     1078, 1089, 1090, 1012, 1012, 1012, 1012, 1091, 1092, 1093,
+     1094, 1079, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1010,
 
      1012, 1012, 1012, 1012, 1012, 1012, 1013, 1013, 1013, 1013,
-     1013, 1013, 1013, 1103, 1103, 1105, 1014, 1014, 1014, 1014,
+     1013, 1013, 1013, 1102, 1104, 1104, 1014, 1014, 1014, 1014,
      1106,  102, 1107, 1108, 1109, 1110,  103, 1111, 1112, 1113,
      1114, 1115, 1116, 1014, 1014, 1014, 1014, 1014, 1014, 1117,
-     1118, 1119, 1120, 1121,  102, 1123, 1124, 1125, 1126, 1127,
+     1118, 1119, 1120, 1121,  102, 1122, 1125, 1126, 1127, 1123,
      1128, 1129, 1130,  103, 1015, 1015, 1015, 1015, 1015, 1015,
-     1015, 1131, 1122, 1132, 1015, 1015, 1015, 1015, 1133, 1134,
+     1015, 1131, 1132, 1133, 1015, 1015, 1015, 1015, 1124, 1134,
      1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144,
-     1145, 1015, 1015, 1015, 1015, 1015, 1015, 1102, 1102, 1102,
-     1102, 1102, 1102, 1102, 1146, 1147, 1148, 1102, 1102, 1102,
+     1145, 1015, 1015, 1015, 1015, 1015, 1015, 1103, 1103, 1103,
+     1103, 1103, 1103, 1103, 1146, 1147, 1148, 1103, 1103, 1103,
 
-     1102, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157,
-     1158, 1159, 1160, 1161, 1102, 1102, 1102, 1102, 1102, 1102,
-     1103, 1162, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1163,
-     1164, 1165, 1166, 1168, 1169, 1170, 1171,  102, 1172, 1167,
-     1173, 1174,  103, 1463, 1177, 1178, 1179, 1180, 1181, 1182,
+     1103, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157,
+     1158, 1159, 1160, 1161, 1103, 1103, 1103, 1103, 1103, 1103,
+     1104, 1162, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1163,
+     1164, 1165, 1166, 1167, 1168, 1170, 1171,  102, 1172, 1173,
+     1174, 1169,  103, 1175, 1176, 1472, 1179, 1180, 1181, 1182,
      1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192,
       102, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200,  103,
-     1175, 1201,   91,   91,   91,   91,   91,   91,   91, 1202,
+     1177, 1201,   91,   91,   91,   91,   91,   91,   91, 1202,
      1203, 1204,   91,   91,   91,   91, 1205, 1206, 1207, 1208,
      1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217,   91,
 
        91,   91,   91,   91,   91, 1218, 1219, 1220, 1221, 1222,
-     1223, 1224, 1225, 1226, 1166, 1227, 1228, 1229, 1230, 1231,
-     1232, 1167, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1235,
-     1236, 1237, 1233, 1233, 1233, 1233, 1238, 1239, 1240, 1241,
-     1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1233,
-     1233, 1233, 1233, 1233, 1233, 1251, 1252, 1253, 1254, 1255,
+     1223, 1224, 1225, 1226, 1227, 1228, 1229, 1168, 1230, 1231,
+     1232, 1233, 1234, 1235, 1169, 1236, 1236, 1236, 1236, 1236,
+     1236, 1236, 1238, 1239, 1240, 1236, 1236, 1236, 1236, 1241,
+     1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251,
+     1252, 1253, 1236, 1236, 1236, 1236, 1236, 1236, 1254, 1255,
      1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265,
      1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275,
-     1276, 1277, 1278, 1279, 1280, 1281, 1281, 1281, 1281, 1281,
-     1281, 1281, 1283, 1284, 1285, 1281, 1281, 1281, 1281, 1286,
+     1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285,
+     1285, 1285, 1285, 1285, 1285, 1285, 1287, 1288, 1289, 1285,
 
-     1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296,
-     1297, 1298, 1281, 1281, 1281, 1281, 1281, 1281, 1299, 1300,
-     1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310,
-     1311, 1312, 1280, 1280, 1316, 1317, 1318, 1319, 1320, 1321,
+     1285, 1285, 1285, 1290, 1291, 1292, 1293, 1294, 1295, 1296,
+     1297, 1298, 1299, 1300, 1301, 1302, 1285, 1285, 1285, 1285,
+     1285, 1285, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310,
+     1311, 1312, 1313, 1314, 1315, 1316, 1317, 1284, 1284, 1321,
      1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331,
-     1332, 1333, 1334, 1335, 1336, 1337, 1339, 1340, 1341, 1342,
-     1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352,
-     1353, 1354, 1355, 1356, 1358, 1359, 1360, 1361, 1362, 1363,
-     1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1376, 1377,
-     1378, 1379, 1380, 1313, 1314, 1314, 1314, 1314, 1314, 1314,
+     1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341,
+     1342, 1343, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352,
+     1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
+     1363, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373,
+     1374, 1375, 1376, 1377, 1378, 1379, 1384, 1385, 1318, 1319,
 
-     1314, 1382, 1385, 1374, 1314, 1314, 1314, 1314, 1375, 1386,
-     1387, 1388, 1389, 1390, 1391, 1394, 1395, 1396, 1397, 1398,
-     1399, 1314, 1314, 1314, 1314, 1314, 1314, 1338, 1338, 1338,
-     1338, 1338, 1338, 1338, 1401, 1402, 1403, 1338, 1338, 1338,
-     1338, 1404, 1405, 1406, 1407, 1409, 1410, 1411, 1412, 1415,
-     1416, 1417, 1418, 1421, 1338, 1338, 1338, 1338, 1338, 1338,
-     1372, 1372, 1372, 1372, 1372, 1372, 1372, 1422, 1423, 1426,
-     1372, 1372, 1372, 1372, 1427, 1428, 1430, 1431, 1432, 1433,
-     1434, 1436, 1437, 1440,  258,  320,  479, 1372, 1372, 1372,
-     1372, 1372, 1372, 1383, 1383, 1383, 1383, 1383, 1383, 1383,
+     1319, 1319, 1319, 1319, 1319, 1319, 1386, 1387, 1382, 1319,
+     1319, 1319, 1319, 1383, 1388, 1389, 1391, 1394, 1395, 1396,
+     1397, 1398, 1399, 1400, 1403, 1404, 1319, 1319, 1319, 1319,
+     1319, 1319, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1405,
+     1406, 1407, 1344, 1344, 1344, 1344, 1408, 1410, 1411, 1412,
+     1413, 1414, 1415, 1416, 1418, 1419, 1420, 1421, 1424, 1344,
+     1344, 1344, 1344, 1344, 1344, 1380, 1380, 1380, 1380, 1380,
+     1380, 1380, 1425, 1426, 1427, 1380, 1380, 1380, 1380, 1430,
+     1431, 1432, 1435, 1436, 1437, 1439, 1440, 1441, 1442, 1443,
+     1445, 1446, 1380, 1380, 1380, 1380, 1380, 1380, 1392, 1392,
 
-      635, 1462,  780, 1383, 1383, 1383, 1383,   91,  911, 1014,
-     1176, 1234, 1282, 1315, 1357, 1373, 1384, 1393, 1408, 1414,
-     1383, 1383, 1383, 1383, 1383, 1383, 1392, 1392, 1392, 1392,
-     1392, 1392, 1392, 1420, 1425, 1435, 1392, 1392, 1392, 1392,
-     1439, 1442, 1444, 1446, 1448, 1450, 1452, 1454, 1456, 1458,
-     1460,  850,  849, 1392, 1392, 1392, 1392, 1392, 1392, 1400,
-     1400, 1400, 1400, 1400, 1400, 1400,  848,  847,  846, 1400,
-     1400, 1400, 1400,  845,  844,  843,  842,  841,  840,  839,
-      838,  837,  836,  835,  834,  833, 1400, 1400, 1400, 1400,
-     1400, 1400, 1413, 1413, 1413, 1413, 1413, 1413, 1413,  832,
+     1392, 1392, 1392, 1392, 1392, 1449, 1471,  258, 1392, 1392,
+     1392, 1392,   91,  320,  479,  635,  780,  911, 1014, 1178,
+     1237, 1286, 1320, 1364, 1381, 1392, 1392, 1392, 1392, 1392,
+     1392, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1393, 1402,
+     1417, 1401, 1401, 1401, 1401, 1423, 1429, 1434, 1444, 1448,
+     1451, 1453, 1455, 1457, 1459, 1461, 1463, 1465, 1401, 1401,
+     1401, 1401, 1401, 1401, 1409, 1409, 1409, 1409, 1409, 1409,
+     1409, 1467, 1469,  850, 1409, 1409, 1409, 1409,  849,  848,
+      847,  846,  845,  844,  843,  842,  841,  840,  839,  838,
+      837, 1409, 1409, 1409, 1409, 1409, 1409, 1422, 1422, 1422,
 
-      831,  830, 1413, 1413, 1413, 1413,  829,  828,  827,  826,
-      825,  824,  823,  822,  821,  820,  819,  818,  817, 1413,
-     1413, 1413, 1413, 1413, 1413, 1419, 1419, 1419, 1419, 1419,
-     1419, 1419,  816,  815,  814, 1419, 1419, 1419, 1419,  811,
-      810,  809,  808,  807,  806,  805,  804,  803,  802,  801,
-      798,  797, 1419, 1419, 1419, 1419, 1419, 1419, 1424, 1424,
-     1424, 1424, 1424, 1424, 1424,  796,  795,  794, 1424, 1424,
-     1424, 1424,  793,  792,  791,  790,  789,  788,  787,  786,
-      785,  784,  783,  782,  777, 1424, 1424, 1424, 1424, 1424,
-     1424, 1429, 1429, 1429, 1429, 1429, 1429, 1429,  776,  775,
+     1422, 1422, 1422, 1422,  836,  835,  834, 1422, 1422, 1422,
+     1422,  833,  832,  831,  830,  829,  828,  827,  826,  825,
+      824,  823,  822,  821, 1422, 1422, 1422, 1422, 1422, 1422,
+     1428, 1428, 1428, 1428, 1428, 1428, 1428,  820,  819,  818,
+     1428, 1428, 1428, 1428,  817,  816,  815,  814,  811,  810,
+      809,  808,  807,  806,  805,  804,  803, 1428, 1428, 1428,
+     1428, 1428, 1428, 1433, 1433, 1433, 1433, 1433, 1433, 1433,
+      802,  801,  798, 1433, 1433, 1433, 1433,  797,  796,  795,
+      794,  793,  792,  791,  790,  789,  788,  787,  786,  785,
+     1433, 1433, 1433, 1433, 1433, 1433, 1438, 1438, 1438, 1438,
 
-      774, 1429, 1429, 1429, 1429,  773,  772,  771,  770,  769,
-      768,  767,  766,  765,  764,  763,  762,  761, 1429, 1429,
-     1429, 1429, 1429, 1429, 1438, 1438, 1438, 1438, 1438, 1438,
-     1438,  760,  759,  758, 1438, 1438, 1438, 1438,  757,  756,
-      755,  754,  753,  752,  751,  750,  749,  748,  747,  746,
-      745, 1438, 1438, 1438, 1438, 1438, 1438, 1441, 1441, 1441,
-     1441, 1441, 1441, 1441,  744,  743,  742, 1441, 1441, 1441,
-     1441,  741,  738,  737,  736,  735,  734,  733,  732,  731,
-      730,  729,  728,  727, 1441, 1441, 1441, 1441, 1441, 1441,
-     1443, 1443, 1443, 1443, 1443, 1443, 1443,  726,  725,  724,
+     1438, 1438, 1438,  784,  783,  782, 1438, 1438, 1438, 1438,
+      777,  776,  775,  774,  773,  772,  771,  770,  769,  768,
+      767,  766,  765, 1438, 1438, 1438, 1438, 1438, 1438, 1447,
+     1447, 1447, 1447, 1447, 1447, 1447,  764,  763,  762, 1447,
+     1447, 1447, 1447,  761,  760,  759,  758,  757,  756,  755,
+      754,  753,  752,  751,  750,  749, 1447, 1447, 1447, 1447,
+     1447, 1447, 1450, 1450, 1450, 1450, 1450, 1450, 1450,  748,
+      747,  746, 1450, 1450, 1450, 1450,  745,  744,  743,  742,
+      741,  738,  737,  736,  735,  734,  733,  732,  731, 1450,
+     1450, 1450, 1450, 1450, 1450, 1452, 1452, 1452, 1452, 1452,
 
-     1443, 1443, 1443, 1443,  721,  720,  719,  717,  716,  715,
-      713,  712,  711,  710,  709,  708,  705, 1443, 1443, 1443,
-     1443, 1443, 1443, 1445, 1445, 1445, 1445, 1445, 1445, 1445,
-      704,  703,  702, 1445, 1445, 1445, 1445,  699,  698,  697,
-      696,  695,  694,  693,  692,  691,  690,  689,  688,  687,
-     1445, 1445, 1445, 1445, 1445, 1445, 1447, 1447, 1447, 1447,
-     1447, 1447, 1447,  686,  685,  684, 1447, 1447, 1447, 1447,
-      683,  682,  681,  680,  679,  678,  674,  673,  672,  671,
-      670,  669,  668, 1447, 1447, 1447, 1447, 1447, 1447, 1449,
-     1449, 1449, 1449, 1449, 1449, 1449,  667,  666,  665, 1449,
+     1452, 1452,  730,  729,  728, 1452, 1452, 1452, 1452,  727,
+      726,  725,  724,  721,  720,  719,  717,  716,  715,  713,
+      712,  711, 1452, 1452, 1452, 1452, 1452, 1452, 1454, 1454,
+     1454, 1454, 1454, 1454, 1454,  710,  709,  708, 1454, 1454,
+     1454, 1454,  705,  704,  703,  702,  699,  698,  697,  696,
+      695,  694,  693,  692,  691, 1454, 1454, 1454, 1454, 1454,
+     1454, 1456, 1456, 1456, 1456, 1456, 1456, 1456,  690,  689,
+      688, 1456, 1456, 1456, 1456,  687,  686,  685,  684,  683,
+      682,  681,  680,  679,  678,  674,  673,  672, 1456, 1456,
+     1456, 1456, 1456, 1456, 1458, 1458, 1458, 1458, 1458, 1458,
 
-     1449, 1449, 1449,  664,  663,  662,  660,  659,  658,  657,
-      656,  653,  652,  592,  649,  648, 1449, 1449, 1449, 1449,
-     1449, 1449, 1451, 1451, 1451, 1451, 1451, 1451, 1451,  647,
-      646,  645, 1451, 1451, 1451, 1451,  644,  643,  642,  641,
-      640,  639,  638,  637,  632,  631,  630,  629,  628, 1451,
-     1451, 1451, 1451, 1451, 1451, 1453, 1453, 1453, 1453, 1453,
-     1453, 1453,  627,  626,  625, 1453, 1453, 1453, 1453,  624,
-      623,  622,  621,  620,  619,  618,  617,  616,  615,  614,
-      613,  612, 1453, 1453, 1453, 1453, 1453, 1453, 1455, 1455,
-     1455, 1455, 1455, 1455, 1455,  611,  610,  609, 1455, 1455,
+     1458,  671,  670,  669, 1458, 1458, 1458, 1458,  668,  667,
+      666,  665,  664,  663,  662,  660,  659,  658,  657,  656,
+      653, 1458, 1458, 1458, 1458, 1458, 1458, 1460, 1460, 1460,
+     1460, 1460, 1460, 1460,  652,  592,  649, 1460, 1460, 1460,
+     1460,  648,  647,  646,  645,  644,  643,  642,  641,  640,
+      639,  638,  637,  632, 1460, 1460, 1460, 1460, 1460, 1460,
+     1462, 1462, 1462, 1462, 1462, 1462, 1462,  631,  630,  629,
+     1462, 1462, 1462, 1462,  628,  627,  626,  625,  624,  623,
+      622,  621,  620,  619,  618,  617,  616, 1462, 1462, 1462,
+     1462, 1462, 1462, 1464, 1464, 1464, 1464, 1464, 1464, 1464,
 
-     1455, 1455,  608,  607,  606,  605,  604,  603,  602,  601,
-      600,  599,  598,  597,  596, 1455, 1455, 1455, 1455, 1455,
-     1455, 1457, 1457, 1457, 1457, 1457, 1457, 1457,  595,  594,
-      593, 1457, 1457, 1457, 1457,  592,  591,  590,  589,  588,
-      587,  586,  581,  580,  416,  579,  578,  577, 1457, 1457,
-     1457, 1457, 1457, 1457, 1459, 1459, 1459, 1459, 1459, 1459,
-     1459,  576,  575,  574, 1459, 1459, 1459, 1459,  570,  569,
-      568,  567,  563,  562,  561,  560,  559,  558,  557,  556,
-      555, 1459, 1459, 1459, 1459, 1459, 1459, 1461, 1461, 1461,
-     1461, 1461, 1461, 1461,  554,  549,  548, 1461, 1461, 1461,
+      615,  614,  613, 1464, 1464, 1464, 1464,  612,  611,  610,
+      609,  608,  607,  606,  605,  604,  603,  602,  601,  600,
+     1464, 1464, 1464, 1464, 1464, 1464, 1466, 1466, 1466, 1466,
+     1466, 1466, 1466,  599,  598,  597, 1466, 1466, 1466, 1466,
+      596,  595,  594,  593,  592,  591,  590,  589,  588,  587,
+      586,  581,  580, 1466, 1466, 1466, 1466, 1466, 1466, 1468,
+     1468, 1468, 1468, 1468, 1468, 1468,  416,  579,  578, 1468,
+     1468, 1468, 1468,  577,  576,  575,  574,  570,  569,  568,
+      567,  563,  562,  561,  560,  559, 1468, 1468, 1468, 1468,
+     1468, 1468, 1470, 1470, 1470, 1470, 1470, 1470, 1470,  558,
 
-     1461,  547,  546,  545,  544,  543,  539,  538,  537,  536,
-      535,  534,  533,  532, 1461, 1461, 1461, 1461, 1461, 1461,
-       83,   83,   83,   83,   85,   85,   85,   85,   87,   87,
-       87,   87,   91,   91,   91,   91,   95,   95,   95,   95,
-      110,  110,  247,  531,  247,  247,  248,  530,  248,  248,
-      251,  529,  251,  251,  260,  260,  260,  260,  877,  527,
-      877,  877, 1381,  526, 1381, 1381,  525,  524,  523,  522,
-      521,  520,  519,  518,  517,  516,  515,  514,  513,  512,
-      511,  510,  509,  508,  507,  504,  503,  501,  497,  496,
-      495,  494,  493,  492,  491,  490,  489,  488,  487,  486,
+      557,  556, 1470, 1470, 1470, 1470,  555,  554,  549,  548,
+      547,  546,  545,  544,  543,  539,  538,  537,  536, 1470,
+     1470, 1470, 1470, 1470, 1470,   83,   83,   83,   83,   85,
+       85,   85,   85,   87,   87,   87,   87,   91,   91,   91,
+       91,   95,   95,   95,   95,  110,  110,  247,  535,  247,
+      247,  248,  534,  248,  248,  251,  533,  251,  251,  260,
+      260,  260,  260,  877,  532,  877,  877, 1390,  531, 1390,
+     1390,  530,  529,  527,  526,  525,  524,  523,  522,  521,
+      520,  519,  518,  517,  516,  515,  514,  513,  512,  511,
+      510,  509,  508,  507,  504,  503,  501,  497,  496,  495,
 
-      483,  482,  481,  476,  475,  474,  473,  472,  471,  470,
-      469,  468,  467,  466,  465,  464,  463,  462,  461,  460,
-      459,  458,  457,  456,  455,  454,  453,  452,  451,  450,
-      449,  448,  447,  446,  445,  444,  443,  442,  441,  440,
-      439,  438,  437,  436,  435,  434,  433,  432,  431,  430,
-      429,  428,  307,  427,  426,  425,  424,  423, 1463,  422,
-      418,  417,  416,  245,  244,  244,  415,  414,  413,  412,
-      411,  410,  409,  407,  406,  405,  404,  401,  392,  391,
-      390,  389,  388,  386,  385,  384,  383,  382,  381,  377,
-      376,  370,  369,  364,  363,  362,  361,  360,  359,  358,
+      494,  493,  492,  491,  490,  489,  488,  487,  486,  483,
+      482,  481,  476,  475,  474,  473,  472,  471,  470,  469,
+      468,  467,  466,  465,  464,  463,  462,  461,  460,  459,
+      458,  457,  456,  455,  454,  453,  452,  451,  450,  449,
+      448,  447,  446,  445,  444,  443,  442,  441,  440,  439,
+      438,  437,  436,  435,  434,  433,  432,  431,  430,  429,
+      428,  307,  427,  426,  425,  424,  423, 1472,  422,  418,
+      417,  416,  245,  244,  244,  415,  414,  413,  412,  411,
+      410,  409,  407,  406,  405,  404,  401,  392,  391,  390,
+      389,  388,  386,  385,  384,  383,  382,  381,  377,  376,
 
-      357,  355,  352,  347,  345,  344,  340,  336,  334,  333,
-      331,  330,  329,  326,  325,  322,  259,  317,  316,  315,
-      314,  313,  310,  309,  305,  302,  301,  298,  297,  296,
-      295,  294,  293,  292,  289,  288,  287,  286,  285,  284,
-      283,  282,  281,  277,  274,  273,  272,  271,  270,  269,
-      268,  145,  267,  125,  265,  264,  263,  259,  254, 1463,
-     1463,  253,  252,  244,  169,  158,  157,  156,  155,  154,
-      144,  135,  121,  115,  114,  113,  112,  111,  107,   99,
-       98,   94,   90, 1463,   86,   86,   11, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
+      370,  369,  364,  363,  362,  361,  360,  359,  358,  357,
+      355,  352,  347,  345,  344,  340,  336,  334,  333,  331,
+      330,  329,  326,  325,  322,  259,  317,  316,  315,  314,
+      313,  310,  309,  305,  302,  301,  298,  297,  296,  295,
+      294,  293,  292,  289,  288,  287,  286,  285,  284,  283,
+      282,  281,  277,  274,  273,  272,  271,  270,  269,  268,
+      145,  267,  125,  265,  264,  263,  259,  254, 1472, 1472,
+      253,  252,  244,  169,  158,  157,  156,  155,  154,  144,
+      135,  121,  115,  114,  113,  112,  111,  107,   99,   98,
+       94,   90, 1472,   86,   86,   11, 1472, 1472, 1472, 1472,
 
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472
     } ;
 
-static const flex_int16_t yy_chk[2554] =
+static const flex_int16_t yy_chk[2563] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1589,181 +1593,182 @@
       913,  914,  915,  916,  917,  918,  919,  920,  921,  922,
       923,  878,  924,  636,  636,  636,  636,  636,  636,  778,
       778,  778,  778,  778,  778,  778,  926,  927,  928,  778,
-      778,  778,  778,  929,  930,  933,  934,  935,  937,  932,
-      932,  938,  939,  940,  941,  942,  778,  778,  778,  778,
+      778,  778,  778,  929,  930,  933,  934,  932,  935,  932,
+      932,  937,  938,  939,  940,  941,  778,  778,  778,  778,
       778,  778,  779,  779,  779,  779,  779,  779,  779,  932,
 
-      943,  944,  779,  779,  779,  779,  945,  779,  946,  947,
-      948,  949,  779,  950,  951,  953,  954,  955,  956,  779,
-      779,  779,  779,  779,  779,  959,  960,  961,  962,  963,
-      779,  964,  965,  966,  967,  968,  970,  971,  972,  779,
-      781,  781,  781,  781,  781,  781,  781,  973,  974,  975,
-      781,  781,  781,  781,  976,  978,  979,  981,  982,  983,
-      984,  985,  988,  989,  990,  991,  992,  781,  781,  781,
+      942,  943,  779,  779,  779,  779,  944,  779,  945,  946,
+      947,  948,  779,  949,  950,  951,  953,  954,  955,  779,
+      779,  779,  779,  779,  779,  956,  959,  960,  961,  962,
+      779,  963,  964,  965,  966,  967,  968,  970,  971,  779,
+      781,  781,  781,  781,  781,  781,  781,  972,  973,  974,
+      781,  781,  781,  781,  975,  976,  978,  979,  981,  982,
+      983,  984,  985,  988,  989,  990,  991,  781,  781,  781,
       781,  781,  781,  909,  909,  909,  909,  909,  909,  909,
-      980,  993,  994,  909,  909,  909,  909,  995,  996,  998,
-      999,  980, 1001, 1002, 1003, 1004, 1007, 1009, 1010, 1011,
+      980,  992,  993,  909,  909,  909,  909,  994,  995,  996,
+      998,  980,  999, 1001, 1002, 1003, 1004, 1007, 1009, 1010,
 
       909,  909,  909,  909,  909,  909,  910,  910,  910,  910,
-      910,  910,  910, 1014, 1015, 1016,  910,  910,  910,  910,
-     1017,  910, 1018, 1020, 1021, 1022,  910, 1023, 1024, 1026,
-     1027, 1029, 1030,  910,  910,  910,  910,  910,  910, 1031,
-     1032, 1033, 1034, 1035,  910, 1036, 1037, 1038, 1039, 1040,
-     1043, 1044, 1045,  910,  912,  912,  912,  912,  912,  912,
-      912, 1046, 1035, 1047,  912,  912,  912,  912, 1048, 1050,
-     1051, 1052, 1053, 1054, 1055, 1057, 1058, 1059, 1060, 1061,
-     1062,  912,  912,  912,  912,  912,  912, 1012, 1012, 1012,
-     1012, 1012, 1012, 1012, 1066, 1067, 1068, 1012, 1012, 1012,
+      910,  910,  910, 1011, 1014, 1015,  910,  910,  910,  910,
+     1016,  910, 1017, 1018, 1020, 1021,  910, 1022, 1023, 1024,
+     1026, 1027, 1029,  910,  910,  910,  910,  910,  910, 1030,
+     1031, 1032, 1033, 1034,  910, 1035, 1037, 1038, 1039, 1036,
+     1040, 1041, 1044,  910,  912,  912,  912,  912,  912,  912,
+      912, 1045, 1046, 1047,  912,  912,  912,  912, 1036, 1048,
+     1049, 1051, 1052, 1053, 1054, 1055, 1056, 1058, 1059, 1060,
+     1061,  912,  912,  912,  912,  912,  912, 1012, 1012, 1012,
+     1012, 1012, 1012, 1012, 1062, 1063, 1067, 1012, 1012, 1012,
 
-     1012, 1069, 1071, 1072, 1073, 1074, 1076, 1077, 1078, 1079,
-     1080, 1081, 1082, 1083, 1012, 1012, 1012, 1012, 1012, 1012,
-     1013, 1084, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1085,
-     1086, 1087, 1088, 1091, 1093, 1094, 1098, 1013, 1099, 1088,
-     1100, 1101, 1013, 1104, 1105, 1106, 1108, 1111, 1112, 1114,
-     1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124,
-     1013, 1125, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1013,
-     1102, 1134, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1135,
-     1136, 1137, 1102, 1102, 1102, 1102, 1138, 1140, 1141, 1142,
-     1143, 1144, 1145, 1146, 1147, 1148, 1150, 1151, 1152, 1102,
+     1012, 1068, 1069, 1070, 1072, 1073, 1074, 1075, 1077, 1078,
+     1079, 1080, 1081, 1082, 1012, 1012, 1012, 1012, 1012, 1012,
+     1013, 1083, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1084,
+     1085, 1086, 1087, 1088, 1089, 1092, 1094, 1013, 1095, 1099,
+     1100, 1089, 1013, 1101, 1102, 1105, 1106, 1107, 1109, 1112,
+     1113, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
+     1013, 1124, 1125, 1126, 1127, 1129, 1130, 1131, 1132, 1013,
+     1103, 1133, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1134,
+     1135, 1136, 1103, 1103, 1103, 1103, 1137, 1138, 1139, 1140,
+     1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1103,
 
-     1102, 1102, 1102, 1102, 1102, 1153, 1154, 1156, 1158, 1160,
-     1161, 1163, 1164, 1165, 1166, 1168, 1169, 1170, 1172, 1173,
-     1174, 1166, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1177,
-     1178, 1181, 1175, 1175, 1175, 1175, 1183, 1185, 1186, 1187,
-     1188, 1189, 1190, 1192, 1193, 1194, 1195, 1196, 1197, 1175,
-     1175, 1175, 1175, 1175, 1175, 1198, 1199, 1200, 1201, 1201,
-     1203, 1204, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213,
-     1215, 1216, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1226,
-     1228, 1229, 1230, 1231, 1232, 1233, 1233, 1233, 1233, 1233,
-     1233, 1233, 1236, 1239, 1240, 1233, 1233, 1233, 1233, 1242,
+     1103, 1103, 1103, 1103, 1103, 1152, 1153, 1154, 1155, 1156,
+     1158, 1160, 1162, 1163, 1165, 1166, 1167, 1168, 1170, 1171,
+     1172, 1174, 1175, 1176, 1168, 1177, 1177, 1177, 1177, 1177,
+     1177, 1177, 1179, 1180, 1183, 1177, 1177, 1177, 1177, 1185,
+     1187, 1188, 1189, 1190, 1191, 1192, 1193, 1195, 1196, 1197,
+     1198, 1199, 1177, 1177, 1177, 1177, 1177, 1177, 1200, 1201,
+     1202, 1203, 1204, 1204, 1206, 1207, 1209, 1210, 1211, 1212,
+     1213, 1214, 1215, 1216, 1218, 1219, 1221, 1222, 1223, 1224,
+     1225, 1226, 1227, 1229, 1231, 1232, 1233, 1234, 1235, 1236,
+     1236, 1236, 1236, 1236, 1236, 1236, 1239, 1242, 1243, 1236,
 
-     1243, 1244, 1245, 1247, 1250, 1251, 1252, 1254, 1255, 1256,
-     1257, 1258, 1233, 1233, 1233, 1233, 1233, 1233, 1259, 1260,
-     1261, 1263, 1264, 1265, 1266, 1269, 1272, 1273, 1274, 1275,
-     1276, 1277, 1279, 1280, 1284, 1285, 1286, 1288, 1289, 1290,
-     1291, 1293, 1294, 1295, 1296, 1297, 1298, 1301, 1302, 1303,
-     1304, 1306, 1308, 1310, 1312, 1313, 1315, 1316, 1317, 1318,
-     1320, 1321, 1322, 1323, 1324, 1327, 1328, 1331, 1332, 1333,
-     1334, 1335, 1337, 1338, 1340, 1341, 1342, 1343, 1344, 1345,
-     1347, 1348, 1349, 1351, 1352, 1353, 1354, 1355, 1361, 1364,
-     1366, 1368, 1369, 1280, 1281, 1281, 1281, 1281, 1281, 1281,
+     1236, 1236, 1236, 1244, 1246, 1247, 1248, 1249, 1251, 1254,
+     1255, 1256, 1258, 1259, 1260, 1261, 1236, 1236, 1236, 1236,
+     1236, 1236, 1262, 1263, 1264, 1265, 1267, 1268, 1269, 1270,
+     1273, 1276, 1277, 1278, 1279, 1280, 1281, 1283, 1284, 1288,
+     1289, 1290, 1291, 1293, 1294, 1295, 1296, 1298, 1299, 1300,
+     1301, 1302, 1303, 1306, 1307, 1308, 1309, 1311, 1313, 1315,
+     1317, 1318, 1320, 1321, 1322, 1323, 1324, 1326, 1327, 1328,
+     1329, 1330, 1333, 1334, 1337, 1338, 1339, 1340, 1341, 1343,
+     1344, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1354, 1355,
+     1356, 1358, 1359, 1360, 1361, 1362, 1367, 1369, 1284, 1285,
 
-     1281, 1371, 1374, 1358, 1281, 1281, 1281, 1281, 1358, 1375,
-     1376, 1377, 1378, 1379, 1382, 1385, 1386, 1387, 1389, 1390,
-     1391, 1281, 1281, 1281, 1281, 1281, 1281, 1314, 1314, 1314,
-     1314, 1314, 1314, 1314, 1393, 1394, 1395, 1314, 1314, 1314,
-     1314, 1396, 1397, 1398, 1400, 1402, 1403, 1404, 1406, 1409,
-     1410, 1411, 1412, 1415, 1314, 1314, 1314, 1314, 1314, 1314,
-     1356, 1356, 1356, 1356, 1356, 1356, 1356, 1416, 1417, 1421,
-     1356, 1356, 1356, 1356, 1422, 1423, 1425, 1426, 1427, 1428,
-     1429, 1431, 1433, 1436, 1473, 1475, 1476, 1356, 1356, 1356,
-     1356, 1356, 1356, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
+     1285, 1285, 1285, 1285, 1285, 1285, 1372, 1374, 1365, 1285,
+     1285, 1285, 1285, 1365, 1376, 1377, 1379, 1382, 1383, 1385,
+     1386, 1387, 1388, 1391, 1394, 1395, 1285, 1285, 1285, 1285,
+     1285, 1285, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1396,
+     1398, 1399, 1319, 1319, 1319, 1319, 1400, 1402, 1403, 1404,
+     1405, 1406, 1407, 1409, 1411, 1412, 1413, 1415, 1418, 1319,
+     1319, 1319, 1319, 1319, 1319, 1363, 1363, 1363, 1363, 1363,
+     1363, 1363, 1419, 1420, 1421, 1363, 1363, 1363, 1363, 1424,
+     1425, 1426, 1430, 1431, 1432, 1434, 1435, 1436, 1437, 1438,
+     1440, 1442, 1363, 1363, 1363, 1363, 1363, 1363, 1380, 1380,
 
-     1477, 1461, 1478, 1372, 1372, 1372, 1372, 1461, 1480, 1481,
-     1482, 1483, 1484, 1485, 1486, 1487, 1489, 1490, 1491, 1492,
-     1372, 1372, 1372, 1372, 1372, 1372, 1383, 1383, 1383, 1383,
-     1383, 1383, 1383, 1493, 1494, 1495, 1383, 1383, 1383, 1383,
-     1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505,
-     1506,  708,  707, 1383, 1383, 1383, 1383, 1383, 1383, 1392,
-     1392, 1392, 1392, 1392, 1392, 1392,  706,  705,  704, 1392,
-     1392, 1392, 1392,  703,  702,  701,  700,  699,  698,  697,
-      696,  695,  694,  693,  692,  691, 1392, 1392, 1392, 1392,
-     1392, 1392, 1407, 1407, 1407, 1407, 1407, 1407, 1407,  689,
+     1380, 1380, 1380, 1380, 1380, 1445, 1470, 1482, 1380, 1380,
+     1380, 1380, 1470, 1484, 1485, 1486, 1487, 1489, 1490, 1491,
+     1492, 1493, 1494, 1495, 1496, 1380, 1380, 1380, 1380, 1380,
+     1380, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1498, 1499,
+     1500, 1392, 1392, 1392, 1392, 1501, 1502, 1503, 1504, 1505,
+     1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1392, 1392,
+     1392, 1392, 1392, 1392, 1401, 1401, 1401, 1401, 1401, 1401,
+     1401, 1514, 1515,  708, 1401, 1401, 1401, 1401,  707,  706,
+      705,  704,  703,  702,  701,  700,  699,  698,  697,  696,
+      695, 1401, 1401, 1401, 1401, 1401, 1401, 1416, 1416, 1416,
 
-      687,  686, 1407, 1407, 1407, 1407,  685,  684,  683,  682,
-      681,  680,  679,  678,  677,  676,  675,  674,  673, 1407,
-     1407, 1407, 1407, 1407, 1407, 1413, 1413, 1413, 1413, 1413,
-     1413, 1413,  671,  670,  669, 1413, 1413, 1413, 1413,  666,
-      665,  664,  663,  662,  661,  660,  659,  658,  657,  656,
-      654,  653, 1413, 1413, 1413, 1413, 1413, 1413, 1419, 1419,
-     1419, 1419, 1419, 1419, 1419,  652,  651,  650, 1419, 1419,
-     1419, 1419,  649,  648,  647,  646,  645,  644,  643,  642,
-      641,  640,  638,  637,  632, 1419, 1419, 1419, 1419, 1419,
-     1419, 1424, 1424, 1424, 1424, 1424, 1424, 1424,  631,  630,
+     1416, 1416, 1416, 1416,  694,  693,  692, 1416, 1416, 1416,
+     1416,  691,  689,  687,  686,  685,  684,  683,  682,  681,
+      680,  679,  678,  677, 1416, 1416, 1416, 1416, 1416, 1416,
+     1422, 1422, 1422, 1422, 1422, 1422, 1422,  676,  675,  674,
+     1422, 1422, 1422, 1422,  673,  671,  670,  669,  666,  665,
+      664,  663,  662,  661,  660,  659,  658, 1422, 1422, 1422,
+     1422, 1422, 1422, 1428, 1428, 1428, 1428, 1428, 1428, 1428,
+      657,  656,  654, 1428, 1428, 1428, 1428,  653,  652,  651,
+      650,  649,  648,  647,  646,  645,  644,  643,  642,  641,
+     1428, 1428, 1428, 1428, 1428, 1428, 1433, 1433, 1433, 1433,
 
-      629, 1424, 1424, 1424, 1424,  628,  626,  625,  624,  623,
-      622,  620,  619,  617,  616,  615,  614,  613, 1424, 1424,
-     1424, 1424, 1424, 1424, 1434, 1434, 1434, 1434, 1434, 1434,
-     1434,  612,  611,  610, 1434, 1434, 1434, 1434,  609,  608,
-      607,  606,  604,  602,  601,  600,  599,  598,  597,  596,
-      595, 1434, 1434, 1434, 1434, 1434, 1434, 1438, 1438, 1438,
-     1438, 1438, 1438, 1438,  593,  591,  590, 1438, 1438, 1438,
-     1438,  589,  587,  581,  580,  579,  578,  577,  576,  575,
-      573,  572,  571,  570, 1438, 1438, 1438, 1438, 1438, 1438,
-     1441, 1441, 1441, 1441, 1441, 1441, 1441,  569,  568,  567,
+     1433, 1433, 1433,  640,  638,  637, 1433, 1433, 1433, 1433,
+      632,  631,  630,  629,  628,  626,  625,  624,  623,  622,
+      620,  619,  617, 1433, 1433, 1433, 1433, 1433, 1433, 1443,
+     1443, 1443, 1443, 1443, 1443, 1443,  616,  615,  614, 1443,
+     1443, 1443, 1443,  613,  612,  611,  610,  609,  608,  607,
+      606,  604,  602,  601,  600,  599, 1443, 1443, 1443, 1443,
+     1443, 1443, 1447, 1447, 1447, 1447, 1447, 1447, 1447,  598,
+      597,  596, 1447, 1447, 1447, 1447,  595,  593,  591,  590,
+      589,  587,  581,  580,  579,  578,  577,  576,  575, 1447,
+     1447, 1447, 1447, 1447, 1447, 1450, 1450, 1450, 1450, 1450,
 
-     1441, 1441, 1441, 1441,  565,  564,  563,  561,  560,  559,
-      557,  556,  555,  554,  553,  552,  550, 1441, 1441, 1441,
-     1441, 1441, 1441, 1443, 1443, 1443, 1443, 1443, 1443, 1443,
-      549,  548,  547, 1443, 1443, 1443, 1443,  545,  544,  543,
-      542,  541,  540,  539,  538,  537,  536,  535,  534,  533,
-     1443, 1443, 1443, 1443, 1443, 1443, 1445, 1445, 1445, 1445,
-     1445, 1445, 1445,  532,  530,  529, 1445, 1445, 1445, 1445,
-      528,  527,  526,  525,  524,  523,  521,  519,  518,  517,
-      516,  515,  514, 1445, 1445, 1445, 1445, 1445, 1445, 1447,
-     1447, 1447, 1447, 1447, 1447, 1447,  513,  512,  511, 1447,
+     1450, 1450,  573,  572,  571, 1450, 1450, 1450, 1450,  570,
+      569,  568,  567,  565,  564,  563,  561,  560,  559,  557,
+      556,  555, 1450, 1450, 1450, 1450, 1450, 1450, 1452, 1452,
+     1452, 1452, 1452, 1452, 1452,  554,  553,  552, 1452, 1452,
+     1452, 1452,  550,  549,  548,  547,  545,  544,  543,  542,
+      541,  540,  539,  538,  537, 1452, 1452, 1452, 1452, 1452,
+     1452, 1454, 1454, 1454, 1454, 1454, 1454, 1454,  536,  535,
+      534, 1454, 1454, 1454, 1454,  533,  532,  530,  529,  528,
+      527,  526,  525,  524,  523,  521,  519,  518, 1454, 1454,
+     1454, 1454, 1454, 1454, 1456, 1456, 1456, 1456, 1456, 1456,
 
-     1447, 1447, 1447,  510,  508,  507,  505,  504,  503,  502,
-      501,  499,  498,  496,  494,  493, 1447, 1447, 1447, 1447,
-     1447, 1447, 1449, 1449, 1449, 1449, 1449, 1449, 1449,  491,
-      490,  489, 1449, 1449, 1449, 1449,  488,  487,  486,  485,
-      484,  483,  482,  481,  476,  475,  474,  473,  471, 1449,
-     1449, 1449, 1449, 1449, 1449, 1451, 1451, 1451, 1451, 1451,
-     1451, 1451,  470,  469,  468, 1451, 1451, 1451, 1451,  467,
-      466,  465,  464,  463,  462,  461,  460,  459,  458,  457,
-      456,  455, 1451, 1451, 1451, 1451, 1451, 1451, 1453, 1453,
-     1453, 1453, 1453, 1453, 1453,  454,  453,  451, 1453, 1453,
+     1456,  517,  516,  515, 1456, 1456, 1456, 1456,  514,  513,
+      512,  511,  510,  508,  507,  505,  504,  503,  502,  501,
+      499, 1456, 1456, 1456, 1456, 1456, 1456, 1458, 1458, 1458,
+     1458, 1458, 1458, 1458,  498,  496,  494, 1458, 1458, 1458,
+     1458,  493,  491,  490,  489,  488,  487,  486,  485,  484,
+      483,  482,  481,  476, 1458, 1458, 1458, 1458, 1458, 1458,
+     1460, 1460, 1460, 1460, 1460, 1460, 1460,  475,  474,  473,
+     1460, 1460, 1460, 1460,  471,  470,  469,  468,  467,  466,
+      465,  464,  463,  462,  461,  460,  459, 1460, 1460, 1460,
+     1460, 1460, 1460, 1462, 1462, 1462, 1462, 1462, 1462, 1462,
 
-     1453, 1453,  450,  449,  448,  447,  446,  445,  444,  443,
-      441,  440,  439,  438,  437, 1453, 1453, 1453, 1453, 1453,
-     1453, 1455, 1455, 1455, 1455, 1455, 1455, 1455,  436,  435,
-      434, 1455, 1455, 1455, 1455,  432,  429,  428,  427,  426,
-      424,  422,  418,  417,  416,  415,  414,  413, 1455, 1455,
-     1455, 1455, 1455, 1455, 1457, 1457, 1457, 1457, 1457, 1457,
-     1457,  412,  411,  410, 1457, 1457, 1457, 1457,  407,  406,
-      405,  404,  401,  400,  399,  398,  397,  396,  395,  393,
-      392, 1457, 1457, 1457, 1457, 1457, 1457, 1459, 1459, 1459,
-     1459, 1459, 1459, 1459,  391,  388,  387, 1459, 1459, 1459,
+      458,  457,  456, 1462, 1462, 1462, 1462,  455,  454,  453,
+      451,  450,  449,  448,  447,  446,  445,  444,  443,  441,
+     1462, 1462, 1462, 1462, 1462, 1462, 1464, 1464, 1464, 1464,
+     1464, 1464, 1464,  440,  439,  438, 1464, 1464, 1464, 1464,
+      437,  436,  435,  434,  432,  429,  428,  427,  426,  424,
+      422,  418,  417, 1464, 1464, 1464, 1464, 1464, 1464, 1466,
+     1466, 1466, 1466, 1466, 1466, 1466,  416,  415,  414, 1466,
+     1466, 1466, 1466,  413,  412,  411,  410,  407,  406,  405,
+      404,  401,  400,  399,  398,  397, 1466, 1466, 1466, 1466,
+     1466, 1466, 1468, 1468, 1468, 1468, 1468, 1468, 1468,  396,
 
-     1459,  386,  384,  383,  381,  380,  378,  377,  375,  374,
-      373,  372,  371,  370, 1459, 1459, 1459, 1459, 1459, 1459,
-     1464, 1464, 1464, 1464, 1465, 1465, 1465, 1465, 1466, 1466,
-     1466, 1466, 1467, 1467, 1467, 1467, 1468, 1468, 1468, 1468,
-     1469, 1469, 1470,  369, 1470, 1470, 1471,  368, 1471, 1471,
-     1472,  367, 1472, 1472, 1474, 1474, 1474, 1474, 1479,  365,
-     1479, 1479, 1488,  364, 1488, 1488,  363,  362,  361,  360,
-      359,  358,  357,  356,  355,  354,  353,  352,  351,  350,
-      349,  348,  347,  346,  345,  343,  342,  340,  337,  336,
-      335,  334,  333,  332,  331,  330,  329,  328,  327,  326,
+      395,  393, 1468, 1468, 1468, 1468,  392,  391,  388,  387,
+      386,  384,  383,  381,  380,  378,  377,  375,  374, 1468,
+     1468, 1468, 1468, 1468, 1468, 1473, 1473, 1473, 1473, 1474,
+     1474, 1474, 1474, 1475, 1475, 1475, 1475, 1476, 1476, 1476,
+     1476, 1477, 1477, 1477, 1477, 1478, 1478, 1479,  373, 1479,
+     1479, 1480,  372, 1480, 1480, 1481,  371, 1481, 1481, 1483,
+     1483, 1483, 1483, 1488,  370, 1488, 1488, 1497,  369, 1497,
+     1497,  368,  367,  365,  364,  363,  362,  361,  360,  359,
+      358,  357,  356,  355,  354,  353,  352,  351,  350,  349,
+      348,  347,  346,  345,  343,  342,  340,  337,  336,  335,
 
-      324,  323,  322,  317,  316,  315,  314,  313,  312,  311,
-      310,  309,  308,  307,  306,  305,  304,  303,  302,  301,
-      300,  299,  298,  297,  296,  295,  294,  293,  292,  291,
-      290,  289,  288,  287,  286,  285,  284,  283,  282,  281,
-      280,  279,  278,  277,  276,  275,  274,  273,  272,  271,
-      270,  269,  268,  267,  266,  265,  264,  263,  262,  259,
-      253,  252,  249,  245,  244,  243,  241,  240,  239,  238,
-      237,  236,  235,  233,  232,  231,  230,  228,  225,  224,
-      223,  222,  221,  219,  218,  217,  216,  215,  214,  212,
-      211,  206,  205,  202,  201,  200,  199,  198,  197,  196,
+      334,  333,  332,  331,  330,  329,  328,  327,  326,  324,
+      323,  322,  317,  316,  315,  314,  313,  312,  311,  310,
+      309,  308,  307,  306,  305,  304,  303,  302,  301,  300,
+      299,  298,  297,  296,  295,  294,  293,  292,  291,  290,
+      289,  288,  287,  286,  285,  284,  283,  282,  281,  280,
+      279,  278,  277,  276,  275,  274,  273,  272,  271,  270,
+      269,  268,  267,  266,  265,  264,  263,  262,  259,  253,
+      252,  249,  245,  244,  243,  241,  240,  239,  238,  237,
+      236,  235,  233,  232,  231,  230,  228,  225,  224,  223,
+      222,  221,  219,  218,  217,  216,  215,  214,  212,  211,
 
-      195,  193,  191,  189,  187,  186,  184,  182,  180,  179,
-      177,  176,  175,  173,  172,  170,  169,  164,  163,  161,
-      157,  156,  154,  153,  151,  149,  148,  146,  145,  144,
-      143,  142,  141,  140,  138,  137,  136,  135,  134,  133,
-      132,  131,  130,  128,  126,  125,  124,  123,  122,  121,
-      120,  119,  118,  117,  115,  114,  113,  111,   99,   97,
-       93,   89,   88,   82,   60,   52,   51,   50,   49,   48,
-       44,   39,   34,   31,   30,   29,   28,   27,   24,   20,
-       19,   17,   15,   11,    8,    7, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
+      206,  205,  202,  201,  200,  199,  198,  197,  196,  195,
+      193,  191,  189,  187,  186,  184,  182,  180,  179,  177,
+      176,  175,  173,  172,  170,  169,  164,  163,  161,  157,
+      156,  154,  153,  151,  149,  148,  146,  145,  144,  143,
+      142,  141,  140,  138,  137,  136,  135,  134,  133,  132,
+      131,  130,  128,  126,  125,  124,  123,  122,  121,  120,
+      119,  118,  117,  115,  114,  113,  111,   99,   97,   93,
+       89,   88,   82,   60,   52,   51,   50,   49,   48,   44,
+       39,   34,   31,   30,   29,   28,   27,   24,   20,   19,
+       17,   15,   11,    8,    7, 1472, 1472, 1472, 1472, 1472,
 
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
-     1463, 1463, 1463
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
+     1472, 1472
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1950,13 +1955,13 @@
     winrt_mode = TRUE;
 }
 
-#line 1953 "tools/widl/parser.yy.c"
+#line 1958 "tools/widl/parser.yy.c"
 /*
  **************************************************************************
  * The flexer starts here
  **************************************************************************
  */
-#line 1959 "tools/widl/parser.yy.c"
+#line 1964 "tools/widl/parser.yy.c"
 
 #define INITIAL 0
 #define ATTR 1
@@ -2206,7 +2211,7 @@
 	{
 #line 189 "tools/widl/parser.l"
 
-#line 2209 "tools/widl/parser.yy.c"
+#line 2214 "tools/widl/parser.yy.c"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -2234,13 +2239,13 @@
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 1464 )
+				if ( yy_current_state >= 1473 )
 					yy_c = yy_meta[yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 1463 );
+		while ( yy_current_state != 1472 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -2480,915 +2485,920 @@
 case 38:
 YY_RULE_SETUP
 #line 257 "tools/widl/parser.l"
-{ return tDEFAULTBIND; }
+{ return tDEFAULT_OVERLOAD; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 258 "tools/widl/parser.l"
-{ return tDEFAULTCOLLELEM; }
+{ return tDEFAULTBIND; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 259 "tools/widl/parser.l"
-{ return tDEFAULTVALUE; }
+{ return tDEFAULTCOLLELEM; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 260 "tools/widl/parser.l"
-{ return tDEFAULTVTABLE; }
+{ return tDEFAULTVALUE; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 261 "tools/widl/parser.l"
-{ return token_winrt( tDEPRECATED, yytext, yylval ); }
+{ return tDEFAULTVTABLE; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 262 "tools/widl/parser.l"
-{ return tDISABLECONSISTENCYCHECK; }
+{ return token_winrt( tDEPRECATED, yytext, yylval ); }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 263 "tools/widl/parser.l"
-{ return tDISPLAYBIND; }
+{ return tDISABLECONSISTENCYCHECK; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 264 "tools/widl/parser.l"
-{ return tDLLNAME; }
+{ return tDISPLAYBIND; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 265 "tools/widl/parser.l"
-{ return tDONTFREE; }
+{ return tDLLNAME; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 266 "tools/widl/parser.l"
-{ return tDUAL; }
+{ return tDONTFREE; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 267 "tools/widl/parser.l"
-{ return tENABLEALLOCATE; }
+{ return tDUAL; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 268 "tools/widl/parser.l"
-{ return tENCODE; }
+{ return tENABLEALLOCATE; }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 269 "tools/widl/parser.l"
-{ return tENDPOINT; }
+{ return tENCODE; }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 270 "tools/widl/parser.l"
-{ return tENTRY; }
+{ return tENDPOINT; }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 271 "tools/widl/parser.l"
-{ return token_winrt( tEVENTADD, yytext, yylval ); }
+{ return tENTRY; }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 272 "tools/widl/parser.l"
-{ return token_winrt( tEVENTREMOVE, yytext, yylval ); }
+{ return token_winrt( tEVENTADD, yytext, yylval ); }
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 273 "tools/widl/parser.l"
-{ return token_winrt( tEXCLUSIVETO, yytext, yylval ); }
+{ return token_winrt( tEVENTREMOVE, yytext, yylval ); }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 274 "tools/widl/parser.l"
-{ return tEXPLICITHANDLE; }
+{ return token_winrt( tEXCLUSIVETO, yytext, yylval ); }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 275 "tools/widl/parser.l"
-{ return tFAULTSTATUS; }
+{ return tEXPLICITHANDLE; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 276 "tools/widl/parser.l"
-{ return token_winrt( tFLAGS, yytext, yylval ); }
+{ return tFAULTSTATUS; }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 277 "tools/widl/parser.l"
-{ return tFORCEALLOCATE; }
+{ return token_winrt( tFLAGS, yytext, yylval ); }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 278 "tools/widl/parser.l"
-{ return tFREE; }
+{ return tFORCEALLOCATE; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 279 "tools/widl/parser.l"
-{ return tHANDLE; }
+{ return tFREE; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 280 "tools/widl/parser.l"
-{ return tHELPCONTEXT; }
+{ return tHANDLE; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 281 "tools/widl/parser.l"
-{ return tHELPFILE; }
+{ return tHELPCONTEXT; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 282 "tools/widl/parser.l"
-{ return tHELPSTRING; }
+{ return tHELPFILE; }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 283 "tools/widl/parser.l"
-{ return tHELPSTRINGCONTEXT; }
+{ return tHELPSTRING; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 284 "tools/widl/parser.l"
-{ return tHELPSTRINGDLL; }
+{ return tHELPSTRINGCONTEXT; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 285 "tools/widl/parser.l"
-{ return tHIDDEN; }
+{ return tHELPSTRINGDLL; }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 286 "tools/widl/parser.l"
-{ return tID; }
+{ return tHIDDEN; }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 287 "tools/widl/parser.l"
-{ return tIDEMPOTENT; }
+{ return tID; }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 288 "tools/widl/parser.l"
-{ return tIGNORE; }
+{ return tIDEMPOTENT; }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 289 "tools/widl/parser.l"
-{ return tIIDIS; }
+{ return tIGNORE; }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 290 "tools/widl/parser.l"
-{ return tIMMEDIATEBIND; }
+{ return tIIDIS; }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 291 "tools/widl/parser.l"
-{ return tIMPLICITHANDLE; }
+{ return tIMMEDIATEBIND; }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 292 "tools/widl/parser.l"
-{ return tIN; }
+{ return tIMPLICITHANDLE; }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 293 "tools/widl/parser.l"
-{ return tIN_LINE; }
+{ return tIN; }
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 294 "tools/widl/parser.l"
-{ return tINPUTSYNC; }
+{ return tIN_LINE; }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 295 "tools/widl/parser.l"
-{ return tLCID; }
+{ return tINPUTSYNC; }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 296 "tools/widl/parser.l"
-{ return tLENGTHIS; }
+{ return tLCID; }
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 297 "tools/widl/parser.l"
-{ return tLICENSED; }
+{ return tLENGTHIS; }
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 298 "tools/widl/parser.l"
-{ return tLOCAL; }
+{ return tLICENSED; }
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 299 "tools/widl/parser.l"
-{ return token_winrt( tMARSHALINGBEHAVIOR, yytext, yylval ); }
+{ return tLOCAL; }
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 300 "tools/widl/parser.l"
-{ return tMAYBE; }
+{ return token_winrt( tMARSHALINGBEHAVIOR, yytext, yylval ); }
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 301 "tools/widl/parser.l"
-{ return tMESSAGE; }
+{ return tMAYBE; }
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 302 "tools/widl/parser.l"
-{ return tMTA; }
+{ return tMESSAGE; }
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 303 "tools/widl/parser.l"
-{ return tNEUTRAL; }
+{ return tMTA; }
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 304 "tools/widl/parser.l"
-{ return tNOCODE; }
+{ return tNEUTRAL; }
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 305 "tools/widl/parser.l"
-{ return tNONBROWSABLE; }
+{ return tNOCODE; }
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 306 "tools/widl/parser.l"
-{ return tNONCREATABLE; }
+{ return tNONBROWSABLE; }
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 307 "tools/widl/parser.l"
-{ return token_winrt( tNONE, yytext, yylval ); }
+{ return tNONCREATABLE; }
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 308 "tools/widl/parser.l"
-{ return tNONEXTENSIBLE; }
+{ return token_winrt( tNONE, yytext, yylval ); }
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 309 "tools/widl/parser.l"
-{ return tNOTIFY; }
+{ return tNONEXTENSIBLE; }
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 310 "tools/widl/parser.l"
-{ return tNOTIFYFLAG; }
+{ return tNOTIFY; }
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 311 "tools/widl/parser.l"
-{ return tOBJECT; }
+{ return tNOTIFYFLAG; }
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 312 "tools/widl/parser.l"
-{ return tODL; }
+{ return tOBJECT; }
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 313 "tools/widl/parser.l"
-{ return tOLEAUTOMATION; }
+{ return tODL; }
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 314 "tools/widl/parser.l"
-{ return tOPTIMIZE; }
+{ return tOLEAUTOMATION; }
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 315 "tools/widl/parser.l"
-{ return tOPTIONAL; }
+{ return tOPTIMIZE; }
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 316 "tools/widl/parser.l"
-{ return tOUT; }
+{ return tOPTIONAL; }
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 317 "tools/widl/parser.l"
-{ return tOVERLOAD; }
+{ return tOUT; }
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 318 "tools/widl/parser.l"
-{ return tPARTIALIGNORE; }
+{ return tOVERLOAD; }
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 319 "tools/widl/parser.l"
-{ return tPOINTERDEFAULT; }
+{ return tPARTIALIGNORE; }
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 320 "tools/widl/parser.l"
-{ return tPROGID; }
+{ return tPOINTERDEFAULT; }
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 321 "tools/widl/parser.l"
-{ return tPROPGET; }
+{ return tPROGID; }
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 322 "tools/widl/parser.l"
-{ return tPROPPUT; }
+{ return tPROPGET; }
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 323 "tools/widl/parser.l"
-{ return tPROPPUTREF; }
+{ return tPROPPUT; }
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 324 "tools/widl/parser.l"
-{ return tPROTECTED; }
+{ return tPROPPUTREF; }
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 325 "tools/widl/parser.l"
-{ return tPROXY; }
+{ return tPROTECTED; }
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 326 "tools/widl/parser.l"
-{ return tPTR; }
+{ return tPROXY; }
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 327 "tools/widl/parser.l"
-{ return tPUBLIC; }
+{ return tPTR; }
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 328 "tools/widl/parser.l"
-{ return tRANGE; }
+{ return tPUBLIC; }
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 329 "tools/widl/parser.l"
-{ return tREADONLY; }
+{ return tRANGE; }
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
 #line 330 "tools/widl/parser.l"
-{ return tREF; }
+{ return tREADONLY; }
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
 #line 331 "tools/widl/parser.l"
-{ return tREPRESENTAS; }
+{ return tREF; }
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
 #line 332 "tools/widl/parser.l"
-{ return tREQUESTEDIT; }
+{ return tREPRESENTAS; }
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
 #line 333 "tools/widl/parser.l"
-{ return tRESTRICTED; }
+{ return tREQUESTEDIT; }
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
 #line 334 "tools/widl/parser.l"
-{ return tRETVAL; }
+{ return tRESTRICTED; }
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
 #line 335 "tools/widl/parser.l"
-{ return tSINGLE; }
+{ return tRETVAL; }
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
 #line 336 "tools/widl/parser.l"
-{ return tSINGLENODE; }
+{ return tSINGLE; }
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 337 "tools/widl/parser.l"
-{ return tSIZEIS; }
+{ return tSINGLENODE; }
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
 #line 338 "tools/widl/parser.l"
-{ return tSOURCE; }
+{ return tSIZEIS; }
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
 #line 339 "tools/widl/parser.l"
-{ return token_winrt( tSTANDARD, yytext, yylval ); }
+{ return tSOURCE; }
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 340 "tools/widl/parser.l"
-{ return token_winrt( tSTATIC, yytext, yylval ); }
+{ return token_winrt( tSTANDARD, yytext, yylval ); }
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 341 "tools/widl/parser.l"
-{ return tSTRICTCONTEXTHANDLE; }
+{ return token_winrt( tSTATIC, yytext, yylval ); }
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 342 "tools/widl/parser.l"
-{ return tSTRING; }
+{ return tSTRICTCONTEXTHANDLE; }
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 343 "tools/widl/parser.l"
-{ return tSWITCHIS; }
+{ return tSTRING; }
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 344 "tools/widl/parser.l"
-{ return tSWITCHTYPE; }
+{ return tSWITCHIS; }
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
 #line 345 "tools/widl/parser.l"
-{ return tTHREADING; }
+{ return tSWITCHTYPE; }
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
 #line 346 "tools/widl/parser.l"
-{ return tTRANSMITAS; }
+{ return tTHREADING; }
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
 #line 347 "tools/widl/parser.l"
-{ return tUIDEFAULT; }
+{ return tTRANSMITAS; }
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 348 "tools/widl/parser.l"
-{ return tUNIQUE; }
+{ return tUIDEFAULT; }
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
 #line 349 "tools/widl/parser.l"
-{ return tUSERMARSHAL; }
+{ return tUNIQUE; }
 	YY_BREAK
 case 131:
 YY_RULE_SETUP
 #line 350 "tools/widl/parser.l"
-{ return tUSESGETLASTERROR; }
+{ return tUSERMARSHAL; }
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 351 "tools/widl/parser.l"
-{ return tUUID; }
+{ return tUSESGETLASTERROR; }
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 352 "tools/widl/parser.l"
-{ return tV1ENUM; }
+{ return tUUID; }
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 353 "tools/widl/parser.l"
-{ return tVARARG; }
+{ return tV1ENUM; }
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
 #line 354 "tools/widl/parser.l"
-{ return tVERSION; }
+{ return tVARARG; }
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 355 "tools/widl/parser.l"
-{ return tVIPROGID; }
+{ return tVERSION; }
 	YY_BREAK
 case 137:
 YY_RULE_SETUP
 #line 356 "tools/widl/parser.l"
+{ return tVIPROGID; }
+	YY_BREAK
+case 138:
+YY_RULE_SETUP
+#line 357 "tools/widl/parser.l"
 { return tWIREMARSHAL; }
 	YY_BREAK
 
 
-case 138:
-YY_RULE_SETUP
-#line 360 "tools/widl/parser.l"
-{ yy_push_state( PP_PRAGMA ); }
-	YY_BREAK
 case 139:
 YY_RULE_SETUP
 #line 361 "tools/widl/parser.l"
-{ return tPRAGMA_WARNING; }
+{ yy_push_state( PP_PRAGMA ); }
 	YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 363 "tools/widl/parser.l"
+#line 362 "tools/widl/parser.l"
+{ return tPRAGMA_WARNING; }
+	YY_BREAK
+case 141:
+YY_RULE_SETUP
+#line 364 "tools/widl/parser.l"
 {
                                                     yylval->dbl = strtod( yytext, NULL );
                                                     return aDOUBLE;
                                                 }
 	YY_BREAK
 
-case 141:
+case 142:
 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
 (yy_c_buf_p) = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 369 "tools/widl/parser.l"
+#line 370 "tools/widl/parser.l"
 return tSAFEARRAY;
 	YY_BREAK
 
-case 142:
-YY_RULE_SETUP
-#line 372 "tools/widl/parser.l"
-{ yy_push_state(PP_LINE); }
-	YY_BREAK
 case 143:
 YY_RULE_SETUP
 #line 373 "tools/widl/parser.l"
-{ yy_push_state(ATTR); return '['; }
+{ yy_push_state(PP_LINE); }
 	YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 375 "tools/widl/parser.l"
-{ return tFALSE; }
+#line 374 "tools/widl/parser.l"
+{ yy_push_state(ATTR); return '['; }
 	YY_BREAK
 case 145:
 YY_RULE_SETUP
 #line 376 "tools/widl/parser.l"
-{ return tNULL; }
+{ return tFALSE; }
 	YY_BREAK
 case 146:
 YY_RULE_SETUP
 #line 377 "tools/widl/parser.l"
-{ return tTRUE; }
+{ return tNULL; }
 	YY_BREAK
 case 147:
 YY_RULE_SETUP
 #line 378 "tools/widl/parser.l"
-{ return token_str( tCDECL, "__cdecl", yylval ); }
+{ return tTRUE; }
 	YY_BREAK
 case 148:
 YY_RULE_SETUP
 #line 379 "tools/widl/parser.l"
-{ return token_str( tPASCAL, "__pascal", yylval ); }
+{ return token_str( tCDECL, "__cdecl", yylval ); }
 	YY_BREAK
 case 149:
 YY_RULE_SETUP
 #line 380 "tools/widl/parser.l"
-{ return token_str( tSTDCALL, "__stdcall", yylval ); }
+{ return token_str( tPASCAL, "__pascal", yylval ); }
 	YY_BREAK
 case 150:
 YY_RULE_SETUP
 #line 381 "tools/widl/parser.l"
-{ return token_str( tFASTCALL, "__fastcall", yylval ); }
+{ return token_str( tSTDCALL, "__stdcall", yylval ); }
 	YY_BREAK
 case 151:
 YY_RULE_SETUP
 #line 382 "tools/widl/parser.l"
-{ return tINT32; }
+{ return token_str( tFASTCALL, "__fastcall", yylval ); }
 	YY_BREAK
 case 152:
 YY_RULE_SETUP
 #line 383 "tools/widl/parser.l"
-{ return tINT3264; }
+{ return tINT32; }
 	YY_BREAK
 case 153:
 YY_RULE_SETUP
 #line 384 "tools/widl/parser.l"
-{ return tINT64; }
+{ return tINT3264; }
 	YY_BREAK
 case 154:
 YY_RULE_SETUP
 #line 385 "tools/widl/parser.l"
-{ return token_winrt( tAPICONTRACT, yytext, yylval ); }
+{ return tINT64; }
 	YY_BREAK
 case 155:
 YY_RULE_SETUP
 #line 386 "tools/widl/parser.l"
-{ return tBOOLEAN; }
+{ return token_winrt( tAPICONTRACT, yytext, yylval ); }
 	YY_BREAK
 case 156:
 YY_RULE_SETUP
 #line 387 "tools/widl/parser.l"
-{ return tBYTE; }
+{ return tBOOLEAN; }
 	YY_BREAK
 case 157:
 YY_RULE_SETUP
 #line 388 "tools/widl/parser.l"
-{ return tCASE; }
+{ return tBYTE; }
 	YY_BREAK
 case 158:
 YY_RULE_SETUP
 #line 389 "tools/widl/parser.l"
-{ return tCHAR; }
+{ return tCASE; }
 	YY_BREAK
 case 159:
 YY_RULE_SETUP
 #line 390 "tools/widl/parser.l"
-{ return tCOCLASS; }
+{ return tCHAR; }
 	YY_BREAK
 case 160:
 YY_RULE_SETUP
 #line 391 "tools/widl/parser.l"
-{ return tCONST; }
+{ return tCOCLASS; }
 	YY_BREAK
 case 161:
 YY_RULE_SETUP
 #line 392 "tools/widl/parser.l"
-{ return tCPPQUOTE; }
+{ return tCONST; }
 	YY_BREAK
 case 162:
 YY_RULE_SETUP
 #line 393 "tools/widl/parser.l"
-{ return token_winrt( tDECLARE, yytext, yylval ); }
+{ return tCPPQUOTE; }
 	YY_BREAK
 case 163:
 YY_RULE_SETUP
 #line 394 "tools/widl/parser.l"
-{ return tDEFAULT; }
+{ return token_winrt( tDECLARE, yytext, yylval ); }
 	YY_BREAK
 case 164:
 YY_RULE_SETUP
 #line 395 "tools/widl/parser.l"
-{ return token_winrt( tDELEGATE, yytext, yylval ); }
+{ return tDEFAULT; }
 	YY_BREAK
 case 165:
 YY_RULE_SETUP
 #line 396 "tools/widl/parser.l"
-{ return tDISPINTERFACE; }
+{ return token_winrt( tDELEGATE, yytext, yylval ); }
 	YY_BREAK
 case 166:
 YY_RULE_SETUP
 #line 397 "tools/widl/parser.l"
-{ return tDOUBLE; }
+{ return tDISPINTERFACE; }
 	YY_BREAK
 case 167:
 YY_RULE_SETUP
 #line 398 "tools/widl/parser.l"
-{ return tENUM; }
+{ return tDOUBLE; }
 	YY_BREAK
 case 168:
 YY_RULE_SETUP
 #line 399 "tools/widl/parser.l"
-{ return tERRORSTATUST; }
+{ return tENUM; }
 	YY_BREAK
 case 169:
 YY_RULE_SETUP
 #line 400 "tools/widl/parser.l"
-{ return tEXTERN; }
+{ return tERRORSTATUST; }
 	YY_BREAK
 case 170:
 YY_RULE_SETUP
 #line 401 "tools/widl/parser.l"
-{ return tFLOAT; }
+{ return tEXTERN; }
 	YY_BREAK
 case 171:
 YY_RULE_SETUP
 #line 402 "tools/widl/parser.l"
-{ return tHANDLET; }
+{ return tFLOAT; }
 	YY_BREAK
 case 172:
 YY_RULE_SETUP
 #line 403 "tools/widl/parser.l"
-{ return tHYPER; }
+{ return tHANDLET; }
 	YY_BREAK
 case 173:
 YY_RULE_SETUP
 #line 404 "tools/widl/parser.l"
-{ return tIMPORT; }
+{ return tHYPER; }
 	YY_BREAK
 case 174:
 YY_RULE_SETUP
 #line 405 "tools/widl/parser.l"
-{ return tIMPORTLIB; }
+{ return tIMPORT; }
 	YY_BREAK
 case 175:
 YY_RULE_SETUP
 #line 406 "tools/widl/parser.l"
-{ return tINLINE; }
+{ return tIMPORTLIB; }
 	YY_BREAK
 case 176:
 YY_RULE_SETUP
 #line 407 "tools/widl/parser.l"
-{ return tINT; }
+{ return tINLINE; }
 	YY_BREAK
 case 177:
 YY_RULE_SETUP
 #line 408 "tools/widl/parser.l"
-{ return tINTERFACE; }
+{ return tINT; }
 	YY_BREAK
 case 178:
 YY_RULE_SETUP
 #line 409 "tools/widl/parser.l"
-{ return tLIBRARY; }
+{ return tINTERFACE; }
 	YY_BREAK
 case 179:
 YY_RULE_SETUP
 #line 410 "tools/widl/parser.l"
-{ return tLONG; }
+{ return tLIBRARY; }
 	YY_BREAK
 case 180:
 YY_RULE_SETUP
 #line 411 "tools/widl/parser.l"
-{ return tMETHODS; }
+{ return tLONG; }
 	YY_BREAK
 case 181:
 YY_RULE_SETUP
 #line 412 "tools/widl/parser.l"
-{ return tMODULE; }
+{ return tMETHODS; }
 	YY_BREAK
 case 182:
 YY_RULE_SETUP
 #line 413 "tools/widl/parser.l"
-{ return token_winrt( tNAMESPACE, yytext, yylval ); }
+{ return tMODULE; }
 	YY_BREAK
 case 183:
 YY_RULE_SETUP
 #line 414 "tools/widl/parser.l"
-{ return tPROPERTIES; }
+{ return token_winrt( tNAMESPACE, yytext, yylval ); }
 	YY_BREAK
 case 184:
 YY_RULE_SETUP
 #line 415 "tools/widl/parser.l"
-{ return tREGISTER; }
+{ return tPROPERTIES; }
 	YY_BREAK
 case 185:
 YY_RULE_SETUP
 #line 416 "tools/widl/parser.l"
-{ return token_winrt( tREQUIRES, yytext, yylval ); }
+{ return tREGISTER; }
 	YY_BREAK
 case 186:
 YY_RULE_SETUP
 #line 417 "tools/widl/parser.l"
-{ return token_winrt( tRUNTIMECLASS, yytext, yylval ); }
+{ return token_winrt( tREQUIRES, yytext, yylval ); }
 	YY_BREAK
 case 187:
 YY_RULE_SETUP
 #line 418 "tools/widl/parser.l"
-{ return tSHORT; }
+{ return token_winrt( tRUNTIMECLASS, yytext, yylval ); }
 	YY_BREAK
 case 188:
 YY_RULE_SETUP
 #line 419 "tools/widl/parser.l"
-{ return tSIGNED; }
+{ return tSHORT; }
 	YY_BREAK
 case 189:
 YY_RULE_SETUP
 #line 420 "tools/widl/parser.l"
-{ return tSIZEOF; }
+{ return tSIGNED; }
 	YY_BREAK
 case 190:
 YY_RULE_SETUP
 #line 421 "tools/widl/parser.l"
-{ return tSMALL; }
+{ return tSIZEOF; }
 	YY_BREAK
 case 191:
 YY_RULE_SETUP
 #line 422 "tools/widl/parser.l"
-{ return tSTATIC; }
+{ return tSMALL; }
 	YY_BREAK
 case 192:
 YY_RULE_SETUP
 #line 423 "tools/widl/parser.l"
-{ return tSTRUCT; }
+{ return tSTATIC; }
 	YY_BREAK
 case 193:
 YY_RULE_SETUP
 #line 424 "tools/widl/parser.l"
-{ return tSWITCH; }
+{ return tSTRUCT; }
 	YY_BREAK
 case 194:
 YY_RULE_SETUP
 #line 425 "tools/widl/parser.l"
-{ return tTYPEDEF; }
+{ return tSWITCH; }
 	YY_BREAK
 case 195:
 YY_RULE_SETUP
 #line 426 "tools/widl/parser.l"
-{ return tUNION; }
+{ return tTYPEDEF; }
 	YY_BREAK
 case 196:
 YY_RULE_SETUP
 #line 427 "tools/widl/parser.l"
-{ return tUNSIGNED; }
+{ return tUNION; }
 	YY_BREAK
 case 197:
 YY_RULE_SETUP
 #line 428 "tools/widl/parser.l"
-{ return tVOID; }
+{ return tUNSIGNED; }
 	YY_BREAK
 case 198:
 YY_RULE_SETUP
 #line 429 "tools/widl/parser.l"
-{ return tWCHAR; }
+{ return tVOID; }
 	YY_BREAK
 case 199:
 YY_RULE_SETUP
-#line 431 "tools/widl/parser.l"
-{ return token_ident( yytext, yylval ); }
+#line 430 "tools/widl/parser.l"
+{ return tWCHAR; }
 	YY_BREAK
 case 200:
 YY_RULE_SETUP
-#line 433 "tools/widl/parser.l"
-{ return token_num( aHEXNUM, yytext, yylval ); }
+#line 432 "tools/widl/parser.l"
+{ return token_ident( yytext, yylval ); }
 	YY_BREAK
 case 201:
 YY_RULE_SETUP
 #line 434 "tools/widl/parser.l"
-{ return token_num( aNUM, yytext, yylval ); }
+{ return token_num( aHEXNUM, yytext, yylval ); }
 	YY_BREAK
 case 202:
-/* rule 202 can match eol */
 YY_RULE_SETUP
-#line 436 "tools/widl/parser.l"
-{ return token_str( aWSTRING, yytext + 1, yylval ); }
+#line 435 "tools/widl/parser.l"
+{ return token_num( aNUM, yytext, yylval ); }
 	YY_BREAK
 case 203:
 /* rule 203 can match eol */
 YY_RULE_SETUP
 #line 437 "tools/widl/parser.l"
-{ return token_str( aSTRING, yytext, yylval ); }
+{ return token_str( aWSTRING, yytext + 1, yylval ); }
 	YY_BREAK
 case 204:
 /* rule 204 can match eol */
 YY_RULE_SETUP
 #line 438 "tools/widl/parser.l"
-{ return token_str( aSQSTRING, yytext, yylval ); }
+{ return token_str( aSTRING, yytext, yylval ); }
 	YY_BREAK
 case 205:
 /* rule 205 can match eol */
 YY_RULE_SETUP
-#line 440 "tools/widl/parser.l"
-{ end_of_line( yylloc ); }
+#line 439 "tools/widl/parser.l"
+{ return token_str( aSQSTRING, yytext, yylval ); }
 	YY_BREAK
 case 206:
+/* rule 206 can match eol */
 YY_RULE_SETUP
 #line 441 "tools/widl/parser.l"
-{}
+{ end_of_line( yylloc ); }
 	YY_BREAK
 case 207:
 YY_RULE_SETUP
 #line 442 "tools/widl/parser.l"
-{ return SHL; }
+{}
 	YY_BREAK
 case 208:
 YY_RULE_SETUP
 #line 443 "tools/widl/parser.l"
-{ return SHR; }
+{ return SHL; }
 	YY_BREAK
 case 209:
 YY_RULE_SETUP
 #line 444 "tools/widl/parser.l"
-{ return MEMBERPTR; }
+{ return SHR; }
 	YY_BREAK
 case 210:
 YY_RULE_SETUP
 #line 445 "tools/widl/parser.l"
-{ return EQUALITY; }
+{ return MEMBERPTR; }
 	YY_BREAK
 case 211:
 YY_RULE_SETUP
 #line 446 "tools/widl/parser.l"
-{ return INEQUALITY; }
+{ return EQUALITY; }
 	YY_BREAK
 case 212:
 YY_RULE_SETUP
 #line 447 "tools/widl/parser.l"
-{ return GREATEREQUAL; }
+{ return INEQUALITY; }
 	YY_BREAK
 case 213:
 YY_RULE_SETUP
 #line 448 "tools/widl/parser.l"
-{ return LESSEQUAL; }
+{ return GREATEREQUAL; }
 	YY_BREAK
 case 214:
 YY_RULE_SETUP
 #line 449 "tools/widl/parser.l"
-{ return LOGICALOR; }
+{ return LESSEQUAL; }
 	YY_BREAK
 case 215:
 YY_RULE_SETUP
 #line 450 "tools/widl/parser.l"
-{ return LOGICALAND; }
+{ return LOGICALOR; }
 	YY_BREAK
 case 216:
 YY_RULE_SETUP
 #line 451 "tools/widl/parser.l"
-{ return ELLIPSIS; }
+{ return LOGICALAND; }
 	YY_BREAK
 case 217:
 YY_RULE_SETUP
 #line 452 "tools/widl/parser.l"
+{ return ELLIPSIS; }
+	YY_BREAK
+case 218:
+YY_RULE_SETUP
+#line 453 "tools/widl/parser.l"
 { return yytext[0]; }
 	YY_BREAK
 
@@ -3397,7 +3407,7 @@
 case YY_STATE_EOF(PP_LINE):
 case YY_STATE_EOF(PP_FILE):
 case YY_STATE_EOF(PP_PRAGMA):
-#line 455 "tools/widl/parser.l"
+#line 456 "tools/widl/parser.l"
 {
                             if (!list_empty( &import_stack ))
                                 return aEOF;
@@ -3409,12 +3419,12 @@
                             yyterminate();
 			}
 	YY_BREAK
-case 218:
+case 219:
 YY_RULE_SETUP
-#line 465 "tools/widl/parser.l"
+#line 466 "tools/widl/parser.l"
 ECHO;
 	YY_BREAK
-#line 3417 "tools/widl/parser.yy.c"
+#line 3427 "tools/widl/parser.yy.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -3711,7 +3721,7 @@
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 1464 )
+			if ( yy_current_state >= 1473 )
 				yy_c = yy_meta[yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -3739,11 +3749,11 @@
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 1464 )
+		if ( yy_current_state >= 1473 )
 			yy_c = yy_meta[yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-	yy_is_jam = (yy_current_state == 1463);
+	yy_is_jam = (yy_current_state == 1472);
 
 		return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4425,7 +4435,7 @@
 
 #define YYTABLES_NAME "yytables"
 
-#line 465 "tools/widl/parser.l"
+#line 466 "tools/widl/parser.l"
 
 
 static void print_imports(void)
diff --git a/mingw-w64-tools/widl/src/widltypes.h b/mingw-w64-tools/widl/src/widltypes.h
index b92c8c1..1a26bb7 100644
--- a/mingw-w64-tools/widl/src/widltypes.h
+++ b/mingw-w64-tools/widl/src/widltypes.h
@@ -92,6 +92,7 @@
     ATTR_CUSTOM,
     ATTR_DECODE,
     ATTR_DEFAULT,
+    ATTR_DEFAULT_OVERLOAD,
     ATTR_DEFAULTBIND,
     ATTR_DEFAULTCOLLELEM,
     ATTR_DEFAULTVALUE,
diff --git a/mingw-w64-tools/widl/src/write_msft.c b/mingw-w64-tools/widl/src/write_msft.c
index a757af8..063e293 100644
--- a/mingw-w64-tools/widl/src/write_msft.c
+++ b/mingw-w64-tools/widl/src/write_msft.c
@@ -1418,6 +1418,7 @@
             break;
         case ATTR_OUT:
             break;
+        case ATTR_DEFAULT_OVERLOAD:
         case ATTR_OVERLOAD:
             break;
         case ATTR_PROPGET: