Alexandre Julliard <julliard@winehq.org>
authorGé van Geldorp <ge@gse.nl>
Thu, 11 Aug 2005 15:10:01 +0000 (15:10 +0000)
committerGé van Geldorp <ge@gse.nl>
Thu, 11 Aug 2005 15:10:01 +0000 (15:10 +0000)
- Added support for HTML resource type.
Mike McCormack <mike@codeweavers.com>
- gcc 4.0 -Wpointer-sign fixes.
Stefan Huehner <stefan@huehner.org>
- Fix some -Wsign-compare warnings.
Jacek Caban <jack@itma.pwr.wroc.pl>
- '.' is a valid char of tIDENT.
Marcus Meissner <marcus@jet.franken.de>
- Fixed signedness warnings.

svn path=/trunk/; revision=17286

13 files changed:
reactos/tools/wrc/dumpres.c
reactos/tools/wrc/genres.c
reactos/tools/wrc/genres.h
reactos/tools/wrc/lex.yy.c
reactos/tools/wrc/newstruc.c
reactos/tools/wrc/newstruc.h
reactos/tools/wrc/parser.l
reactos/tools/wrc/parser.y
reactos/tools/wrc/readres.c
reactos/tools/wrc/wrctypes.h
reactos/tools/wrc/writeres.c
reactos/tools/wrc/y.tab.c
reactos/tools/wrc/y.tab.h

index 914b10d..7af89e4 100644 (file)
@@ -78,13 +78,13 @@ const char *get_typename(const resource_t* r)
  * Remarks     : No codepage translation is done.
  *****************************************************************************
 */
-static char *strncpyWtoA(char *cs, WCHAR *ws, int maxlen)
+static char *strncpyWtoA(char *cs, const WCHAR *ws, int maxlen)
 {
        char *cptr = cs;
-       WCHAR *wsMax = ws + maxlen - 1;
+       const WCHAR *wsMax = ws + maxlen - 1;
        while(*ws && ws < wsMax)
        {
-               if((short)*ws < -128 || (short)*ws > 127)
+               if(*ws > 255)
                        fprintf(stderr, "***Warning: Unicode string contains non-printable chars***\n");
                *cptr++ = (char)*ws++;
        }
index 2af5fe5..a333c18 100644 (file)
@@ -62,7 +62,7 @@ res_t *new_res(void)
        return r;
 }
 
-res_t *grow_res(res_t *r, int add)
+res_t *grow_res(res_t *r, unsigned int add)
 {
        r->allocsize += add;
        r->data = (char *)xrealloc(r->data, r->allocsize);
@@ -416,7 +416,7 @@ static void put_lvc(res_t *res, lvc_t *lvc)
 */
 static void put_raw_data(res_t *res, raw_data_t *raw, int offset)
 {
-       int wsize = raw->size - offset;
+       unsigned int wsize = raw->size - offset;
        if(res->allocsize - res->size < wsize)
                grow_res(res, wsize);
        memcpy(&(res->data[res->size]), raw->data + offset, wsize);
@@ -1348,6 +1348,35 @@ static res_t *fontdir2res(name_id_t *name, fontdir_t *fnd)
        return res;
 }
 
+/*
+ *****************************************************************************
+ * Function    : html2res
+ * Syntax      : res_t *html2res(name_id_t *name, html_t *html)
+ * Input       :
+ *     name    - Name/ordinal of the resource
+ *     rdt     - The html descriptor
+ * Output      : New .res format structure
+ * Description :
+ * Remarks     :
+ *****************************************************************************
+*/
+static res_t *html2res(name_id_t *name, html_t *html)
+{
+       int restag;
+       res_t *res;
+       assert(name != NULL);
+       assert(html != NULL);
+
+       res = new_res();
+       restag = put_res_header(res, WRC_RT_HTML, NULL, name, html->memopt, &(html->data->lvc));
+       put_raw_data(res, html->data, 0);
+       /* Set ResourceSize */
+       SetResSize(res, restag);
+       if(win32)
+               put_pad(res);
+       return res;
+}
+
 /*
  *****************************************************************************
  * Function    : rcdata2res
@@ -1941,6 +1970,10 @@ void resources2res(resource_t *top)
                        if(!top->binres)
                                top->binres = menuex2res(top->name, top->res.menex);
                        break;
+               case res_html:
+                       if(!top->binres)
+                               top->binres = html2res(top->name, top->res.html);
+                       break;
                case res_rdt:
                        if(!top->binres)
                                top->binres = rcdata2res(top->name, top->res.rdt);
index 5feb83a..afdf1e8 100644 (file)
@@ -24,7 +24,7 @@
 #include "wrctypes.h"
 
 res_t *new_res(void);
-res_t *grow_res(res_t *r, int add);
+res_t *grow_res(res_t *r, unsigned int add);
 void put_byte(res_t *res, unsigned c);
 void put_word(res_t *res, unsigned w);
 void put_dword(res_t *res, unsigned d);
index 4e9c782..69c6fb0 100644 (file)
@@ -311,13 +311,13 @@ static yyconst short yy_nxt[][256] =
 
        26,   26,   26,   26,   26,   26,   31,   32,   33,   34,
        34,   34,   34,   34,   34,   34,   34,   34,   26,   35,
-       26,   26,   26,   26,   26,   36,   36,   36,   36,   36,
-       36,   36,   36,   36,   36,   36,   37,   36,   36,   36,
-       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   26,   31,   26,   26,   36,   26,   36,   36,   36,
-       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   36,   36,   38,   26,   39,   26,   26,   26,   26,
+       26,   26,   26,   26,   26,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   36,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   26,   37,   26,   26,   31,   26,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   38,   26,   39,   26,   26,   26,   26,
        26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
 
        26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
@@ -342,14 +342,14 @@ static yyconst short yy_nxt[][256] =
        26,   26,   40,   26,   29,   41,   26,   26,   26,   30,
        26,   26,   26,   26,   26,   26,   31,   32,   33,   34,
        34,   34,   34,   34,   34,   34,   34,   34,   26,   35,
-       26,   26,   26,   26,   26,   36,   36,   36,   36,   36,
-       36,   36,   36,   36,   36,   36,   37,   36,   36,   36,
-
-       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   26,   31,   26,   26,   36,   26,   36,   36,   36,
-       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   36,   36,   38,   26,   39,   26,   26,   26,   26,
+       26,   26,   26,   26,   26,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   36,   31,   31,   31,
+
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   26,   37,   26,   26,   31,   26,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   38,   26,   39,   26,   26,   26,   26,
        26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
        26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
        26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
@@ -1257,12 +1257,12 @@ static yyconst short yy_nxt[][256] =
       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
       -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
 
-      -31,  -31,  -31,  -31,  -31,  -31,   83,   83,   83,   83,
+      -31,  -31,  -31,  -31,  -31,  -31,   83,   84,   83,   83,
        83,   83,   83,   83,   83,   83,   83,   83,  -31,  -31,
       -31,  -31,  -31,  -31,  -31,   83,   83,   83,   83,   83,
        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,  -31,   83,  -31,  -31,   83,  -31,   83,   83,   83,
+       83,  -31,   84,  -31,  -31,   83,  -31,   83,   83,   83,
        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
        83,   83,   83,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
@@ -1288,16 +1288,16 @@ static yyconst short yy_nxt[][256] =
       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
-      -32,  -32,   84,  -32,  -32,  -32,   83,   85,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,  -32,  -32,
-      -32,  -32,  -32,  -32,  -32,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,  -32,   83,  -32,  -32,   83,  -32,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
+      -32,  -32,   85,  -32,  -32,  -32,   84,   86,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,  -32,  -32,
+      -32,  -32,  -32,  -32,  -32,   84,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,  -32,   84,  -32,  -32,   84,  -32,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,   84,   84,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
       -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
@@ -1320,16 +1320,16 @@ static yyconst short yy_nxt[][256] =
 
       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
-      -33,  -33,  -33,  -33,  -33,  -33,   83,   83,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,  -33,  -33,
-      -33,  -33,  -33,  -33,  -33,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   88,   87,   87,   89,
-       87,   87,   87,   87,   87,   87,   87,   87,   90,   87,
-       87,  -33,   83,  -33,  -33,   87,  -33,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   88,   87,
-       87,   89,   87,   87,   87,   87,   87,   87,   87,   87,
-
-       90,   87,   87,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,   83,   84,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   88,   83,   83,   89,
+       83,   83,   83,   83,   83,   83,   83,   83,   90,   83,
+       83,  -33,   84,  -33,  -33,   83,  -33,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   88,   83,
+       83,   89,   83,   83,   83,   83,   83,   83,   83,   83,
+
+       90,   83,   83,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
       -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
@@ -1351,16 +1351,16 @@ static yyconst short yy_nxt[][256] =
       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
-      -34,  -34,  -34,  -34,  -34,  -34,   83,   83,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,  -34,  -34,
-
-      -34,  -34,  -34,  -34,  -34,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   88,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,  -34,   83,  -34,  -34,   87,  -34,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   88,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,   83,   84,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,  -34,  -34,
+
+      -34,  -34,  -34,  -34,  -34,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   88,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,  -34,   84,  -34,  -34,   83,  -34,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   88,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
       -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
@@ -1413,17 +1413,17 @@ static yyconst short yy_nxt[][256] =
        25,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
-      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,   92,  -36,  -36,  -36,  -36,  -36,
 
-      -36,  -36,  -36,  -36,  -36,  -36,   83,   83,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,  -36,  -36,
-      -36,  -36,  -36,  -36,  -36,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,  -36,   83,  -36,  -36,   87,  -36,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,   83,   84,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,  -36,   84,  -36,  -36,   83,  -36,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
 
       -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
@@ -1445,17 +1445,17 @@ static yyconst short yy_nxt[][256] =
        25,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
-      -37,  -37,  -37,  -37,   92,  -37,  -37,  -37,  -37,  -37,
-      -37,  -37,  -37,  -37,  -37,  -37,   83,   83,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,  -37,  -37,
-      -37,  -37,  -37,  -37,  -37,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,  -37,   83,  -37,  -37,   87,  -37,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,   84,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,  -37,   84,  -37,  -37,   84,  -37,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,   84,   84,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
       -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
@@ -2205,7 +2205,7 @@ static yyconst short yy_nxt[][256] =
       138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
       138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
 
-      138,  138,   84,  138,  138,  138,  138,  138,  138,  138,
+      138,  138,   85,  138,  138,  138,  138,  138,  138,  138,
       138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
       138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
       138,  138,  138,  138,  138,  138,  138,  138,  138,  138,
@@ -2521,7 +2521,7 @@ static yyconst short yy_nxt[][256] =
       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
 
-      141,  141,   84,  141,  141,  141,  141,  141,  141,  141,
+      141,  141,   85,  141,  141,  141,  141,  141,  141,  141,
       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
@@ -2900,12 +2900,12 @@ static yyconst short yy_nxt[][256] =
 
       -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,
       -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,
-      -83,  -83,  -83,  -83,  -83,  -83,   83,   83,   83,   83,
+      -83,  -83,  -83,  -83,  -83,  -83,   83,   84,   83,   83,
        83,   83,   83,   83,   83,   83,   83,   83,  -83,  -83,
       -83,  -83,  -83,  -83,  -83,   83,   83,   83,   83,   83,
        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,  -83,   83,  -83,  -83,   83,  -83,   83,   83,   83,
+       83,  -83,   84,  -83,  -83,   83,  -83,   83,   83,   83,
        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
 
@@ -2931,16 +2931,16 @@ static yyconst short yy_nxt[][256] =
       -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
       -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
       -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
-      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
-      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
-
-      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
-      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
-      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
-      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
-      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
-      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
-      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
+      -84,  -84,  -84,  -84,  -84,  -84,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,  -84,  -84,
+
+      -84,  -84,  -84,  -84,  -84,   84,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,  -84,   84,  -84,  -84,   84,  -84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,   84,   84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
       -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
       -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
       -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
@@ -2958,84 +2958,84 @@ static yyconst short yy_nxt[][256] =
 
     },
 
+    {
+       25,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
+      -85,  -85,  -85,  -85,  -85,  -85
+    },
+
     {
        25,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      -85,  151,  151,  151,  151,  151,  151,  151,  151,  151,
+      -86,  151,  151,  151,  151,  151,  151,  151,  151,  151,
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
+
       151,  151,  151,  151,  151,  151,  152,  152,  152,  152,
       152,  152,  152,  152,  152,  152,  152,  152,  151,  151,
       151,  151,  151,  151,  151,  152,  152,  152,  152,  152,
       152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
       152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
       152,  151,  152,  151,  151,  152,  151,  152,  152,  152,
-
       152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
       152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
       152,  152,  152,  151,  151,  151,  151,  151,  151,  151,
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
+
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
+
       151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
       151,  151,  151,  151,  151,  151
     },
 
-    {
-       25,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-
-      -86,  -86,  -86,  -86,  -86,  -86,   83,   83,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   88,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,  -86,   83,  -86,  -86,   87,  -86,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   88,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-
-      -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
-      -86,  -86,  -86,  -86,  -86,  -86
-    },
-
     {
        25,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
       -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
       -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
       -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
-      -87,  -87,  -87,  -87,  -87,  -87,   83,   83,   87,   87,
+      -87,  -87,  -87,  -87,  -87,  -87,   83,   84,   87,   87,
        87,   87,   87,   87,   87,   87,   87,   87,  -87,  -87,
-      -87,  -87,  -87,  -87,  -87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,  -87,   83,  -87,  -87,   87,  -87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
+      -87,  -87,  -87,  -87,  -87,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   88,   83,   83,   83,
+
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,  -87,   84,  -87,  -87,   83,  -87,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   88,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
       -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
       -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
       -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
@@ -3058,16 +3058,16 @@ static yyconst short yy_nxt[][256] =
 
       -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
       -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
-      -88,  -88,  -88,  -88,  -88,  -88,   83,   83,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,  -88,  -88,
-      -88,  -88,  -88,  -88,  -88,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,  -88,   83,  -88,  -88,   87,  -88,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-
-       87,   87,   87,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
+      -88,  -88,  -88,  -88,  -88,  -88,   83,   84,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,  -88,  -88,
+      -88,  -88,  -88,  -88,  -88,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,  -88,   84,  -88,  -88,   83,  -88,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+
+       83,   83,   83,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
       -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
       -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
       -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
@@ -3089,16 +3089,16 @@ static yyconst short yy_nxt[][256] =
       -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
       -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
       -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
-      -89,  -89,  -89,  -89,  -89,  -89,   83,   83,  153,  153,
-      153,  153,  153,  153,  153,  153,   87,   87,  -89,  -89,
-
-      -89,  -89,  -89,  -89,  -89,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,  -89,   83,  -89,  -89,   87,  -89,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
+      -89,  -89,  -89,  -89,  -89,  -89,   83,   84,  153,  153,
+      153,  153,  153,  153,  153,  153,   83,   83,  -89,  -89,
+
+      -89,  -89,  -89,  -89,  -89,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,  -89,   84,  -89,  -89,   83,  -89,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
       -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
       -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
       -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
@@ -3121,16 +3121,16 @@ static yyconst short yy_nxt[][256] =
       -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
       -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
       -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
-      -90,  -90,  -90,  -90,  -90,  -90,   83,   83,  154,  154,
+      -90,  -90,  -90,  -90,  -90,  -90,   83,   84,  154,  154,
       154,  154,  154,  154,  154,  154,  154,  154,  -90,  -90,
       -90,  -90,  -90,  -90,  -90,  154,  154,  154,  154,  154,
-      154,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,  -90,   83,  -90,  -90,   87,  -90,  154,  154,  154,
+      154,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,  -90,   84,  -90,  -90,   83,  -90,  154,  154,  154,
 
-      154,  154,  154,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
+      154,  154,  154,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
       -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
       -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
       -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
@@ -5112,16 +5112,16 @@ static yyconst short yy_nxt[][256] =
 
      -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
      -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
-     -153, -153, -153, -153, -153, -153,   83,   83,  153,  153,
-      153,  153,  153,  153,  153,  153,   87,   87, -153, -153,
-     -153, -153, -153, -153, -153,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,  174,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87, -153,   83, -153, -153,   87, -153,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,  174,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-
-       87,   87,   87, -153, -153, -153, -153, -153, -153, -153,
+     -153, -153, -153, -153, -153, -153,   83,   84,  153,  153,
+      153,  153,  153,  153,  153,  153,   83,   83, -153, -153,
+     -153, -153, -153, -153, -153,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,  174,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83, -153,   84, -153, -153,   83, -153,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,  174,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+
+       83,   83,   83, -153, -153, -153, -153, -153, -153, -153,
      -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
      -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
      -153, -153, -153, -153, -153, -153, -153, -153, -153, -153,
@@ -5143,16 +5143,16 @@ static yyconst short yy_nxt[][256] =
      -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
      -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
      -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
-     -154, -154, -154, -154, -154, -154,   83,   83,  154,  154,
+     -154, -154, -154, -154, -154, -154,   83,   84,  154,  154,
       154,  154,  154,  154,  154,  154,  154,  154, -154, -154,
 
      -154, -154, -154, -154, -154,  154,  154,  154,  154,  154,
-      154,   87,   87,   87,   87,   87,  175,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87, -154,   83, -154, -154,   87, -154,  154,  154,  154,
-      154,  154,  154,   87,   87,   87,   87,   87,  175,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87, -154, -154, -154, -154, -154, -154, -154,
+      154,   83,   83,   83,   83,   83,  175,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83, -154,   84, -154, -154,   83, -154,  154,  154,  154,
+      154,  154,  154,   83,   83,   83,   83,   83,  175,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83, -154, -154, -154, -154, -154, -154, -154,
      -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
      -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
      -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
@@ -5775,16 +5775,16 @@ static yyconst short yy_nxt[][256] =
      -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
      -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
      -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
-     -174, -174, -174, -174, -174, -174,   83,   83,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87, -174, -174,
-
-     -174, -174, -174, -174, -174,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87, -174,   83, -174, -174,   87, -174,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87, -174, -174, -174, -174, -174, -174, -174,
+     -174, -174, -174, -174, -174, -174,   83,   84,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83, -174, -174,
+
+     -174, -174, -174, -174, -174,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83, -174,   84, -174, -174,   83, -174,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83, -174, -174, -174, -174, -174, -174, -174,
      -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
      -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
      -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
@@ -5807,16 +5807,16 @@ static yyconst short yy_nxt[][256] =
      -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
      -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
      -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
-     -175, -175, -175, -175, -175, -175,   83,   83,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87, -175, -175,
-     -175, -175, -175, -175, -175,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87, -175,   83, -175, -175,   87, -175,   87,   87,   87,
-
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87, -175, -175, -175, -175, -175, -175, -175,
+     -175, -175, -175, -175, -175, -175,   83,   84,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83, -175, -175,
+     -175, -175, -175, -175, -175,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83, -175,   84, -175, -175,   83, -175,   83,   83,   83,
+
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83, -175, -175, -175, -175, -175, -175, -175,
      -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
      -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
      -175, -175, -175, -175, -175, -175, -175, -175, -175, -175,
@@ -6806,12 +6806,12 @@ static yyconst short int yy_accept[206] =
         0,    0,    0,    0,    0,    0,    0,    0,   82,   82,
         0,    0,   13,   13,   18,   18,   20,   20,    3,    3,
         5,    5,    8,    8,   93,   90,   89,   88,   53,   75,
-       30,   30,   26,   26,   86,   29,   29,   24,   25,   89,
+       29,   30,   26,   26,   86,   29,   30,   24,   25,   89,
         2,   70,   74,   55,   91,   51,   52,   33,   91,   80,
        78,   79,   76,   80,   82,   84,   83,   91,   13,   14,
        91,   11,    9,   10,   13,    2,   18,   19,   15,   16,
        91,   18,   23,   20,   22,   21,    3,    5,    5,    8,
-        8,   89,   30,   81,   30,   26,   29,   26,   29,   29,
+        8,   89,   29,   30,   81,   30,   26,   26,   29,   29,
        86,   31,   89,    2,    2,    0,   70,   54,   71,   68,
 
        60,   68,   68,   56,   59,   61,   62,   63,   64,   65,
@@ -6841,7 +6841,7 @@ static yyconst yy_state_type yy_NUL_trans[206] =
         0,    0,    0,    0,  133,    0,  134,    0,  137,    0,
       138,    0,    0,    0,  137,    0,  140,    0,    0,    0,
       141,  140,    0,    0,    0,    0,  144,  145,  145,  147,
-      147,    0,    0,    0,  151,    0,    0,    0,    0,    0,
+      147,    0,    0,    0,    0,  151,    0,    0,    0,    0,
        91,    0,    0,    0,    0,    0,   97,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -6863,16 +6863,16 @@ int yy_flex_debug = 1;
 
 static yyconst short int yy_rule_linenum[92] =
     {   0,
-      325,  326,  327,  347,  348,  350,  351,  362,  369,  370,
-      371,  372,  373,  374,  376,  377,  385,  386,  387,  389,
-      390,  391,  392,  394,  395,  397,  398,  399,  408,  427,
-      432,  438,  439,  444,  451,  456,  458,  459,  460,  461,
-      462,  463,  464,  465,  466,  467,  468,  469,  470,  471,
-      472,  477,  482,  483,  484,  489,  496,  501,  503,  504,
-      505,  506,  507,  508,  509,  510,  511,  512,  513,  514,
-      519,  520,  521,  522,  527,  528,  536,  541,  542,  543,
-      549,  555,  556,  557,  558,  560,  561,  563,  573,  575,
-      584
+      326,  327,  328,  348,  349,  351,  352,  363,  370,  371,
+      372,  373,  374,  375,  377,  378,  386,  387,  388,  390,
+      391,  392,  393,  395,  396,  398,  399,  400,  409,  428,
+      433,  439,  440,  445,  452,  457,  459,  460,  461,  462,
+      463,  464,  465,  466,  467,  468,  469,  470,  471,  472,
+      473,  478,  483,  484,  485,  490,  497,  502,  504,  505,
+      506,  507,  508,  509,  510,  511,  512,  513,  514,  515,
+      520,  521,  522,  523,  528,  529,  537,  542,  543,  544,
+      550,  556,  557,  558,  559,  561,  562,  564,  574,  576,
+      585
 
     } ;
 
@@ -7097,6 +7097,7 @@ static struct keyword keywords[] = {
        { "GRAYED",             tGRAYED,                0, 0, 0},
        { "GROUPBOX",           tGROUPBOX,              0, 0, 0},
        { "HELP",               tHELP,                  0, 0, 0},
+       { "HTML",               tHTML,                  0, 0, 0},
        { "ICON",               tICON,                  0, 0, 0},
        { "IMPURE",             tIMPURE,                0, 0, 0},
        { "INACTIVE",           tINACTIVE,              0, 0, 0},
@@ -7194,7 +7195,7 @@ static struct keyword *iskeyword(char *kw)
  * The flexer starts here
  **************************************************************************
  */
-#line 7198 "lex.yy.c"
+#line 7199 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -7348,7 +7349,7 @@ YY_DECL
        register char *yy_cp = NULL, *yy_bp = NULL;
        register int yy_act;
 
-#line 306 "./parser.l"
+#line 307 "./parser.l"
 
        /*
         * Catch the GCC-style line statements here and parse them.
@@ -7368,7 +7369,7 @@ YY_DECL
         * because we only want to know the linenumber and
         * filename.
         */
-#line 7372 "lex.yy.c"
+#line 7373 "lex.yy.c"
 
        if ( yy_init )
                {
@@ -7457,28 +7458,25 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 325 "./parser.l"
+#line 326 "./parser.l"
 yy_push_state(pp_pragma);
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 326 "./parser.l"
+#line 327 "./parser.l"
 yy_push_state(pp_line);
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 327 "./parser.l"
+#line 328 "./parser.l"
 {
                int lineno;
                char *cptr;
                char *fname;
                yy_pop_state();
                lineno = (int)strtol(yytext, &cptr, 10);
-#if 0
-               /* ignore malformed line numbers by gcc: # 0 "<built-in>" */
                if(!lineno)
                        yyerror("Malformed '#...' line-directive; invalid linenumber");
-#endif
                fname = strchr(cptr, '"');
                if(!fname)
                        yyerror("Malformed '#...' line-directive; missing filename");
@@ -7493,22 +7491,22 @@ YY_RULE_SETUP
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 347 "./parser.l"
+#line 348 "./parser.l"
 yyless(9); yy_pop_state(); yy_push_state(pp_code_page);
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 348 "./parser.l"
+#line 349 "./parser.l"
 yy_pop_state(); if (pedantic) yywarning("Unrecognized #pragma directive '%s'",yytext);
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 350 "./parser.l"
+#line 351 "./parser.l"
 current_codepage = -1; yy_pop_state();
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 351 "./parser.l"
+#line 352 "./parser.l"
 {
         char *p = yytext;
         yy_pop_state();
@@ -7523,7 +7521,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 362 "./parser.l"
+#line 363 "./parser.l"
 yy_pop_state(); yyerror("Malformed #pragma code_page directive");
        YY_BREAK
 /*
@@ -7533,42 +7531,42 @@ yy_pop_state(); yyerror("Malformed #pragma code_page directive");
         */
 case 9:
 YY_RULE_SETUP
-#line 369 "./parser.l"
+#line 370 "./parser.l"
 stripslevel++;
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 370 "./parser.l"
+#line 371 "./parser.l"
 stripslevel--;
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 371 "./parser.l"
+#line 372 "./parser.l"
 if(!stripslevel) yy_pop_state();
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 372 "./parser.l"
+#line 373 "./parser.l"
 ; /* To catch comments */
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 373 "./parser.l"
+#line 374 "./parser.l"
 ; /* Ignore rest */
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 374 "./parser.l"
+#line 375 "./parser.l"
 line_number++; char_number = 1;
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 376 "./parser.l"
+#line 377 "./parser.l"
 stripplevel++;
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 377 "./parser.l"
+#line 378 "./parser.l"
 {
                                        stripplevel--;
                                        if(!stripplevel)
@@ -7580,62 +7578,62 @@ YY_RULE_SETUP
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 385 "./parser.l"
+#line 386 "./parser.l"
 ; /* To catch comments */
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 386 "./parser.l"
+#line 387 "./parser.l"
 ; /* Ignore rest */
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 387 "./parser.l"
+#line 388 "./parser.l"
 line_number++; char_number = 1;
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 389 "./parser.l"
+#line 390 "./parser.l"
 ; /* Ignore */
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 390 "./parser.l"
+#line 391 "./parser.l"
 yy_pop_state(); /* Kill the semicolon */
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 391 "./parser.l"
+#line 392 "./parser.l"
 line_number++; char_number = 1; yy_pop_state();
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 392 "./parser.l"
+#line 393 "./parser.l"
 yyless(0); yy_pop_state();
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 394 "./parser.l"
+#line 395 "./parser.l"
 return tBEGIN;
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 395 "./parser.l"
+#line 396 "./parser.l"
 return tEND;
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 397 "./parser.l"
+#line 398 "./parser.l"
 { yylval.num = strtoul(yytext,  0, 10); return toupper(yytext[yyleng-1]) == 'L' ? tLNUMBER : tNUMBER; }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 398 "./parser.l"
+#line 399 "./parser.l"
 { yylval.num = strtoul(yytext,  0, 16); return toupper(yytext[yyleng-1]) == 'L' ? tLNUMBER : tNUMBER; }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 399 "./parser.l"
+#line 400 "./parser.l"
 { yylval.num = strtoul(yytext+2, 0, 8); return toupper(yytext[yyleng-1]) == 'L' ? tLNUMBER : tNUMBER; }
        YY_BREAK
 /*
@@ -7647,7 +7645,7 @@ YY_RULE_SETUP
         */
 case 29:
 YY_RULE_SETUP
-#line 408 "./parser.l"
+#line 409 "./parser.l"
 {
                                struct keyword *tok = iskeyword(yytext);
 
@@ -7670,7 +7668,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 427 "./parser.l"
+#line 428 "./parser.l"
 yylval.str = make_string(yytext); return tFILENAME;
        YY_BREAK
 /*
@@ -7678,7 +7676,7 @@ yylval.str = make_string(yytext); return tFILENAME;
         */
 case 31:
 YY_RULE_SETUP
-#line 432 "./parser.l"
+#line 433 "./parser.l"
 {
                                yy_push_state(yylstr);
                                wbufidx = 0;
@@ -7687,10 +7685,10 @@ YY_RULE_SETUP
                        }
        YY_BREAK
 case 32:
-#line 439 "./parser.l"
+#line 440 "./parser.l"
 case 33:
 YY_RULE_SETUP
-#line 439 "./parser.l"
+#line 440 "./parser.l"
 {
                                yy_pop_state();
                                yylval.str = get_buffered_wstring();
@@ -7699,7 +7697,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 444 "./parser.l"
+#line 445 "./parser.l"
 { /* octal escape sequence */
                                unsigned int result;
                                result = strtoul(yytext+1, 0, 8);
@@ -7710,7 +7708,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 451 "./parser.l"
+#line 452 "./parser.l"
 {  /* hex escape sequence */
                                unsigned int result;
                                result = strtoul(yytext+2, 0, 16);
@@ -7719,82 +7717,82 @@ YY_RULE_SETUP
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 456 "./parser.l"
+#line 457 "./parser.l"
 {  yyerror("Invalid hex escape sequence '%s'", yytext); }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 458 "./parser.l"
+#line 459 "./parser.l"
 yyerror("Bad escape sequence");
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 459 "./parser.l"
+#line 460 "./parser.l"
 line_number++; char_number = 1; /* backslash at EOL continues string after leading whitespace on next line */
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 460 "./parser.l"
+#line 461 "./parser.l"
 addwchar('\a');
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 461 "./parser.l"
+#line 462 "./parser.l"
 addwchar('\b');
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 462 "./parser.l"
+#line 463 "./parser.l"
 addwchar('\f');
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 463 "./parser.l"
+#line 464 "./parser.l"
 addwchar('\n');
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 464 "./parser.l"
+#line 465 "./parser.l"
 addwchar('\r');
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 465 "./parser.l"
+#line 466 "./parser.l"
 addwchar('\t');
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 466 "./parser.l"
+#line 467 "./parser.l"
 addwchar('\v');
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 467 "./parser.l"
+#line 468 "./parser.l"
 addwchar(yytext[1]);
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 468 "./parser.l"
+#line 469 "./parser.l"
 addwchar(yytext[2]); line_number++; char_number = 1;
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 469 "./parser.l"
+#line 470 "./parser.l"
 addwchar('\"');                /* "bla""bla"  -> "bla\"bla" */
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 470 "./parser.l"
+#line 471 "./parser.l"
 addwchar('\"');                /* "bla\""bla" -> "bla\"bla" */
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 471 "./parser.l"
+#line 472 "./parser.l"
 ;                      /* "bla" "bla" -> "blabla" */
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 472 "./parser.l"
+#line 473 "./parser.l"
 {
                                char *yptr = yytext;
                                while(*yptr)    /* FIXME: codepage translation */
@@ -7803,7 +7801,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 477 "./parser.l"
+#line 478 "./parser.l"
 yyerror("Unterminated string");
        YY_BREAK
 /*
@@ -7811,14 +7809,14 @@ yyerror("Unterminated string");
         */
 case 53:
 YY_RULE_SETUP
-#line 482 "./parser.l"
+#line 483 "./parser.l"
 yy_push_state(yystr); cbufidx = 0;
        YY_BREAK
 case 54:
-#line 484 "./parser.l"
+#line 485 "./parser.l"
 case 55:
 YY_RULE_SETUP
-#line 484 "./parser.l"
+#line 485 "./parser.l"
 {
                                yy_pop_state();
                                yylval.str = get_buffered_cstring();
@@ -7827,7 +7825,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 489 "./parser.l"
+#line 490 "./parser.l"
 { /* octal escape sequence */
                                int result;
                                result = strtol(yytext+1, 0, 8);
@@ -7838,7 +7836,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 496 "./parser.l"
+#line 497 "./parser.l"
 {  /* hex escape sequence */
                                int result;
                                result = strtol(yytext+2, 0, 16);
@@ -7847,67 +7845,67 @@ YY_RULE_SETUP
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 501 "./parser.l"
+#line 502 "./parser.l"
 {  yyerror("Invalid hex escape sequence '%s'", yytext); }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 503 "./parser.l"
+#line 504 "./parser.l"
 yyerror("Bad escape sequence");
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 504 "./parser.l"
+#line 505 "./parser.l"
 line_number++; char_number = 1; /* backslash at EOL continues string after leading whitespace on next line */
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 505 "./parser.l"
+#line 506 "./parser.l"
 addcchar('\a');
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 506 "./parser.l"
+#line 507 "./parser.l"
 addcchar('\b');
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 507 "./parser.l"
+#line 508 "./parser.l"
 addcchar('\f');
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 508 "./parser.l"
+#line 509 "./parser.l"
 addcchar('\n');
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 509 "./parser.l"
+#line 510 "./parser.l"
 addcchar('\r');
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 510 "./parser.l"
+#line 511 "./parser.l"
 addcchar('\t');
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 511 "./parser.l"
+#line 512 "./parser.l"
 addcchar('\v');
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 512 "./parser.l"
+#line 513 "./parser.l"
 addcchar(yytext[1]);
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 513 "./parser.l"
+#line 514 "./parser.l"
 addcchar(yytext[2]); line_number++; char_number = 1;
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 514 "./parser.l"
+#line 515 "./parser.l"
 {
                                char *yptr = yytext;
                                while(*yptr)
@@ -7916,22 +7914,22 @@ YY_RULE_SETUP
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 519 "./parser.l"
+#line 520 "./parser.l"
 addcchar('\"');                /* "bla""bla"   -> "bla\"bla" */
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 520 "./parser.l"
+#line 521 "./parser.l"
 addcchar('\"');                /* "bla\""bla"  -> "bla\"bla" */
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 521 "./parser.l"
+#line 522 "./parser.l"
 ;                      /* "bla" "bla"  -> "blabla" */
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 522 "./parser.l"
+#line 523 "./parser.l"
 yyerror("Unterminated string");
        YY_BREAK
 /*
@@ -7939,12 +7937,12 @@ yyerror("Unterminated string");
         */
 case 75:
 YY_RULE_SETUP
-#line 527 "./parser.l"
+#line 528 "./parser.l"
 yy_push_state(yyrcd); cbufidx = 0;
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 528 "./parser.l"
+#line 529 "./parser.l"
 {
                                yy_pop_state();
                                yylval.raw = new_raw_data();
@@ -7956,7 +7954,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 536 "./parser.l"
+#line 537 "./parser.l"
 {
                                int result;
                                result = strtol(yytext, 0, 16);
@@ -7965,17 +7963,17 @@ YY_RULE_SETUP
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 541 "./parser.l"
+#line 542 "./parser.l"
 ;      /* Ignore space */
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 542 "./parser.l"
+#line 543 "./parser.l"
 line_number++; char_number = 1;
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 543 "./parser.l"
+#line 544 "./parser.l"
 yyerror("Malformed data-line");
        YY_BREAK
 /*
@@ -7984,7 +7982,7 @@ yyerror("Malformed data-line");
         */
 case 81:
 YY_RULE_SETUP
-#line 549 "./parser.l"
+#line 550 "./parser.l"
 {
                                yy_push_state(comment);
                                save_wanted_id = wanted_id;
@@ -7994,37 +7992,37 @@ YY_RULE_SETUP
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 555 "./parser.l"
+#line 556 "./parser.l"
 ;
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 556 "./parser.l"
+#line 557 "./parser.l"
 ;
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 557 "./parser.l"
+#line 558 "./parser.l"
 line_number++; char_number = 1;
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 558 "./parser.l"
+#line 559 "./parser.l"
 yy_pop_state(); want_id = save_wanted_id;
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 560 "./parser.l"
+#line 561 "./parser.l"
 want_id = wanted_id; /* not really comment, but left-over c-junk */
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 561 "./parser.l"
+#line 562 "./parser.l"
 want_id = wanted_id; if(!no_preprocess) yywarning("Found comments after preprocessing, please report");
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 563 "./parser.l"
+#line 564 "./parser.l"
 {
                                want_id = wanted_id;
                                line_number++;
@@ -8038,12 +8036,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 573 "./parser.l"
+#line 574 "./parser.l"
 want_id = wanted_id;   /* Eat whitespace */
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 575 "./parser.l"
+#line 576 "./parser.l"
 return yytext[0];
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
@@ -8058,7 +8056,7 @@ case YY_STATE_EOF(pp_stripp_final):
 case YY_STATE_EOF(pp_line):
 case YY_STATE_EOF(pp_pragma):
 case YY_STATE_EOF(pp_code_page):
-#line 577 "./parser.l"
+#line 578 "./parser.l"
 {
                                if(YY_START == pp_strips || YY_START == pp_stripe || YY_START == pp_stripp || YY_START == pp_stripp_final)
                                        yyerror("Unexpected end of file during c-junk scanning (started at %d)", cjunk_tagline);
@@ -8068,7 +8066,7 @@ case YY_STATE_EOF(pp_code_page):
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 584 "./parser.l"
+#line 585 "./parser.l"
 {
                                /* Catch all rule to find any unmatched text */
                                if(*yytext == '\n')
@@ -8082,10 +8080,10 @@ YY_RULE_SETUP
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 595 "./parser.l"
+#line 596 "./parser.l"
 ECHO;
        YY_BREAK
-#line 8086 "lex.yy.c"
+#line 8087 "lex.yy.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -8962,7 +8960,7 @@ int main()
        return 0;
        }
 #endif
-#line 595 "./parser.l"
+#line 596 "./parser.l"
 
 
 #ifndef yywrap
index 46d0a6c..9129caa 100644 (file)
@@ -123,6 +123,20 @@ characts_t *dup_characts(characts_t *c)
        return new_characts(*c);
 }
 
+html_t *new_html(raw_data_t *rd, int *memopt)
+{
+       html_t *html = xmalloc(sizeof(html_t));
+       html->data = rd;
+       if(memopt)
+       {
+               html->memopt = *memopt;
+               free(memopt);
+       }
+       else
+               html->memopt = WRC_MO_MOVEABLE | WRC_MO_PURE;
+       return html;
+}
+
 rcdata_t *new_rcdata(raw_data_t *rd, int *memopt)
 {
        rcdata_t *rc = (rcdata_t *)xmalloc(sizeof(rcdata_t));
index a0a624d..8f061ef 100644 (file)
@@ -61,6 +61,7 @@ language_t *new_language(int id, int sub);
 language_t *dup_language(language_t *l);
 version_t *dup_version(version_t *v);
 characts_t *dup_characts(characts_t *c);
+html_t *new_html(raw_data_t *rd, int *memopt);
 rcdata_t *new_rcdata(raw_data_t *rd, int *memopt);
 font_id_t *new_font_id(int size, string_t *face, int weight, int italic);
 user_t *new_user(name_id_t *type, raw_data_t *rd, int *memopt);
@@ -82,4 +83,3 @@ style_pair_t *new_style_pair(style_t *style, style_t *exstyle);
 style_t *new_style(DWORD or_mask, DWORD and_mask);
 
 #endif
-
index 2e04bc1..9983d10 100644 (file)
@@ -204,6 +204,7 @@ static struct keyword keywords[] = {
        { "GRAYED",             tGRAYED,                0, 0, 0},
        { "GROUPBOX",           tGROUPBOX,              0, 0, 0},
        { "HELP",               tHELP,                  0, 0, 0},
+       { "HTML",               tHTML,                  0, 0, 0},
        { "ICON",               tICON,                  0, 0, 0},
        { "IMPURE",             tIMPURE,                0, 0, 0},
        { "INACTIVE",           tINACTIVE,              0, 0, 0},
@@ -405,7 +406,7 @@ static struct keyword *iskeyword(char *kw)
         * and *only* in a filename. In this case, the second
         * rule will be reduced because it is longer.
         */
-[A-Za-z_0-9]+          {
+[A-Za-z_0-9.]+         {
                                struct keyword *tok = iskeyword(yytext);
 
                                if(tok)
index 5173dd4..af5effa 100644 (file)
@@ -251,6 +251,7 @@ static int rsrcid_to_token(int lookahead);
        fontdir_t       *fnd;
        menu_t          *men;
        menuex_t        *menex;
+       html_t          *html;
        rcdata_t        *rdt;
        stringtable_t   *stt;
        stt_entry_t     *stte;
@@ -285,7 +286,7 @@ static int rsrcid_to_token(int lookahead);
 %token <str> tSTRING tIDENT tFILENAME
 %token <raw> tRAWDATA
 %token tACCELERATORS tBITMAP tCURSOR tDIALOG tDIALOGEX tMENU tMENUEX tMESSAGETABLE
-%token tRCDATA tVERSIONINFO tSTRINGTABLE tFONT tFONTDIR tICON
+%token tRCDATA tVERSIONINFO tSTRINGTABLE tFONT tFONTDIR tICON tHTML
 %token tAUTO3STATE tAUTOCHECKBOX tAUTORADIOBUTTON tCHECKBOX tDEFPUSHBUTTON
 %token tPUSHBUTTON tRADIOBUTTON tSTATE3 /* PUSHBOX */
 %token tGROUPBOX tCOMBOBOX tLISTBOX tSCROLLBAR
@@ -323,6 +324,7 @@ static int rsrcid_to_token(int lookahead);
 %type <iptr>   helpid
 %type <dlgex>  dialogex dlgex_attribs
 %type <ctl>    exctrls gen_exctrl lab_exctrl exctrl_desc
+%type <html>   html
 %type <rdt>    rcdata
 %type <raw>    raw_data raw_elements opt_data file_raw
 %type <veri>   versioninfo fix_version
@@ -644,6 +646,7 @@ resource_definition
                        $$ = NULL;
                }
        | messagetable  { $$ = new_resource(res_msg, $1, WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE, $1->data->lvc.language); }
+       | html          { $$ = new_resource(res_html, $1, $1->memopt, $1->data->lvc.language); }
        | rcdata        { $$ = new_resource(res_rdt, $1, $1->memopt, $1->data->lvc.language); }
        | toolbar       { $$ = new_resource(res_toolbar, $1, $1->memopt, $1->lvc.language); }
        | userres       { $$ = new_resource(res_usr, $1, $1->memopt, $1->data->lvc.language); }
@@ -724,6 +727,10 @@ messagetable
                }
        ;
 
+/* ------------------------------ HTML ------------------------------ */
+html   : tHTML loadmemopts file_raw    { $$ = new_html($3, $2); }
+       ;
+
 /* ------------------------------ RCData ------------------------------ */
 rcdata : tRCDATA loadmemopts file_raw  { $$ = new_rcdata($3, $2); }
        ;
@@ -3017,6 +3024,10 @@ static int rsrcid_to_token(int lookahead)
                type = "TOOLBAR";
                token = tTOOLBAR;
                break;
+       case WRC_RT_HTML:
+               type = "HTML";
+               token = tHTML;
+               break;
 
        case WRC_RT_STRING:
                type = "STRINGTABLE";
@@ -3032,7 +3043,6 @@ static int rsrcid_to_token(int lookahead)
        case WRC_RT_DLGINCLUDE:
        case WRC_RT_PLUGPLAY:
        case WRC_RT_VXD:
-       case WRC_RT_HTML:
                yywarning("Usertype uses reserved type ID %d, which is not supported by wrc yet", yylval.num);
        default:
                return lookahead;
index 993e1d3..4b6405c 100644 (file)
@@ -232,7 +232,7 @@ static resource_t *read_res32(FILE *fp)
                        str = new_string();
                        str->type = str_unicode;
                        str->size = (idx - tag) / 2;
-                       str->str.wstr = (WCHAR *)xmalloc(idx-tag+2);
+                       str->str.wstr = xmalloc(idx-tag+2);
                        memcpy(str->str.wstr, &res->data[tag], idx-tag);
                        str->str.wstr[str->size] = 0;
                        type = new_name_id();
@@ -266,7 +266,7 @@ static resource_t *read_res32(FILE *fp)
                        str = new_string();
                        str->type = str_unicode;
                        str->size = (idx - tag) / 2;
-                       str->str.wstr = (WCHAR *)xmalloc(idx-tag+2);
+                       str->str.wstr = xmalloc(idx-tag+2);
                        memcpy(str->str.wstr, &res->data[tag], idx-tag);
                        str->str.wstr[str->size] = 0;
                        name = new_name_id();
index d776d26..f81e793 100644 (file)
 #define RES_BLOCKSIZE  512
 
 typedef struct res {
-       int     allocsize;      /* Allocated datablock size */
-       int     size;           /* Actual size of data */
-       int     dataidx;        /* Tag behind the resource-header */
-       char    *data;
+       unsigned int    allocsize;      /* Allocated datablock size */
+       unsigned int    size;           /* Actual size of data */
+       unsigned int    dataidx;        /* Tag behind the resource-header */
+       char            *data;
 } res_t;
 
 /* Resource strings are slightly more complex because they include '\0' */
@@ -441,6 +441,11 @@ typedef struct bitmap {
        raw_data_t      *data;
 } bitmap_t;
 
+typedef struct html {
+       DWORD           memopt;
+       raw_data_t      *data;
+} html_t;
+
 typedef struct rcdata {
        DWORD           memopt;
        raw_data_t      *data;
@@ -615,6 +620,7 @@ typedef struct resource {
                menu_t          *men;
                menuex_t        *menex;
                messagetable_t  *msg;
+               html_t          *html;
                rcdata_t        *rdt;
                stringtable_t   *stt;
                toolbar_t       *tbt;
index 327b121..6fed70b 100644 (file)
@@ -46,7 +46,7 @@
 void write_resfile(char *outname, resource_t *top)
 {
        FILE *fo;
-       int ret;
+       unsigned int ret;
        char zeros[3] = {0, 0, 0};
 
        fo = fopen(outname, "wb");
index 1eb0fc7..1d0ed72 100644 (file)
      tFONT = 276,
      tFONTDIR = 277,
      tICON = 278,
-     tAUTO3STATE = 279,
-     tAUTOCHECKBOX = 280,
-     tAUTORADIOBUTTON = 281,
-     tCHECKBOX = 282,
-     tDEFPUSHBUTTON = 283,
-     tPUSHBUTTON = 284,
-     tRADIOBUTTON = 285,
-     tSTATE3 = 286,
-     tGROUPBOX = 287,
-     tCOMBOBOX = 288,
-     tLISTBOX = 289,
-     tSCROLLBAR = 290,
-     tCONTROL = 291,
-     tEDITTEXT = 292,
-     tRTEXT = 293,
-     tCTEXT = 294,
-     tLTEXT = 295,
-     tBLOCK = 296,
-     tVALUE = 297,
-     tSHIFT = 298,
-     tALT = 299,
-     tASCII = 300,
-     tVIRTKEY = 301,
-     tGRAYED = 302,
-     tCHECKED = 303,
-     tINACTIVE = 304,
-     tNOINVERT = 305,
-     tPURE = 306,
-     tIMPURE = 307,
-     tDISCARDABLE = 308,
-     tLOADONCALL = 309,
-     tPRELOAD = 310,
-     tFIXED = 311,
-     tMOVEABLE = 312,
-     tCLASS = 313,
-     tCAPTION = 314,
-     tCHARACTERISTICS = 315,
-     tEXSTYLE = 316,
-     tSTYLE = 317,
-     tVERSION = 318,
-     tLANGUAGE = 319,
-     tFILEVERSION = 320,
-     tPRODUCTVERSION = 321,
-     tFILEFLAGSMASK = 322,
-     tFILEOS = 323,
-     tFILETYPE = 324,
-     tFILEFLAGS = 325,
-     tFILESUBTYPE = 326,
-     tMENUBARBREAK = 327,
-     tMENUBREAK = 328,
-     tMENUITEM = 329,
-     tPOPUP = 330,
-     tSEPARATOR = 331,
-     tHELP = 332,
-     tTOOLBAR = 333,
-     tBUTTON = 334,
-     tBEGIN = 335,
-     tEND = 336,
-     tDLGINIT = 337,
-     tNOT = 338,
-     pUPM = 339
+     tHTML = 279,
+     tAUTO3STATE = 280,
+     tAUTOCHECKBOX = 281,
+     tAUTORADIOBUTTON = 282,
+     tCHECKBOX = 283,
+     tDEFPUSHBUTTON = 284,
+     tPUSHBUTTON = 285,
+     tRADIOBUTTON = 286,
+     tSTATE3 = 287,
+     tGROUPBOX = 288,
+     tCOMBOBOX = 289,
+     tLISTBOX = 290,
+     tSCROLLBAR = 291,
+     tCONTROL = 292,
+     tEDITTEXT = 293,
+     tRTEXT = 294,
+     tCTEXT = 295,
+     tLTEXT = 296,
+     tBLOCK = 297,
+     tVALUE = 298,
+     tSHIFT = 299,
+     tALT = 300,
+     tASCII = 301,
+     tVIRTKEY = 302,
+     tGRAYED = 303,
+     tCHECKED = 304,
+     tINACTIVE = 305,
+     tNOINVERT = 306,
+     tPURE = 307,
+     tIMPURE = 308,
+     tDISCARDABLE = 309,
+     tLOADONCALL = 310,
+     tPRELOAD = 311,
+     tFIXED = 312,
+     tMOVEABLE = 313,
+     tCLASS = 314,
+     tCAPTION = 315,
+     tCHARACTERISTICS = 316,
+     tEXSTYLE = 317,
+     tSTYLE = 318,
+     tVERSION = 319,
+     tLANGUAGE = 320,
+     tFILEVERSION = 321,
+     tPRODUCTVERSION = 322,
+     tFILEFLAGSMASK = 323,
+     tFILEOS = 324,
+     tFILETYPE = 325,
+     tFILEFLAGS = 326,
+     tFILESUBTYPE = 327,
+     tMENUBARBREAK = 328,
+     tMENUBREAK = 329,
+     tMENUITEM = 330,
+     tPOPUP = 331,
+     tSEPARATOR = 332,
+     tHELP = 333,
+     tTOOLBAR = 334,
+     tBUTTON = 335,
+     tBEGIN = 336,
+     tEND = 337,
+     tDLGINIT = 338,
+     tNOT = 339,
+     pUPM = 340
    };
 #endif
 #define tNL 258
 #define tFONT 276
 #define tFONTDIR 277
 #define tICON 278
-#define tAUTO3STATE 279
-#define tAUTOCHECKBOX 280
-#define tAUTORADIOBUTTON 281
-#define tCHECKBOX 282
-#define tDEFPUSHBUTTON 283
-#define tPUSHBUTTON 284
-#define tRADIOBUTTON 285
-#define tSTATE3 286
-#define tGROUPBOX 287
-#define tCOMBOBOX 288
-#define tLISTBOX 289
-#define tSCROLLBAR 290
-#define tCONTROL 291
-#define tEDITTEXT 292
-#define tRTEXT 293
-#define tCTEXT 294
-#define tLTEXT 295
-#define tBLOCK 296
-#define tVALUE 297
-#define tSHIFT 298
-#define tALT 299
-#define tASCII 300
-#define tVIRTKEY 301
-#define tGRAYED 302
-#define tCHECKED 303
-#define tINACTIVE 304
-#define tNOINVERT 305
-#define tPURE 306
-#define tIMPURE 307
-#define tDISCARDABLE 308
-#define tLOADONCALL 309
-#define tPRELOAD 310
-#define tFIXED 311
-#define tMOVEABLE 312
-#define tCLASS 313
-#define tCAPTION 314
-#define tCHARACTERISTICS 315
-#define tEXSTYLE 316
-#define tSTYLE 317
-#define tVERSION 318
-#define tLANGUAGE 319
-#define tFILEVERSION 320
-#define tPRODUCTVERSION 321
-#define tFILEFLAGSMASK 322
-#define tFILEOS 323
-#define tFILETYPE 324
-#define tFILEFLAGS 325
-#define tFILESUBTYPE 326
-#define tMENUBARBREAK 327
-#define tMENUBREAK 328
-#define tMENUITEM 329
-#define tPOPUP 330
-#define tSEPARATOR 331
-#define tHELP 332
-#define tTOOLBAR 333
-#define tBUTTON 334
-#define tBEGIN 335
-#define tEND 336
-#define tDLGINIT 337
-#define tNOT 338
-#define pUPM 339
+#define tHTML 279
+#define tAUTO3STATE 280
+#define tAUTOCHECKBOX 281
+#define tAUTORADIOBUTTON 282
+#define tCHECKBOX 283
+#define tDEFPUSHBUTTON 284
+#define tPUSHBUTTON 285
+#define tRADIOBUTTON 286
+#define tSTATE3 287
+#define tGROUPBOX 288
+#define tCOMBOBOX 289
+#define tLISTBOX 290
+#define tSCROLLBAR 291
+#define tCONTROL 292
+#define tEDITTEXT 293
+#define tRTEXT 294
+#define tCTEXT 295
+#define tLTEXT 296
+#define tBLOCK 297
+#define tVALUE 298
+#define tSHIFT 299
+#define tALT 300
+#define tASCII 301
+#define tVIRTKEY 302
+#define tGRAYED 303
+#define tCHECKED 304
+#define tINACTIVE 305
+#define tNOINVERT 306
+#define tPURE 307
+#define tIMPURE 308
+#define tDISCARDABLE 309
+#define tLOADONCALL 310
+#define tPRELOAD 311
+#define tFIXED 312
+#define tMOVEABLE 313
+#define tCLASS 314
+#define tCAPTION 315
+#define tCHARACTERISTICS 316
+#define tEXSTYLE 317
+#define tSTYLE 318
+#define tVERSION 319
+#define tLANGUAGE 320
+#define tFILEVERSION 321
+#define tPRODUCTVERSION 322
+#define tFILEFLAGSMASK 323
+#define tFILEOS 324
+#define tFILETYPE 325
+#define tFILEFLAGS 326
+#define tFILESUBTYPE 327
+#define tMENUBARBREAK 328
+#define tMENUBREAK 329
+#define tMENUITEM 330
+#define tPOPUP 331
+#define tSEPARATOR 332
+#define tHELP 333
+#define tTOOLBAR 334
+#define tBUTTON 335
+#define tBEGIN 336
+#define tEND 337
+#define tDLGINIT 338
+#define tNOT 339
+#define pUPM 340
 
 
 
 
 /* Copy the first part of user declarations.  */
-#line 1 "parser.y"
+#line 1 "./parser.y"
 
 /*
  * Copyright 1994      Martin von Loewis
@@ -479,7 +481,7 @@ static int rsrcid_to_token(int lookahead);
 #endif
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 240 "parser.y"
+#line 240 "./parser.y"
 typedef union YYSTYPE {
        string_t        *str;
        int             num;
@@ -494,6 +496,7 @@ typedef union YYSTYPE {
        fontdir_t       *fnd;
        menu_t          *men;
        menuex_t        *menex;
+       html_t          *html;
        rcdata_t        *rdt;
        stringtable_t   *stt;
        stt_entry_t     *stte;
@@ -523,7 +526,7 @@ typedef union YYSTYPE {
        ani_any_t       *ani;
 } YYSTYPE;
 /* Line 191 of yacc.c.  */
-#line 527 "parser.tab.c"
+#line 530 "y.tab.c"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -535,7 +538,7 @@ typedef union YYSTYPE {
 
 
 /* Line 214 of yacc.c.  */
-#line 539 "parser.tab.c"
+#line 542 "y.tab.c"
 
 #if ! defined (yyoverflow) || YYERROR_VERBOSE
 
@@ -641,20 +644,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   738
+#define YYLAST   713
 
 /* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS  96
+#define YYNTOKENS  97
 /* YYNNTS -- Number of nonterminals. */
-#define YYNNTS  83
+#define YYNNTS  84
 /* YYNRULES -- Number of rules. */
-#define YYNRULES  257
+#define YYNRULES  259
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  571
+#define YYNSTATES  575
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   339
+#define YYMAXUTOK   340
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -665,16 +668,16 @@ static const unsigned char yytranslate[] =
        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,     2,     2,     2,     2,     2,    85,     2,
-      94,    95,    88,    86,    93,    87,     2,    89,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    86,     2,
+      95,    96,    89,    87,    94,    88,     2,    90,     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,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,    84,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,    85,     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,    83,     2,    90,     2,     2,     2,
+       2,     2,     2,     2,    84,     2,    91,     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,
@@ -695,7 +698,8 @@ static const unsigned char yytranslate[] =
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    91,    92
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    92,
+      93
 };
 
 #if YYDEBUG
@@ -706,165 +710,166 @@ static const unsigned short yyprhs[] =
        0,     0,     3,     5,     6,     9,    12,    16,    20,    22,
       23,    29,    30,    32,    34,    36,    38,    40,    42,    44,
       46,    48,    50,    52,    54,    56,    58,    60,    62,    64,
-      66,    68,    70,    72,    74,    76,    80,    84,    88,    92,
-      96,   100,   104,   108,   112,   114,   116,   123,   124,   130,
-     136,   137,   140,   142,   146,   148,   150,   152,   154,   156,
-     158,   172,   173,   177,   181,   185,   188,   192,   196,   199,
-     202,   205,   206,   210,   214,   218,   222,   226,   230,   234,
-     238,   242,   246,   250,   254,   258,   262,   266,   270,   274,
-     285,   298,   309,   310,   315,   322,   331,   349,   365,   370,
-     371,   374,   379,   383,   387,   389,   392,   394,   396,   411,
-     412,   416,   420,   424,   427,   430,   434,   438,   441,   444,
-     447,   448,   452,   456,   460,   464,   468,   472,   476,   480,
-     484,   488,   492,   496,   500,   504,   508,   512,   516,   527,
-     547,   564,   579,   592,   593,   595,   596,   599,   609,   610,
-     613,   618,   622,   623,   630,   634,   640,   641,   645,   649,
-     653,   657,   661,   665,   670,   674,   675,   680,   684,   690,
-     691,   694,   700,   707,   708,   711,   716,   723,   732,   737,
-     741,   742,   747,   748,   750,   757,   758,   768,   778,   782,
-     786,   790,   794,   798,   799,   802,   808,   809,   812,   814,
-     819,   824,   826,   830,   840,   841,   845,   848,   849,   852,
-     855,   857,   859,   861,   863,   865,   867,   869,   870,   873,
-     876,   879,   884,   887,   890,   895,   897,   899,   902,   904,
-     907,   909,   913,   917,   922,   926,   931,   935,   937,   939,
-     940,   942,   944,   948,   952,   956,   960,   964,   968,   972,
-     975,   978,   981,   985,   987,   989,   992,   994
+      66,    68,    70,    72,    74,    76,    78,    82,    86,    90,
+      94,    98,   102,   106,   110,   114,   118,   120,   122,   129,
+     130,   136,   142,   143,   146,   148,   152,   154,   156,   158,
+     160,   162,   164,   178,   179,   183,   187,   191,   194,   198,
+     202,   205,   208,   211,   212,   216,   220,   224,   228,   232,
+     236,   240,   244,   248,   252,   256,   260,   264,   268,   272,
+     276,   280,   291,   304,   315,   316,   321,   328,   337,   355,
+     371,   376,   377,   380,   385,   389,   393,   395,   398,   400,
+     402,   417,   418,   422,   426,   430,   433,   436,   440,   444,
+     447,   450,   453,   454,   458,   462,   466,   470,   474,   478,
+     482,   486,   490,   494,   498,   502,   506,   510,   514,   518,
+     522,   533,   553,   570,   585,   598,   599,   601,   602,   605,
+     615,   616,   619,   624,   628,   629,   636,   640,   646,   647,
+     651,   655,   659,   663,   667,   671,   676,   680,   681,   686,
+     690,   696,   697,   700,   706,   713,   714,   717,   722,   729,
+     738,   743,   747,   748,   753,   754,   756,   763,   764,   774,
+     784,   788,   792,   796,   800,   804,   805,   808,   814,   815,
+     818,   820,   825,   830,   832,   836,   846,   847,   851,   854,
+     855,   858,   861,   863,   865,   867,   869,   871,   873,   875,
+     876,   879,   882,   885,   890,   893,   896,   901,   903,   905,
+     908,   910,   913,   915,   919,   923,   928,   932,   937,   941,
+     943,   945,   946,   948,   950,   954,   958,   962,   966,   970,
+     974,   978,   981,   984,   987,   991,   993,   995,   998,  1000
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
 static const short yyrhs[] =
 {
-      97,     0,    -1,    98,    -1,    -1,    98,    99,    -1,    98,
-       3,    -1,   175,   101,   104,    -1,     7,   101,   104,    -1,
-     151,    -1,    -1,    64,   100,   175,    93,   175,    -1,    -1,
-     175,    -1,     7,    -1,   102,    -1,     6,    -1,   116,    -1,
-     106,    -1,   107,    -1,   121,    -1,   132,    -1,   113,    -1,
-     109,    -1,   110,    -1,   108,    -1,   142,    -1,   146,    -1,
-     111,    -1,   112,    -1,   162,    -1,   114,    -1,   155,    -1,
-       8,    -1,     7,    -1,     6,    -1,    11,   164,   173,    -1,
-      12,   164,   173,    -1,    23,   164,   173,    -1,    21,   164,
-     173,    -1,    22,   164,   173,    -1,    17,   164,   173,    -1,
-      18,   164,   173,    -1,    82,   164,   173,    -1,   115,   164,
-     173,    -1,     4,    -1,     7,    -1,    10,   164,   167,    80,
-     117,    81,    -1,    -1,   117,     6,    93,   175,   118,    -1,
-     117,   175,    93,   175,   118,    -1,    -1,    93,   119,    -1,
-     120,    -1,   119,    93,   120,    -1,    50,    -1,    43,    -1,
-      36,    -1,    44,    -1,    45,    -1,    46,    -1,    13,   164,
-     175,    93,   175,    93,   175,    93,   175,   122,    80,   123,
-      81,    -1,    -1,   122,    62,   130,    -1,   122,    61,   130,
-      -1,   122,    59,     6,    -1,   122,   128,    -1,   122,    58,
-     103,    -1,   122,    15,   102,    -1,   122,   168,    -1,   122,
-     169,    -1,   122,   170,    -1,    -1,   123,    36,   127,    -1,
-     123,    37,   125,    -1,   123,    34,   125,    -1,   123,    33,
-     125,    -1,   123,    35,   125,    -1,   123,    27,   124,    -1,
-     123,    28,   124,    -1,   123,    32,   124,    -1,   123,    29,
-     124,    -1,   123,    30,   124,    -1,   123,    24,   124,    -1,
-     123,    31,   124,    -1,   123,    25,   124,    -1,   123,    26,
-     124,    -1,   123,    40,   124,    -1,   123,    39,   124,    -1,
-     123,    38,   124,    -1,   123,    23,   103,   154,   175,    93,
-     175,    93,   175,   126,    -1,     6,   154,   175,    93,   175,
-      93,   175,    93,   175,    93,   175,   129,    -1,   175,    93,
-     175,    93,   175,    93,   175,    93,   175,   129,    -1,    -1,
-      93,   175,    93,   175,    -1,    93,   175,    93,   175,    93,
-     130,    -1,    93,   175,    93,   175,    93,   130,    93,   130,
-      -1,   103,   154,   175,    93,   131,    93,   130,    93,   175,
-      93,   175,    93,   175,    93,   175,    93,   130,    -1,   103,
-     154,   175,    93,   131,    93,   130,    93,   175,    93,   175,
-      93,   175,    93,   175,    -1,    21,   175,    93,     6,    -1,
-      -1,    93,   130,    -1,    93,   130,    93,   130,    -1,   130,
-      83,   130,    -1,    94,   130,    95,    -1,   176,    -1,    91,
-     176,    -1,   175,    -1,     6,    -1,    14,   164,   175,    93,
-     175,    93,   175,    93,   175,   139,   133,    80,   134,    81,
-      -1,    -1,   133,    62,   130,    -1,   133,    61,   130,    -1,
-     133,    59,     6,    -1,   133,   128,    -1,   133,   140,    -1,
-     133,    58,   103,    -1,   133,    15,   102,    -1,   133,   168,
-      -1,   133,   169,    -1,   133,   170,    -1,    -1,   134,    36,
-     135,    -1,   134,    37,   137,    -1,   134,    34,   137,    -1,
-     134,    33,   137,    -1,   134,    35,   137,    -1,   134,    27,
-     136,    -1,   134,    28,   136,    -1,   134,    32,   136,    -1,
-     134,    29,   136,    -1,   134,    30,   136,    -1,   134,    24,
-     136,    -1,   134,    31,   136,    -1,   134,    25,   136,    -1,
-     134,    26,   136,    -1,   134,    40,   136,    -1,   134,    39,
-     136,    -1,   134,    38,   136,    -1,   134,    23,   103,   154,
-     175,    93,   175,    93,   175,   126,    -1,   103,   154,   175,
-      93,   131,    93,   130,    93,   175,    93,   175,    93,   175,
-      93,   175,    93,   130,   139,   138,    -1,   103,   154,   175,
-      93,   131,    93,   130,    93,   175,    93,   175,    93,   175,
-      93,   175,   138,    -1,     6,   154,   175,    93,   175,    93,
-     175,    93,   175,    93,   175,   129,   139,   138,    -1,   175,
-      93,   175,    93,   175,    93,   175,    93,   175,   129,   139,
-     138,    -1,    -1,   171,    -1,    -1,    93,   175,    -1,    21,
-     175,    93,     6,    93,   175,    93,   175,   141,    -1,    -1,
-      93,   175,    -1,    15,   164,   167,   143,    -1,    80,   144,
-      81,    -1,    -1,   144,    74,     6,   154,   175,   145,    -1,
-     144,    74,    76,    -1,   144,    75,     6,   145,   143,    -1,
-      -1,   154,    48,   145,    -1,   154,    47,   145,    -1,   154,
-      77,   145,    -1,   154,    49,   145,    -1,   154,    72,   145,
-      -1,   154,    73,   145,    -1,    16,   164,   167,   147,    -1,
-      80,   148,    81,    -1,    -1,   148,    74,     6,   149,    -1,
-     148,    74,    76,    -1,   148,    75,     6,   150,   147,    -1,
-      -1,    93,   175,    -1,    93,   174,    93,   174,   145,    -1,
-      93,   174,    93,   174,    93,   175,    -1,    -1,    93,   175,
-      -1,    93,   174,    93,   175,    -1,    93,   174,    93,   174,
-      93,   175,    -1,    93,   174,    93,   174,    93,   174,    93,
-     175,    -1,   152,    80,   153,    81,    -1,    20,   164,   167,
-      -1,    -1,   153,   175,   154,     6,    -1,    -1,    93,    -1,
-      19,   164,   156,    80,   157,    81,    -1,    -1,   156,    65,
-     175,    93,   175,    93,   175,    93,   175,    -1,   156,    66,
-     175,    93,   175,    93,   175,    93,   175,    -1,   156,    70,
-     175,    -1,   156,    67,   175,    -1,   156,    68,   175,    -1,
-     156,    69,   175,    -1,   156,    71,   175,    -1,    -1,   157,
-     158,    -1,    41,     6,    80,   159,    81,    -1,    -1,   159,
-     160,    -1,   158,    -1,    42,     6,    93,     6,    -1,    42,
-       6,    93,   161,    -1,   175,    -1,   161,    93,   175,    -1,
-      78,   164,   175,    93,   175,   167,    80,   163,    81,    -1,
-      -1,   163,    79,   175,    -1,   163,    76,    -1,    -1,   164,
-     165,    -1,   164,   166,    -1,    55,    -1,    57,    -1,    53,
-      -1,    51,    -1,    54,    -1,    56,    -1,    52,    -1,    -1,
-     167,   168,    -1,   167,   169,    -1,   167,   170,    -1,    64,
-     175,    93,   175,    -1,    60,   175,    -1,    63,   175,    -1,
-     167,    80,   172,    81,    -1,     9,    -1,     4,    -1,    87,
-       4,    -1,     5,    -1,    87,     5,    -1,     6,    -1,   172,
-     154,     9,    -1,   172,   154,     4,    -1,   172,   154,    87,
-       4,    -1,   172,   154,     5,    -1,   172,   154,    87,     5,
-      -1,   172,   154,     6,    -1,   105,    -1,   171,    -1,    -1,
-     175,    -1,   177,    -1,   177,    86,   177,    -1,   177,    87,
-     177,    -1,   177,    83,   177,    -1,   177,    85,   177,    -1,
-     177,    88,   177,    -1,   177,    89,   177,    -1,   177,    84,
-     177,    -1,    90,   177,    -1,    87,   177,    -1,    86,   177,
-      -1,    94,   177,    95,    -1,   178,    -1,   176,    -1,    91,
-     178,    -1,     4,    -1,     5,    -1
+      98,     0,    -1,    99,    -1,    -1,    99,   100,    -1,    99,
+       3,    -1,   177,   102,   105,    -1,     7,   102,   105,    -1,
+     153,    -1,    -1,    65,   101,   177,    94,   177,    -1,    -1,
+     177,    -1,     7,    -1,   103,    -1,     6,    -1,   118,    -1,
+     107,    -1,   108,    -1,   123,    -1,   134,    -1,   115,    -1,
+     110,    -1,   111,    -1,   109,    -1,   144,    -1,   148,    -1,
+     112,    -1,   113,    -1,   114,    -1,   164,    -1,   116,    -1,
+     157,    -1,     8,    -1,     7,    -1,     6,    -1,    11,   166,
+     175,    -1,    12,   166,   175,    -1,    23,   166,   175,    -1,
+      21,   166,   175,    -1,    22,   166,   175,    -1,    17,   166,
+     175,    -1,    24,   166,   175,    -1,    18,   166,   175,    -1,
+      83,   166,   175,    -1,   117,   166,   175,    -1,     4,    -1,
+       7,    -1,    10,   166,   169,    81,   119,    82,    -1,    -1,
+     119,     6,    94,   177,   120,    -1,   119,   177,    94,   177,
+     120,    -1,    -1,    94,   121,    -1,   122,    -1,   121,    94,
+     122,    -1,    51,    -1,    44,    -1,    37,    -1,    45,    -1,
+      46,    -1,    47,    -1,    13,   166,   177,    94,   177,    94,
+     177,    94,   177,   124,    81,   125,    82,    -1,    -1,   124,
+      63,   132,    -1,   124,    62,   132,    -1,   124,    60,     6,
+      -1,   124,   130,    -1,   124,    59,   104,    -1,   124,    15,
+     103,    -1,   124,   170,    -1,   124,   171,    -1,   124,   172,
+      -1,    -1,   125,    37,   129,    -1,   125,    38,   127,    -1,
+     125,    35,   127,    -1,   125,    34,   127,    -1,   125,    36,
+     127,    -1,   125,    28,   126,    -1,   125,    29,   126,    -1,
+     125,    33,   126,    -1,   125,    30,   126,    -1,   125,    31,
+     126,    -1,   125,    25,   126,    -1,   125,    32,   126,    -1,
+     125,    26,   126,    -1,   125,    27,   126,    -1,   125,    41,
+     126,    -1,   125,    40,   126,    -1,   125,    39,   126,    -1,
+     125,    23,   104,   156,   177,    94,   177,    94,   177,   128,
+      -1,     6,   156,   177,    94,   177,    94,   177,    94,   177,
+      94,   177,   131,    -1,   177,    94,   177,    94,   177,    94,
+     177,    94,   177,   131,    -1,    -1,    94,   177,    94,   177,
+      -1,    94,   177,    94,   177,    94,   132,    -1,    94,   177,
+      94,   177,    94,   132,    94,   132,    -1,   104,   156,   177,
+      94,   133,    94,   132,    94,   177,    94,   177,    94,   177,
+      94,   177,    94,   132,    -1,   104,   156,   177,    94,   133,
+      94,   132,    94,   177,    94,   177,    94,   177,    94,   177,
+      -1,    21,   177,    94,     6,    -1,    -1,    94,   132,    -1,
+      94,   132,    94,   132,    -1,   132,    84,   132,    -1,    95,
+     132,    96,    -1,   178,    -1,    92,   178,    -1,   177,    -1,
+       6,    -1,    14,   166,   177,    94,   177,    94,   177,    94,
+     177,   141,   135,    81,   136,    82,    -1,    -1,   135,    63,
+     132,    -1,   135,    62,   132,    -1,   135,    60,     6,    -1,
+     135,   130,    -1,   135,   142,    -1,   135,    59,   104,    -1,
+     135,    15,   103,    -1,   135,   170,    -1,   135,   171,    -1,
+     135,   172,    -1,    -1,   136,    37,   137,    -1,   136,    38,
+     139,    -1,   136,    35,   139,    -1,   136,    34,   139,    -1,
+     136,    36,   139,    -1,   136,    28,   138,    -1,   136,    29,
+     138,    -1,   136,    33,   138,    -1,   136,    30,   138,    -1,
+     136,    31,   138,    -1,   136,    25,   138,    -1,   136,    32,
+     138,    -1,   136,    26,   138,    -1,   136,    27,   138,    -1,
+     136,    41,   138,    -1,   136,    40,   138,    -1,   136,    39,
+     138,    -1,   136,    23,   104,   156,   177,    94,   177,    94,
+     177,   128,    -1,   104,   156,   177,    94,   133,    94,   132,
+      94,   177,    94,   177,    94,   177,    94,   177,    94,   132,
+     141,   140,    -1,   104,   156,   177,    94,   133,    94,   132,
+      94,   177,    94,   177,    94,   177,    94,   177,   140,    -1,
+       6,   156,   177,    94,   177,    94,   177,    94,   177,    94,
+     177,   131,   141,   140,    -1,   177,    94,   177,    94,   177,
+      94,   177,    94,   177,   131,   141,   140,    -1,    -1,   173,
+      -1,    -1,    94,   177,    -1,    21,   177,    94,     6,    94,
+     177,    94,   177,   143,    -1,    -1,    94,   177,    -1,    15,
+     166,   169,   145,    -1,    81,   146,    82,    -1,    -1,   146,
+      75,     6,   156,   177,   147,    -1,   146,    75,    77,    -1,
+     146,    76,     6,   147,   145,    -1,    -1,   156,    49,   147,
+      -1,   156,    48,   147,    -1,   156,    78,   147,    -1,   156,
+      50,   147,    -1,   156,    73,   147,    -1,   156,    74,   147,
+      -1,    16,   166,   169,   149,    -1,    81,   150,    82,    -1,
+      -1,   150,    75,     6,   151,    -1,   150,    75,    77,    -1,
+     150,    76,     6,   152,   149,    -1,    -1,    94,   177,    -1,
+      94,   176,    94,   176,   147,    -1,    94,   176,    94,   176,
+      94,   177,    -1,    -1,    94,   177,    -1,    94,   176,    94,
+     177,    -1,    94,   176,    94,   176,    94,   177,    -1,    94,
+     176,    94,   176,    94,   176,    94,   177,    -1,   154,    81,
+     155,    82,    -1,    20,   166,   169,    -1,    -1,   155,   177,
+     156,     6,    -1,    -1,    94,    -1,    19,   166,   158,    81,
+     159,    82,    -1,    -1,   158,    66,   177,    94,   177,    94,
+     177,    94,   177,    -1,   158,    67,   177,    94,   177,    94,
+     177,    94,   177,    -1,   158,    71,   177,    -1,   158,    68,
+     177,    -1,   158,    69,   177,    -1,   158,    70,   177,    -1,
+     158,    72,   177,    -1,    -1,   159,   160,    -1,    42,     6,
+      81,   161,    82,    -1,    -1,   161,   162,    -1,   160,    -1,
+      43,     6,    94,     6,    -1,    43,     6,    94,   163,    -1,
+     177,    -1,   163,    94,   177,    -1,    79,   166,   177,    94,
+     177,   169,    81,   165,    82,    -1,    -1,   165,    80,   177,
+      -1,   165,    77,    -1,    -1,   166,   167,    -1,   166,   168,
+      -1,    56,    -1,    58,    -1,    54,    -1,    52,    -1,    55,
+      -1,    57,    -1,    53,    -1,    -1,   169,   170,    -1,   169,
+     171,    -1,   169,   172,    -1,    65,   177,    94,   177,    -1,
+      61,   177,    -1,    64,   177,    -1,   169,    81,   174,    82,
+      -1,     9,    -1,     4,    -1,    88,     4,    -1,     5,    -1,
+      88,     5,    -1,     6,    -1,   174,   156,     9,    -1,   174,
+     156,     4,    -1,   174,   156,    88,     4,    -1,   174,   156,
+       5,    -1,   174,   156,    88,     5,    -1,   174,   156,     6,
+      -1,   106,    -1,   173,    -1,    -1,   177,    -1,   179,    -1,
+     179,    87,   179,    -1,   179,    88,   179,    -1,   179,    84,
+     179,    -1,   179,    86,   179,    -1,   179,    89,   179,    -1,
+     179,    90,   179,    -1,   179,    85,   179,    -1,    91,   179,
+      -1,    88,   179,    -1,    87,   179,    -1,    95,   179,    96,
+      -1,   180,    -1,   178,    -1,    92,   180,    -1,     4,    -1,
+       5,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short yyrline[] =
 {
-       0,   361,   361,   395,   396,   466,   472,   484,   494,   502,
-     502,   546,   552,   559,   569,   570,   579,   580,   581,   605,
-     606,   612,   613,   614,   615,   639,   640,   646,   647,   648,
-     649,   650,   654,   655,   656,   660,   664,   680,   702,   712,
-     720,   728,   732,   736,   747,   752,   761,   785,   786,   787,
-     796,   797,   800,   801,   804,   805,   806,   807,   808,   809,
-     814,   849,   850,   851,   852,   853,   854,   855,   856,   857,
-     858,   861,   862,   863,   864,   865,   866,   867,   868,   869,
-     870,   872,   873,   874,   875,   876,   877,   878,   879,   881,
-     891,   916,   938,   940,   945,   952,   963,   977,   992,   997,
-     998,   999,  1003,  1004,  1005,  1006,  1010,  1015,  1023,  1067,
-    1068,  1069,  1070,  1071,  1072,  1073,  1074,  1075,  1076,  1077,
-    1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,
-    1091,  1092,  1093,  1094,  1095,  1096,  1097,  1098,  1100,  1110,
-    1135,  1151,  1179,  1202,  1203,  1206,  1207,  1211,  1218,  1219,
-    1223,  1246,  1250,  1251,  1260,  1266,  1285,  1286,  1287,  1288,
-    1289,  1290,  1291,  1295,  1320,  1324,  1325,  1341,  1347,  1367,
-    1368,  1372,  1380,  1391,  1392,  1396,  1402,  1410,  1430,  1471,
-    1482,  1483,  1516,  1518,  1523,  1539,  1540,  1550,  1560,  1567,
-    1574,  1581,  1588,  1598,  1599,  1608,  1616,  1617,  1626,  1631,
-    1637,  1646,  1647,  1651,  1677,  1678,  1683,  1692,  1693,  1703,
-    1718,  1719,  1720,  1721,  1724,  1725,  1726,  1730,  1731,  1739,
-    1747,  1765,  1772,  1776,  1780,  1795,  1796,  1797,  1798,  1799,
-    1800,  1801,  1802,  1803,  1804,  1805,  1806,  1810,  1811,  1818,
-    1819,  1823,  1826,  1827,  1828,  1829,  1830,  1831,  1832,  1833,
-    1834,  1835,  1836,  1837,  1841,  1842,  1845,  1846
+       0,   363,   363,   397,   398,   468,   474,   486,   496,   504,
+     504,   548,   554,   561,   571,   572,   581,   582,   583,   607,
+     608,   614,   615,   616,   617,   641,   642,   648,   649,   650,
+     651,   652,   653,   657,   658,   659,   663,   667,   683,   705,
+     715,   723,   731,   735,   739,   743,   754,   759,   768,   792,
+     793,   794,   803,   804,   807,   808,   811,   812,   813,   814,
+     815,   816,   821,   856,   857,   858,   859,   860,   861,   862,
+     863,   864,   865,   868,   869,   870,   871,   872,   873,   874,
+     875,   876,   877,   879,   880,   881,   882,   883,   884,   885,
+     886,   888,   898,   923,   945,   947,   952,   959,   970,   984,
+     999,  1004,  1005,  1006,  1010,  1011,  1012,  1013,  1017,  1022,
+    1030,  1074,  1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,
+    1083,  1084,  1087,  1088,  1089,  1090,  1091,  1092,  1093,  1094,
+    1095,  1096,  1098,  1099,  1100,  1101,  1102,  1103,  1104,  1105,
+    1107,  1117,  1142,  1158,  1186,  1209,  1210,  1213,  1214,  1218,
+    1225,  1226,  1230,  1253,  1257,  1258,  1267,  1273,  1292,  1293,
+    1294,  1295,  1296,  1297,  1298,  1302,  1327,  1331,  1332,  1348,
+    1354,  1374,  1375,  1379,  1387,  1398,  1399,  1403,  1409,  1417,
+    1437,  1478,  1489,  1490,  1523,  1525,  1530,  1546,  1547,  1557,
+    1567,  1574,  1581,  1588,  1595,  1605,  1606,  1615,  1623,  1624,
+    1633,  1638,  1644,  1653,  1654,  1658,  1684,  1685,  1690,  1699,
+    1700,  1710,  1725,  1726,  1727,  1728,  1731,  1732,  1733,  1737,
+    1738,  1746,  1754,  1772,  1779,  1783,  1787,  1802,  1803,  1804,
+    1805,  1806,  1807,  1808,  1809,  1810,  1811,  1812,  1813,  1817,
+    1818,  1825,  1826,  1830,  1833,  1834,  1835,  1836,  1837,  1838,
+    1839,  1840,  1841,  1842,  1843,  1844,  1848,  1849,  1852,  1853
 };
 #endif
 
@@ -876,7 +881,7 @@ static const char *const yytname[] =
   "$end", "error", "$undefined", "tNL", "tNUMBER", "tLNUMBER", "tSTRING",
   "tIDENT", "tFILENAME", "tRAWDATA", "tACCELERATORS", "tBITMAP", "tCURSOR",
   "tDIALOG", "tDIALOGEX", "tMENU", "tMENUEX", "tMESSAGETABLE", "tRCDATA",
-  "tVERSIONINFO", "tSTRINGTABLE", "tFONT", "tFONTDIR", "tICON",
+  "tVERSIONINFO", "tSTRINGTABLE", "tFONT", "tFONTDIR", "tICON", "tHTML",
   "tAUTO3STATE", "tAUTOCHECKBOX", "tAUTORADIOBUTTON", "tCHECKBOX",
   "tDEFPUSHBUTTON", "tPUSHBUTTON", "tRADIOBUTTON", "tSTATE3", "tGROUPBOX",
   "tCOMBOBOX", "tLISTBOX", "tSCROLLBAR", "tCONTROL", "tEDITTEXT", "tRTEXT",
@@ -891,19 +896,19 @@ static const char *const yytname[] =
   "'^'", "'&'", "'+'", "'-'", "'*'", "'/'", "'~'", "tNOT", "pUPM", "','",
   "'('", "')'", "$accept", "resource_file", "resources", "resource", "@1",
   "usrcvt", "nameid", "nameid_s", "resource_definition", "filename",
-  "bitmap", "cursor", "icon", "font", "fontdir", "messagetable", "rcdata",
-  "dlginit", "userres", "usertype", "accelerators", "events", "acc_opt",
-  "accs", "acc", "dialog", "dlg_attributes", "ctrls", "lab_ctrl",
-  "ctrl_desc", "iconinfo", "gen_ctrl", "opt_font", "optional_style_pair",
-  "style", "ctlclass", "dialogex", "dlgex_attribs", "exctrls",
-  "gen_exctrl", "lab_exctrl", "exctrl_desc", "opt_data", "helpid",
-  "opt_exfont", "opt_expr", "menu", "menu_body", "item_definitions",
-  "item_options", "menuex", "menuex_body", "itemex_definitions",
-  "itemex_options", "itemex_p_options", "stringtable", "stt_head",
-  "strings", "opt_comma", "versioninfo", "fix_version", "ver_blocks",
-  "ver_block", "ver_values", "ver_value", "ver_words", "toolbar",
-  "toolbar_items", "loadmemopts", "lamo", "lama", "opt_lvc",
-  "opt_language", "opt_characts", "opt_version", "raw_data",
+  "bitmap", "cursor", "icon", "font", "fontdir", "messagetable", "html",
+  "rcdata", "dlginit", "userres", "usertype", "accelerators", "events",
+  "acc_opt", "accs", "acc", "dialog", "dlg_attributes", "ctrls",
+  "lab_ctrl", "ctrl_desc", "iconinfo", "gen_ctrl", "opt_font",
+  "optional_style_pair", "style", "ctlclass", "dialogex", "dlgex_attribs",
+  "exctrls", "gen_exctrl", "lab_exctrl", "exctrl_desc", "opt_data",
+  "helpid", "opt_exfont", "opt_expr", "menu", "menu_body",
+  "item_definitions", "item_options", "menuex", "menuex_body",
+  "itemex_definitions", "itemex_options", "itemex_p_options",
+  "stringtable", "stt_head", "strings", "opt_comma", "versioninfo",
+  "fix_version", "ver_blocks", "ver_block", "ver_values", "ver_value",
+  "ver_words", "toolbar", "toolbar_items", "loadmemopts", "lamo", "lama",
+  "opt_lvc", "opt_language", "opt_characts", "opt_version", "raw_data",
   "raw_elements", "file_raw", "e_expr", "expr", "xpr_no_not", "xpr",
   "any_num", 0
 };
@@ -922,40 +927,40 @@ static const unsigned short yytoknum[] =
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   124,    94,    38,    43,    45,    42,    47,
-     126,   338,   339,    44,    40,    41
+     335,   336,   337,   338,   124,    94,    38,    43,    45,    42,
+      47,   126,   339,   340,    44,    40,    41
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const unsigned char yyr1[] =
 {
-       0,    96,    97,    98,    98,    98,    99,    99,    99,   100,
-      99,   101,   102,   102,   103,   103,   104,   104,   104,   104,
-     104,   104,   104,   104,   104,   104,   104,   104,   104,   104,
-     104,   104,   105,   105,   105,   106,   107,   108,   109,   110,
-     111,   112,   113,   114,   115,   115,   116,   117,   117,   117,
-     118,   118,   119,   119,   120,   120,   120,   120,   120,   120,
-     121,   122,   122,   122,   122,   122,   122,   122,   122,   122,
-     122,   123,   123,   123,   123,   123,   123,   123,   123,   123,
-     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
-     124,   125,   126,   126,   126,   126,   127,   127,   128,   129,
-     129,   129,   130,   130,   130,   130,   131,   131,   132,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   135,
-     135,   136,   137,   138,   138,   139,   139,   140,   141,   141,
-     142,   143,   144,   144,   144,   144,   145,   145,   145,   145,
-     145,   145,   145,   146,   147,   148,   148,   148,   148,   149,
-     149,   149,   149,   150,   150,   150,   150,   150,   151,   152,
-     153,   153,   154,   154,   155,   156,   156,   156,   156,   156,
-     156,   156,   156,   157,   157,   158,   159,   159,   160,   160,
-     160,   161,   161,   162,   163,   163,   163,   164,   164,   164,
-     165,   165,   165,   165,   166,   166,   166,   167,   167,   167,
-     167,   168,   169,   170,   171,   172,   172,   172,   172,   172,
-     172,   172,   172,   172,   172,   172,   172,   173,   173,   174,
-     174,   175,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   177,   177,   178,   178
+       0,    97,    98,    99,    99,    99,   100,   100,   100,   101,
+     100,   102,   103,   103,   104,   104,   105,   105,   105,   105,
+     105,   105,   105,   105,   105,   105,   105,   105,   105,   105,
+     105,   105,   105,   106,   106,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   117,   118,   119,
+     119,   119,   120,   120,   121,   121,   122,   122,   122,   122,
+     122,   122,   123,   124,   124,   124,   124,   124,   124,   124,
+     124,   124,   124,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   126,   127,   128,   128,   128,   128,   129,   129,
+     130,   131,   131,   131,   132,   132,   132,   132,   133,   133,
+     134,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   136,   136,   136,   136,   136,   136,   136,   136,
+     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
+     136,   137,   137,   138,   139,   140,   140,   141,   141,   142,
+     143,   143,   144,   145,   146,   146,   146,   146,   147,   147,
+     147,   147,   147,   147,   147,   148,   149,   150,   150,   150,
+     150,   151,   151,   151,   151,   152,   152,   152,   152,   152,
+     153,   154,   155,   155,   156,   156,   157,   158,   158,   158,
+     158,   158,   158,   158,   158,   159,   159,   160,   161,   161,
+     162,   162,   162,   163,   163,   164,   165,   165,   165,   166,
+     166,   166,   167,   167,   167,   167,   168,   168,   168,   169,
+     169,   169,   169,   170,   171,   172,   173,   174,   174,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   174,   175,
+     175,   176,   176,   177,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   179,   179,   180,   180
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -964,29 +969,29 @@ static const unsigned char yyr2[] =
        0,     2,     1,     0,     2,     2,     3,     3,     1,     0,
        5,     0,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     1,     1,     6,     0,     5,     5,
-       0,     2,     1,     3,     1,     1,     1,     1,     1,     1,
-      13,     0,     3,     3,     3,     2,     3,     3,     2,     2,
-       2,     0,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,    10,
-      12,    10,     0,     4,     6,     8,    17,    15,     4,     0,
-       2,     4,     3,     3,     1,     2,     1,     1,    14,     0,
-       3,     3,     3,     2,     2,     3,     3,     2,     2,     2,
-       0,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,    10,    19,
-      16,    14,    12,     0,     1,     0,     2,     9,     0,     2,
-       4,     3,     0,     6,     3,     5,     0,     3,     3,     3,
-       3,     3,     3,     4,     3,     0,     4,     3,     5,     0,
-       2,     5,     6,     0,     2,     4,     6,     8,     4,     3,
-       0,     4,     0,     1,     6,     0,     9,     9,     3,     3,
-       3,     3,     3,     0,     2,     5,     0,     2,     1,     4,
-       4,     1,     3,     9,     0,     3,     2,     0,     2,     2,
-       1,     1,     1,     1,     1,     1,     1,     0,     2,     2,
-       2,     4,     2,     2,     4,     1,     1,     2,     1,     2,
-       1,     3,     3,     4,     3,     4,     3,     1,     1,     0,
-       1,     1,     3,     3,     3,     3,     3,     3,     3,     2,
-       2,     2,     3,     1,     1,     2,     1,     1
+       1,     1,     1,     1,     1,     1,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     1,     1,     6,     0,
+       5,     5,     0,     2,     1,     3,     1,     1,     1,     1,
+       1,     1,    13,     0,     3,     3,     3,     2,     3,     3,
+       2,     2,     2,     0,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,    10,    12,    10,     0,     4,     6,     8,    17,    15,
+       4,     0,     2,     4,     3,     3,     1,     2,     1,     1,
+      14,     0,     3,     3,     3,     2,     2,     3,     3,     2,
+       2,     2,     0,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+      10,    19,    16,    14,    12,     0,     1,     0,     2,     9,
+       0,     2,     4,     3,     0,     6,     3,     5,     0,     3,
+       3,     3,     3,     3,     3,     4,     3,     0,     4,     3,
+       5,     0,     2,     5,     6,     0,     2,     4,     6,     8,
+       4,     3,     0,     4,     0,     1,     6,     0,     9,     9,
+       3,     3,     3,     3,     3,     0,     2,     5,     0,     2,
+       1,     4,     4,     1,     3,     9,     0,     3,     2,     0,
+       2,     2,     1,     1,     1,     1,     1,     1,     1,     0,
+       2,     2,     2,     4,     2,     2,     4,     1,     1,     2,
+       1,     2,     1,     3,     3,     4,     3,     4,     3,     1,
+       1,     0,     1,     1,     3,     3,     3,     3,     3,     3,
+       3,     2,     2,     2,     3,     1,     1,     2,     1,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -994,382 +999,378 @@ static const unsigned char yyr2[] =
    means the default is an error.  */
 static const unsigned short yydefact[] =
 {
-       3,     0,     2,     1,     5,   256,   257,    11,   207,     9,
-       0,     0,     0,     0,     0,     4,     8,     0,    11,   254,
-     241,   253,     0,   217,     0,   251,   250,   249,   255,     0,
-     180,     0,     0,     0,     0,     0,     0,     0,     0,    44,
-      45,   207,   207,   207,   207,   207,   207,   207,   207,   207,
-     207,   207,   207,   207,   207,   207,     7,    17,    18,    24,
-      22,    23,    27,    28,    21,    30,   207,    16,    19,    20,
-      25,    26,    31,    29,   213,   216,   212,   214,   210,   215,
-     211,   208,   209,   179,     0,   252,     0,     6,   244,   248,
-     245,   242,   243,   246,   247,   217,   217,   217,     0,     0,
-     217,   217,   217,   217,   185,   217,   217,   217,     0,   217,
-     217,     0,     0,     0,   218,   219,   220,     0,   178,   182,
-       0,    34,    33,    32,   237,     0,   238,    35,    36,     0,
-       0,     0,     0,    40,    41,     0,    38,    39,    37,     0,
-      42,    43,   222,   223,     0,    10,   183,     0,    47,     0,
-       0,     0,   152,   150,   165,   163,     0,     0,     0,     0,
-       0,     0,     0,   193,     0,     0,   181,     0,   226,   228,
-     230,   225,     0,   182,     0,     0,     0,     0,     0,     0,
-     189,   190,   191,   188,   192,     0,   217,   221,     0,    46,
-       0,   227,   229,   224,     0,     0,     0,     0,     0,   151,
-       0,     0,   164,     0,     0,     0,   184,   194,     0,     0,
-       0,   232,   234,   236,   231,     0,     0,     0,   182,   154,
-     182,   169,   167,   173,     0,     0,     0,   204,    50,    50,
-     233,   235,     0,     0,     0,     0,     0,   239,   166,   239,
-       0,     0,     0,   196,     0,     0,    48,    49,    61,   145,
-     182,   155,   182,   182,   182,   182,   182,   182,     0,   170,
-       0,   174,   168,     0,     0,     0,   206,     0,   203,    56,
-      55,    57,    58,    59,    54,    51,    52,     0,     0,   109,
-     153,   158,   157,   160,   161,   162,   159,   239,   239,     0,
-       0,     0,   195,   198,   197,   205,     0,     0,     0,     0,
-       0,     0,     0,    71,    65,    68,    69,    70,   146,     0,
-     182,   240,     0,   175,   186,   187,     0,    53,    13,    67,
-      12,     0,    15,    14,    66,    64,     0,     0,    63,   104,
-       0,    62,     0,     0,     0,     0,     0,     0,     0,   120,
-     113,   114,   117,   118,   119,   183,   171,   239,     0,     0,
-     105,   253,     0,     0,     0,     0,     0,     0,     0,     0,
+       3,     0,     2,     1,     5,   258,   259,    11,   209,     9,
+       0,     0,     0,     0,     0,     4,     8,     0,    11,   256,
+     243,   255,     0,   219,     0,   253,   252,   251,   257,     0,
+     182,     0,     0,     0,     0,     0,     0,     0,     0,    46,
+      47,   209,   209,   209,   209,   209,   209,   209,   209,   209,
+     209,   209,   209,   209,   209,   209,   209,     7,    17,    18,
+      24,    22,    23,    27,    28,    29,    21,    31,   209,    16,
+      19,    20,    25,    26,    32,    30,   215,   218,   214,   216,
+     212,   217,   213,   210,   211,   181,     0,   254,     0,     6,
+     246,   250,   247,   244,   245,   248,   249,   219,   219,   219,
+       0,     0,   219,   219,   219,   219,   187,   219,   219,   219,
+     219,     0,   219,   219,     0,     0,     0,   220,   221,   222,
+       0,   180,   184,     0,    35,    34,    33,   239,     0,   240,
+      36,    37,     0,     0,     0,     0,    41,    43,     0,    39,
+      40,    38,    42,     0,    44,    45,   224,   225,     0,    10,
+     185,     0,    49,     0,     0,     0,   154,   152,   167,   165,
+       0,     0,     0,     0,     0,     0,     0,   195,     0,     0,
+     183,     0,   228,   230,   232,   227,     0,   184,     0,     0,
+       0,     0,     0,     0,   191,   192,   193,   190,   194,     0,
+     219,   223,     0,    48,     0,   229,   231,   226,     0,     0,
+       0,     0,     0,   153,     0,     0,   166,     0,     0,     0,
+     186,   196,     0,     0,     0,   234,   236,   238,   233,     0,
+       0,     0,   184,   156,   184,   171,   169,   175,     0,     0,
+       0,   206,    52,    52,   235,   237,     0,     0,     0,     0,
+       0,   241,   168,   241,     0,     0,     0,   198,     0,     0,
+      50,    51,    63,   147,   184,   157,   184,   184,   184,   184,
+     184,   184,     0,   172,     0,   176,   170,     0,     0,     0,
+     208,     0,   205,    58,    57,    59,    60,    61,    56,    53,
+      54,     0,     0,   111,   155,   160,   159,   162,   163,   164,
+     161,   241,   241,     0,     0,     0,   197,   200,   199,   207,
+       0,     0,     0,     0,     0,     0,     0,    73,    67,    70,
+      71,    72,   148,     0,   184,   242,     0,   177,   188,   189,
+       0,    55,    13,    69,    12,     0,    15,    14,    68,    66,
+       0,     0,    65,   106,     0,    64,     0,     0,     0,     0,
+       0,     0,     0,   122,   115,   116,   119,   120,   121,   185,
+     173,   241,     0,     0,   107,   255,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    60,   116,     0,   115,   112,   111,   110,     0,
-     172,     0,   176,   199,   200,   201,    98,   103,   102,   182,
-     182,    82,    84,    85,    77,    78,    80,    81,    83,    79,
-      75,     0,    74,    76,   182,    72,    73,    88,    87,    86,
+       0,     0,     0,     0,     0,     0,    62,   118,     0,   117,
+     114,   113,   112,     0,   174,     0,   178,   201,   202,   203,
+     100,   105,   104,   184,   184,    84,    86,    87,    79,    80,
+      82,    83,    85,    81,    77,     0,    76,    78,   184,    74,
+      75,    90,    89,    88,     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,   108,
-       0,     0,     0,     0,     0,     0,    98,   182,   182,   131,
-     133,   134,   126,   127,   129,   130,   132,   128,   124,     0,
-     123,   125,   182,   121,   122,   137,   136,   135,   177,   202,
+       0,     0,     0,   110,     0,     0,     0,     0,     0,     0,
+     100,   184,   184,   133,   135,   136,   128,   129,   131,   132,
+     134,   130,   126,     0,   125,   127,   184,   123,   124,   139,
+     138,   137,   179,   204,     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,   107,     0,   106,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   148,     0,     0,     0,     0,    92,     0,
-       0,     0,     0,   147,     0,     0,     0,     0,     0,    89,
-       0,     0,     0,   149,    92,     0,     0,     0,     0,     0,
-      99,     0,   138,     0,     0,     0,     0,     0,     0,    91,
-       0,     0,    99,     0,    93,    99,   100,     0,     0,   145,
-       0,     0,    90,     0,     0,    99,   143,     0,    94,   101,
-       0,   145,   142,   144,     0,     0,     0,   143,     0,    95,
-      97,   141,     0,     0,   143,    96,     0,   140,   145,   143,
-     139
+       0,     0,     0,     0,     0,   109,     0,   108,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   150,     0,     0,
+       0,     0,    94,     0,     0,     0,     0,   149,     0,     0,
+       0,     0,     0,    91,     0,     0,     0,   151,    94,     0,
+       0,     0,     0,     0,   101,     0,   140,     0,     0,     0,
+       0,     0,     0,    93,     0,     0,   101,     0,    95,   101,
+     102,     0,     0,   147,     0,     0,    92,     0,     0,   101,
+     145,     0,    96,   103,     0,   147,   144,   146,     0,     0,
+       0,   145,     0,    97,    99,   143,     0,     0,   145,    98,
+       0,   142,   147,   145,   141
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
 static const short yydefgoto[] =
 {
-      -1,     1,     2,    15,    24,    22,   323,   324,    56,   124,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,   167,   246,   275,   276,    68,   277,   332,   391,   400,
-     509,   405,   304,   529,   328,   482,    69,   309,   379,   453,
-     439,   448,   552,   279,   341,   503,    70,   153,   176,   235,
-      71,   155,   177,   238,   240,    16,    17,    86,   236,    72,
-     135,   185,   207,   265,   294,   384,    73,   244,    23,    81,
-      82,   125,   114,   115,   116,   126,   173,   127,   258,   320,
-      19,    20,    21
+      -1,     1,     2,    15,    24,    22,   327,   328,    57,   127,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,   171,   250,   279,   280,    70,   281,   336,   395,
+     404,   513,   409,   308,   533,   332,   486,    71,   313,   383,
+     457,   443,   452,   556,   283,   345,   507,    72,   157,   180,
+     239,    73,   159,   181,   242,   244,    16,    17,    88,   240,
+      74,   138,   189,   211,   269,   298,   388,    75,   248,    23,
+      83,    84,   128,   117,   118,   119,   129,   177,   130,   262,
+     324,    19,    20,    21
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -487
+#define YYPACT_NINF -472
 static const short yypact[] =
 {
-    -487,     6,    43,  -487,  -487,  -487,  -487,  -487,  -487,  -487,
-      30,    30,    30,   215,    30,  -487,  -487,   -60,  -487,  -487,
-     636,  -487,   434,   675,    30,  -487,  -487,  -487,  -487,   623,
-    -487,   434,    30,    30,    30,    30,    30,    30,    30,  -487,
-    -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,
-    -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,
-    -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,
-    -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,
-    -487,  -487,  -487,   310,   -62,  -487,   131,  -487,   563,   195,
-     232,   213,   213,  -487,  -487,   675,   533,   533,    87,    87,
-     675,   675,   533,   533,   675,   533,   533,   533,    87,   533,
-     533,    30,    30,    30,  -487,  -487,  -487,    30,  -487,   -48,
-     136,  -487,  -487,  -487,  -487,   163,  -487,  -487,  -487,   -44,
-     -25,   199,   231,  -487,  -487,   410,  -487,  -487,  -487,    -3,
-    -487,  -487,  -487,  -487,     5,  -487,  -487,    67,  -487,    21,
-      30,    30,  -487,  -487,  -487,  -487,    30,    30,    30,    30,
-      30,    30,    30,  -487,    30,    30,  -487,    89,  -487,  -487,
-    -487,  -487,   334,   -19,    26,    32,   259,   284,    34,    38,
-    -487,  -487,  -487,  -487,  -487,   -24,  -487,  -487,    57,  -487,
-      68,  -487,  -487,  -487,    60,    30,    30,    -4,   161,  -487,
-       3,   176,  -487,    30,    30,   191,  -487,  -487,   308,    30,
-      30,  -487,  -487,  -487,  -487,   356,   113,   116,   -48,  -487,
-     -70,   118,  -487,   135,   140,   143,   144,  -487,   145,   145,
-    -487,  -487,    30,    30,    30,   168,   278,    30,  -487,    30,
-     173,    30,    30,  -487,    47,   512,  -487,  -487,  -487,   167,
-     171,  -487,    71,    71,    71,    71,    71,    71,   185,   200,
-     210,   200,  -487,   217,   220,   -29,  -487,    30,  -487,  -487,
-    -487,  -487,  -487,  -487,  -487,   243,  -487,   354,    30,  -487,
-    -487,  -487,  -487,  -487,  -487,  -487,  -487,    30,    30,    30,
-      30,   251,  -487,  -487,  -487,  -487,   512,   164,    30,   293,
-     318,   312,   312,  -487,  -487,  -487,  -487,  -487,  -487,   514,
-     254,  -487,   261,   200,  -487,  -487,   274,  -487,  -487,  -487,
-    -487,   283,  -487,  -487,  -487,  -487,    30,   312,   294,   649,
-     636,   294,   572,   164,    30,   293,   338,   312,   312,  -487,
-    -487,  -487,  -487,  -487,  -487,    30,  -487,    30,   262,   372,
-     649,  -487,    17,   312,   293,   375,   375,   375,   375,   375,
-     375,   375,   375,   375,    30,    30,    30,   293,    30,   375,
-     375,   375,  -487,  -487,   289,  -487,  -487,   294,   294,   590,
-    -487,   292,   200,  -487,   298,  -487,  -487,  -487,  -487,   -48,
-     -48,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,
-    -487,   299,  -487,  -487,   -48,  -487,  -487,  -487,  -487,  -487,
-     380,   293,   389,   389,   389,   389,   389,   389,   389,   389,
-     389,    30,    30,    30,   293,    30,   389,   389,   389,  -487,
-      30,    30,    30,    30,    30,    30,   307,   -48,   -48,  -487,
-    -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,   316,
-    -487,  -487,   -48,  -487,  -487,  -487,  -487,  -487,  -487,  -487,
-     317,   329,   332,   333,    30,    30,    30,    30,    30,    30,
-      30,    30,   303,   342,   347,   349,   350,   361,   365,   366,
-     367,  -487,   368,  -487,    30,    30,    30,    30,   303,    30,
-      30,    30,   312,   378,   379,   381,   398,   399,   400,   401,
-     402,   -72,    30,  -487,    30,    30,    30,   312,    30,  -487,
-      30,    30,    30,  -487,   400,   404,   405,   -16,   406,   408,
-     412,   414,  -487,    30,    30,    30,    30,    30,   312,  -487,
-      30,   420,   412,   421,   422,   412,    39,   424,    30,   167,
-      30,   312,  -487,   312,    30,   412,   344,   425,   112,   294,
-     426,   167,  -487,  -487,    30,   312,    30,   344,   427,   294,
-     433,  -487,    30,   312,    25,   294,   312,  -487,   121,   344,
-    -487
+    -472,    17,     1,  -472,  -472,  -472,  -472,  -472,  -472,  -472,
+      86,    86,    86,   140,    86,  -472,  -472,   -55,  -472,  -472,
+     610,  -472,   376,   649,    86,  -472,  -472,  -472,  -472,   597,
+    -472,   376,    86,    86,    86,    86,    86,    86,    86,  -472,
+    -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,
+    -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,
+    -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,
+    -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,
+    -472,  -472,  -472,  -472,  -472,   268,    21,  -472,    59,  -472,
+     480,   409,   327,   -78,   -78,  -472,  -472,   649,   395,   395,
+      48,    48,   649,   649,   395,   395,   649,   395,   395,   395,
+     395,    48,   395,   395,    86,    86,    86,  -472,  -472,  -472,
+      86,  -472,    44,    67,  -472,  -472,  -472,  -472,   156,  -472,
+    -472,  -472,    55,    62,   240,   247,  -472,  -472,   413,  -472,
+    -472,  -472,  -472,    71,  -472,  -472,  -472,  -472,    78,  -472,
+    -472,    68,  -472,   187,    86,    86,  -472,  -472,  -472,  -472,
+      86,    86,    86,    86,    86,    86,    86,  -472,    86,    86,
+    -472,    29,  -472,  -472,  -472,  -472,   183,   -21,    82,    85,
+     249,   262,   108,   114,  -472,  -472,  -472,  -472,  -472,    12,
+    -472,  -472,   128,  -472,   137,  -472,  -472,  -472,   195,    86,
+      86,     3,   117,  -472,     7,   236,  -472,    86,    86,   243,
+    -472,  -472,   278,    86,    86,  -472,  -472,  -472,  -472,   282,
+     159,   160,    44,  -472,   -71,   168,  -472,   174,   188,   203,
+     191,  -472,   220,   220,  -472,  -472,    86,    86,    86,   241,
+     178,    86,  -472,    86,   259,    86,    86,  -472,   -10,   472,
+    -472,  -472,  -472,   223,   182,  -472,   364,   364,   364,   364,
+     364,   364,   254,   264,   266,   264,  -472,   270,   271,    15,
+    -472,    86,  -472,  -472,  -472,  -472,  -472,  -472,  -472,   281,
+    -472,   292,    86,  -472,  -472,  -472,  -472,  -472,  -472,  -472,
+    -472,    86,    86,    86,    86,   324,  -472,  -472,  -472,  -472,
+     472,   211,    86,   179,   356,   228,   228,  -472,  -472,  -472,
+    -472,  -472,  -472,   348,   381,  -472,   285,   264,  -472,  -472,
+     302,  -472,  -472,  -472,  -472,   310,  -472,  -472,  -472,  -472,
+      86,   228,   300,   623,   610,   300,   550,   211,    86,   179,
+     370,   228,   228,  -472,  -472,  -472,  -472,  -472,  -472,    86,
+    -472,    86,    42,   399,   623,  -472,   -15,   228,   179,   400,
+     400,   400,   400,   400,   400,   400,   400,   400,    86,    86,
+      86,   179,    86,   400,   400,   400,  -472,  -472,   325,  -472,
+    -472,   300,   300,   569,  -472,   326,   264,  -472,   332,  -472,
+    -472,  -472,  -472,    44,    44,  -472,  -472,  -472,  -472,  -472,
+    -472,  -472,  -472,  -472,  -472,   334,  -472,  -472,    44,  -472,
+    -472,  -472,  -472,  -472,   424,   179,   425,   425,   425,   425,
+     425,   425,   425,   425,   425,    86,    86,    86,   179,    86,
+     425,   425,   425,  -472,    86,    86,    86,    86,    86,    86,
+     347,    44,    44,  -472,  -472,  -472,  -472,  -472,  -472,  -472,
+    -472,  -472,  -472,   349,  -472,  -472,    44,  -472,  -472,  -472,
+    -472,  -472,  -472,  -472,   350,   360,   366,   371,    86,    86,
+      86,    86,    86,    86,    86,    86,   290,   382,   383,   384,
+     407,   408,   411,   417,   426,  -472,   427,  -472,    86,    86,
+      86,    86,   290,    86,    86,    86,   228,   428,   430,   436,
+     437,   439,   440,   441,   443,   125,    86,  -472,    86,    86,
+      86,   228,    86,  -472,    86,    86,    86,  -472,   440,   444,
+     445,   129,   447,   449,   450,   451,  -472,    86,    86,    86,
+      86,    86,   228,  -472,    86,   453,   450,   454,   456,   450,
+     146,   458,    86,   223,    86,   228,  -472,   228,    86,   450,
+     357,   459,   154,   300,   460,   223,  -472,  -472,    86,   228,
+      86,   357,   461,   300,   463,  -472,    86,   228,    61,   300,
+     228,  -472,   161,   357,  -472
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short yypgoto[] =
 {
-    -487,  -487,  -487,  -487,  -487,   383,  -278,  -182,   374,  -487,
-    -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,  -487,
-    -487,  -487,   182,  -487,   100,  -487,  -487,  -487,   304,   -95,
-     -87,  -487,   218,  -431,  -251,   -15,  -487,  -487,  -487,  -487,
-     263,    14,  -486,  -469,  -487,  -487,  -487,   295,  -487,   -66,
-    -487,   291,  -487,  -487,  -487,  -487,  -487,  -487,  -115,  -487,
-    -487,  -487,   268,  -487,  -487,  -487,  -487,  -487,   591,  -487,
-    -487,   -20,  -253,  -249,  -248,  -354,  -487,   595,  -234,    -2,
-    -294,     4,   -12
+    -472,  -472,  -472,  -472,  -472,   485,  -258,  -168,   528,  -472,
+    -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,
+    -472,  -472,  -472,   209,  -472,   260,  -472,  -472,  -472,   279,
+       2,    43,  -472,   280,  -471,  -282,    70,  -472,  -472,  -472,
+    -472,   238,    35,  -379,  -348,  -472,  -472,  -472,   333,  -472,
+    -229,  -472,   385,  -472,  -472,  -472,  -472,  -472,  -472,  -115,
+    -472,  -472,  -472,   358,  -472,  -472,  -472,  -472,  -472,   570,
+    -472,  -472,   -20,  -205,  -194,  -186,  -393,  -472,   567,  -241,
+      -2,  -286,     4,   -12
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -255
+#define YYTABLE_NINF -257
 static const short yytable[] =
 {
-      18,    28,   218,    83,   147,   260,     3,   329,   329,   221,
-    -156,   353,   205,   291,    25,    26,    27,   205,    29,   319,
-      30,   512,    84,   146,   305,   168,   169,   170,   306,   307,
-     171,   117,   350,   329,     5,     6,    88,    89,    90,    91,
-      92,    93,    94,   329,   329,   146,     4,     5,     6,   150,
-       7,   331,   292,   310,   312,   373,   342,   206,   194,   329,
-     343,   344,   193,     8,   211,   212,   213,   353,   151,   214,
-     546,   561,   219,   166,   146,   120,   352,   525,   567,   222,
-     131,   132,   557,   570,   119,  -217,   377,   378,  -217,  -217,
-     164,     5,     6,     5,     6,   188,   129,   130,   165,   569,
-     353,   539,   388,   234,   542,  -217,   139,     9,   172,   142,
-     143,   144,   387,   381,   551,   145,    10,    11,   566,   195,
-      12,    13,   353,   266,    14,   196,   267,   203,   268,    10,
-      11,   204,   543,    12,    13,     5,     6,    14,    74,    75,
-      76,    77,    78,    79,    80,  -156,  -156,   215,   174,   175,
-     209,  -156,  -156,   375,   178,   179,   180,   181,   182,   183,
-     184,   210,   186,   187,   146,   190,   208,   220,     5,     6,
-     189,   318,   389,    10,    11,    10,    11,    12,    13,    12,
-      13,    14,   223,    14,   280,   404,   281,   282,   283,   284,
-     285,   286,   553,   216,   217,   353,   111,   226,   329,   112,
-     113,   224,   225,   553,   353,   555,   232,   228,   229,   233,
-     553,   237,   118,   329,   278,   553,   148,    10,    11,     5,
-       6,    12,    13,   111,   243,    14,   112,   113,   239,   437,
-     248,   249,   250,   241,   329,   259,   242,   261,   245,   263,
-     264,   501,   452,   149,   346,  -156,  -156,   329,   152,   329,
-      10,    11,  -156,   154,    12,    13,   517,   316,    14,   111,
-     278,   329,   112,   113,   146,   295,     5,     6,   383,   329,
-     402,   403,   329,   406,   432,   433,   308,   536,   287,   152,
-      34,    35,    36,    37,    38,   311,   313,   314,   315,   435,
-     548,   111,   549,  -240,   112,   113,   321,     5,     6,   322,
-     318,    37,    38,   288,   559,   330,   330,     5,     6,   481,
-     289,   154,   565,   290,   351,   568,     5,     6,    35,    36,
-      37,    38,   465,   466,   325,   252,   253,   254,  -156,  -156,
-     330,    29,   374,   197,   198,  -156,   296,   468,   191,   192,
-     199,   330,   330,   380,   376,   382,   385,   345,    10,    11,
-     255,   256,    12,    13,   347,   257,    14,   330,   200,   201,
-     230,   231,   401,   401,   401,   202,   401,   348,   111,   297,
-     111,   112,   113,   112,   113,   298,   349,   353,   386,    10,
-      11,   390,   410,    12,    13,   430,   436,    14,   227,    10,
-      11,   431,   434,    12,    13,   438,   317,    14,    10,    11,
-     464,    31,    12,   326,  -217,    87,   327,  -217,  -217,   467,
-     469,   247,   299,   300,   111,   301,   302,   112,   113,   449,
-     449,   449,   470,   449,  -217,   471,   472,   522,   458,   459,
-     460,   461,   462,   463,   303,   484,   450,   451,    39,   454,
-     485,    40,   486,   487,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,   488,    51,    52,    53,   489,   490,
-     491,   492,   473,   474,   475,   476,   477,   478,   479,   480,
-     483,   502,   504,   497,   505,   156,   157,   158,   159,   160,
-     161,   162,   493,   494,   495,   496,   483,   498,   499,   500,
-     163,   506,   507,   508,   510,   511,   330,   523,   524,   526,
-     513,   527,   514,   515,   516,   528,   518,   530,   519,   520,
-     521,   330,    54,   538,   540,   541,    55,   544,   554,   556,
-     562,   531,   532,   533,   534,   535,   563,   340,   537,   333,
-     251,   262,   330,   293,     0,   334,   545,     0,   547,   121,
-     122,   123,   550,     0,     0,   330,     0,   330,   269,     0,
-       0,     0,   558,     0,   560,   270,   271,   272,   273,   330,
-     564,     0,   274,     0,     0,     0,     0,   330,     0,     0,
-     330,     0,   335,   336,   111,   337,   338,   112,   113,     0,
-       0,     0,     0,     0,    74,    75,    76,    77,    78,    79,
-      80,     0,     0,     0,   339,   354,   355,   356,   357,   358,
-     359,   360,   361,   362,   363,   364,   365,   366,   367,   368,
-     369,   370,   371,   411,   412,   413,   414,   415,   416,   417,
-     418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
-     428,     0,    95,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,    33,    34,    35,
-      36,    37,    38,   372,     0,     0,     0,   110,     0,     0,
-     392,   393,   394,   395,   396,   397,   398,   399,     0,     0,
-       0,   429,     0,   407,   408,   409,   440,   441,   442,   443,
-     444,   445,   446,   447,     0,     0,     0,     0,     0,   455,
-     456,   457,   128,     0,     0,     0,     0,   133,   134,     0,
-     136,   137,   138,     0,   140,   141,    32,    33,    34,    35,
-      36,    37,    38,     0,     0,     0,     0,     0,    85,    32,
-      33,    34,    35,    36,    37,    38,    74,    75,    76,    77,
-      78,    79,    80,  -254,  -254,  -254,  -254,  -254,  -254
+      18,    28,   264,    85,     4,     5,     6,   151,     7,   222,
+    -158,    37,    38,   225,    25,    26,    27,     3,    29,   333,
+     333,     8,    86,   150,   335,   284,    30,   285,   286,   287,
+     288,   289,   290,     5,     6,   192,    90,    91,    92,    93,
+      94,    95,    96,   323,   354,   333,     5,     6,   387,   356,
+     314,   316,     5,     6,   209,   333,   333,   209,   295,   381,
+     382,   197,   198,     5,     6,   543,     9,   270,   546,   357,
+     271,   333,   272,   150,   170,   392,   309,   123,   555,   377,
+     223,   391,   134,   135,   226,   350,   122,   310,    10,    11,
+       5,     6,    12,    13,   210,   311,    14,   296,   132,   133,
+      76,    77,    78,    79,    80,    81,    82,   238,   346,   143,
+     385,   193,   146,   147,   148,   120,    10,    11,   149,   347,
+      12,    13,  -219,   224,    14,  -219,  -219,   348,   114,    10,
+      11,   115,   116,    12,    13,    10,    11,    14,   150,    12,
+      13,   121,  -219,    14,     5,     6,    10,    11,   152,   154,
+      12,    13,   178,   179,    14,   570,   155,   557,   182,   183,
+     184,   185,   186,   187,   188,   168,   190,   191,   557,   194,
+     212,   379,   169,    10,    11,   557,   199,    12,    13,   200,
+     557,    14,   565,     5,     6,   326,   322,   195,   196,   571,
+     393,   172,   173,   174,   574,   550,   175,   220,   221,   215,
+     216,   217,   207,   408,   218,   228,   229,   561,   208,   357,
+     333,   232,   233,   357,   505,     5,     6,   114,   322,   516,
+     115,   116,   213,   529,   573,   333,   256,   257,   258,   521,
+     357,   214,     5,     6,   252,   253,   254,   153,   357,   263,
+     547,   265,   227,   267,   268,   357,   333,   441,   559,   230,
+     540,   259,   260,   236,   237,   282,   261,  -158,  -158,   333,
+     456,   333,   241,   552,  -158,   553,    10,    11,   243,   299,
+      12,    13,   247,   333,    14,   176,   150,   563,   436,   437,
+     312,   333,   245,   219,   333,   569,   234,   235,   572,   315,
+     317,   318,   319,   439,     5,     6,   485,   246,    10,    11,
+     325,   114,    12,    13,   115,   116,    14,   301,   114,   334,
+     334,   115,   116,   302,   249,    10,    11,   282,   355,    12,
+     330,   156,   156,   331,   201,   202,   469,   470,   158,   114,
+     320,   203,   115,   116,   334,    29,   378,   204,   205,   114,
+     158,   472,   115,   116,   206,   334,   334,   384,   291,   386,
+     389,   303,   304,   114,   305,   306,   115,   116,  -242,   231,
+     292,   334,   329,   337,   293,   294,   405,   405,   405,   338,
+     405,   406,   407,   307,   410,   300,   380,    10,    11,   351,
+      39,    12,    13,    40,   357,    14,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,   352,    51,    52,    53,
+      54,   124,   125,   126,   353,   390,   394,   339,   340,   114,
+     341,   342,   115,   116,    35,    36,    37,    38,  -219,   414,
+     434,  -219,  -219,   453,   453,   453,   435,   453,   438,   343,
+     440,   442,   462,   463,   464,   465,   466,   467,  -219,  -158,
+    -158,   468,   251,   471,   473,  -158,  -158,    76,    77,    78,
+      79,    80,    81,    82,   474,    55,  -158,  -158,   150,    56,
+     475,   454,   455,  -158,   458,   476,   477,   478,   479,   480,
+     481,   482,   483,   484,   487,   349,   488,   489,   490,   160,
+     161,   162,   163,   164,   165,   166,   497,   498,   499,   500,
+     487,   502,   503,   504,   167,    34,    35,    36,    37,    38,
+     334,   491,   492,    31,   517,   493,   518,   519,   520,   273,
+     522,   494,   523,   524,   525,   334,   274,   275,   276,   277,
+     495,   496,   506,   278,   508,   535,   536,   537,   538,   539,
+     509,   510,   541,   511,   512,   514,   334,   515,   527,   528,
+     549,   530,   551,   531,   532,   534,   554,   542,   544,   334,
+     545,   334,   548,   558,   560,   566,   562,   567,   564,    89,
+     321,   526,   501,   334,   568,    33,    34,    35,    36,    37,
+      38,   334,   255,   358,   334,   359,   360,   361,   362,   363,
+     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
+     374,   375,   415,   344,   416,   417,   418,   419,   420,   421,
+     422,   423,   424,   425,   426,   427,   428,   429,   430,   431,
+     432,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   297,     0,   266,
+       0,     0,   376,     0,     0,     0,     0,     0,   113,   396,
+     397,   398,   399,   400,   401,   402,   403,     0,     0,     0,
+       0,   433,   411,   412,   413,   444,   445,   446,   447,   448,
+     449,   450,   451,     0,     0,     0,   131,     0,   459,   460,
+     461,   136,   137,     0,   139,   140,   141,   142,     0,   144,
+     145,    32,    33,    34,    35,    36,    37,    38,     0,     0,
+       0,     0,     0,    87,    32,    33,    34,    35,    36,    37,
+      38,    76,    77,    78,    79,    80,    81,    82,  -256,  -256,
+    -256,  -256,  -256,  -256
 };
 
 static const short yycheck[] =
 {
-       2,    13,     6,    23,   119,   239,     0,   301,   302,     6,
-      80,    83,    41,    42,    10,    11,    12,    41,    14,   297,
-      80,    93,    24,    93,   277,     4,     5,     6,   277,   277,
-       9,    93,   326,   327,     4,     5,    32,    33,    34,    35,
-      36,    37,    38,   337,   338,    93,     3,     4,     5,    93,
-       7,   302,    81,   287,   288,   333,   309,    81,   173,   353,
-     309,   309,    81,    20,     4,     5,     6,    83,    93,     9,
-     539,   557,    76,     6,    93,    95,   327,    93,   564,    76,
-     100,   101,   551,   569,    86,    60,   337,   338,    63,    64,
-      93,     4,     5,     4,     5,     6,    98,    99,    93,   568,
-      83,   532,   353,   218,   535,    80,   108,    64,    87,   111,
-     112,   113,    95,   347,   545,   117,    86,    87,    93,    93,
-      90,    91,    83,    76,    94,    93,    79,    93,    81,    86,
-      87,    93,    93,    90,    91,     4,     5,    94,    51,    52,
-      53,    54,    55,    56,    57,    74,    75,    87,   150,   151,
-      93,    80,    81,   335,   156,   157,   158,   159,   160,   161,
-     162,    93,   164,   165,    93,   167,   186,     6,     4,     5,
-      81,     7,   354,    86,    87,    86,    87,    90,    91,    90,
-      91,    94,     6,    94,   250,   367,   252,   253,   254,   255,
-     256,   257,   546,   195,   196,    83,    60,     6,   492,    63,
-      64,   203,   204,   557,    83,    93,    93,   209,   210,    93,
-     564,    93,    81,   507,    93,   569,    80,    86,    87,     4,
-       5,    90,    91,    60,    80,    94,    63,    64,    93,   411,
-     232,   233,   234,    93,   528,   237,    93,   239,    93,   241,
-     242,   492,   424,    80,   310,    74,    75,   541,    80,   543,
-      86,    87,    81,    80,    90,    91,   507,     6,    94,    60,
-      93,   555,    63,    64,    93,   267,     4,     5,     6,   563,
-     365,   366,   566,   368,   389,   390,   278,   528,    93,    80,
-      85,    86,    87,    88,    89,   287,   288,   289,   290,   404,
-     541,    60,   543,    93,    63,    64,   298,     4,     5,     6,
-       7,    88,    89,    93,   555,   301,   302,     4,     5,     6,
-      93,    80,   563,    93,   326,   566,     4,     5,    86,    87,
-      88,    89,   437,   438,     6,    47,    48,    49,    74,    75,
-     326,   327,   334,    74,    75,    81,    93,   452,     4,     5,
-      81,   337,   338,   345,     6,   347,   348,    93,    86,    87,
-      72,    73,    90,    91,    93,    77,    94,   353,    74,    75,
-       4,     5,   364,   365,   366,    81,   368,    93,    60,    15,
-      60,    63,    64,    63,    64,    21,    93,    83,     6,    86,
-      87,     6,    93,    90,    91,    93,     6,    94,    80,    86,
-      87,    93,    93,    90,    91,     6,   296,    94,    86,    87,
-      93,    18,    90,    91,    60,    31,    94,    63,    64,    93,
-      93,   229,    58,    59,    60,    61,    62,    63,    64,   421,
-     422,   423,    93,   425,    80,    93,    93,   514,   430,   431,
-     432,   433,   434,   435,    80,    93,   422,   423,     4,   425,
-      93,     7,    93,    93,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    93,    21,    22,    23,    93,    93,
-      93,    93,   464,   465,   466,   467,   468,   469,   470,   471,
-     472,    93,    93,   488,    93,    65,    66,    67,    68,    69,
-      70,    71,   484,   485,   486,   487,   488,   489,   490,   491,
-      80,    93,    93,    93,    93,    93,   492,    93,    93,    93,
-     502,    93,   504,   505,   506,    93,   508,    93,   510,   511,
-     512,   507,    78,    93,    93,    93,    82,    93,    93,    93,
-      93,   523,   524,   525,   526,   527,    93,   309,   530,    15,
-     235,   240,   528,   265,    -1,    21,   538,    -1,   540,     6,
-       7,     8,   544,    -1,    -1,   541,    -1,   543,    36,    -1,
-      -1,    -1,   554,    -1,   556,    43,    44,    45,    46,   555,
-     562,    -1,    50,    -1,    -1,    -1,    -1,   563,    -1,    -1,
-     566,    -1,    58,    59,    60,    61,    62,    63,    64,    -1,
-      -1,    -1,    -1,    -1,    51,    52,    53,    54,    55,    56,
-      57,    -1,    -1,    -1,    80,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    23,    24,    25,    26,    27,    28,    29,
+       2,    13,   243,    23,     3,     4,     5,   122,     7,     6,
+      81,    89,    90,     6,    10,    11,    12,     0,    14,   305,
+     306,    20,    24,    94,   306,   254,    81,   256,   257,   258,
+     259,   260,   261,     4,     5,     6,    32,    33,    34,    35,
+      36,    37,    38,   301,   330,   331,     4,     5,     6,   331,
+     291,   292,     4,     5,    42,   341,   342,    42,    43,   341,
+     342,    82,   177,     4,     5,   536,    65,    77,   539,    84,
+      80,   357,    82,    94,     6,   357,   281,    97,   549,   337,
+      77,    96,   102,   103,    77,   314,    88,   281,    87,    88,
+       4,     5,    91,    92,    82,   281,    95,    82,   100,   101,
+      52,    53,    54,    55,    56,    57,    58,   222,   313,   111,
+     351,    82,   114,   115,   116,    94,    87,    88,   120,   313,
+      91,    92,    61,     6,    95,    64,    65,   313,    61,    87,
+      88,    64,    65,    91,    92,    87,    88,    95,    94,    91,
+      92,    82,    81,    95,     4,     5,    87,    88,    81,    94,
+      91,    92,   154,   155,    95,    94,    94,   550,   160,   161,
+     162,   163,   164,   165,   166,    94,   168,   169,   561,   171,
+     190,   339,    94,    87,    88,   568,    94,    91,    92,    94,
+     573,    95,   561,     4,     5,     6,     7,     4,     5,   568,
+     358,     4,     5,     6,   573,   543,     9,   199,   200,     4,
+       5,     6,    94,   371,     9,   207,   208,   555,    94,    84,
+     496,   213,   214,    84,   496,     4,     5,    61,     7,    94,
+      64,    65,    94,    94,   572,   511,    48,    49,    50,   511,
+      84,    94,     4,     5,   236,   237,   238,    81,    84,   241,
+      94,   243,     6,   245,   246,    84,   532,   415,    94,     6,
+     532,    73,    74,    94,    94,    94,    78,    75,    76,   545,
+     428,   547,    94,   545,    82,   547,    87,    88,    94,   271,
+      91,    92,    81,   559,    95,    88,    94,   559,   393,   394,
+     282,   567,    94,    88,   570,   567,     4,     5,   570,   291,
+     292,   293,   294,   408,     4,     5,     6,    94,    87,    88,
+     302,    61,    91,    92,    64,    65,    95,    15,    61,   305,
+     306,    64,    65,    21,    94,    87,    88,    94,   330,    91,
+      92,    81,    81,    95,    75,    76,   441,   442,    81,    61,
+       6,    82,    64,    65,   330,   331,   338,    75,    76,    61,
+      81,   456,    64,    65,    82,   341,   342,   349,    94,   351,
+     352,    59,    60,    61,    62,    63,    64,    65,    94,    81,
+      94,   357,     6,    15,    94,    94,   368,   369,   370,    21,
+     372,   369,   370,    81,   372,    94,     6,    87,    88,    94,
+       4,    91,    92,     7,    84,    95,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    94,    21,    22,    23,
+      24,     6,     7,     8,    94,     6,     6,    59,    60,    61,
+      62,    63,    64,    65,    87,    88,    89,    90,    61,    94,
+      94,    64,    65,   425,   426,   427,    94,   429,    94,    81,
+       6,     6,   434,   435,   436,   437,   438,   439,    81,    75,
+      76,    94,   233,    94,    94,    81,    82,    52,    53,    54,
+      55,    56,    57,    58,    94,    79,    75,    76,    94,    83,
+      94,   426,   427,    82,   429,    94,   468,   469,   470,   471,
+     472,   473,   474,   475,   476,    94,    94,    94,    94,    66,
+      67,    68,    69,    70,    71,    72,   488,   489,   490,   491,
+     492,   493,   494,   495,    81,    86,    87,    88,    89,    90,
+     496,    94,    94,    18,   506,    94,   508,   509,   510,    37,
+     512,    94,   514,   515,   516,   511,    44,    45,    46,    47,
+      94,    94,    94,    51,    94,   527,   528,   529,   530,   531,
+      94,    94,   534,    94,    94,    94,   532,    94,    94,    94,
+     542,    94,   544,    94,    94,    94,   548,    94,    94,   545,
+      94,   547,    94,    94,    94,    94,   558,    94,   560,    31,
+     300,   518,   492,   559,   566,    85,    86,    87,    88,    89,
+      90,   567,   239,    23,   570,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    84,    85,    86,
-      87,    88,    89,    81,    -1,    -1,    -1,    66,    -1,    -1,
-     356,   357,   358,   359,   360,   361,   362,   363,    -1,    -1,
-      -1,    81,    -1,   369,   370,   371,   413,   414,   415,   416,
-     417,   418,   419,   420,    -1,    -1,    -1,    -1,    -1,   426,
-     427,   428,    97,    -1,    -1,    -1,    -1,   102,   103,    -1,
-     105,   106,   107,    -1,   109,   110,    83,    84,    85,    86,
-      87,    88,    89,    -1,    -1,    -1,    -1,    -1,    95,    83,
-      84,    85,    86,    87,    88,    89,    51,    52,    53,    54,
-      55,    56,    57,    84,    85,    86,    87,    88,    89
+      40,    41,    23,   313,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,   269,    -1,   244,
+      -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    68,   360,
+     361,   362,   363,   364,   365,   366,   367,    -1,    -1,    -1,
+      -1,    82,   373,   374,   375,   417,   418,   419,   420,   421,
+     422,   423,   424,    -1,    -1,    -1,    99,    -1,   430,   431,
+     432,   104,   105,    -1,   107,   108,   109,   110,    -1,   112,
+     113,    84,    85,    86,    87,    88,    89,    90,    -1,    -1,
+      -1,    -1,    -1,    96,    84,    85,    86,    87,    88,    89,
+      90,    52,    53,    54,    55,    56,    57,    58,    85,    86,
+      87,    88,    89,    90
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const unsigned char yystos[] =
 {
-       0,    97,    98,     0,     3,     4,     5,     7,    20,    64,
-      86,    87,    90,    91,    94,    99,   151,   152,   175,   176,
-     177,   178,   101,   164,   100,   177,   177,   177,   178,   177,
-      80,   101,    83,    84,    85,    86,    87,    88,    89,     4,
+       0,    98,    99,     0,     3,     4,     5,     7,    20,    65,
+      87,    88,    91,    92,    95,   100,   153,   154,   177,   178,
+     179,   180,   102,   166,   101,   179,   179,   179,   180,   179,
+      81,   102,    84,    85,    86,    87,    88,    89,    90,     4,
        7,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    21,    22,    23,    78,    82,   104,   106,   107,   108,
-     109,   110,   111,   112,   113,   114,   115,   116,   121,   132,
-     142,   146,   155,   162,    51,    52,    53,    54,    55,    56,
-      57,   165,   166,   167,   175,    95,   153,   104,   177,   177,
-     177,   177,   177,   177,   177,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,    60,    63,    64,   168,   169,   170,    93,    81,   175,
-     167,     6,     7,     8,   105,   167,   171,   173,   173,   175,
-     175,   167,   167,   173,   173,   156,   173,   173,   173,   175,
-     173,   173,   175,   175,   175,   175,    93,   154,    80,    80,
-      93,    93,    80,   143,    80,   147,    65,    66,    67,    68,
-      69,    70,    71,    80,    93,    93,     6,   117,     4,     5,
-       6,     9,    87,   172,   175,   175,   144,   148,   175,   175,
-     175,   175,   175,   175,   175,   157,   175,   175,     6,    81,
-     175,     4,     5,    81,   154,    93,    93,    74,    75,    81,
-      74,    75,    81,    93,    93,    41,    81,   158,   167,    93,
-      93,     4,     5,     6,     9,    87,   175,   175,     6,    76,
-       6,     6,    76,     6,   175,   175,     6,    80,   175,   175,
-       4,     5,    93,    93,   154,   145,   154,    93,   149,    93,
-     150,    93,    93,    80,   163,    93,   118,   118,   175,   175,
-     175,   143,    47,    48,    49,    72,    73,    77,   174,   175,
-     174,   175,   147,   175,   175,   159,    76,    79,    81,    36,
-      43,    44,    45,    46,    50,   119,   120,   122,    93,   139,
-     145,   145,   145,   145,   145,   145,   145,    93,    93,    93,
-      93,    42,    81,   158,   160,   175,    93,    15,    21,    58,
-      59,    61,    62,    80,   128,   168,   169,   170,   175,   133,
-     174,   175,   174,   175,   175,   175,     6,   120,     7,   102,
-     175,   175,     6,   102,   103,     6,    91,    94,   130,   176,
-     177,   130,   123,    15,    21,    58,    59,    61,    62,    80,
-     128,   140,   168,   169,   170,    93,   145,    93,    93,    93,
-     176,   178,   130,    83,    23,    24,    25,    26,    27,    28,
+      19,    21,    22,    23,    24,    79,    83,   105,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     123,   134,   144,   148,   157,   164,    52,    53,    54,    55,
+      56,    57,    58,   167,   168,   169,   177,    96,   155,   105,
+     179,   179,   179,   179,   179,   179,   179,   166,   166,   166,
+     166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
+     166,   166,   166,   166,    61,    64,    65,   170,   171,   172,
+      94,    82,   177,   169,     6,     7,     8,   106,   169,   173,
+     175,   175,   177,   177,   169,   169,   175,   175,   158,   175,
+     175,   175,   175,   177,   175,   175,   177,   177,   177,   177,
+      94,   156,    81,    81,    94,    94,    81,   145,    81,   149,
+      66,    67,    68,    69,    70,    71,    72,    81,    94,    94,
+       6,   119,     4,     5,     6,     9,    88,   174,   177,   177,
+     146,   150,   177,   177,   177,   177,   177,   177,   177,   159,
+     177,   177,     6,    82,   177,     4,     5,    82,   156,    94,
+      94,    75,    76,    82,    75,    76,    82,    94,    94,    42,
+      82,   160,   169,    94,    94,     4,     5,     6,     9,    88,
+     177,   177,     6,    77,     6,     6,    77,     6,   177,   177,
+       6,    81,   177,   177,     4,     5,    94,    94,   156,   147,
+     156,    94,   151,    94,   152,    94,    94,    81,   165,    94,
+     120,   120,   177,   177,   177,   145,    48,    49,    50,    73,
+      74,    78,   176,   177,   176,   177,   149,   177,   177,   161,
+      77,    80,    82,    37,    44,    45,    46,    47,    51,   121,
+     122,   124,    94,   141,   147,   147,   147,   147,   147,   147,
+     147,    94,    94,    94,    94,    43,    82,   160,   162,   177,
+      94,    15,    21,    59,    60,    62,    63,    81,   130,   170,
+     171,   172,   177,   135,   176,   177,   176,   177,   177,   177,
+       6,   122,     7,   103,   177,   177,     6,   103,   104,     6,
+      92,    95,   132,   178,   179,   132,   125,    15,    21,    59,
+      60,    62,    63,    81,   130,   142,   170,   171,   172,    94,
+     147,    94,    94,    94,   178,   180,   132,    84,    23,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    82,   103,   177,   104,
+       6,   132,   132,   136,   177,   176,   177,     6,   163,   177,
+       6,    96,   132,   104,     6,   126,   126,   126,   126,   126,
+     126,   126,   126,   126,   127,   177,   127,   127,   104,   129,
+     127,   126,   126,   126,    94,    23,    25,    26,    27,    28,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    81,   102,   175,   103,     6,   130,   130,   134,
-     175,   174,   175,     6,   161,   175,     6,    95,   130,   103,
-       6,   124,   124,   124,   124,   124,   124,   124,   124,   124,
-     125,   175,   125,   125,   103,   127,   125,   124,   124,   124,
-      93,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    81,
-      93,    93,   154,   154,    93,   154,     6,   103,     6,   136,
-     136,   136,   136,   136,   136,   136,   136,   136,   137,   175,
-     137,   137,   103,   135,   137,   136,   136,   136,   175,   175,
-     175,   175,   175,   175,    93,   154,   154,    93,   154,    93,
-      93,    93,    93,   175,   175,   175,   175,   175,   175,   175,
-     175,     6,   131,   175,    93,    93,    93,    93,    93,    93,
-      93,    93,    93,   175,   175,   175,   175,   131,   175,   175,
-     175,   130,    93,   141,    93,    93,    93,    93,    93,   126,
-      93,    93,    93,   175,   175,   175,   175,   130,   175,   175,
-     175,   175,   126,    93,    93,    93,    93,    93,    93,   129,
-      93,   175,   175,   175,   175,   175,   130,   175,    93,   129,
-      93,    93,   129,    93,    93,   175,   139,   175,   130,   130,
-     175,   129,   138,   171,    93,    93,    93,   139,   175,   130,
-     175,   138,    93,    93,   175,   130,    93,   138,   130,   139,
-     138
+      39,    40,    41,    82,    94,    94,   156,   156,    94,   156,
+       6,   104,     6,   138,   138,   138,   138,   138,   138,   138,
+     138,   138,   139,   177,   139,   139,   104,   137,   139,   138,
+     138,   138,   177,   177,   177,   177,   177,   177,    94,   156,
+     156,    94,   156,    94,    94,    94,    94,   177,   177,   177,
+     177,   177,   177,   177,   177,     6,   133,   177,    94,    94,
+      94,    94,    94,    94,    94,    94,    94,   177,   177,   177,
+     177,   133,   177,   177,   177,   132,    94,   143,    94,    94,
+      94,    94,    94,   128,    94,    94,    94,   177,   177,   177,
+     177,   132,   177,   177,   177,   177,   128,    94,    94,    94,
+      94,    94,    94,   131,    94,   177,   177,   177,   177,   177,
+     132,   177,    94,   131,    94,    94,   131,    94,    94,   177,
+     141,   177,   132,   132,   177,   131,   140,   173,    94,    94,
+      94,   141,   177,   132,   177,   140,    94,    94,   177,   132,
+      94,   140,   132,   141,   140
 };
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -1980,7 +1981,7 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 361 "parser.y"
+#line 363 "./parser.y"
     {
                resource_t *rsc;
                /* First add stringtables to the resource-list */
@@ -2010,16 +2011,16 @@ yyreduce:
                        yyvsp[0].res = rsc;
                /* Final statement before were done */
                resource_top = get_resource_head(yyvsp[0].res);
-               ;}
+               }
     break;
 
   case 3:
-#line 395 "parser.y"
-    { yyval.res = NULL; want_id = 1; ;}
+#line 397 "./parser.y"
+    { yyval.res = NULL; want_id = 1; }
     break;
 
   case 4:
-#line 396 "parser.y"
+#line 398 "./parser.y"
     {
                if(yyvsp[0].res)
                {
@@ -2064,11 +2065,11 @@ yyreduce:
                if(!dont_want_id)       /* See comments in language parsing below */
                        want_id = 1;
                dont_want_id = 0;
-               ;}
+               }
     break;
 
   case 6:
-#line 472 "parser.y"
+#line 474 "./parser.y"
     {
                yyval.res = yyvsp[0].res;
                if(yyval.res)
@@ -2080,11 +2081,11 @@ yyreduce:
                        yyval.res->name->name.i_name = yyvsp[-2].num;
                        chat("Got %s (%d)", get_typename(yyvsp[0].res), yyval.res->name->name.i_name);
                        }
-                       ;}
+                       }
     break;
 
   case 7:
-#line 484 "parser.y"
+#line 486 "./parser.y"
     {
                yyval.res = yyvsp[0].res;
                if(yyval.res)
@@ -2094,11 +2095,11 @@ yyreduce:
                        yyval.res->name->name.s_name = yyvsp[-2].str;
                        chat("Got %s (%s)", get_typename(yyvsp[0].res), yyval.res->name->name.s_name->str.cstr);
                }
-               ;}
+               }
     break;
 
   case 8:
-#line 494 "parser.y"
+#line 496 "./parser.y"
     {
                /* Don't do anything, stringtables are converted to
                 * resource_t structures when we are finished parsing and
@@ -2106,16 +2107,16 @@ yyreduce:
                 */
                yyval.res = NULL;
                chat("Got STRINGTABLE");
-               ;}
+               }
     break;
 
   case 9:
-#line 502 "parser.y"
-    {want_nl = 1; ;}
+#line 504 "./parser.y"
+    {want_nl = 1; }
     break;
 
   case 10:
-#line 502 "parser.y"
+#line 504 "./parser.y"
     {
                /* We *NEED* the newline to delimit the expression.
                 * Otherwise, we would not be able to set the next
@@ -2153,60 +2154,60 @@ yyreduce:
                currentlanguage = new_language(yyvsp[-2].num, yyvsp[0].num);
                yyval.res = NULL;
                chat("Got LANGUAGE %d,%d (0x%04x)", yyvsp[-2].num, yyvsp[0].num, (yyvsp[0].num<<10) + yyvsp[-2].num);
-               ;}
+               }
     break;
 
   case 11:
-#line 546 "parser.y"
-    { yychar = rsrcid_to_token(yychar); ;}
+#line 548 "./parser.y"
+    { yychar = rsrcid_to_token(yychar); }
     break;
 
   case 12:
-#line 552 "parser.y"
+#line 554 "./parser.y"
     {
                if(yyvsp[0].num > 65535 || yyvsp[0].num < -32768)
                        yyerror("Resource's ID out of range (%d)", yyvsp[0].num);
                yyval.nid = new_name_id();
                yyval.nid->type = name_ord;
                yyval.nid->name.i_name = yyvsp[0].num;
-               ;}
+               }
     break;
 
   case 13:
-#line 559 "parser.y"
+#line 561 "./parser.y"
     {
                yyval.nid = new_name_id();
                yyval.nid->type = name_str;
                yyval.nid->name.s_name = yyvsp[0].str;
-               ;}
+               }
     break;
 
   case 14:
-#line 569 "parser.y"
-    { yyval.nid = yyvsp[0].nid; ;}
+#line 571 "./parser.y"
+    { yyval.nid = yyvsp[0].nid; }
     break;
 
   case 15:
-#line 570 "parser.y"
+#line 572 "./parser.y"
     {
                yyval.nid = new_name_id();
                yyval.nid->type = name_str;
                yyval.nid->name.s_name = yyvsp[0].str;
-               ;}
+               }
     break;
 
   case 16:
-#line 579 "parser.y"
-    { yyval.res = new_resource(res_acc, yyvsp[0].acc, yyvsp[0].acc->memopt, yyvsp[0].acc->lvc.language); ;}
+#line 581 "./parser.y"
+    { yyval.res = new_resource(res_acc, yyvsp[0].acc, yyvsp[0].acc->memopt, yyvsp[0].acc->lvc.language); }
     break;
 
   case 17:
-#line 580 "parser.y"
-    { yyval.res = new_resource(res_bmp, yyvsp[0].bmp, yyvsp[0].bmp->memopt, yyvsp[0].bmp->data->lvc.language); ;}
+#line 582 "./parser.y"
+    { yyval.res = new_resource(res_bmp, yyvsp[0].bmp, yyvsp[0].bmp->memopt, yyvsp[0].bmp->data->lvc.language); }
     break;
 
   case 18:
-#line 581 "parser.y"
+#line 583 "./parser.y"
     {
                resource_t *rsc;
                if(yyvsp[0].ani->type == res_anicur)
@@ -2230,41 +2231,41 @@ yyreduce:
                else
                        internal_error(__FILE__, __LINE__, "Invalid top-level type %d in cursor resource", yyvsp[0].ani->type);
                free(yyvsp[0].ani);
-               ;}
+               }
     break;
 
   case 19:
-#line 605 "parser.y"
-    { yyval.res = new_resource(res_dlg, yyvsp[0].dlg, yyvsp[0].dlg->memopt, yyvsp[0].dlg->lvc.language); ;}
+#line 607 "./parser.y"
+    { yyval.res = new_resource(res_dlg, yyvsp[0].dlg, yyvsp[0].dlg->memopt, yyvsp[0].dlg->lvc.language); }
     break;
 
   case 20:
-#line 606 "parser.y"
+#line 608 "./parser.y"
     {
                if(win32)
                        yyval.res = new_resource(res_dlgex, yyvsp[0].dlgex, yyvsp[0].dlgex->memopt, yyvsp[0].dlgex->lvc.language);
                else
                        yyval.res = NULL;
-               ;}
+               }
     break;
 
   case 21:
-#line 612 "parser.y"
-    { yyval.res = new_resource(res_dlginit, yyvsp[0].dginit, yyvsp[0].dginit->memopt, yyvsp[0].dginit->data->lvc.language); ;}
+#line 614 "./parser.y"
+    { yyval.res = new_resource(res_dlginit, yyvsp[0].dginit, yyvsp[0].dginit->memopt, yyvsp[0].dginit->data->lvc.language); }
     break;
 
   case 22:
-#line 613 "parser.y"
-    { yyval.res = new_resource(res_fnt, yyvsp[0].fnt, yyvsp[0].fnt->memopt, yyvsp[0].fnt->data->lvc.language); ;}
+#line 615 "./parser.y"
+    { yyval.res = new_resource(res_fnt, yyvsp[0].fnt, yyvsp[0].fnt->memopt, yyvsp[0].fnt->data->lvc.language); }
     break;
 
   case 23:
-#line 614 "parser.y"
-    { yyval.res = new_resource(res_fntdir, yyvsp[0].fnd, yyvsp[0].fnd->memopt, yyvsp[0].fnd->data->lvc.language); ;}
+#line 616 "./parser.y"
+    { yyval.res = new_resource(res_fntdir, yyvsp[0].fnd, yyvsp[0].fnd->memopt, yyvsp[0].fnd->data->lvc.language); }
     break;
 
   case 24:
-#line 615 "parser.y"
+#line 617 "./parser.y"
     {
                resource_t *rsc;
                if(yyvsp[0].ani->type == res_aniico)
@@ -2288,71 +2289,76 @@ yyreduce:
                else
                        internal_error(__FILE__, __LINE__, "Invalid top-level type %d in icon resource", yyvsp[0].ani->type);
                free(yyvsp[0].ani);
-               ;}
+               }
     break;
 
   case 25:
-#line 639 "parser.y"
-    { yyval.res = new_resource(res_men, yyvsp[0].men, yyvsp[0].men->memopt, yyvsp[0].men->lvc.language); ;}
+#line 641 "./parser.y"
+    { yyval.res = new_resource(res_men, yyvsp[0].men, yyvsp[0].men->memopt, yyvsp[0].men->lvc.language); }
     break;
 
   case 26:
-#line 640 "parser.y"
+#line 642 "./parser.y"
     {
                if(win32)
                        yyval.res = new_resource(res_menex, yyvsp[0].menex, yyvsp[0].menex->memopt, yyvsp[0].menex->lvc.language);
                else
                        yyval.res = NULL;
-               ;}
+               }
     break;
 
   case 27:
-#line 646 "parser.y"
-    { yyval.res = new_resource(res_msg, yyvsp[0].msg, WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE, yyvsp[0].msg->data->lvc.language); ;}
+#line 648 "./parser.y"
+    { yyval.res = new_resource(res_msg, yyvsp[0].msg, WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE, yyvsp[0].msg->data->lvc.language); }
     break;
 
   case 28:
-#line 647 "parser.y"
-    { yyval.res = new_resource(res_rdt, yyvsp[0].rdt, yyvsp[0].rdt->memopt, yyvsp[0].rdt->data->lvc.language); ;}
+#line 649 "./parser.y"
+    { yyval.res = new_resource(res_html, yyvsp[0].html, yyvsp[0].html->memopt, yyvsp[0].html->data->lvc.language); }
     break;
 
   case 29:
-#line 648 "parser.y"
-    { yyval.res = new_resource(res_toolbar, yyvsp[0].tlbar, yyvsp[0].tlbar->memopt, yyvsp[0].tlbar->lvc.language); ;}
+#line 650 "./parser.y"
+    { yyval.res = new_resource(res_rdt, yyvsp[0].rdt, yyvsp[0].rdt->memopt, yyvsp[0].rdt->data->lvc.language); }
     break;
 
   case 30:
-#line 649 "parser.y"
-    { yyval.res = new_resource(res_usr, yyvsp[0].usr, yyvsp[0].usr->memopt, yyvsp[0].usr->data->lvc.language); ;}
+#line 651 "./parser.y"
+    { yyval.res = new_resource(res_toolbar, yyvsp[0].tlbar, yyvsp[0].tlbar->memopt, yyvsp[0].tlbar->lvc.language); }
     break;
 
   case 31:
-#line 650 "parser.y"
-    { yyval.res = new_resource(res_ver, yyvsp[0].veri, WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE, yyvsp[0].veri->lvc.language); ;}
+#line 652 "./parser.y"
+    { yyval.res = new_resource(res_usr, yyvsp[0].usr, yyvsp[0].usr->memopt, yyvsp[0].usr->data->lvc.language); }
     break;
 
   case 32:
-#line 654 "parser.y"
-    { yyval.str = make_filename(yyvsp[0].str); ;}
+#line 653 "./parser.y"
+    { yyval.res = new_resource(res_ver, yyvsp[0].veri, WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE, yyvsp[0].veri->lvc.language); }
     break;
 
   case 33:
-#line 655 "parser.y"
-    { yyval.str = make_filename(yyvsp[0].str); ;}
+#line 657 "./parser.y"
+    { yyval.str = make_filename(yyvsp[0].str); }
     break;
 
   case 34:
-#line 656 "parser.y"
-    { yyval.str = make_filename(yyvsp[0].str); ;}
+#line 658 "./parser.y"
+    { yyval.str = make_filename(yyvsp[0].str); }
     break;
 
   case 35:
-#line 660 "parser.y"
-    { yyval.bmp = new_bitmap(yyvsp[0].raw, yyvsp[-1].iptr); ;}
+#line 659 "./parser.y"
+    { yyval.str = make_filename(yyvsp[0].str); }
     break;
 
   case 36:
-#line 664 "parser.y"
+#line 663 "./parser.y"
+    { yyval.bmp = new_bitmap(yyvsp[0].raw, yyvsp[-1].iptr); }
+    break;
+
+  case 37:
+#line 667 "./parser.y"
     {
                yyval.ani = new_ani_any();
                if(yyvsp[0].raw->size > 4 && !memcmp(yyvsp[0].raw->data, riff, sizeof(riff)))
@@ -2365,11 +2371,11 @@ yyreduce:
                        yyval.ani->type = res_curg;
                        yyval.ani->u.curg = new_cursor_group(yyvsp[0].raw, yyvsp[-1].iptr);
                }
-       ;}
+       }
     break;
 
-  case 37:
-#line 680 "parser.y"
+  case 38:
+#line 683 "./parser.y"
     {
                yyval.ani = new_ani_any();
                if(yyvsp[0].raw->size > 4 && !memcmp(yyvsp[0].raw->data, riff, sizeof(riff)))
@@ -2382,40 +2388,45 @@ yyreduce:
                        yyval.ani->type = res_icog;
                        yyval.ani->u.icog = new_icon_group(yyvsp[0].raw, yyvsp[-1].iptr);
                }
-       ;}
-    break;
-
-  case 38:
-#line 702 "parser.y"
-    { yyval.fnt = new_font(yyvsp[0].raw, yyvsp[-1].iptr); ;}
+       }
     break;
 
   case 39:
-#line 712 "parser.y"
-    { yyval.fnd = new_fontdir(yyvsp[0].raw, yyvsp[-1].iptr); ;}
+#line 705 "./parser.y"
+    { yyval.fnt = new_font(yyvsp[0].raw, yyvsp[-1].iptr); }
     break;
 
   case 40:
-#line 720 "parser.y"
+#line 715 "./parser.y"
+    { yyval.fnd = new_fontdir(yyvsp[0].raw, yyvsp[-1].iptr); }
+    break;
+
+  case 41:
+#line 723 "./parser.y"
     {
                if(!win32)
                        yywarning("MESSAGETABLE not supported in 16-bit mode");
                yyval.msg = new_messagetable(yyvsp[0].raw, yyvsp[-1].iptr);
-               ;}
-    break;
-
-  case 41:
-#line 728 "parser.y"
-    { yyval.rdt = new_rcdata(yyvsp[0].raw, yyvsp[-1].iptr); ;}
+               }
     break;
 
   case 42:
-#line 732 "parser.y"
-    { yyval.dginit = new_dlginit(yyvsp[0].raw, yyvsp[-1].iptr); ;}
+#line 731 "./parser.y"
+    { yyval.html = new_html(yyvsp[0].raw, yyvsp[-1].iptr); }
     break;
 
   case 43:
-#line 736 "parser.y"
+#line 735 "./parser.y"
+    { yyval.rdt = new_rcdata(yyvsp[0].raw, yyvsp[-1].iptr); }
+    break;
+
+  case 44:
+#line 739 "./parser.y"
+    { yyval.dginit = new_dlginit(yyvsp[0].raw, yyvsp[-1].iptr); }
+    break;
+
+  case 45:
+#line 743 "./parser.y"
     {
 #ifdef WORDS_BIGENDIAN
                        if(pedantic && byteorder != WRC_BO_LITTLE)
@@ -2424,29 +2435,29 @@ yyreduce:
 #endif
                                yywarning("Byteordering is not little-endian and type cannot be interpreted");
                        yyval.usr = new_user(yyvsp[-2].nid, yyvsp[0].raw, yyvsp[-1].iptr);
-               ;}
+               }
     break;
 
-  case 44:
-#line 747 "parser.y"
+  case 46:
+#line 754 "./parser.y"
     {
                yyval.nid = new_name_id();
                yyval.nid->type = name_ord;
                yyval.nid->name.i_name = yyvsp[0].num;
-               ;}
+               }
     break;
 
-  case 45:
-#line 752 "parser.y"
+  case 47:
+#line 759 "./parser.y"
     {
                yyval.nid = new_name_id();
                yyval.nid->type = name_str;
                yyval.nid->name.s_name = yyvsp[0].str;
-               ;}
+               }
     break;
 
-  case 46:
-#line 761 "parser.y"
+  case 48:
+#line 768 "./parser.y"
     {
                yyval.acc = new_accelerator();
                if(yyvsp[-4].iptr)
@@ -2468,76 +2479,76 @@ yyreduce:
                }
                if(!yyval.acc->lvc.language)
                        yyval.acc->lvc.language = dup_language(currentlanguage);
-               ;}
-    break;
-
-  case 47:
-#line 785 "parser.y"
-    { yyval.event=NULL; ;}
-    break;
-
-  case 48:
-#line 786 "parser.y"
-    { yyval.event=add_string_event(yyvsp[-3].str, yyvsp[-1].num, yyvsp[0].num, yyvsp[-4].event); ;}
+               }
     break;
 
   case 49:
-#line 787 "parser.y"
-    { yyval.event=add_event(yyvsp[-3].num, yyvsp[-1].num, yyvsp[0].num, yyvsp[-4].event); ;}
+#line 792 "./parser.y"
+    { yyval.event=NULL; }
     break;
 
   case 50:
-#line 796 "parser.y"
-    { yyval.num = 0; ;}
+#line 793 "./parser.y"
+    { yyval.event=add_string_event(yyvsp[-3].str, yyvsp[-1].num, yyvsp[0].num, yyvsp[-4].event); }
     break;
 
   case 51:
-#line 797 "parser.y"
-    { yyval.num = yyvsp[0].num; ;}
+#line 794 "./parser.y"
+    { yyval.event=add_event(yyvsp[-3].num, yyvsp[-1].num, yyvsp[0].num, yyvsp[-4].event); }
     break;
 
   case 52:
-#line 800 "parser.y"
-    { yyval.num = yyvsp[0].num; ;}
+#line 803 "./parser.y"
+    { yyval.num = 0; }
     break;
 
   case 53:
-#line 801 "parser.y"
-    { yyval.num = yyvsp[-2].num | yyvsp[0].num; ;}
+#line 804 "./parser.y"
+    { yyval.num = yyvsp[0].num; }
     break;
 
   case 54:
-#line 804 "parser.y"
-    { yyval.num = WRC_AF_NOINVERT; ;}
+#line 807 "./parser.y"
+    { yyval.num = yyvsp[0].num; }
     break;
 
   case 55:
-#line 805 "parser.y"
-    { yyval.num = WRC_AF_SHIFT; ;}
+#line 808 "./parser.y"
+    { yyval.num = yyvsp[-2].num | yyvsp[0].num; }
     break;
 
   case 56:
-#line 806 "parser.y"
-    { yyval.num = WRC_AF_CONTROL; ;}
+#line 811 "./parser.y"
+    { yyval.num = WRC_AF_NOINVERT; }
     break;
 
   case 57:
-#line 807 "parser.y"
-    { yyval.num = WRC_AF_ALT; ;}
+#line 812 "./parser.y"
+    { yyval.num = WRC_AF_SHIFT; }
     break;
 
   case 58:
-#line 808 "parser.y"
-    { yyval.num = WRC_AF_ASCII; ;}
+#line 813 "./parser.y"
+    { yyval.num = WRC_AF_CONTROL; }
     break;
 
   case 59:
-#line 809 "parser.y"
-    { yyval.num = WRC_AF_VIRTKEY; ;}
+#line 814 "./parser.y"
+    { yyval.num = WRC_AF_ALT; }
     break;
 
   case 60:
-#line 815 "parser.y"
+#line 815 "./parser.y"
+    { yyval.num = WRC_AF_ASCII; }
+    break;
+
+  case 61:
+#line 816 "./parser.y"
+    { yyval.num = WRC_AF_VIRTKEY; }
+    break;
+
+  case 62:
+#line 822 "./parser.y"
     {
                if(yyvsp[-11].iptr)
                {
@@ -2568,162 +2579,162 @@ yyreduce:
 
                if(!yyval.dlg->lvc.language)
                        yyval.dlg->lvc.language = dup_language(currentlanguage);
-               ;}
-    break;
-
-  case 61:
-#line 849 "parser.y"
-    { yyval.dlg=new_dialog(); ;}
-    break;
-
-  case 62:
-#line 850 "parser.y"
-    { yyval.dlg=dialog_style(yyvsp[0].style,yyvsp[-2].dlg); ;}
+               }
     break;
 
   case 63:
-#line 851 "parser.y"
-    { yyval.dlg=dialog_exstyle(yyvsp[0].style,yyvsp[-2].dlg); ;}
+#line 856 "./parser.y"
+    { yyval.dlg=new_dialog(); }
     break;
 
   case 64:
-#line 852 "parser.y"
-    { yyval.dlg=dialog_caption(yyvsp[0].str,yyvsp[-2].dlg); ;}
+#line 857 "./parser.y"
+    { yyval.dlg=dialog_style(yyvsp[0].style,yyvsp[-2].dlg); }
     break;
 
   case 65:
-#line 853 "parser.y"
-    { yyval.dlg=dialog_font(yyvsp[0].fntid,yyvsp[-1].dlg); ;}
+#line 858 "./parser.y"
+    { yyval.dlg=dialog_exstyle(yyvsp[0].style,yyvsp[-2].dlg); }
     break;
 
   case 66:
-#line 854 "parser.y"
-    { yyval.dlg=dialog_class(yyvsp[0].nid,yyvsp[-2].dlg); ;}
+#line 859 "./parser.y"
+    { yyval.dlg=dialog_caption(yyvsp[0].str,yyvsp[-2].dlg); }
     break;
 
   case 67:
-#line 855 "parser.y"
-    { yyval.dlg=dialog_menu(yyvsp[0].nid,yyvsp[-2].dlg); ;}
+#line 860 "./parser.y"
+    { yyval.dlg=dialog_font(yyvsp[0].fntid,yyvsp[-1].dlg); }
     break;
 
   case 68:
-#line 856 "parser.y"
-    { yyval.dlg=dialog_language(yyvsp[0].lan,yyvsp[-1].dlg); ;}
+#line 861 "./parser.y"
+    { yyval.dlg=dialog_class(yyvsp[0].nid,yyvsp[-2].dlg); }
     break;
 
   case 69:
-#line 857 "parser.y"
-    { yyval.dlg=dialog_characteristics(yyvsp[0].chars,yyvsp[-1].dlg); ;}
+#line 862 "./parser.y"
+    { yyval.dlg=dialog_menu(yyvsp[0].nid,yyvsp[-2].dlg); }
     break;
 
   case 70:
-#line 858 "parser.y"
-    { yyval.dlg=dialog_version(yyvsp[0].ver,yyvsp[-1].dlg); ;}
+#line 863 "./parser.y"
+    { yyval.dlg=dialog_language(yyvsp[0].lan,yyvsp[-1].dlg); }
     break;
 
   case 71:
-#line 861 "parser.y"
-    { yyval.ctl = NULL; ;}
+#line 864 "./parser.y"
+    { yyval.dlg=dialog_characteristics(yyvsp[0].chars,yyvsp[-1].dlg); }
     break;
 
   case 72:
-#line 862 "parser.y"
-    { yyval.ctl=ins_ctrl(-1, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 865 "./parser.y"
+    { yyval.dlg=dialog_version(yyvsp[0].ver,yyvsp[-1].dlg); }
     break;
 
   case 73:
-#line 863 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_EDIT, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 868 "./parser.y"
+    { yyval.ctl = NULL; }
     break;
 
   case 74:
-#line 864 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_LISTBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 869 "./parser.y"
+    { yyval.ctl=ins_ctrl(-1, 0, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 75:
-#line 865 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_COMBOBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 870 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_EDIT, 0, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 76:
-#line 866 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_SCROLLBAR, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 871 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_LISTBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 77:
-#line 867 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_CHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 872 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_COMBOBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 78:
-#line 868 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_DEFPUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 873 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_SCROLLBAR, 0, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 79:
-#line 869 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_GROUPBOX, yyvsp[0].ctl, yyvsp[-2].ctl);;}
+#line 874 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_CHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 80:
-#line 870 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_PUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 875 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_DEFPUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 81:
-#line 872 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_RADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 876 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_GROUPBOX, yyvsp[0].ctl, yyvsp[-2].ctl);}
     break;
 
   case 82:
-#line 873 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTO3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 877 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_PUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 83:
-#line 874 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 879 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_RADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 84:
-#line 875 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTOCHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 880 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTO3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 85:
-#line 876 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTORADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 881 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 86:
-#line 877 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_STATIC, SS_LEFT, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 882 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTOCHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 87:
-#line 878 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_STATIC, SS_CENTER, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 883 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTORADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 88:
-#line 879 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_STATIC, SS_RIGHT, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 884 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_STATIC, SS_LEFT, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 89:
-#line 881 "parser.y"
+#line 885 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_STATIC, SS_CENTER, yyvsp[0].ctl, yyvsp[-2].ctl); }
+    break;
+
+  case 90:
+#line 886 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_STATIC, SS_RIGHT, yyvsp[0].ctl, yyvsp[-2].ctl); }
+    break;
+
+  case 91:
+#line 888 "./parser.y"
     {
                yyvsp[0].ctl->title = yyvsp[-7].nid;
                yyvsp[0].ctl->id = yyvsp[-5].num;
                yyvsp[0].ctl->x = yyvsp[-3].num;
                yyvsp[0].ctl->y = yyvsp[-1].num;
                yyval.ctl = ins_ctrl(CT_STATIC, SS_ICON, yyvsp[0].ctl, yyvsp[-9].ctl);
-               ;}
+               }
     break;
 
-  case 90:
-#line 891 "parser.y"
+  case 92:
+#line 898 "./parser.y"
     {
                yyval.ctl=new_control();
                yyval.ctl->title = new_name_id();
@@ -2745,11 +2756,11 @@ yyreduce:
                        }
                        free(yyvsp[0].styles);
                }
-               ;}
+               }
     break;
 
-  case 91:
-#line 916 "parser.y"
+  case 93:
+#line 923 "./parser.y"
     {
                yyval.ctl = new_control();
                yyval.ctl->id = yyvsp[-9].num;
@@ -2768,36 +2779,36 @@ yyreduce:
                        }
                        free(yyvsp[0].styles);
                }
-               ;}
+               }
     break;
 
-  case 92:
-#line 938 "parser.y"
-    { yyval.ctl = new_control(); ;}
+  case 94:
+#line 945 "./parser.y"
+    { yyval.ctl = new_control(); }
     break;
 
-  case 93:
-#line 940 "parser.y"
+  case 95:
+#line 947 "./parser.y"
     {
                yyval.ctl = new_control();
                yyval.ctl->width = yyvsp[-2].num;
                yyval.ctl->height = yyvsp[0].num;
-               ;}
+               }
     break;
 
-  case 94:
-#line 945 "parser.y"
+  case 96:
+#line 952 "./parser.y"
     {
                yyval.ctl = new_control();
                yyval.ctl->width = yyvsp[-4].num;
                yyval.ctl->height = yyvsp[-2].num;
                yyval.ctl->style = yyvsp[0].style;
                yyval.ctl->gotstyle = TRUE;
-               ;}
+               }
     break;
 
-  case 95:
-#line 952 "parser.y"
+  case 97:
+#line 959 "./parser.y"
     {
                yyval.ctl = new_control();
                yyval.ctl->width = yyvsp[-6].num;
@@ -2806,11 +2817,11 @@ yyreduce:
                yyval.ctl->gotstyle = TRUE;
                yyval.ctl->exstyle = yyvsp[0].style;
                yyval.ctl->gotexstyle = TRUE;
-               ;}
+               }
     break;
 
-  case 96:
-#line 963 "parser.y"
+  case 98:
+#line 970 "./parser.y"
     {
                yyval.ctl=new_control();
                yyval.ctl->title = yyvsp[-16].nid;
@@ -2824,11 +2835,11 @@ yyreduce:
                yyval.ctl->height = yyvsp[-2].num;
                yyval.ctl->exstyle = yyvsp[0].style;
                yyval.ctl->gotexstyle = TRUE;
-               ;}
+               }
     break;
 
-  case 97:
-#line 977 "parser.y"
+  case 99:
+#line 984 "./parser.y"
     {
                yyval.ctl=new_control();
                yyval.ctl->title = yyvsp[-14].nid;
@@ -2840,69 +2851,69 @@ yyreduce:
                yyval.ctl->y = yyvsp[-4].num;
                yyval.ctl->width = yyvsp[-2].num;
                yyval.ctl->height = yyvsp[0].num;
-               ;}
-    break;
-
-  case 98:
-#line 992 "parser.y"
-    { yyval.fntid = new_font_id(yyvsp[-2].num, yyvsp[0].str, 0, 0); ;}
-    break;
-
-  case 99:
-#line 997 "parser.y"
-    { yyval.styles = NULL; ;}
+               }
     break;
 
   case 100:
-#line 998 "parser.y"
-    { yyval.styles = new_style_pair(yyvsp[0].style, 0); ;}
+#line 999 "./parser.y"
+    { yyval.fntid = new_font_id(yyvsp[-2].num, yyvsp[0].str, 0, 0); }
     break;
 
   case 101:
-#line 999 "parser.y"
-    { yyval.styles = new_style_pair(yyvsp[-2].style, yyvsp[0].style); ;}
+#line 1004 "./parser.y"
+    { yyval.styles = NULL; }
     break;
 
   case 102:
-#line 1003 "parser.y"
-    { yyval.style = new_style(yyvsp[-2].style->or_mask | yyvsp[0].style->or_mask, yyvsp[-2].style->and_mask | yyvsp[0].style->and_mask); free(yyvsp[-2].style); free(yyvsp[0].style);;}
+#line 1005 "./parser.y"
+    { yyval.styles = new_style_pair(yyvsp[0].style, 0); }
     break;
 
   case 103:
-#line 1004 "parser.y"
-    { yyval.style = yyvsp[-1].style; ;}
+#line 1006 "./parser.y"
+    { yyval.styles = new_style_pair(yyvsp[-2].style, yyvsp[0].style); }
     break;
 
   case 104:
-#line 1005 "parser.y"
-    { yyval.style = new_style(yyvsp[0].num, 0); ;}
+#line 1010 "./parser.y"
+    { yyval.style = new_style(yyvsp[-2].style->or_mask | yyvsp[0].style->or_mask, yyvsp[-2].style->and_mask | yyvsp[0].style->and_mask); free(yyvsp[-2].style); free(yyvsp[0].style);}
     break;
 
   case 105:
-#line 1006 "parser.y"
-    { yyval.style = new_style(0, yyvsp[0].num); ;}
+#line 1011 "./parser.y"
+    { yyval.style = yyvsp[-1].style; }
     break;
 
   case 106:
-#line 1010 "parser.y"
+#line 1012 "./parser.y"
+    { yyval.style = new_style(yyvsp[0].num, 0); }
+    break;
+
+  case 107:
+#line 1013 "./parser.y"
+    { yyval.style = new_style(0, yyvsp[0].num); }
+    break;
+
+  case 108:
+#line 1017 "./parser.y"
     {
                yyval.nid = new_name_id();
                yyval.nid->type = name_ord;
                yyval.nid->name.i_name = yyvsp[0].num;
-               ;}
+               }
     break;
 
-  case 107:
-#line 1015 "parser.y"
+  case 109:
+#line 1022 "./parser.y"
     {
                yyval.nid = new_name_id();
                yyval.nid->type = name_str;
                yyval.nid->name.s_name = yyvsp[0].str;
-               ;}
+               }
     break;
 
-  case 108:
-#line 1024 "parser.y"
+  case 110:
+#line 1031 "./parser.y"
     {
                if(!win32)
                        yywarning("DIALOGEX not supported in 16-bit mode");
@@ -2942,167 +2953,167 @@ yyreduce:
 
                if(!yyval.dlgex->lvc.language)
                        yyval.dlgex->lvc.language = dup_language(currentlanguage);
-               ;}
-    break;
-
-  case 109:
-#line 1067 "parser.y"
-    { yyval.dlgex=new_dialogex(); ;}
-    break;
-
-  case 110:
-#line 1068 "parser.y"
-    { yyval.dlgex=dialogex_style(yyvsp[0].style,yyvsp[-2].dlgex); ;}
+               }
     break;
 
   case 111:
-#line 1069 "parser.y"
-    { yyval.dlgex=dialogex_exstyle(yyvsp[0].style,yyvsp[-2].dlgex); ;}
+#line 1074 "./parser.y"
+    { yyval.dlgex=new_dialogex(); }
     break;
 
   case 112:
-#line 1070 "parser.y"
-    { yyval.dlgex=dialogex_caption(yyvsp[0].str,yyvsp[-2].dlgex); ;}
+#line 1075 "./parser.y"
+    { yyval.dlgex=dialogex_style(yyvsp[0].style,yyvsp[-2].dlgex); }
     break;
 
   case 113:
-#line 1071 "parser.y"
-    { yyval.dlgex=dialogex_font(yyvsp[0].fntid,yyvsp[-1].dlgex); ;}
+#line 1076 "./parser.y"
+    { yyval.dlgex=dialogex_exstyle(yyvsp[0].style,yyvsp[-2].dlgex); }
     break;
 
   case 114:
-#line 1072 "parser.y"
-    { yyval.dlgex=dialogex_font(yyvsp[0].fntid,yyvsp[-1].dlgex); ;}
+#line 1077 "./parser.y"
+    { yyval.dlgex=dialogex_caption(yyvsp[0].str,yyvsp[-2].dlgex); }
     break;
 
   case 115:
-#line 1073 "parser.y"
-    { yyval.dlgex=dialogex_class(yyvsp[0].nid,yyvsp[-2].dlgex); ;}
+#line 1078 "./parser.y"
+    { yyval.dlgex=dialogex_font(yyvsp[0].fntid,yyvsp[-1].dlgex); }
     break;
 
   case 116:
-#line 1074 "parser.y"
-    { yyval.dlgex=dialogex_menu(yyvsp[0].nid,yyvsp[-2].dlgex); ;}
+#line 1079 "./parser.y"
+    { yyval.dlgex=dialogex_font(yyvsp[0].fntid,yyvsp[-1].dlgex); }
     break;
 
   case 117:
-#line 1075 "parser.y"
-    { yyval.dlgex=dialogex_language(yyvsp[0].lan,yyvsp[-1].dlgex); ;}
+#line 1080 "./parser.y"
+    { yyval.dlgex=dialogex_class(yyvsp[0].nid,yyvsp[-2].dlgex); }
     break;
 
   case 118:
-#line 1076 "parser.y"
-    { yyval.dlgex=dialogex_characteristics(yyvsp[0].chars,yyvsp[-1].dlgex); ;}
+#line 1081 "./parser.y"
+    { yyval.dlgex=dialogex_menu(yyvsp[0].nid,yyvsp[-2].dlgex); }
     break;
 
   case 119:
-#line 1077 "parser.y"
-    { yyval.dlgex=dialogex_version(yyvsp[0].ver,yyvsp[-1].dlgex); ;}
+#line 1082 "./parser.y"
+    { yyval.dlgex=dialogex_language(yyvsp[0].lan,yyvsp[-1].dlgex); }
     break;
 
   case 120:
-#line 1080 "parser.y"
-    { yyval.ctl = NULL; ;}
+#line 1083 "./parser.y"
+    { yyval.dlgex=dialogex_characteristics(yyvsp[0].chars,yyvsp[-1].dlgex); }
     break;
 
   case 121:
-#line 1081 "parser.y"
-    { yyval.ctl=ins_ctrl(-1, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1084 "./parser.y"
+    { yyval.dlgex=dialogex_version(yyvsp[0].ver,yyvsp[-1].dlgex); }
     break;
 
   case 122:
-#line 1082 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_EDIT, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1087 "./parser.y"
+    { yyval.ctl = NULL; }
     break;
 
   case 123:
-#line 1083 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_LISTBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1088 "./parser.y"
+    { yyval.ctl=ins_ctrl(-1, 0, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 124:
-#line 1084 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_COMBOBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1089 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_EDIT, 0, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 125:
-#line 1085 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_SCROLLBAR, 0, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1090 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_LISTBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 126:
-#line 1086 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_CHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1091 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_COMBOBOX, 0, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 127:
-#line 1087 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_DEFPUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1092 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_SCROLLBAR, 0, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 128:
-#line 1088 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_GROUPBOX, yyvsp[0].ctl, yyvsp[-2].ctl);;}
+#line 1093 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_CHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 129:
-#line 1089 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_PUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1094 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_DEFPUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 130:
-#line 1091 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_RADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1095 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_GROUPBOX, yyvsp[0].ctl, yyvsp[-2].ctl);}
     break;
 
   case 131:
-#line 1092 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTO3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1096 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_PUSHBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 132:
-#line 1093 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1098 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_RADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 133:
-#line 1094 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTOCHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1099 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTO3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 134:
-#line 1095 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTORADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1100 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_3STATE, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 135:
-#line 1096 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_STATIC, SS_LEFT, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1101 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTOCHECKBOX, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 136:
-#line 1097 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_STATIC, SS_CENTER, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1102 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_BUTTON, BS_AUTORADIOBUTTON, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 137:
-#line 1098 "parser.y"
-    { yyval.ctl=ins_ctrl(CT_STATIC, SS_RIGHT, yyvsp[0].ctl, yyvsp[-2].ctl); ;}
+#line 1103 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_STATIC, SS_LEFT, yyvsp[0].ctl, yyvsp[-2].ctl); }
     break;
 
   case 138:
-#line 1100 "parser.y"
+#line 1104 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_STATIC, SS_CENTER, yyvsp[0].ctl, yyvsp[-2].ctl); }
+    break;
+
+  case 139:
+#line 1105 "./parser.y"
+    { yyval.ctl=ins_ctrl(CT_STATIC, SS_RIGHT, yyvsp[0].ctl, yyvsp[-2].ctl); }
+    break;
+
+  case 140:
+#line 1107 "./parser.y"
     {
                yyvsp[0].ctl->title = yyvsp[-7].nid;
                yyvsp[0].ctl->id = yyvsp[-5].num;
                yyvsp[0].ctl->x = yyvsp[-3].num;
                yyvsp[0].ctl->y = yyvsp[-1].num;
                yyval.ctl = ins_ctrl(CT_STATIC, SS_ICON, yyvsp[0].ctl, yyvsp[-9].ctl);
-               ;}
+               }
     break;
 
-  case 139:
-#line 1111 "parser.y"
+  case 141:
+#line 1118 "./parser.y"
     {
                yyval.ctl=new_control();
                yyval.ctl->title = yyvsp[-18].nid;
@@ -3126,11 +3137,11 @@ yyreduce:
                        free(yyvsp[-1].iptr);
                }
                yyval.ctl->extra = yyvsp[0].raw;
-               ;}
+               }
     break;
 
-  case 140:
-#line 1135 "parser.y"
+  case 142:
+#line 1142 "./parser.y"
     {
                yyval.ctl=new_control();
                yyval.ctl->title = yyvsp[-15].nid;
@@ -3143,11 +3154,11 @@ yyreduce:
                yyval.ctl->width = yyvsp[-3].num;
                yyval.ctl->height = yyvsp[-1].num;
                yyval.ctl->extra = yyvsp[0].raw;
-               ;}
+               }
     break;
 
-  case 141:
-#line 1151 "parser.y"
+  case 143:
+#line 1158 "./parser.y"
     {
                yyval.ctl=new_control();
                yyval.ctl->title = new_name_id();
@@ -3172,11 +3183,11 @@ yyreduce:
                }
 
                yyval.ctl->extra = yyvsp[0].raw;
-               ;}
+               }
     break;
 
-  case 142:
-#line 1179 "parser.y"
+  case 144:
+#line 1186 "./parser.y"
     {
                yyval.ctl = new_control();
                yyval.ctl->id = yyvsp[-11].num;
@@ -3197,46 +3208,46 @@ yyreduce:
                        free(yyvsp[-2].styles);
                }
                yyval.ctl->extra = yyvsp[0].raw;
-               ;}
-    break;
-
-  case 143:
-#line 1202 "parser.y"
-    { yyval.raw = NULL; ;}
-    break;
-
-  case 144:
-#line 1203 "parser.y"
-    { yyval.raw = yyvsp[0].raw; ;}
+               }
     break;
 
   case 145:
-#line 1206 "parser.y"
-    { yyval.iptr = NULL; ;}
+#line 1209 "./parser.y"
+    { yyval.raw = NULL; }
     break;
 
   case 146:
-#line 1207 "parser.y"
-    { yyval.iptr = new_int(yyvsp[0].num); ;}
+#line 1210 "./parser.y"
+    { yyval.raw = yyvsp[0].raw; }
     break;
 
   case 147:
-#line 1211 "parser.y"
-    { yyval.fntid = new_font_id(yyvsp[-7].num, yyvsp[-5].str, yyvsp[-3].num, yyvsp[-1].num); ;}
+#line 1213 "./parser.y"
+    { yyval.iptr = NULL; }
     break;
 
   case 148:
-#line 1218 "parser.y"
-    { yyval.fntid = NULL; ;}
+#line 1214 "./parser.y"
+    { yyval.iptr = new_int(yyvsp[0].num); }
     break;
 
   case 149:
-#line 1219 "parser.y"
-    { yyval.fntid = NULL; ;}
+#line 1218 "./parser.y"
+    { yyval.fntid = new_font_id(yyvsp[-7].num, yyvsp[-5].str, yyvsp[-3].num, yyvsp[-1].num); }
     break;
 
   case 150:
-#line 1223 "parser.y"
+#line 1225 "./parser.y"
+    { yyval.fntid = NULL; }
+    break;
+
+  case 151:
+#line 1226 "./parser.y"
+    { yyval.fntid = NULL; }
+    break;
+
+  case 152:
+#line 1230 "./parser.y"
     {
                if(!yyvsp[0].menitm)
                        yyerror("Menu must contain items");
@@ -3256,21 +3267,21 @@ yyreduce:
                }
                if(!yyval.men->lvc.language)
                        yyval.men->lvc.language = dup_language(currentlanguage);
-               ;}
+               }
     break;
 
-  case 151:
-#line 1246 "parser.y"
-    { yyval.menitm = yyvsp[-1].menitm; ;}
+  case 153:
+#line 1253 "./parser.y"
+    { yyval.menitm = yyvsp[-1].menitm; }
     break;
 
-  case 152:
-#line 1250 "parser.y"
-    {yyval.menitm = NULL;;}
+  case 154:
+#line 1257 "./parser.y"
+    {yyval.menitm = NULL;}
     break;
 
-  case 153:
-#line 1251 "parser.y"
+  case 155:
+#line 1258 "./parser.y"
     {
                yyval.menitm=new_menu_item();
                yyval.menitm->prev = yyvsp[-5].menitm;
@@ -3279,21 +3290,21 @@ yyreduce:
                yyval.menitm->id =  yyvsp[-1].num;
                yyval.menitm->state = yyvsp[0].num;
                yyval.menitm->name = yyvsp[-3].str;
-               ;}
+               }
     break;
 
-  case 154:
-#line 1260 "parser.y"
+  case 156:
+#line 1267 "./parser.y"
     {
                yyval.menitm=new_menu_item();
                yyval.menitm->prev = yyvsp[-2].menitm;
                if(yyvsp[-2].menitm)
                        yyvsp[-2].menitm->next = yyval.menitm;
-               ;}
+               }
     break;
 
-  case 155:
-#line 1266 "parser.y"
+  case 157:
+#line 1273 "./parser.y"
     {
                yyval.menitm = new_menu_item();
                yyval.menitm->prev = yyvsp[-4].menitm;
@@ -3301,46 +3312,46 @@ yyreduce:
                        yyvsp[-4].menitm->next = yyval.menitm;
                yyval.menitm->popup = get_item_head(yyvsp[0].menitm);
                yyval.menitm->name = yyvsp[-2].str;
-               ;}
-    break;
-
-  case 156:
-#line 1285 "parser.y"
-    { yyval.num = 0; ;}
-    break;
-
-  case 157:
-#line 1286 "parser.y"
-    { yyval.num = yyvsp[0].num | MF_CHECKED; ;}
+               }
     break;
 
   case 158:
-#line 1287 "parser.y"
-    { yyval.num = yyvsp[0].num | MF_GRAYED; ;}
+#line 1292 "./parser.y"
+    { yyval.num = 0; }
     break;
 
   case 159:
-#line 1288 "parser.y"
-    { yyval.num = yyvsp[0].num | MF_HELP; ;}
+#line 1293 "./parser.y"
+    { yyval.num = yyvsp[0].num | MF_CHECKED; }
     break;
 
   case 160:
-#line 1289 "parser.y"
-    { yyval.num = yyvsp[0].num | MF_DISABLED; ;}
+#line 1294 "./parser.y"
+    { yyval.num = yyvsp[0].num | MF_GRAYED; }
     break;
 
   case 161:
-#line 1290 "parser.y"
-    { yyval.num = yyvsp[0].num | MF_MENUBARBREAK; ;}
+#line 1295 "./parser.y"
+    { yyval.num = yyvsp[0].num | MF_HELP; }
     break;
 
   case 162:
-#line 1291 "parser.y"
-    { yyval.num = yyvsp[0].num | MF_MENUBREAK; ;}
+#line 1296 "./parser.y"
+    { yyval.num = yyvsp[0].num | MF_DISABLED; }
     break;
 
   case 163:
-#line 1295 "parser.y"
+#line 1297 "./parser.y"
+    { yyval.num = yyvsp[0].num | MF_MENUBARBREAK; }
+    break;
+
+  case 164:
+#line 1298 "./parser.y"
+    { yyval.num = yyvsp[0].num | MF_MENUBREAK; }
+    break;
+
+  case 165:
+#line 1302 "./parser.y"
     {
                if(!win32)
                        yywarning("MENUEX not supported in 16-bit mode");
@@ -3362,21 +3373,21 @@ yyreduce:
                }
                if(!yyval.menex->lvc.language)
                        yyval.menex->lvc.language = dup_language(currentlanguage);
-               ;}
+               }
     break;
 
-  case 164:
-#line 1320 "parser.y"
-    { yyval.menexitm = yyvsp[-1].menexitm; ;}
+  case 166:
+#line 1327 "./parser.y"
+    { yyval.menexitm = yyvsp[-1].menexitm; }
     break;
 
-  case 165:
-#line 1324 "parser.y"
-    {yyval.menexitm = NULL; ;}
+  case 167:
+#line 1331 "./parser.y"
+    {yyval.menexitm = NULL; }
     break;
 
-  case 166:
-#line 1325 "parser.y"
+  case 168:
+#line 1332 "./parser.y"
     {
                yyval.menexitm = new_menuex_item();
                yyval.menexitm->prev = yyvsp[-3].menexitm;
@@ -3392,21 +3403,21 @@ yyreduce:
                yyval.menexitm->gotstate = yyvsp[0].exopt->gotstate;
                yyval.menexitm->gothelpid = yyvsp[0].exopt->gothelpid;
                free(yyvsp[0].exopt);
-               ;}
+               }
     break;
 
-  case 167:
-#line 1341 "parser.y"
+  case 169:
+#line 1348 "./parser.y"
     {
                yyval.menexitm = new_menuex_item();
                yyval.menexitm->prev = yyvsp[-2].menexitm;
                if(yyvsp[-2].menexitm)
                        yyvsp[-2].menexitm->next = yyval.menexitm;
-               ;}
+               }
     break;
 
-  case 168:
-#line 1347 "parser.y"
+  case 170:
+#line 1354 "./parser.y"
     {
                yyval.menexitm = new_menuex_item();
                yyval.menexitm->prev = yyvsp[-4].menexitm;
@@ -3423,24 +3434,24 @@ yyreduce:
                yyval.menexitm->gotstate = yyvsp[-1].exopt->gotstate;
                yyval.menexitm->gothelpid = yyvsp[-1].exopt->gothelpid;
                free(yyvsp[-1].exopt);
-               ;}
+               }
     break;
 
-  case 169:
-#line 1367 "parser.y"
-    { yyval.exopt = new_itemex_opt(0, 0, 0, 0); ;}
+  case 171:
+#line 1374 "./parser.y"
+    { yyval.exopt = new_itemex_opt(0, 0, 0, 0); }
     break;
 
-  case 170:
-#line 1368 "parser.y"
+  case 172:
+#line 1375 "./parser.y"
     {
                yyval.exopt = new_itemex_opt(yyvsp[0].num, 0, 0, 0);
                yyval.exopt->gotid = TRUE;
-               ;}
+               }
     break;
 
-  case 171:
-#line 1372 "parser.y"
+  case 173:
+#line 1379 "./parser.y"
     {
                yyval.exopt = new_itemex_opt(yyvsp[-3].iptr ? *(yyvsp[-3].iptr) : 0, yyvsp[-1].iptr ? *(yyvsp[-1].iptr) : 0, yyvsp[0].num, 0);
                yyval.exopt->gotid = TRUE;
@@ -3448,11 +3459,11 @@ yyreduce:
                yyval.exopt->gotstate = TRUE;
                if(yyvsp[-3].iptr) free(yyvsp[-3].iptr);
                if(yyvsp[-1].iptr) free(yyvsp[-1].iptr);
-               ;}
+               }
     break;
 
-  case 172:
-#line 1380 "parser.y"
+  case 174:
+#line 1387 "./parser.y"
     {
                yyval.exopt = new_itemex_opt(yyvsp[-4].iptr ? *(yyvsp[-4].iptr) : 0, yyvsp[-2].iptr ? *(yyvsp[-2].iptr) : 0, yyvsp[0].num, 0);
                yyval.exopt->gotid = TRUE;
@@ -3460,34 +3471,34 @@ yyreduce:
                yyval.exopt->gotstate = TRUE;
                if(yyvsp[-4].iptr) free(yyvsp[-4].iptr);
                if(yyvsp[-2].iptr) free(yyvsp[-2].iptr);
-               ;}
+               }
     break;
 
-  case 173:
-#line 1391 "parser.y"
-    { yyval.exopt = new_itemex_opt(0, 0, 0, 0); ;}
+  case 175:
+#line 1398 "./parser.y"
+    { yyval.exopt = new_itemex_opt(0, 0, 0, 0); }
     break;
 
-  case 174:
-#line 1392 "parser.y"
+  case 176:
+#line 1399 "./parser.y"
     {
                yyval.exopt = new_itemex_opt(yyvsp[0].num, 0, 0, 0);
                yyval.exopt->gotid = TRUE;
-               ;}
+               }
     break;
 
-  case 175:
-#line 1396 "parser.y"
+  case 177:
+#line 1403 "./parser.y"
     {
                yyval.exopt = new_itemex_opt(yyvsp[-2].iptr ? *(yyvsp[-2].iptr) : 0, yyvsp[0].num, 0, 0);
                if(yyvsp[-2].iptr) free(yyvsp[-2].iptr);
                yyval.exopt->gotid = TRUE;
                yyval.exopt->gottype = TRUE;
-               ;}
+               }
     break;
 
-  case 176:
-#line 1402 "parser.y"
+  case 178:
+#line 1409 "./parser.y"
     {
                yyval.exopt = new_itemex_opt(yyvsp[-4].iptr ? *(yyvsp[-4].iptr) : 0, yyvsp[-2].iptr ? *(yyvsp[-2].iptr) : 0, yyvsp[0].num, 0);
                if(yyvsp[-4].iptr) free(yyvsp[-4].iptr);
@@ -3495,11 +3506,11 @@ yyreduce:
                yyval.exopt->gotid = TRUE;
                yyval.exopt->gottype = TRUE;
                yyval.exopt->gotstate = TRUE;
-               ;}
+               }
     break;
 
-  case 177:
-#line 1410 "parser.y"
+  case 179:
+#line 1417 "./parser.y"
     {
                yyval.exopt = new_itemex_opt(yyvsp[-6].iptr ? *(yyvsp[-6].iptr) : 0, yyvsp[-4].iptr ? *(yyvsp[-4].iptr) : 0, yyvsp[-2].iptr ? *(yyvsp[-2].iptr) : 0, yyvsp[0].num);
                if(yyvsp[-6].iptr) free(yyvsp[-6].iptr);
@@ -3509,11 +3520,11 @@ yyreduce:
                yyval.exopt->gottype = TRUE;
                yyval.exopt->gotstate = TRUE;
                yyval.exopt->gothelpid = TRUE;
-               ;}
+               }
     break;
 
-  case 178:
-#line 1430 "parser.y"
+  case 180:
+#line 1437 "./parser.y"
     {
                if(!yyvsp[-1].stt)
                {
@@ -3551,11 +3562,11 @@ yyreduce:
                }
 
                yyval.stt = tagstt;
-               ;}
+               }
     break;
 
-  case 179:
-#line 1471 "parser.y"
+  case 181:
+#line 1478 "./parser.y"
     {
                if((tagstt = find_stringtable(yyvsp[0].lvc)) == NULL)
                        tagstt = new_stringtable(yyvsp[0].lvc);
@@ -3564,16 +3575,16 @@ yyreduce:
                tagstt_characts = yyvsp[0].lvc->characts;
                if(yyvsp[0].lvc)
                        free(yyvsp[0].lvc);
-               ;}
+               }
     break;
 
-  case 180:
-#line 1482 "parser.y"
-    { yyval.stt = NULL; ;}
+  case 182:
+#line 1489 "./parser.y"
+    { yyval.stt = NULL; }
     break;
 
-  case 181:
-#line 1483 "parser.y"
+  case 183:
+#line 1490 "./parser.y"
     {
                int i;
                assert(tagstt != NULL);
@@ -3604,11 +3615,11 @@ yyreduce:
                if(win32 && yyvsp[0].str->size > 65534) /* Hmm..., does this happen? */
                        yyerror("Stringtable entry more than 65534 characters (probably something else that went wrong)");
                yyval.stt = tagstt;
-               ;}
+               }
     break;
 
-  case 184:
-#line 1523 "parser.y"
+  case 186:
+#line 1530 "./parser.y"
     {
                yyval.veri = yyvsp[-3].veri;
                if(yyvsp[-4].iptr)
@@ -3621,16 +3632,16 @@ yyreduce:
                yyval.veri->blocks = get_ver_block_head(yyvsp[-1].blk);
                /* Set language; there is no version or characteristics */
                yyval.veri->lvc.language = dup_language(currentlanguage);
-               ;}
+               }
     break;
 
-  case 185:
-#line 1539 "parser.y"
-    { yyval.veri = new_versioninfo(); ;}
+  case 187:
+#line 1546 "./parser.y"
+    { yyval.veri = new_versioninfo(); }
     break;
 
-  case 186:
-#line 1540 "parser.y"
+  case 188:
+#line 1547 "./parser.y"
     {
                if(yyvsp[-8].veri->gotit.fv)
                        yyerror("FILEVERSION already defined");
@@ -3640,11 +3651,11 @@ yyreduce:
                yyval.veri->filever_min1 = yyvsp[-2].num;
                yyval.veri->filever_min2 = yyvsp[0].num;
                yyval.veri->gotit.fv = 1;
-               ;}
+               }
     break;
 
-  case 187:
-#line 1550 "parser.y"
+  case 189:
+#line 1557 "./parser.y"
     {
                if(yyvsp[-8].veri->gotit.pv)
                        yyerror("PRODUCTVERSION already defined");
@@ -3654,144 +3665,144 @@ yyreduce:
                yyval.veri->prodver_min1 = yyvsp[-2].num;
                yyval.veri->prodver_min2 = yyvsp[0].num;
                yyval.veri->gotit.pv = 1;
-               ;}
+               }
     break;
 
-  case 188:
-#line 1560 "parser.y"
+  case 190:
+#line 1567 "./parser.y"
     {
                if(yyvsp[-2].veri->gotit.ff)
                        yyerror("FILEFLAGS already defined");
                yyval.veri = yyvsp[-2].veri;
                yyval.veri->fileflags = yyvsp[0].num;
                yyval.veri->gotit.ff = 1;
-               ;}
+               }
     break;
 
-  case 189:
-#line 1567 "parser.y"
+  case 191:
+#line 1574 "./parser.y"
     {
                if(yyvsp[-2].veri->gotit.ffm)
                        yyerror("FILEFLAGSMASK already defined");
                yyval.veri = yyvsp[-2].veri;
                yyval.veri->fileflagsmask = yyvsp[0].num;
                yyval.veri->gotit.ffm = 1;
-               ;}
+               }
     break;
 
-  case 190:
-#line 1574 "parser.y"
+  case 192:
+#line 1581 "./parser.y"
     {
                if(yyvsp[-2].veri->gotit.fo)
                        yyerror("FILEOS already defined");
                yyval.veri = yyvsp[-2].veri;
                yyval.veri->fileos = yyvsp[0].num;
                yyval.veri->gotit.fo = 1;
-               ;}
+               }
     break;
 
-  case 191:
-#line 1581 "parser.y"
+  case 193:
+#line 1588 "./parser.y"
     {
                if(yyvsp[-2].veri->gotit.ft)
                        yyerror("FILETYPE already defined");
                yyval.veri = yyvsp[-2].veri;
                yyval.veri->filetype = yyvsp[0].num;
                yyval.veri->gotit.ft = 1;
-               ;}
+               }
     break;
 
-  case 192:
-#line 1588 "parser.y"
+  case 194:
+#line 1595 "./parser.y"
     {
                if(yyvsp[-2].veri->gotit.fst)
                        yyerror("FILESUBTYPE already defined");
                yyval.veri = yyvsp[-2].veri;
                yyval.veri->filesubtype = yyvsp[0].num;
                yyval.veri->gotit.fst = 1;
-               ;}
+               }
     break;
 
-  case 193:
-#line 1598 "parser.y"
-    { yyval.blk = NULL; ;}
+  case 195:
+#line 1605 "./parser.y"
+    { yyval.blk = NULL; }
     break;
 
-  case 194:
-#line 1599 "parser.y"
+  case 196:
+#line 1606 "./parser.y"
     {
                yyval.blk = yyvsp[0].blk;
                yyval.blk->prev = yyvsp[-1].blk;
                if(yyvsp[-1].blk)
                        yyvsp[-1].blk->next = yyval.blk;
-               ;}
+               }
     break;
 
-  case 195:
-#line 1608 "parser.y"
+  case 197:
+#line 1615 "./parser.y"
     {
                yyval.blk = new_ver_block();
                yyval.blk->name = yyvsp[-3].str;
                yyval.blk->values = get_ver_value_head(yyvsp[-1].val);
-               ;}
+               }
     break;
 
-  case 196:
-#line 1616 "parser.y"
-    { yyval.val = NULL; ;}
+  case 198:
+#line 1623 "./parser.y"
+    { yyval.val = NULL; }
     break;
 
-  case 197:
-#line 1617 "parser.y"
+  case 199:
+#line 1624 "./parser.y"
     {
                yyval.val = yyvsp[0].val;
                yyval.val->prev = yyvsp[-1].val;
                if(yyvsp[-1].val)
                        yyvsp[-1].val->next = yyval.val;
-               ;}
+               }
     break;
 
-  case 198:
-#line 1626 "parser.y"
+  case 200:
+#line 1633 "./parser.y"
     {
                yyval.val = new_ver_value();
                yyval.val->type = val_block;
                yyval.val->value.block = yyvsp[0].blk;
-               ;}
+               }
     break;
 
-  case 199:
-#line 1631 "parser.y"
+  case 201:
+#line 1638 "./parser.y"
     {
                yyval.val = new_ver_value();
                yyval.val->type = val_str;
                yyval.val->key = yyvsp[-2].str;
                yyval.val->value.str = yyvsp[0].str;
-               ;}
+               }
     break;
 
-  case 200:
-#line 1637 "parser.y"
+  case 202:
+#line 1644 "./parser.y"
     {
                yyval.val = new_ver_value();
                yyval.val->type = val_words;
                yyval.val->key = yyvsp[-2].str;
                yyval.val->value.words = yyvsp[0].verw;
-               ;}
+               }
     break;
 
-  case 201:
-#line 1646 "parser.y"
-    { yyval.verw = new_ver_words(yyvsp[0].num); ;}
+  case 203:
+#line 1653 "./parser.y"
+    { yyval.verw = new_ver_words(yyvsp[0].num); }
     break;
 
-  case 202:
-#line 1647 "parser.y"
-    { yyval.verw = add_ver_words(yyvsp[-2].verw, yyvsp[0].num); ;}
+  case 204:
+#line 1654 "./parser.y"
+    { yyval.verw = add_ver_words(yyvsp[-2].verw, yyvsp[0].num); }
     break;
 
-  case 203:
-#line 1651 "parser.y"
+  case 205:
+#line 1658 "./parser.y"
     {
                int nitems;
                toolbar_item_t *items = get_tlbr_buttons_head(yyvsp[-1].tlbarItems, &nitems);
@@ -3814,39 +3825,39 @@ yyreduce:
                {
                        yyval.tlbar->lvc.language = dup_language(currentlanguage);
                }
-               ;}
+               }
     break;
 
-  case 204:
-#line 1677 "parser.y"
-    { yyval.tlbarItems = NULL; ;}
+  case 206:
+#line 1684 "./parser.y"
+    { yyval.tlbarItems = NULL; }
     break;
 
-  case 205:
-#line 1678 "parser.y"
+  case 207:
+#line 1685 "./parser.y"
     {
                toolbar_item_t *idrec = new_toolbar_item();
                idrec->id = yyvsp[0].num;
                yyval.tlbarItems = ins_tlbr_button(yyvsp[-2].tlbarItems, idrec);
-               ;}
+               }
     break;
 
-  case 206:
-#line 1683 "parser.y"
+  case 208:
+#line 1690 "./parser.y"
     {
                toolbar_item_t *idrec = new_toolbar_item();
                idrec->id = 0;
                yyval.tlbarItems = ins_tlbr_button(yyvsp[-1].tlbarItems, idrec);
-       ;}
+       }
     break;
 
-  case 207:
-#line 1692 "parser.y"
-    { yyval.iptr = NULL; ;}
+  case 209:
+#line 1699 "./parser.y"
+    { yyval.iptr = NULL; }
     break;
 
-  case 208:
-#line 1693 "parser.y"
+  case 210:
+#line 1700 "./parser.y"
     {
                if(yyvsp[-1].iptr)
                {
@@ -3856,11 +3867,11 @@ yyreduce:
                }
                else
                        yyval.iptr = yyvsp[0].iptr;
-               ;}
+               }
     break;
 
-  case 209:
-#line 1703 "parser.y"
+  case 211:
+#line 1710 "./parser.y"
     {
                if(yyvsp[-1].iptr)
                {
@@ -3873,51 +3884,51 @@ yyreduce:
                        *yyvsp[0].iptr &= WRC_MO_MOVEABLE | WRC_MO_DISCARDABLE | WRC_MO_PURE;
                        yyval.iptr = yyvsp[0].iptr;
                }
-               ;}
-    break;
-
-  case 210:
-#line 1718 "parser.y"
-    { yyval.iptr = new_int(WRC_MO_PRELOAD); ;}
-    break;
-
-  case 211:
-#line 1719 "parser.y"
-    { yyval.iptr = new_int(WRC_MO_MOVEABLE); ;}
+               }
     break;
 
   case 212:
-#line 1720 "parser.y"
-    { yyval.iptr = new_int(WRC_MO_DISCARDABLE); ;}
+#line 1725 "./parser.y"
+    { yyval.iptr = new_int(WRC_MO_PRELOAD); }
     break;
 
   case 213:
-#line 1721 "parser.y"
-    { yyval.iptr = new_int(WRC_MO_PURE); ;}
+#line 1726 "./parser.y"
+    { yyval.iptr = new_int(WRC_MO_MOVEABLE); }
     break;
 
   case 214:
-#line 1724 "parser.y"
-    { yyval.iptr = new_int(~WRC_MO_PRELOAD); ;}
+#line 1727 "./parser.y"
+    { yyval.iptr = new_int(WRC_MO_DISCARDABLE); }
     break;
 
   case 215:
-#line 1725 "parser.y"
-    { yyval.iptr = new_int(~WRC_MO_MOVEABLE); ;}
+#line 1728 "./parser.y"
+    { yyval.iptr = new_int(WRC_MO_PURE); }
     break;
 
   case 216:
-#line 1726 "parser.y"
-    { yyval.iptr = new_int(~WRC_MO_PURE); ;}
+#line 1731 "./parser.y"
+    { yyval.iptr = new_int(~WRC_MO_PRELOAD); }
     break;
 
   case 217:
-#line 1730 "parser.y"
-    { yyval.lvc = new_lvc(); ;}
+#line 1732 "./parser.y"
+    { yyval.iptr = new_int(~WRC_MO_MOVEABLE); }
     break;
 
   case 218:
-#line 1731 "parser.y"
+#line 1733 "./parser.y"
+    { yyval.iptr = new_int(~WRC_MO_PURE); }
+    break;
+
+  case 219:
+#line 1737 "./parser.y"
+    { yyval.lvc = new_lvc(); }
+    break;
+
+  case 220:
+#line 1738 "./parser.y"
     {
                if(!win32)
                        yywarning("LANGUAGE not supported in 16-bit mode");
@@ -3925,11 +3936,11 @@ yyreduce:
                        yyerror("Language already defined");
                yyval.lvc = yyvsp[-1].lvc;
                yyvsp[-1].lvc->language = yyvsp[0].lan;
-               ;}
+               }
     break;
 
-  case 219:
-#line 1739 "parser.y"
+  case 221:
+#line 1746 "./parser.y"
     {
                if(!win32)
                        yywarning("CHARACTERISTICS not supported in 16-bit mode");
@@ -3937,11 +3948,11 @@ yyreduce:
                        yyerror("Characteristics already defined");
                yyval.lvc = yyvsp[-1].lvc;
                yyvsp[-1].lvc->characts = yyvsp[0].chars;
-               ;}
+               }
     break;
 
-  case 220:
-#line 1747 "parser.y"
+  case 222:
+#line 1754 "./parser.y"
     {
                if(!win32)
                        yywarning("VERSION not supported in 16-bit mode");
@@ -3949,29 +3960,29 @@ yyreduce:
                        yyerror("Version already defined");
                yyval.lvc = yyvsp[-1].lvc;
                yyvsp[-1].lvc->version = yyvsp[0].ver;
-               ;}
+               }
     break;
 
-  case 221:
-#line 1765 "parser.y"
+  case 223:
+#line 1772 "./parser.y"
     { yyval.lan = new_language(yyvsp[-2].num, yyvsp[0].num);
                                          if (get_language_codepage(yyvsp[-2].num, yyvsp[0].num) == -1)
                                                yyerror( "Language %04x is not supported", (yyvsp[0].num<<10) + yyvsp[-2].num);
-                                       ;}
+                                       }
     break;
 
-  case 222:
-#line 1772 "parser.y"
-    { yyval.chars = new_characts(yyvsp[0].num); ;}
+  case 224:
+#line 1779 "./parser.y"
+    { yyval.chars = new_characts(yyvsp[0].num); }
     break;
 
-  case 223:
-#line 1776 "parser.y"
-    { yyval.ver = new_version(yyvsp[0].num); ;}
+  case 225:
+#line 1783 "./parser.y"
+    { yyval.ver = new_version(yyvsp[0].num); }
     break;
 
-  case 224:
-#line 1780 "parser.y"
+  case 226:
+#line 1787 "./parser.y"
     {
                if(yyvsp[-3].lvc)
                {
@@ -3983,179 +3994,179 @@ yyreduce:
                        yyvsp[-1].raw->lvc.language = dup_language(currentlanguage);
 
                yyval.raw = yyvsp[-1].raw;
-               ;}
-    break;
-
-  case 225:
-#line 1795 "parser.y"
-    { yyval.raw = yyvsp[0].raw; ;}
-    break;
-
-  case 226:
-#line 1796 "parser.y"
-    { yyval.raw = int2raw_data(yyvsp[0].num); ;}
+               }
     break;
 
   case 227:
-#line 1797 "parser.y"
-    { yyval.raw = int2raw_data(-(yyvsp[0].num)); ;}
+#line 1802 "./parser.y"
+    { yyval.raw = yyvsp[0].raw; }
     break;
 
   case 228:
-#line 1798 "parser.y"
-    { yyval.raw = long2raw_data(yyvsp[0].num); ;}
+#line 1803 "./parser.y"
+    { yyval.raw = int2raw_data(yyvsp[0].num); }
     break;
 
   case 229:
-#line 1799 "parser.y"
-    { yyval.raw = long2raw_data(-(yyvsp[0].num)); ;}
+#line 1804 "./parser.y"
+    { yyval.raw = int2raw_data(-(yyvsp[0].num)); }
     break;
 
   case 230:
-#line 1800 "parser.y"
-    { yyval.raw = str2raw_data(yyvsp[0].str); ;}
+#line 1805 "./parser.y"
+    { yyval.raw = long2raw_data(yyvsp[0].num); }
     break;
 
   case 231:
-#line 1801 "parser.y"
-    { yyval.raw = merge_raw_data(yyvsp[-2].raw, yyvsp[0].raw); free(yyvsp[0].raw->data); free(yyvsp[0].raw); ;}
+#line 1806 "./parser.y"
+    { yyval.raw = long2raw_data(-(yyvsp[0].num)); }
     break;
 
   case 232:
-#line 1802 "parser.y"
-    { yyval.raw = merge_raw_data_int(yyvsp[-2].raw, yyvsp[0].num); ;}
+#line 1807 "./parser.y"
+    { yyval.raw = str2raw_data(yyvsp[0].str); }
     break;
 
   case 233:
-#line 1803 "parser.y"
-    { yyval.raw = merge_raw_data_int(yyvsp[-3].raw, -(yyvsp[0].num)); ;}
+#line 1808 "./parser.y"
+    { yyval.raw = merge_raw_data(yyvsp[-2].raw, yyvsp[0].raw); free(yyvsp[0].raw->data); free(yyvsp[0].raw); }
     break;
 
   case 234:
-#line 1804 "parser.y"
-    { yyval.raw = merge_raw_data_long(yyvsp[-2].raw, yyvsp[0].num); ;}
+#line 1809 "./parser.y"
+    { yyval.raw = merge_raw_data_int(yyvsp[-2].raw, yyvsp[0].num); }
     break;
 
   case 235:
-#line 1805 "parser.y"
-    { yyval.raw = merge_raw_data_long(yyvsp[-3].raw, -(yyvsp[0].num)); ;}
+#line 1810 "./parser.y"
+    { yyval.raw = merge_raw_data_int(yyvsp[-3].raw, -(yyvsp[0].num)); }
     break;
 
   case 236:
-#line 1806 "parser.y"
-    { yyval.raw = merge_raw_data_str(yyvsp[-2].raw, yyvsp[0].str); ;}
+#line 1811 "./parser.y"
+    { yyval.raw = merge_raw_data_long(yyvsp[-2].raw, yyvsp[0].num); }
     break;
 
   case 237:
-#line 1810 "parser.y"
-    { yyval.raw = load_file(yyvsp[0].str,dup_language(currentlanguage)); ;}
+#line 1812 "./parser.y"
+    { yyval.raw = merge_raw_data_long(yyvsp[-3].raw, -(yyvsp[0].num)); }
     break;
 
   case 238:
-#line 1811 "parser.y"
-    { yyval.raw = yyvsp[0].raw; ;}
+#line 1813 "./parser.y"
+    { yyval.raw = merge_raw_data_str(yyvsp[-2].raw, yyvsp[0].str); }
     break;
 
   case 239:
-#line 1818 "parser.y"
-    { yyval.iptr = 0; ;}
+#line 1817 "./parser.y"
+    { yyval.raw = load_file(yyvsp[0].str,dup_language(currentlanguage)); }
     break;
 
   case 240:
-#line 1819 "parser.y"
-    { yyval.iptr = new_int(yyvsp[0].num); ;}
+#line 1818 "./parser.y"
+    { yyval.raw = yyvsp[0].raw; }
     break;
 
   case 241:
-#line 1823 "parser.y"
-    { yyval.num = (yyvsp[0].num); ;}
+#line 1825 "./parser.y"
+    { yyval.iptr = 0; }
     break;
 
   case 242:
-#line 1826 "parser.y"
-    { yyval.num = (yyvsp[-2].num) + (yyvsp[0].num); ;}
+#line 1826 "./parser.y"
+    { yyval.iptr = new_int(yyvsp[0].num); }
     break;
 
   case 243:
-#line 1827 "parser.y"
-    { yyval.num = (yyvsp[-2].num) - (yyvsp[0].num); ;}
+#line 1830 "./parser.y"
+    { yyval.num = (yyvsp[0].num); }
     break;
 
   case 244:
-#line 1828 "parser.y"
-    { yyval.num = (yyvsp[-2].num) | (yyvsp[0].num); ;}
+#line 1833 "./parser.y"
+    { yyval.num = (yyvsp[-2].num) + (yyvsp[0].num); }
     break;
 
   case 245:
-#line 1829 "parser.y"
-    { yyval.num = (yyvsp[-2].num) & (yyvsp[0].num); ;}
+#line 1834 "./parser.y"
+    { yyval.num = (yyvsp[-2].num) - (yyvsp[0].num); }
     break;
 
   case 246:
-#line 1830 "parser.y"
-    { yyval.num = (yyvsp[-2].num) * (yyvsp[0].num); ;}
+#line 1835 "./parser.y"
+    { yyval.num = (yyvsp[-2].num) | (yyvsp[0].num); }
     break;
 
   case 247:
-#line 1831 "parser.y"
-    { yyval.num = (yyvsp[-2].num) / (yyvsp[0].num); ;}
+#line 1836 "./parser.y"
+    { yyval.num = (yyvsp[-2].num) & (yyvsp[0].num); }
     break;
 
   case 248:
-#line 1832 "parser.y"
-    { yyval.num = (yyvsp[-2].num) ^ (yyvsp[0].num); ;}
+#line 1837 "./parser.y"
+    { yyval.num = (yyvsp[-2].num) * (yyvsp[0].num); }
     break;
 
   case 249:
-#line 1833 "parser.y"
-    { yyval.num = ~(yyvsp[0].num); ;}
+#line 1838 "./parser.y"
+    { yyval.num = (yyvsp[-2].num) / (yyvsp[0].num); }
     break;
 
   case 250:
-#line 1834 "parser.y"
-    { yyval.num = -(yyvsp[0].num); ;}
+#line 1839 "./parser.y"
+    { yyval.num = (yyvsp[-2].num) ^ (yyvsp[0].num); }
     break;
 
   case 251:
-#line 1835 "parser.y"
-    { yyval.num = yyvsp[0].num; ;}
+#line 1840 "./parser.y"
+    { yyval.num = ~(yyvsp[0].num); }
     break;
 
   case 252:
-#line 1836 "parser.y"
-    { yyval.num = yyvsp[-1].num; ;}
+#line 1841 "./parser.y"
+    { yyval.num = -(yyvsp[0].num); }
     break;
 
   case 253:
-#line 1837 "parser.y"
-    { yyval.num = yyvsp[0].num; ;}
+#line 1842 "./parser.y"
+    { yyval.num = yyvsp[0].num; }
     break;
 
   case 254:
-#line 1841 "parser.y"
-    { yyval.num = (yyvsp[0].num); ;}
+#line 1843 "./parser.y"
+    { yyval.num = yyvsp[-1].num; }
     break;
 
   case 255:
-#line 1842 "parser.y"
-    { yyval.num = ~(yyvsp[0].num); ;}
+#line 1844 "./parser.y"
+    { yyval.num = yyvsp[0].num; }
     break;
 
   case 256:
-#line 1845 "parser.y"
-    { yyval.num = yyvsp[0].num; ;}
+#line 1848 "./parser.y"
+    { yyval.num = (yyvsp[0].num); }
     break;
 
   case 257:
-#line 1846 "parser.y"
-    { yyval.num = yyvsp[0].num; ;}
+#line 1849 "./parser.y"
+    { yyval.num = ~(yyvsp[0].num); }
+    break;
+
+  case 258:
+#line 1852 "./parser.y"
+    { yyval.num = yyvsp[0].num; }
+    break;
+
+  case 259:
+#line 1853 "./parser.y"
+    { yyval.num = yyvsp[0].num; }
     break;
 
 
     }
 
 /* Line 1000 of yacc.c.  */
-#line 4159 "parser.tab.c"
+#line 4170 "y.tab.c"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -4380,7 +4391,7 @@ yyreturn:
 }
 
 
-#line 1849 "parser.y"
+#line 1856 "./parser.y"
 
 /* Dialog specific functions */
 static dialog_t *dialog_style(style_t * st, dialog_t *dlg)
@@ -5552,6 +5563,10 @@ static int rsrcid_to_token(int lookahead)
                type = "TOOLBAR";
                token = tTOOLBAR;
                break;
+       case WRC_RT_HTML:
+               type = "HTML";
+               token = tHTML;
+               break;
 
        case WRC_RT_STRING:
                type = "STRINGTABLE";
@@ -5567,7 +5582,6 @@ static int rsrcid_to_token(int lookahead)
        case WRC_RT_DLGINCLUDE:
        case WRC_RT_PLUGPLAY:
        case WRC_RT_VXD:
-       case WRC_RT_HTML:
                yywarning("Usertype uses reserved type ID %d, which is not supported by wrc yet", yylval.num);
        default:
                return lookahead;
index b7eb84e..973eea1 100644 (file)
      tFONT = 276,
      tFONTDIR = 277,
      tICON = 278,
-     tAUTO3STATE = 279,
-     tAUTOCHECKBOX = 280,
-     tAUTORADIOBUTTON = 281,
-     tCHECKBOX = 282,
-     tDEFPUSHBUTTON = 283,
-     tPUSHBUTTON = 284,
-     tRADIOBUTTON = 285,
-     tSTATE3 = 286,
-     tGROUPBOX = 287,
-     tCOMBOBOX = 288,
-     tLISTBOX = 289,
-     tSCROLLBAR = 290,
-     tCONTROL = 291,
-     tEDITTEXT = 292,
-     tRTEXT = 293,
-     tCTEXT = 294,
-     tLTEXT = 295,
-     tBLOCK = 296,
-     tVALUE = 297,
-     tSHIFT = 298,
-     tALT = 299,
-     tASCII = 300,
-     tVIRTKEY = 301,
-     tGRAYED = 302,
-     tCHECKED = 303,
-     tINACTIVE = 304,
-     tNOINVERT = 305,
-     tPURE = 306,
-     tIMPURE = 307,
-     tDISCARDABLE = 308,
-     tLOADONCALL = 309,
-     tPRELOAD = 310,
-     tFIXED = 311,
-     tMOVEABLE = 312,
-     tCLASS = 313,
-     tCAPTION = 314,
-     tCHARACTERISTICS = 315,
-     tEXSTYLE = 316,
-     tSTYLE = 317,
-     tVERSION = 318,
-     tLANGUAGE = 319,
-     tFILEVERSION = 320,
-     tPRODUCTVERSION = 321,
-     tFILEFLAGSMASK = 322,
-     tFILEOS = 323,
-     tFILETYPE = 324,
-     tFILEFLAGS = 325,
-     tFILESUBTYPE = 326,
-     tMENUBARBREAK = 327,
-     tMENUBREAK = 328,
-     tMENUITEM = 329,
-     tPOPUP = 330,
-     tSEPARATOR = 331,
-     tHELP = 332,
-     tTOOLBAR = 333,
-     tBUTTON = 334,
-     tBEGIN = 335,
-     tEND = 336,
-     tDLGINIT = 337,
-     tNOT = 338,
-     pUPM = 339
+     tHTML = 279,
+     tAUTO3STATE = 280,
+     tAUTOCHECKBOX = 281,
+     tAUTORADIOBUTTON = 282,
+     tCHECKBOX = 283,
+     tDEFPUSHBUTTON = 284,
+     tPUSHBUTTON = 285,
+     tRADIOBUTTON = 286,
+     tSTATE3 = 287,
+     tGROUPBOX = 288,
+     tCOMBOBOX = 289,
+     tLISTBOX = 290,
+     tSCROLLBAR = 291,
+     tCONTROL = 292,
+     tEDITTEXT = 293,
+     tRTEXT = 294,
+     tCTEXT = 295,
+     tLTEXT = 296,
+     tBLOCK = 297,
+     tVALUE = 298,
+     tSHIFT = 299,
+     tALT = 300,
+     tASCII = 301,
+     tVIRTKEY = 302,
+     tGRAYED = 303,
+     tCHECKED = 304,
+     tINACTIVE = 305,
+     tNOINVERT = 306,
+     tPURE = 307,
+     tIMPURE = 308,
+     tDISCARDABLE = 309,
+     tLOADONCALL = 310,
+     tPRELOAD = 311,
+     tFIXED = 312,
+     tMOVEABLE = 313,
+     tCLASS = 314,
+     tCAPTION = 315,
+     tCHARACTERISTICS = 316,
+     tEXSTYLE = 317,
+     tSTYLE = 318,
+     tVERSION = 319,
+     tLANGUAGE = 320,
+     tFILEVERSION = 321,
+     tPRODUCTVERSION = 322,
+     tFILEFLAGSMASK = 323,
+     tFILEOS = 324,
+     tFILETYPE = 325,
+     tFILEFLAGS = 326,
+     tFILESUBTYPE = 327,
+     tMENUBARBREAK = 328,
+     tMENUBREAK = 329,
+     tMENUITEM = 330,
+     tPOPUP = 331,
+     tSEPARATOR = 332,
+     tHELP = 333,
+     tTOOLBAR = 334,
+     tBUTTON = 335,
+     tBEGIN = 336,
+     tEND = 337,
+     tDLGINIT = 338,
+     tNOT = 339,
+     pUPM = 340
    };
 #endif
 #define tNL 258
 #define tFONT 276
 #define tFONTDIR 277
 #define tICON 278
-#define tAUTO3STATE 279
-#define tAUTOCHECKBOX 280
-#define tAUTORADIOBUTTON 281
-#define tCHECKBOX 282
-#define tDEFPUSHBUTTON 283
-#define tPUSHBUTTON 284
-#define tRADIOBUTTON 285
-#define tSTATE3 286
-#define tGROUPBOX 287
-#define tCOMBOBOX 288
-#define tLISTBOX 289
-#define tSCROLLBAR 290
-#define tCONTROL 291
-#define tEDITTEXT 292
-#define tRTEXT 293
-#define tCTEXT 294
-#define tLTEXT 295
-#define tBLOCK 296
-#define tVALUE 297
-#define tSHIFT 298
-#define tALT 299
-#define tASCII 300
-#define tVIRTKEY 301
-#define tGRAYED 302
-#define tCHECKED 303
-#define tINACTIVE 304
-#define tNOINVERT 305
-#define tPURE 306
-#define tIMPURE 307
-#define tDISCARDABLE 308
-#define tLOADONCALL 309
-#define tPRELOAD 310
-#define tFIXED 311
-#define tMOVEABLE 312
-#define tCLASS 313
-#define tCAPTION 314
-#define tCHARACTERISTICS 315
-#define tEXSTYLE 316
-#define tSTYLE 317
-#define tVERSION 318
-#define tLANGUAGE 319
-#define tFILEVERSION 320
-#define tPRODUCTVERSION 321
-#define tFILEFLAGSMASK 322
-#define tFILEOS 323
-#define tFILETYPE 324
-#define tFILEFLAGS 325
-#define tFILESUBTYPE 326
-#define tMENUBARBREAK 327
-#define tMENUBREAK 328
-#define tMENUITEM 329
-#define tPOPUP 330
-#define tSEPARATOR 331
-#define tHELP 332
-#define tTOOLBAR 333
-#define tBUTTON 334
-#define tBEGIN 335
-#define tEND 336
-#define tDLGINIT 337
-#define tNOT 338
-#define pUPM 339
+#define tHTML 279
+#define tAUTO3STATE 280
+#define tAUTOCHECKBOX 281
+#define tAUTORADIOBUTTON 282
+#define tCHECKBOX 283
+#define tDEFPUSHBUTTON 284
+#define tPUSHBUTTON 285
+#define tRADIOBUTTON 286
+#define tSTATE3 287
+#define tGROUPBOX 288
+#define tCOMBOBOX 289
+#define tLISTBOX 290
+#define tSCROLLBAR 291
+#define tCONTROL 292
+#define tEDITTEXT 293
+#define tRTEXT 294
+#define tCTEXT 295
+#define tLTEXT 296
+#define tBLOCK 297
+#define tVALUE 298
+#define tSHIFT 299
+#define tALT 300
+#define tASCII 301
+#define tVIRTKEY 302
+#define tGRAYED 303
+#define tCHECKED 304
+#define tINACTIVE 305
+#define tNOINVERT 306
+#define tPURE 307
+#define tIMPURE 308
+#define tDISCARDABLE 309
+#define tLOADONCALL 310
+#define tPRELOAD 311
+#define tFIXED 312
+#define tMOVEABLE 313
+#define tCLASS 314
+#define tCAPTION 315
+#define tCHARACTERISTICS 316
+#define tEXSTYLE 317
+#define tSTYLE 318
+#define tVERSION 319
+#define tLANGUAGE 320
+#define tFILEVERSION 321
+#define tPRODUCTVERSION 322
+#define tFILEFLAGSMASK 323
+#define tFILEOS 324
+#define tFILETYPE 325
+#define tFILEFLAGS 326
+#define tFILESUBTYPE 327
+#define tMENUBARBREAK 328
+#define tMENUBREAK 329
+#define tMENUITEM 330
+#define tPOPUP 331
+#define tSEPARATOR 332
+#define tHELP 333
+#define tTOOLBAR 334
+#define tBUTTON 335
+#define tBEGIN 336
+#define tEND 337
+#define tDLGINIT 338
+#define tNOT 339
+#define pUPM 340
 
 
 
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 240 "parser.y"
+#line 240 "./parser.y"
 typedef union YYSTYPE {
        string_t        *str;
        int             num;
@@ -215,6 +217,7 @@ typedef union YYSTYPE {
        fontdir_t       *fnd;
        menu_t          *men;
        menuex_t        *menex;
+       html_t          *html;
        rcdata_t        *rdt;
        stringtable_t   *stt;
        stt_entry_t     *stte;
@@ -244,7 +247,7 @@ typedef union YYSTYPE {
        ani_any_t       *ani;
 } YYSTYPE;
 /* Line 1275 of yacc.c.  */
-#line 248 "parser.tab.h"
+#line 251 "y.tab.h"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1