[Scummvm-git-logs] scummvm master -> 1088b2e6f5f7d88a0cb94e88eb71bea00672de0c

djsrv dservilla at gmail.com
Mon Aug 3 17:46:39 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
1088b2e6f5 DIRECTOR: LINGO: Allow trailing comma in arg lists


Commit: 1088b2e6f5f7d88a0cb94e88eb71bea00672de0c
    https://github.com/scummvm/scummvm/commit/1088b2e6f5f7d88a0cb94e88eb71bea00672de0c
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-03T13:46:00-04:00

Commit Message:
DIRECTOR: LINGO: Allow trailing comma in arg lists

Changed paths:
  A engines/director/lingo/tests/trailingcomma.lingo
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 54ff745c2b..4e53e53e7f 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -373,16 +373,17 @@ enum yysymbol_kind_t
   YYSYMBOL_151_17 = 151,                   /* $@17  */
   YYSYMBOL_on = 152,                       /* on  */
   YYSYMBOL_153_18 = 153,                   /* $@18  */
-  YYSYMBOL_argdef = 154,                   /* argdef  */
-  YYSYMBOL_endargdef = 155,                /* endargdef  */
-  YYSYMBOL_argstore = 156,                 /* argstore  */
-  YYSYMBOL_arglist = 157,                  /* arglist  */
-  YYSYMBOL_nonemptyarglist = 158,          /* nonemptyarglist  */
-  YYSYMBOL_list = 159,                     /* list  */
-  YYSYMBOL_valuelist = 160,                /* valuelist  */
-  YYSYMBOL_linearlist = 161,               /* linearlist  */
-  YYSYMBOL_proplist = 162,                 /* proplist  */
-  YYSYMBOL_proppair = 163                  /* proppair  */
+  YYSYMBOL_argname = 154,                  /* argname  */
+  YYSYMBOL_argdef = 155,                   /* argdef  */
+  YYSYMBOL_endargdef = 156,                /* endargdef  */
+  YYSYMBOL_argstore = 157,                 /* argstore  */
+  YYSYMBOL_arglist = 158,                  /* arglist  */
+  YYSYMBOL_nonemptyarglist = 159,          /* nonemptyarglist  */
+  YYSYMBOL_list = 160,                     /* list  */
+  YYSYMBOL_valuelist = 161,                /* valuelist  */
+  YYSYMBOL_linearlist = 162,               /* linearlist  */
+  YYSYMBOL_proplist = 163,                 /* proplist  */
+  YYSYMBOL_proppair = 164                  /* proppair  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -692,16 +693,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  100
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1811
+#define YYLAST   1845
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  103
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  61
+#define YYNNTS  62
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  190
+#define YYNRULES  195
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  390
+#define YYNSTATES  391
 
 /* YYMAXUTOK -- Last valid token kind.  */
 #define YYMAXUTOK   342
@@ -773,12 +774,12 @@ static const yytype_int16 yyrline[] =
      660,   661,   662,   663,   664,   665,   666,   668,   669,   672,
      675,   679,   680,   681,   682,   690,   691,   691,   692,   692,
      693,   693,   694,   697,   700,   706,   706,   711,   714,   718,
-     721,   725,   728,   732,   735,   746,   747,   748,   749,   753,
-     757,   762,   763,   765,   769,   773,   777,   777,   807,   807,
-     813,   814,   814,   820,   828,   834,   834,   836,   837,   838,
-     840,   841,   842,   844,   846,   847,   848,   850,   851,   853,
-     855,   856,   857,   858,   860,   861,   863,   864,   866,   870,
-     874
+     719,   722,   726,   727,   730,   734,   735,   738,   749,   750,
+     751,   752,   756,   760,   765,   766,   768,   772,   776,   780,
+     780,   810,   810,   816,   817,   817,   823,   831,   837,   837,
+     839,   841,   842,   843,   845,   846,   847,   849,   851,   852,
+     853,   855,   856,   857,   859,   861,   862,   863,   864,   866,
+     867,   869,   870,   872,   876,   880
 };
 #endif
 
@@ -817,9 +818,9 @@ yysymbol_name (yysymbol_kind_t yysymbol)
   "simpleexprnoparens", "$@10", "simpleexpr", "expr", "chunkexpr",
   "reference", "proc", "$@11", "$@12", "$@13", "$@14", "globallist",
   "propertylist", "instancelist", "gotofunc", "gotomovie", "playfunc",
-  "$@15", "defn", "$@16", "$@17", "on", "$@18", "argdef", "endargdef",
-  "argstore", "arglist", "nonemptyarglist", "list", "valuelist",
-  "linearlist", "proplist", "proppair", YY_NULLPTR
+  "$@15", "defn", "$@16", "$@17", "on", "$@18", "argname", "argdef",
+  "endargdef", "argstore", "arglist", "nonemptyarglist", "list",
+  "valuelist", "linearlist", "proplist", "proppair", YY_NULLPTR
   };
   return yy_sname[yysymbol];
 }
@@ -844,7 +845,7 @@ static const yytype_int16 yytoknum[] =
 };
 #endif
 
-#define YYPACT_NINF (-330)
+#define YYPACT_NINF (-357)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -858,45 +859,46 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     523,   -81,  -330,  -330,  -330,  -330,  -330,  -330,  -330,   -28,
-    -330,   925,  -330,  -330,  -330,     9,  1039,    -3,   133,    81,
-      81,  1120,  1006,  -330,  1120,  -330,  -330,     7,  -330,  1146,
-    -330,  -330,  -330,  -330,  1120,  -330,  -330,  -330,  -330,  -330,
-    -330,  1120,  -330,  -330,    81,  -330,  -330,  1120,  -330,    20,
-    1120,  -330,  -330,  -330,  1227,  1227,  1227,  1227,  1120,  -330,
-       2,  -330,  1120,  1120,  1120,  1120,  1120,  1120,  1120,  1120,
-    1120,   886,   -23,  -330,  -330,  1285,  -330,  -330,  -330,  -330,
-      81,  -330,    81,  1252,    81,  -330,   -43,  1120,  1120,   -38,
-      -9,    24,  -330,  1621,  1285,  -330,    81,  1582,    81,    81,
-    -330,   523,  1120,  1704,   -20,  1704,    81,   -20,    81,  -330,
-     -16,  -330,  1120,  -330,  -330,  -330,  -330,  -330,  1704,  1120,
-    -330,  1318,  1351,  1384,  1417,  1671,  -330,  -330,  1634,   -13,
-      -5,  -330,   -73,  1704,    21,    30,    38,  -330,  1120,  1120,
-    1120,  1120,  1120,  1120,  1120,  1120,  1120,  1120,  1120,  1120,
-    1120,  1120,  1120,  1120,  1120,  1120,  -330,  -330,  1120,   232,
-     232,   232,   -21,  1120,  1120,  1120,     5,    33,  1120,  1120,
-    1120,  1120,  1120,  1120,  -330,  -330,    50,  -330,  -330,  -330,
-      56,  -330,  -330,    29,  1634,    12,  1120,   103,  -330,   -69,
-     -35,    81,  -330,  1704,  1120,  1120,  1120,  1120,  1120,  1120,
-    1120,  1120,  1120,  1120,  -330,  1120,  1120,  1120,  -330,  1120,
-      61,    34,    41,   -59,   -59,   -59,   -59,  1717,  1717,  -330,
-     -55,   -59,   -59,   -59,   -59,   -55,   -52,   -52,  -330,  -330,
-      81,   114,  -330,  -330,  -330,  -330,  -330,  -330,  1120,  1120,
-    1704,  1704,  1704,  1120,  1120,    81,  1704,  1704,  1704,  1704,
-    1704,  1704,    81,   307,   683,    81,  -330,  -330,  -330,  1704,
-     161,  -330,    81,  -330,  -330,  -330,  1450,  -330,  1483,  -330,
-    1516,  -330,  1549,  -330,  -330,  1704,  1704,  1704,  1704,   -13,
-      -5,    66,  -330,  -330,  -330,  -330,    -8,  1120,  1704,  1200,
-    -330,  1704,  1704,  1120,  -330,  -330,  -330,  -330,    73,  -330,
-    1120,  -330,   596,  -330,   649,  1120,  1120,  1120,  1120,  1120,
-    -330,  1704,  -330,  -330,  -330,   749,     8,  -330,    83,   448,
-    1704,    47,  -330,   144,  -330,  -330,  -330,  -330,  -330,    49,
-     649,  -330,  -330,  -330,  -330,  1120,  1120,  -330,  -330,  -330,
-    1120,   117,    81,  -330,  -330,  -330,   119,   140,    91,  1704,
-    1704,  1704,   810,  1120,  -330,    94,  -330,    84,  -330,  1120,
-     128,  -330,  -330,  1704,  -330,    81,  -330,  1704,  1120,    99,
-     134,  -330,   749,  -330,  1704,  -330,   161,   100,  -330,  -330,
-    -330,  -330,   749,  -330,  -330,   102,   749,  -330,   104,  -330
+     362,   -86,  -357,  -357,  -357,  -357,  -357,  -357,  -357,   -37,
+    -357,   892,  -357,  -357,  -357,   -34,  1012,   -14,   188,    28,
+      28,  1038,   931,  -357,  1038,  -357,  -357,     8,  -357,  1119,
+    -357,  -357,  -357,  -357,  1038,  -357,  -357,  -357,  -357,  -357,
+    -357,  1038,  -357,  -357,    28,  -357,  -357,  1038,  -357,   -27,
+    1038,  -357,  -357,  -357,  1145,  1145,  1145,  1145,  1038,  -357,
+     -12,  -357,  1038,  1038,  1038,  1038,  1038,  1038,  1038,  1038,
+    1038,   148,   -61,  -357,  -357,  1230,  -357,  -357,  -357,  -357,
+      28,  -357,    28,  1197,    28,  -357,   -39,  1038,  1038,    15,
+      27,     1,  -357,  1566,  1230,  -357,    28,  1527,    28,    28,
+    -357,   362,  1038,  1617,  -357,  1738,    28,  -357,    28,   -36,
+    -357,  -357,  1038,  -357,  -357,  -357,  -357,  -357,  1738,  1038,
+    -357,  1263,  1296,  1329,  1362,  1705,  -357,  -357,  1668,    16,
+      17,  -357,   -32,  1738,    20,    23,    24,  -357,  1038,  1038,
+    1038,  1038,  1038,  1038,  1038,  1038,  1038,  1038,  1038,  1038,
+    1038,  1038,  1038,  1038,  1038,  1038,  -357,  -357,  1038,    -2,
+      -2,    -2,   -31,  1038,  1038,  1038,    43,    78,  1038,  1038,
+    1038,  1038,  1038,  1038,  -357,    29,  -357,  -357,  -357,    34,
+    -357,  -357,  -357,    -9,  1579,    36,  1038,    83,  -357,    41,
+      46,    48,    28,  -357,  1738,  1038,  1038,  1038,  1038,  1038,
+    1038,  1038,  1038,  1038,  1038,  -357,  1038,  1038,  1038,  -357,
+    1038,    61,    18,    47,   -45,   -45,   -45,   -45,  1751,  1751,
+    -357,   -53,   -45,   -45,   -45,   -45,   -53,   -43,   -43,  -357,
+    -357,    28,   103,  -357,  -357,  -357,  -357,  -357,  -357,  1038,
+    1038,  1738,  1738,  1738,  1038,  1038,    28,  1738,  1738,  1738,
+    1738,  1738,  1738,    28,   493,   716,    28,  -357,  -357,  -357,
+    -357,   650,    28,  -357,  -357,  -357,  -357,  1395,  -357,  1428,
+    -357,  1461,  -357,  1494,  -357,  -357,  1738,  1738,  1738,  1738,
+      16,    17,    51,  -357,  -357,  -357,  -357,    53,  1038,  1738,
+    1164,  -357,  1738,  1738,  1038,  -357,  -357,  -357,  -357,    60,
+    -357,  1038,  -357,  -357,   563,   616,  1038,  1038,  1038,  1038,
+    1038,  -357,  1738,  -357,  -357,  -357,   750,    56,  -357,    70,
+     455,  1630,    65,  -357,   131,  -357,  -357,  -357,  -357,  -357,
+      69,   616,  -357,  -357,  -357,  -357,  1038,  1038,  -357,  -357,
+    1038,  -357,    30,    28,  -357,  -357,  -357,   114,   140,    90,
+    1738,  1738,  -357,   816,  1038,  -357,    92,  -357,    84,  -357,
+    1038,   132,  -357,  -357,  1738,  -357,    28,  -357,  1738,  1038,
+      99,   134,  -357,   750,  -357,  1738,  -357,   650,   104,  -357,
+    -357,  -357,  -357,   750,  -357,  -357,   105,   750,  -357,   112,
+    -357
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -904,69 +906,70 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,     7,   156,   161,     8,     9,    10,    11,   125,
-     126,     0,   145,    61,   158,     0,     0,     0,     0,     0,
-       0,     0,     0,   130,     0,   128,   165,     0,     2,   174,
+       0,     0,     7,   159,   164,     8,     9,    10,    11,   125,
+     126,     0,   148,    61,   161,     0,     0,     0,     0,     0,
+       0,     0,     0,   130,     0,   128,   168,     0,     2,   178,
       29,    31,     6,    32,     0,    30,   122,   123,     5,    62,
-      50,   174,    62,   124,     0,    67,    75,     0,    68,     0,
-       0,    70,    69,    79,     8,     9,    10,    11,     0,   146,
-       0,   147,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   180,    87,    88,    90,   148,   117,    74,   150,    82,
+      50,   178,    62,   124,   139,    67,    75,     0,    68,     0,
+       0,    70,    69,    79,     8,     9,    10,    11,     0,   149,
+       0,   150,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   185,    87,    88,    90,   151,   117,    74,   153,    82,
        0,    46,     0,   121,     0,    62,     0,     0,     0,     0,
-       0,     0,   160,   133,   153,   155,     0,     0,     0,     0,
-       1,     0,   174,   175,   138,    58,   167,   157,   167,   139,
-     127,    76,     0,    77,   118,   108,   119,   120,   152,     0,
+       0,     0,   163,   133,   156,   158,   145,     0,   142,     0,
+       1,     0,   178,   179,   138,    58,   171,   160,   171,   140,
+     127,    76,     0,    77,   118,   108,   119,   120,   155,     0,
       73,     0,     0,     0,     0,     0,    71,    72,     0,    70,
-      69,   181,    87,   184,     0,   183,   182,   186,   174,     0,
+      69,   186,    87,   189,     0,   188,   187,   191,   178,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   149,    62,     0,     0,
+       0,     0,     0,     0,     0,     0,   152,    62,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   154,   143,   131,    52,    52,   141,
-     129,   166,     3,    87,   175,     0,     0,     0,   168,     0,
-       0,     0,    78,   151,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    89,     0,     0,     0,   179,     0,
-       0,    87,     0,   100,   101,    98,    99,   102,   103,    95,
-     105,   106,   107,    97,    96,   104,    91,    92,    93,    94,
-     167,     0,    12,    13,    15,    16,    17,    18,     0,     0,
-      58,    22,    20,     0,     0,     0,    27,    28,    21,    19,
-      47,   132,     0,     0,     0,     0,   134,   135,   137,   176,
-       0,   173,     0,   173,   140,   109,     0,   111,     0,   113,
-       0,   115,     0,    80,    81,   189,   188,   190,   185,     0,
-       0,     0,   187,    83,    84,    86,     0,     0,    42,    34,
-      51,    23,    24,     0,   144,    62,    66,    62,    63,   142,
-       0,    59,     0,   169,     0,     0,     0,     0,     0,     0,
-     173,    14,    62,    60,    60,     0,     0,    49,     0,     0,
-     177,     0,    55,   164,   162,   110,   112,   114,   116,     0,
-       0,    43,    35,    39,    59,     0,     0,    48,    64,   136,
-       0,    62,   170,    85,   159,    58,     0,     0,     0,    25,
-      26,   178,     0,     0,    56,     0,   171,   163,    44,     0,
-       0,    33,    62,    58,    53,     0,    51,    36,     0,     0,
-       0,   172,     0,    58,    40,    54,     0,     0,    51,    58,
-      59,    45,     0,    51,    57,     0,     0,    37,     0,    41
+       0,     0,     0,     0,   157,   146,   131,    52,    52,   143,
+     129,   169,     3,    87,     0,     0,   178,     0,   170,   172,
+       0,     0,   139,    78,   154,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    89,     0,     0,     0,   184,
+       0,     0,    87,     0,   100,   101,    98,    99,   102,   103,
+      95,   105,   106,   107,    97,    96,   104,    91,    92,    93,
+      94,   171,     0,    12,    13,    15,    16,    17,    18,     0,
+       0,    58,    22,    20,     0,     0,     0,    27,    28,    21,
+      19,    47,   132,   145,     0,     0,   142,   134,   135,   137,
+     180,     0,   171,   177,   177,   141,   109,     0,   111,     0,
+     113,     0,   115,     0,    80,    81,   194,   193,   195,   190,
+       0,     0,     0,   192,    83,    84,    86,     0,     0,    42,
+      34,    51,    23,    24,     0,   147,    62,    66,    62,    63,
+     144,     0,    59,   173,     0,     0,     0,     0,     0,     0,
+       0,   177,    14,    62,    60,    60,     0,     0,    49,     0,
+       0,   181,     0,    55,   167,   165,   110,   112,   114,   116,
+       0,     0,    43,    35,    39,    59,     0,     0,    48,    64,
+     182,   136,    62,   174,    85,   162,    58,     0,     0,     0,
+      25,    26,   183,     0,     0,    56,     0,   175,   166,    44,
+       0,     0,    33,    62,    58,    53,     0,    51,    36,     0,
+       0,     0,   176,     0,    58,    40,    54,     0,     0,    51,
+      58,    59,    45,     0,    51,    57,     0,     0,    37,     0,
+      41
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -330,  -330,    95,     0,  -330,   -49,     3,  -330,  -330,  -330,
-    -330,  -330,  -330,  -330,  -330,  -330,  -308,    27,  -330,  -330,
-    -330,  -238,  -329,  -108,  -330,   -36,  -252,  -330,    62,  -330,
-     -22,   258,   -17,  -330,  -330,  -330,  -330,  -330,  -330,  -330,
-    -330,  -330,  -330,   -18,  -330,  -330,  -330,  -330,  -330,  -330,
-    -330,  -107,  -330,  -254,   -29,  -102,  -330,  -330,  -330,  -330,
-      -1
+    -357,  -357,    88,     0,  -357,   -69,     2,  -357,  -357,  -357,
+    -357,  -357,  -357,  -357,  -357,  -357,  -356,    21,  -357,  -357,
+    -357,  -237,  -326,  -113,  -357,    -7,  -248,  -357,    57,  -357,
+     277,   130,   -29,  -357,  -357,  -357,  -357,  -357,  -357,    11,
+     -52,   -44,  -357,   -17,  -357,  -357,  -357,  -357,  -357,  -357,
+    -357,  -357,  -107,  -357,  -258,   -38,  -303,  -357,  -357,  -357,
+    -357,    -3
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    27,    28,    72,    30,    31,   296,   313,   346,   373,
-     314,   347,   379,   312,   345,   366,   315,   253,    33,   341,
-     354,   187,   322,   332,    34,   106,   297,   298,    73,   309,
-      74,   103,    76,    77,    35,    44,    98,    96,   300,   110,
+      -1,    27,    28,    72,    30,    31,   297,   314,   347,   374,
+     315,   348,   380,   313,   346,   367,   316,   254,    33,   342,
+     355,   187,   323,   333,    34,   106,   298,   299,    73,   310,
+      74,   103,    76,    77,    35,    44,    98,    96,   301,   110,
      180,   176,    36,    78,    37,    41,    38,    80,    42,    39,
-      99,   189,   357,   302,   104,   321,    79,   134,   135,   136,
-     137
+      99,   189,   190,   358,   304,   104,   322,    79,   134,   135,
+     136,   137
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -974,374 +977,380 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      29,   190,   290,    32,    95,   348,   108,   100,   301,   304,
-     145,   164,   107,   146,   145,    40,   168,   145,    90,    91,
-      92,   165,   238,    43,   138,   111,   169,   261,   113,   207,
-     262,   151,   152,   153,   154,   155,   152,   153,   154,   155,
-     120,   154,   155,   239,   109,   170,   126,   127,   119,   163,
-     323,   384,   324,    84,    85,   171,   330,   156,   372,   243,
-      81,   263,   335,   334,   262,   166,   167,   338,   112,   244,
-     382,   132,   336,   185,   138,   386,   174,   172,   344,   186,
-     157,   245,   158,   191,   162,     2,   279,   280,   310,   205,
-     192,   262,     5,     6,     7,     8,   175,   206,   179,   181,
-     362,    29,   183,   101,    32,     2,   188,   358,   188,   212,
-     258,   186,     5,     6,     7,     8,   114,   115,   116,   117,
-     377,   230,   208,   286,   380,   370,   138,   256,   257,   209,
-     385,   138,   283,   284,   388,   378,   231,   210,   211,   285,
-     186,   383,   233,   235,   237,   339,   340,   343,   340,   252,
-      86,    87,    88,   352,   353,   255,   260,     2,   287,   232,
-     234,   236,     1,    89,     5,     6,     7,     8,   207,   319,
-     337,   342,   265,   359,   267,   360,   269,   361,   271,   364,
-     273,   274,   368,   365,   375,     2,   381,   376,   387,     3,
-     389,   264,     5,     6,     7,     8,   182,   -65,   -65,     9,
-      10,    11,    12,    13,   295,   254,   333,   329,    15,   282,
-     281,    16,    17,    18,     0,     0,    19,     0,     0,     0,
-      21,    22,    23,     0,     0,     0,     0,     0,     0,     0,
-     188,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    24,    25,   293,   -65,     0,     0,     0,
-       0,     0,   294,    29,    29,   299,     2,   -65,     0,   317,
-      29,   318,   303,     5,    55,     7,     8,     0,     0,    75,
-       0,   316,     0,     0,    83,     0,   331,     0,     0,    93,
-      94,     0,    97,   325,   326,   327,   328,     0,     0,     0,
-       0,     0,   105,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    29,     0,    29,   355,     0,    63,    64,    65,
-      66,     0,     0,     0,     0,    29,   118,     0,     0,    29,
-       0,   121,   122,   123,   124,   125,   369,     0,   128,   133,
-      29,     2,     0,     0,     0,     3,     0,     0,     5,     6,
-       7,     8,   356,     0,     0,     9,    10,    11,    12,     0,
-       0,     0,    29,     0,     0,     0,     0,    16,     0,    18,
-     184,     0,     0,     0,     0,   371,    21,    22,    23,     0,
-       0,     0,    29,     0,     0,     0,    29,   193,     0,     0,
-       0,     0,    29,     0,     0,     0,    29,     0,     0,     0,
-      25,     0,     0,     0,     0,     0,     0,   213,   214,   215,
-     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
-     226,   227,   228,   229,     0,     0,     0,     0,     0,     0,
-       0,   240,   241,   242,     0,     0,   246,   247,   248,   249,
-     250,   251,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   259,     0,     0,     0,   -65,     1,
-       0,     0,     0,   266,     0,   268,     0,   270,     0,   272,
-       0,     0,     0,   275,   276,   277,     0,   278,     0,     0,
-       0,     0,     2,     0,     0,   -65,     3,     0,     0,     5,
-       6,     7,     8,     0,   -65,   -65,     9,    10,    11,    12,
-      13,     0,     0,     0,     0,    15,   288,   289,    16,    17,
-      18,   291,   292,    19,     0,     0,     0,    21,    22,    23,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    -4,     1,     0,     0,     0,     0,     0,
-      24,    25,     0,   -65,   -65,   -65,     0,     0,     0,     0,
-       0,     0,     0,     0,   -65,   311,     0,     2,     0,     0,
-       0,     3,     4,     0,     5,     6,     7,     8,   320,     0,
-       0,     9,    10,    11,    12,    13,     0,   320,    14,     0,
-      15,     0,     0,    16,    17,    18,     0,     0,    19,     0,
-       0,    20,    21,    22,    23,     0,     0,     0,     0,     0,
-       0,     0,     0,   349,   350,     0,   -65,     1,   351,     0,
-       0,     0,     0,     0,     0,    24,    25,    26,     0,     0,
-       0,   363,     0,     0,     0,     0,     0,   367,     0,    -4,
-       2,     0,     0,   -65,     3,     0,   374,     5,     6,     7,
-       8,     0,     0,     0,     9,    10,    11,    12,    13,     0,
-       0,     0,     0,    15,     0,     0,    16,    17,    18,   -65,
-       1,    19,     0,     0,     0,    21,    22,    23,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     2,     0,     0,     0,     3,    24,    25,
-       5,     6,     7,     8,     1,     0,     0,     9,    10,    11,
-      12,    13,   -65,     0,     0,     0,    15,     0,     0,    16,
-      17,    18,     0,     0,    19,     0,     0,     2,    21,    22,
-      23,     3,     0,     0,     5,     6,     7,     8,     0,     0,
+      29,   191,    32,   107,   291,    95,   305,   330,   100,   349,
+      40,   373,   239,   302,    43,   164,   145,    81,    90,    91,
+      92,   112,     2,   383,   145,   165,   145,   146,   387,     5,
+      55,     7,     8,   240,   119,   108,   138,   352,   152,   153,
+     154,   155,    84,    85,   109,   151,   152,   153,   154,   155,
+     154,   155,     2,   331,   172,   385,   324,   325,   156,     5,
+       6,     7,     8,   192,   185,   138,   353,   354,   335,   168,
+     208,   132,   339,    63,    64,    65,    66,   174,   163,   169,
+     157,   170,   158,   345,   162,     2,   280,   281,   138,   257,
+     258,   171,     5,     6,     7,     8,   175,   244,   179,   181,
+     213,    29,   183,    32,   101,   363,   188,   245,   188,   359,
+     336,   114,   115,   116,   117,   138,   284,   285,   206,   207,
+     337,   209,   210,   211,   287,   378,   246,   371,   253,   381,
+     234,   236,   238,   256,   259,   386,   261,   379,   212,   389,
+     262,    75,   263,   384,   264,   286,    83,   288,   260,   311,
+     231,    93,    94,   208,    97,   303,   320,   338,   343,   233,
+     235,   237,    45,   341,   105,    46,    47,   344,   360,    48,
+      49,    50,     2,   129,   130,   361,   362,   365,    53,    54,
+      55,    56,    57,   366,   376,   296,   369,   377,   118,   182,
+     382,   388,   109,   121,   122,   123,   124,   125,   390,   255,
+     128,   133,   334,   265,   300,    86,    87,    88,   283,   295,
+       0,   282,     2,     0,     0,     0,    62,     0,    89,     5,
+       6,     7,     8,    63,    64,    65,    66,    67,     0,     0,
+       0,   188,   184,     0,     0,     0,     0,     0,     0,    68,
+      69,     0,     0,     0,     0,    70,   294,     0,    71,   194,
+     131,     0,     0,   175,    29,    29,   179,     0,     0,     0,
+       0,    29,   188,     0,     0,     0,     0,     0,     0,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   230,     0,     0,     0,   318,
+       0,   319,     0,   241,   242,   243,     0,     0,   247,   248,
+     249,   250,   251,   252,    29,    29,   332,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    29,     0,     0,     0,
+      29,     0,     0,     0,   111,     0,   267,   113,   269,     0,
+     271,    29,   273,     0,     0,   356,   276,   277,   278,   120,
+     279,     0,     0,   357,     0,   126,   127,     0,     0,     0,
+       0,     0,     0,    29,     0,     0,   370,     0,     0,     0,
+       0,     0,    -4,     1,   166,   167,   372,     0,     0,   289,
+     290,     0,     0,    29,   292,   293,     0,    29,     0,     0,
+       0,     0,     0,    29,     0,     0,     2,    29,     0,   193,
+       3,     4,     0,     5,     6,     7,     8,     0,     0,     0,
+       9,    10,    11,    12,    13,     0,     0,    14,     0,    15,
+       0,     0,    16,    17,    18,     0,     0,    19,   312,     0,
+      20,    21,    22,    23,     0,     0,     0,     0,     0,     0,
+       0,   321,     0,     0,     0,   232,     0,     0,     0,     0,
+     321,     0,     0,     0,    24,    25,    26,     0,     0,     0,
+       0,     0,     0,     0,     0,   -65,     1,     0,    -4,     0,
+       0,     0,     0,     0,     0,     0,   350,   351,     0,     0,
+     321,     0,   266,     0,   268,     0,   270,     0,   272,     2,
+     274,   275,   -65,     3,   364,     0,     5,     6,     7,     8,
+     368,   -65,   -65,     9,    10,    11,    12,    13,     0,   375,
+       0,     0,    15,     0,     0,    16,    17,    18,     0,     0,
+      19,     0,     0,     0,    21,    22,    23,     2,     0,     0,
+       0,     3,     0,     0,     5,     6,     7,     8,     0,     0,
+       0,     9,    10,    11,    12,     0,     0,    24,    25,     0,
+     -65,   -65,   -65,    16,     0,    18,     0,     0,     0,     0,
+       0,   -65,    21,    22,    23,     0,     0,     0,     0,     0,
+       0,     0,     0,   -65,     1,     0,     0,     0,     0,     0,
+       0,   317,     0,     0,     0,     0,    25,     0,     0,     0,
+       0,     0,     0,   326,   327,   328,   329,     2,     0,     0,
+     -65,     3,     0,     0,     5,     6,     7,     8,     0,     0,
        0,     9,    10,    11,    12,    13,     0,     0,     0,     0,
-      15,    24,    25,    16,    17,    18,     0,     0,    19,     0,
-       0,     0,    21,    22,    23,   -65,     0,     0,     0,     0,
-       1,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    24,    25,     0,     0,     0,
-     -65,     0,     0,     2,     0,     0,     0,     3,     0,   -65,
-       5,     6,     7,     8,     0,     0,     0,     9,    10,    11,
-      12,    13,     0,     0,     0,     0,    15,     0,     0,    16,
-      17,    18,     0,     0,    19,     0,     0,     0,    21,    22,
-      23,     1,     0,     0,     0,     0,     0,     0,     0,     0,
+      15,     0,     0,    16,    17,    18,   -65,     1,    19,     0,
+       0,     0,    21,    22,    23,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    24,    25,     0,     2,   -65,     0,     0,     3,     0,
-       0,     5,     6,     7,     8,   -65,     0,     0,     9,    10,
-      11,    12,    13,     0,     0,     0,     0,    15,     0,     0,
+       2,     0,     0,     0,     3,    24,    25,     5,     6,     7,
+       8,     1,     0,     0,     9,    10,    11,    12,    13,   -65,
+       0,     0,     0,    15,     0,     0,    16,    17,    18,     0,
+       0,    19,     0,     0,     2,    21,    22,    23,     3,     0,
+       0,     5,     6,     7,     8,     0,   -65,   -65,     9,    10,
+      11,    12,    13,     0,     0,     0,     0,    15,    24,    25,
       16,    17,    18,     0,     0,    19,     0,     0,     0,    21,
-      22,    23,     0,     0,     0,     0,     0,     0,     0,     0,
+      22,    23,   -65,     0,     0,     0,     0,     1,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    24,    25,     0,   -65,     0,     0,     0,     0,
-      45,     0,     0,    46,    47,     0,   -65,    48,    49,    50,
-       2,   129,   130,     0,     0,     0,    53,    54,    55,    56,
-      57,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    45,
-       0,     0,    46,    47,     0,     0,    48,    49,    50,     2,
-      51,    52,     0,     0,    62,    53,    54,    55,    56,    57,
-       0,    63,    64,    65,    66,    67,     0,     0,     0,     0,
-       0,    58,    59,    60,    61,     0,     0,    68,    69,     0,
-       0,     0,     0,    70,     0,     0,    71,     0,   131,     0,
-       0,     0,     0,    62,     0,     0,     0,     0,     0,     0,
-      63,    64,    65,    66,    67,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    68,    69,     0,     0,
-      45,     0,    70,    46,    47,    71,     0,    48,    49,    50,
-       2,    51,    52,     0,     0,     0,    53,    54,    55,    56,
-      57,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    58,    45,    60,     0,    46,    47,     0,    82,
-      48,    49,    50,     2,    51,    52,     0,     0,     0,    53,
-      54,    55,    56,    57,    62,     0,     0,     0,     0,     0,
-       0,    63,    64,    65,    66,    67,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    68,    69,     0,
-       0,     0,     0,    70,     0,     0,    71,    62,     0,     0,
-       0,     0,     0,     0,    63,    64,    65,    66,    67,     0,
+       2,     0,     0,     0,     3,     0,   -65,     5,     6,     7,
+       8,     1,     0,     0,     9,    10,    11,    12,    13,     0,
+       0,     0,     0,    15,     0,     0,    16,    17,    18,     0,
+       0,    19,     0,     0,     2,    21,    22,    23,     3,     0,
+       0,     5,     6,     7,     8,     0,     0,     0,     9,    10,
+      11,    12,    13,     0,     0,     0,     0,    15,    24,    25,
+      16,    17,    18,   -65,     0,    19,     0,     0,     0,    21,
+      22,    23,   -65,     0,     0,     0,     0,     1,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      68,    69,     0,     0,    45,     0,    70,    46,    47,    71,
-       0,    48,    49,    50,     2,    51,    52,     0,     0,     0,
-      53,    54,    55,    56,    57,     0,     0,     0,     0,     0,
-      45,     0,     0,    46,    47,     0,     0,    48,    49,    50,
-       2,    51,    52,     0,     0,     0,    53,    54,    55,    56,
-      57,     0,     0,     0,     0,     0,     0,     0,    62,     0,
-       0,     0,     0,     0,     0,    63,    64,    65,    66,    67,
+       0,     0,    24,    25,     0,     0,   -65,     0,     0,     0,
+       2,     0,     0,     0,     3,     0,   -65,     5,     6,     7,
+       8,     0,     0,     0,     9,    10,    11,    12,    13,     0,
+       0,     0,     0,    15,     0,     0,    16,    17,    18,     0,
+       0,    19,     0,     0,     0,    21,    22,    23,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    68,    69,     0,    62,     0,     0,    70,     0,     0,
-      71,    63,    64,    65,    66,    67,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   -38,     0,    68,    69,     0,
-       0,    45,     0,   102,    46,    47,    71,     0,    48,    49,
-      50,     2,    51,    52,     0,     0,     0,    53,    54,    55,
-      56,    57,   139,   140,   141,   142,   143,   144,     0,   145,
-       0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   149,   150,
-     151,   152,   153,   154,   155,    62,   159,     0,     0,     0,
-       0,     0,    63,    64,    65,    66,    67,     0,     0,     0,
-       0,     0,     0,     0,   139,   140,   141,   142,   143,   144,
-       0,   145,   160,   161,   146,   147,   148,    71,     0,     0,
-       0,    58,     0,    60,     0,     0,     0,     0,     0,     0,
-     149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
-     142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
-       0,     0,     0,     0,     0,     0,   194,     0,     0,     0,
-       0,     0,   195,   149,   150,   151,   152,   153,   154,   155,
-     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
-     146,   147,   148,     0,     0,     0,     0,     0,     0,   196,
-       0,     0,     0,     0,     0,   197,   149,   150,   151,   152,
-     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
-     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
-       0,     0,   198,     0,     0,     0,     0,     0,   199,   149,
-     150,   151,   152,   153,   154,   155,   139,   140,   141,   142,
+       0,     0,     0,     0,     0,     0,     0,     0,    24,    25,
+       0,   -65,     0,     0,     0,     0,    45,     0,     0,    46,
+      47,     0,   -65,    48,    49,    50,     2,    51,    52,     0,
+       0,     0,    53,    54,    55,    56,    57,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    58,    59,
+      60,    61,     0,     0,     0,    45,     0,     0,    46,    47,
+       0,     0,    48,    49,    50,     2,    51,    52,     0,     0,
+      62,    53,    54,    55,    56,    57,     0,    63,    64,    65,
+      66,    67,     0,     0,     0,     0,     0,    58,     0,    60,
+       0,     0,     0,    68,    69,     0,     0,     0,     0,    70,
+       0,     0,    71,     0,     0,     0,     0,     0,     0,    62,
+       0,     0,     0,     0,     0,     0,    63,    64,    65,    66,
+      67,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    68,    69,     0,     0,    45,     0,    70,    46,
+      47,    71,    82,    48,    49,    50,     2,    51,    52,     0,
+       0,     0,    53,    54,    55,    56,    57,     0,     0,     0,
+       0,     0,    45,     0,     0,    46,    47,     0,     0,    48,
+      49,    50,     2,    51,    52,     0,     0,     0,    53,    54,
+      55,    56,    57,     0,     0,     0,     0,     0,     0,     0,
+      62,     0,     0,     0,     0,     0,     0,    63,    64,    65,
+      66,    67,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    68,    69,     0,    62,     0,     0,    70,
+       0,     0,    71,    63,    64,    65,    66,    67,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    68,
+      69,     0,     0,    45,     0,    70,    46,    47,    71,     0,
+      48,    49,    50,     2,    51,    52,     0,     0,     0,    53,
+      54,    55,    56,    57,     0,     0,     0,     0,     0,    45,
+       0,     0,    46,    47,     0,     0,    48,    49,    50,     2,
+      51,    52,     0,     0,     0,    53,    54,    55,    56,    57,
+       0,     0,     0,     0,     0,     0,     0,    62,     0,     0,
+       0,     0,     0,     0,    63,    64,    65,    66,    67,   -38,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      68,    69,     0,    62,     0,     0,   102,     0,     0,    71,
+      63,    64,    65,    66,    67,     0,   139,   140,   141,   142,
      143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
-       0,     0,     0,     0,     0,   200,     0,     0,     0,     0,
-       0,   201,   149,   150,   151,   152,   153,   154,   155,   139,
-     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
-     147,   148,     0,     0,     0,     0,     0,     0,   305,     0,
+       0,   159,     0,     0,     0,    71,     0,     0,     0,     0,
+       0,     0,   149,   150,   151,   152,   153,   154,   155,   139,
+     140,   141,   142,   143,   144,     0,   145,   160,   161,   146,
+     147,   148,     0,     0,     0,     0,    58,     0,    60,     0,
        0,     0,     0,     0,     0,   149,   150,   151,   152,   153,
      154,   155,   139,   140,   141,   142,   143,   144,     0,   145,
        0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
-       0,   306,     0,     0,     0,     0,     0,     0,   149,   150,
+       0,   195,     0,     0,     0,     0,     0,   196,   149,   150,
      151,   152,   153,   154,   155,   139,   140,   141,   142,   143,
      144,     0,   145,     0,     0,   146,   147,   148,     0,     0,
-       0,     0,     0,     0,   307,     0,     0,     0,     0,     0,
-       0,   149,   150,   151,   152,   153,   154,   155,   139,   140,
+       0,     0,     0,     0,   197,     0,     0,     0,     0,     0,
+     198,   149,   150,   151,   152,   153,   154,   155,   139,   140,
      141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
-     148,     0,     0,     0,     0,     0,     0,   308,     0,     0,
-       0,     0,     0,     0,   149,   150,   151,   152,   153,   154,
+     148,     0,     0,     0,     0,     0,     0,   199,     0,     0,
+       0,     0,     0,   200,   149,   150,   151,   152,   153,   154,
      155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
        0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   177,   149,   150,   151,
+     201,     0,     0,     0,     0,     0,   202,   149,   150,   151,
      152,   153,   154,   155,   139,   140,   141,   142,   143,   144,
        0,   145,     0,     0,   146,   147,   148,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     149,   150,   151,   152,   153,   154,   155,   173,   178,     0,
-       0,     0,     0,   139,   140,   141,   142,   143,   144,     0,
-     145,     0,     0,   146,   147,   148,   139,   140,   141,   142,
-     143,   144,     0,   145,     0,     0,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
-       0,     0,   149,   150,   151,   152,   153,   154,   155,     0,
-       0,     0,   204,   139,   140,   141,   142,   143,   144,     0,
+       0,     0,     0,   306,     0,     0,     0,     0,     0,     0,
+     149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
+     142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
+       0,     0,     0,     0,     0,     0,   307,     0,     0,     0,
+       0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
+     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
+     146,   147,   148,     0,     0,     0,     0,     0,     0,   308,
+       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
+     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
      145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
-       0,   202,   203,     0,     0,     0,     0,     0,     0,   149,
+       0,     0,   309,     0,     0,     0,     0,     0,     0,   149,
      150,   151,   152,   153,   154,   155,   139,   140,   141,   142,
-     143,   144,     0,   145,     0,     0,   146,   147,   148,   139,
-     140,   141,   142,     0,     0,     0,   145,     0,     0,   146,
-     147,   148,   149,   150,   151,   152,   153,   154,   155,     0,
+     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   177,   149,   150,   151,   152,   153,   154,   155,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   149,   150,   151,   152,   153,
-     154,   155
+     154,   155,   173,   178,     0,     0,     0,     0,   139,   140,
+     141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
+     148,   139,   140,   141,   142,   143,   144,     0,   145,     0,
+       0,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,     0,     0,     0,     0,     0,     0,   149,   150,   151,
+     152,   153,   154,   155,     0,     0,     0,   205,   186,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,   139,   140,   141,   142,   143,   144,     0,   145,
+       0,     0,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,     0,     0,     0,     0,   186,     0,   149,   150,
+     151,   152,   153,   154,   155,     0,     0,     0,     0,   340,
+     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
+     146,   147,   148,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
+     153,   154,   155,     0,     0,     0,   205,   139,   140,   141,
+     142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
+       0,     0,     0,     0,     0,   203,   204,     0,     0,     0,
+       0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
+     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
+     146,   147,   148,   139,   140,   141,   142,     0,     0,     0,
+     145,     0,     0,   146,   147,   148,   149,   150,   151,   152,
+     153,   154,   155,     0,     0,     0,     0,     0,     0,   149,
+     150,   151,   152,   153,   154,   155
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,   108,   240,     0,    22,   334,    42,     0,   260,   263,
-      69,    54,    41,    72,    69,    96,    54,    69,    18,    19,
-      20,    64,    43,    51,    97,    47,    64,    96,    50,   102,
-      99,    90,    91,    92,    93,    94,    91,    92,    93,    94,
-      62,    93,    94,    64,    44,    54,    68,    69,    46,    85,
-     302,   380,   304,    56,    57,    64,   310,    75,   366,    54,
-      51,    96,    54,   315,    99,    87,    88,   319,    48,    64,
-     378,    71,    64,   102,    97,   383,    94,    53,   330,    99,
-      80,    48,    82,    99,    84,    24,    25,    26,    96,   102,
-     112,    99,    31,    32,    33,    34,    96,   102,    98,    99,
-     352,   101,   102,    96,   101,    24,   106,   345,   108,   138,
-      98,    99,    31,    32,    33,    34,    54,    55,    56,    57,
-     372,   157,   101,   230,   376,   363,    97,    98,    99,    99,
-     382,    97,    98,    99,   386,   373,   158,    99,   138,    98,
-      99,   379,   159,   160,   161,    98,    99,    98,    99,    99,
-      17,    18,    19,    36,    37,    99,    53,    24,    44,   159,
-     160,   161,     1,    30,    31,    32,    33,    34,   102,    96,
-      87,    27,   194,    54,   196,    35,   198,    86,   200,    85,
-     202,   203,    54,    99,    85,    24,    86,    53,    86,    28,
-      86,   191,    31,    32,    33,    34,   101,    36,    37,    38,
-      39,    40,    41,    42,   253,   178,   314,   309,    47,   210,
-     210,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
-      59,    60,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     230,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    82,    83,   245,    85,    -1,    -1,    -1,
-      -1,    -1,   252,   253,   254,   255,    24,    96,    -1,   295,
-     260,   297,   262,    31,    32,    33,    34,    -1,    -1,    11,
-      -1,   293,    -1,    -1,    16,    -1,   312,    -1,    -1,    21,
-      22,    -1,    24,   305,   306,   307,   308,    -1,    -1,    -1,
-      -1,    -1,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   302,    -1,   304,   341,    -1,    75,    76,    77,
-      78,    -1,    -1,    -1,    -1,   315,    58,    -1,    -1,   319,
-      -1,    63,    64,    65,    66,    67,   362,    -1,    70,    71,
-     330,    24,    -1,    -1,    -1,    28,    -1,    -1,    31,    32,
-      33,    34,   342,    -1,    -1,    38,    39,    40,    41,    -1,
-      -1,    -1,   352,    -1,    -1,    -1,    -1,    50,    -1,    52,
-     102,    -1,    -1,    -1,    -1,   365,    59,    60,    61,    -1,
-      -1,    -1,   372,    -1,    -1,    -1,   376,   119,    -1,    -1,
-      -1,    -1,   382,    -1,    -1,    -1,   386,    -1,    -1,    -1,
-      83,    -1,    -1,    -1,    -1,    -1,    -1,   139,   140,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   163,   164,   165,    -1,    -1,   168,   169,   170,   171,
-     172,   173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,     0,     1,
-      -1,    -1,    -1,   195,    -1,   197,    -1,   199,    -1,   201,
-      -1,    -1,    -1,   205,   206,   207,    -1,   209,    -1,    -1,
-      -1,    -1,    24,    -1,    -1,    27,    28,    -1,    -1,    31,
-      32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
-      42,    -1,    -1,    -1,    -1,    47,   238,   239,    50,    51,
-      52,   243,   244,    55,    -1,    -1,    -1,    59,    60,    61,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       0,   108,     0,    41,   241,    22,   264,   310,     0,   335,
+      96,   367,    43,   261,    51,    54,    69,    51,    18,    19,
+      20,    48,    24,   379,    69,    64,    69,    72,   384,    31,
+      32,    33,    34,    64,    46,    42,    97,   340,    91,    92,
+      93,    94,    56,    57,    44,    90,    91,    92,    93,    94,
+      93,    94,    24,   311,    53,   381,   304,   305,    75,    31,
+      32,    33,    34,    99,   102,    97,    36,    37,   316,    54,
+     102,    71,   320,    75,    76,    77,    78,    94,    85,    64,
+      80,    54,    82,   331,    84,    24,    25,    26,    97,    98,
+      99,    64,    31,    32,    33,    34,    96,    54,    98,    99,
+     138,   101,   102,   101,    96,   353,   106,    64,   108,   346,
+      54,    54,    55,    56,    57,    97,    98,    99,   102,   102,
+      64,   101,    99,    99,   231,   373,    48,   364,    99,   377,
+     159,   160,   161,    99,    98,   383,    53,   374,   138,   387,
+      99,    11,    96,   380,    96,    98,    16,    44,   186,    96,
+     157,    21,    22,   102,    24,   262,    96,    87,    27,   159,
+     160,   161,    14,    98,    34,    17,    18,    98,    54,    21,
+      22,    23,    24,    25,    26,    35,    86,    85,    30,    31,
+      32,    33,    34,    99,    85,   254,    54,    53,    58,   101,
+      86,    86,   192,    63,    64,    65,    66,    67,    86,   178,
+      70,    71,   315,   192,   256,    17,    18,    19,   211,   253,
+      -1,   211,    24,    -1,    -1,    -1,    68,    -1,    30,    31,
+      32,    33,    34,    75,    76,    77,    78,    79,    -1,    -1,
+      -1,   231,   102,    -1,    -1,    -1,    -1,    -1,    -1,    91,
+      92,    -1,    -1,    -1,    -1,    97,   246,    -1,   100,   119,
+     102,    -1,    -1,   253,   254,   255,   256,    -1,    -1,    -1,
+      -1,   261,   262,    -1,    -1,    -1,    -1,    -1,    -1,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,    -1,    -1,    -1,   296,
+      -1,   298,    -1,   163,   164,   165,    -1,    -1,   168,   169,
+     170,   171,   172,   173,   304,   305,   313,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   316,    -1,    -1,    -1,
+     320,    -1,    -1,    -1,    47,    -1,   196,    50,   198,    -1,
+     200,   331,   202,    -1,    -1,   342,   206,   207,   208,    62,
+     210,    -1,    -1,   343,    -1,    68,    69,    -1,    -1,    -1,
+      -1,    -1,    -1,   353,    -1,    -1,   363,    -1,    -1,    -1,
+      -1,    -1,     0,     1,    87,    88,   366,    -1,    -1,   239,
+     240,    -1,    -1,   373,   244,   245,    -1,   377,    -1,    -1,
+      -1,    -1,    -1,   383,    -1,    -1,    24,   387,    -1,   112,
+      28,    29,    -1,    31,    32,    33,    34,    -1,    -1,    -1,
+      38,    39,    40,    41,    42,    -1,    -1,    45,    -1,    47,
+      -1,    -1,    50,    51,    52,    -1,    -1,    55,   288,    -1,
+      58,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   301,    -1,    -1,    -1,   158,    -1,    -1,    -1,    -1,
+     310,    -1,    -1,    -1,    82,    83,    84,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     0,     1,    -1,    96,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   336,   337,    -1,    -1,
+     340,    -1,   195,    -1,   197,    -1,   199,    -1,   201,    24,
+     203,   204,    27,    28,   354,    -1,    31,    32,    33,    34,
+     360,    36,    37,    38,    39,    40,    41,    42,    -1,   369,
+      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
+      55,    -1,    -1,    -1,    59,    60,    61,    24,    -1,    -1,
+      -1,    28,    -1,    -1,    31,    32,    33,    34,    -1,    -1,
+      -1,    38,    39,    40,    41,    -1,    -1,    82,    83,    -1,
+      85,    86,    87,    50,    -1,    52,    -1,    -1,    -1,    -1,
+      -1,    96,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,     0,     1,    -1,    -1,    -1,    -1,    -1,
-      82,    83,    -1,    85,    86,    87,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    96,   287,    -1,    24,    -1,    -1,
-      -1,    28,    29,    -1,    31,    32,    33,    34,   300,    -1,
-      -1,    38,    39,    40,    41,    42,    -1,   309,    45,    -1,
-      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
-      -1,    58,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   335,   336,    -1,     0,     1,   340,    -1,
-      -1,    -1,    -1,    -1,    -1,    82,    83,    84,    -1,    -1,
-      -1,   353,    -1,    -1,    -1,    -1,    -1,   359,    -1,    96,
-      24,    -1,    -1,    27,    28,    -1,   368,    31,    32,    33,
-      34,    -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
-      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,     0,
-       1,    55,    -1,    -1,    -1,    59,    60,    61,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    24,    -1,    -1,    -1,    28,    82,    83,
-      31,    32,    33,    34,     1,    -1,    -1,    38,    39,    40,
-      41,    42,    96,    -1,    -1,    -1,    47,    -1,    -1,    50,
-      51,    52,    -1,    -1,    55,    -1,    -1,    24,    59,    60,
-      61,    28,    -1,    -1,    31,    32,    33,    34,    -1,    -1,
+      -1,   294,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,
+      -1,    -1,    -1,   306,   307,   308,   309,    24,    -1,    -1,
+      27,    28,    -1,    -1,    31,    32,    33,    34,    -1,    -1,
       -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
-      47,    82,    83,    50,    51,    52,    -1,    -1,    55,    -1,
-      -1,    -1,    59,    60,    61,    96,    -1,    -1,    -1,    -1,
-       1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    82,    83,    -1,    -1,    -1,
-      87,    -1,    -1,    24,    -1,    -1,    -1,    28,    -1,    96,
-      31,    32,    33,    34,    -1,    -1,    -1,    38,    39,    40,
-      41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
-      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,
-      61,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      47,    -1,    -1,    50,    51,    52,     0,     1,    55,    -1,
+      -1,    -1,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    82,    83,    -1,    24,    86,    -1,    -1,    28,    -1,
-      -1,    31,    32,    33,    34,    96,    -1,    -1,    38,    39,
-      40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,
+      24,    -1,    -1,    -1,    28,    82,    83,    31,    32,    33,
+      34,     1,    -1,    -1,    38,    39,    40,    41,    42,    96,
+      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
+      -1,    55,    -1,    -1,    24,    59,    60,    61,    28,    -1,
+      -1,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
+      40,    41,    42,    -1,    -1,    -1,    -1,    47,    82,    83,
       50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,
-      60,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      60,    61,    96,    -1,    -1,    -1,    -1,     1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    82,    83,    -1,    85,    -1,    -1,    -1,    -1,
-      14,    -1,    -1,    17,    18,    -1,    96,    21,    22,    23,
-      24,    25,    26,    -1,    -1,    -1,    30,    31,    32,    33,
-      34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,
-      -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,    26,    -1,    -1,    68,    30,    31,    32,    33,    34,
-      -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,
-      -1,    46,    47,    48,    49,    -1,    -1,    91,    92,    -1,
-      -1,    -1,    -1,    97,    -1,    -1,   100,    -1,   102,    -1,
-      -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,
-      75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    -1,    -1,
-      14,    -1,    97,    17,    18,   100,    -1,    21,    22,    23,
-      24,    25,    26,    -1,    -1,    -1,    30,    31,    32,    33,
-      34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    46,    14,    48,    -1,    17,    18,    -1,    20,
-      21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    30,
-      31,    32,    33,    34,    68,    -1,    -1,    -1,    -1,    -1,
-      -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    -1,
-      -1,    -1,    -1,    97,    -1,    -1,   100,    68,    -1,    -1,
-      -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,    -1,
+      24,    -1,    -1,    -1,    28,    -1,    96,    31,    32,    33,
+      34,     1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
+      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
+      -1,    55,    -1,    -1,    24,    59,    60,    61,    28,    -1,
+      -1,    31,    32,    33,    34,    -1,    -1,    -1,    38,    39,
+      40,    41,    42,    -1,    -1,    -1,    -1,    47,    82,    83,
+      50,    51,    52,    87,    -1,    55,    -1,    -1,    -1,    59,
+      60,    61,    96,    -1,    -1,    -1,    -1,     1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      91,    92,    -1,    -1,    14,    -1,    97,    17,    18,   100,
-      -1,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
-      30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
-      14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    26,    -1,    -1,    -1,    30,    31,    32,    33,
-      34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
-      -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,
+      -1,    -1,    82,    83,    -1,    -1,    86,    -1,    -1,    -1,
+      24,    -1,    -1,    -1,    28,    -1,    96,    31,    32,    33,
+      34,    -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
+      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
+      -1,    55,    -1,    -1,    -1,    59,    60,    61,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    91,    92,    -1,    68,    -1,    -1,    97,    -1,    -1,
-     100,    75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    35,    -1,    91,    92,    -1,
-      -1,    14,    -1,    97,    17,    18,   100,    -1,    21,    22,
-      23,    24,    25,    26,    -1,    -1,    -1,    30,    31,    32,
-      33,    34,    62,    63,    64,    65,    66,    67,    -1,    69,
-      -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      90,    91,    92,    93,    94,    68,    44,    -1,    -1,    -1,
-      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
-      -1,    69,    70,    71,    72,    73,    74,   100,    -1,    -1,
-      -1,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    90,    91,    92,    93,    94,    62,    63,    64,
-      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
-      -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
-      -1,    -1,    54,    88,    89,    90,    91,    92,    93,    94,
-      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
-      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,
-      -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,    91,
-      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    88,
-      89,    90,    91,    92,    93,    94,    62,    63,    64,    65,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,
+      -1,    85,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,
+      18,    -1,    96,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    -1,    30,    31,    32,    33,    34,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
+      48,    49,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,    26,    -1,    -1,
+      68,    30,    31,    32,    33,    34,    -1,    75,    76,    77,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    46,    -1,    48,
+      -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,    97,
+      -1,    -1,   100,    -1,    -1,    -1,    -1,    -1,    -1,    68,
+      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    91,    92,    -1,    -1,    14,    -1,    97,    17,
+      18,   100,    20,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    -1,    30,    31,    32,    33,    34,    -1,    -1,    -1,
+      -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    -1,    -1,    -1,    30,    31,
+      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    91,    92,    -1,    68,    -1,    -1,    97,
+      -1,    -1,   100,    75,    76,    77,    78,    79,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,
+      92,    -1,    -1,    14,    -1,    97,    17,    18,   100,    -1,
+      21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    30,
+      31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    14,
+      -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
+      25,    26,    -1,    -1,    -1,    30,    31,    32,    33,    34,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
+      -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,    35,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      91,    92,    -1,    68,    -1,    -1,    97,    -1,    -1,   100,
+      75,    76,    77,    78,    79,    -1,    62,    63,    64,    65,
       66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
-      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
-      -1,    54,    88,    89,    90,    91,    92,    93,    94,    62,
-      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,
+      -1,    44,    -1,    -1,    -1,   100,    -1,    -1,    -1,    -1,
+      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    62,
+      63,    64,    65,    66,    67,    -1,    69,    70,    71,    72,
+      73,    74,    -1,    -1,    -1,    -1,    46,    -1,    48,    -1,
       -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
       93,    94,    62,    63,    64,    65,    66,    67,    -1,    69,
       -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
-      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
+      -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,
       90,    91,    92,    93,    94,    62,    63,    64,    65,    66,
       67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,
       -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
-      -1,    88,    89,    90,    91,    92,    93,    94,    62,    63,
+      54,    88,    89,    90,    91,    92,    93,    94,    62,    63,
       64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
       74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
+      -1,    -1,    -1,    54,    88,    89,    90,    91,    92,    93,
       94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
       -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,
+      48,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,
       91,    92,    93,    94,    62,    63,    64,    65,    66,    67,
       -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    90,    91,    92,    93,    94,    56,    96,    -1,
-      -1,    -1,    -1,    62,    63,    64,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    62,    63,    64,    65,
-      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    88,
-      89,    90,    91,    92,    93,    94,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    -1,
-      -1,    -1,    98,    62,    63,    64,    65,    66,    67,    -1,
+      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+      88,    89,    90,    91,    92,    93,    94,    62,    63,    64,
+      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
+      -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
+      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
+      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
       69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    80,    81,    -1,    -1,    -1,    -1,    -1,    -1,    88,
+      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    88,
       89,    90,    91,    92,    93,    94,    62,    63,    64,    65,
-      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    62,
-      63,    64,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
-      73,    74,    88,    89,    90,    91,    92,    93,    94,    -1,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    54,    88,    89,    90,    91,    92,    93,    94,    62,
+      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
+      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
-      93,    94
+      93,    94,    56,    96,    -1,    -1,    -1,    -1,    62,    63,
+      64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
+      74,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
+      -1,    72,    73,    74,    88,    89,    90,    91,    92,    93,
+      94,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
+      91,    92,    93,    94,    -1,    -1,    -1,    98,    99,    62,
+      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
+      73,    74,    62,    63,    64,    65,    66,    67,    -1,    69,
+      -1,    -1,    72,    73,    74,    88,    89,    90,    91,    92,
+      93,    94,    -1,    -1,    -1,    -1,    99,    -1,    88,    89,
+      90,    91,    92,    93,    94,    -1,    -1,    -1,    -1,    99,
+      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
+      92,    93,    94,    -1,    -1,    -1,    98,    62,    63,    64,
+      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
+      -1,    -1,    -1,    -1,    -1,    80,    81,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
+      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
+      72,    73,    74,    62,    63,    64,    65,    -1,    -1,    -1,
+      69,    -1,    -1,    72,    73,    74,    88,    89,    90,    91,
+      92,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    88,
+      89,    90,    91,    92,    93,    94
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1355,38 +1364,39 @@ static const yytype_uint8 yystos[] =
       96,   148,   151,    51,   138,    14,    17,    18,    21,    22,
       23,    25,    26,    30,    31,    32,    33,    34,    46,    47,
       48,    49,    68,    75,    76,    77,    78,    79,    91,    92,
-      97,   100,   106,   131,   133,   134,   135,   136,   146,   159,
+      97,   100,   106,   131,   133,   134,   135,   136,   146,   160,
      150,    51,    20,   134,    56,    57,    17,    18,    19,    30,
      106,   106,   106,   134,   134,   146,   140,   134,   139,   153,
-       0,    96,    97,   134,   157,   134,   128,   157,   128,   106,
+       0,    96,    97,   134,   158,   134,   128,   158,   128,   106,
      142,   133,    48,   133,   131,   131,   131,   131,   134,    46,
      133,   134,   134,   134,   134,   134,   133,   133,   134,    25,
-      26,   102,   106,   134,   160,   161,   162,   163,    97,    62,
+      26,   102,   106,   134,   161,   162,   163,   164,    97,    62,
       63,    64,    65,    66,    67,    69,    72,    73,    74,    88,
       89,    90,    91,    92,    93,    94,   146,   106,   106,    44,
       70,    71,   106,   128,    54,    64,   133,   133,    54,    64,
       54,    64,    53,    56,   146,   106,   144,    54,    96,   106,
-     143,   106,   105,   106,   134,   157,    99,   124,   106,   154,
-     154,    99,   133,   134,    48,    54,    48,    54,    48,    54,
-      48,    54,    80,    81,    98,   102,   102,   102,   101,    99,
-      99,   106,   157,   134,   134,   134,   134,   134,   134,   134,
+     143,   106,   105,   106,   134,   158,    99,   124,   106,   154,
+     155,   155,    99,   133,   134,    48,    54,    48,    54,    48,
+      54,    48,    54,    80,    81,    98,   102,   102,   102,   101,
+      99,    99,   106,   158,   134,   134,   134,   134,   134,   134,
      134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     128,   133,   106,   135,   106,   135,   106,   135,    43,    64,
-     134,   134,   134,    54,    64,    48,   134,   134,   134,   134,
-     134,   134,    99,   120,   120,    99,    98,    99,    98,   134,
-      53,    96,    99,    96,   106,   133,   134,   133,   134,   133,
-     134,   133,   134,   133,   133,   134,   134,   134,   134,    25,
-      26,   106,   163,    98,    99,    98,   154,    44,   134,   134,
-     124,   134,   134,   106,   106,   108,   109,   129,   130,   106,
-     141,   129,   156,   106,   156,    48,    48,    48,    48,   132,
-      96,   134,   116,   110,   113,   119,   133,   128,   128,    96,
-     134,   158,   125,   129,   129,   133,   133,   133,   133,   158,
-     156,   128,   126,   126,   129,    54,    64,    87,   129,    98,
-      99,   122,    27,    98,   129,   117,   111,   114,   125,   134,
-     134,   134,    36,    37,   123,   128,   106,   155,   124,    54,
-      35,    86,   129,   134,    85,    99,   118,   134,    54,   128,
-     124,   106,   119,   112,   134,    85,    53,   129,   124,   115,
-     129,    86,   119,   124,   125,   129,   119,    86,   129,    86
+     134,   128,   133,   106,   135,   106,   135,   106,   135,    43,
+      64,   134,   134,   134,    54,    64,    48,   134,   134,   134,
+     134,   134,   134,    99,   120,   120,    99,    98,    99,    98,
+     158,    53,    99,    96,    96,   142,   133,   134,   133,   134,
+     133,   134,   133,   134,   133,   133,   134,   134,   134,   134,
+      25,    26,   106,   164,    98,    99,    98,   155,    44,   134,
+     134,   124,   134,   134,   106,   144,   108,   109,   129,   130,
+     143,   141,   129,   155,   157,   157,    48,    48,    48,    48,
+     132,    96,   134,   116,   110,   113,   119,   133,   128,   128,
+      96,   134,   159,   125,   129,   129,   133,   133,   133,   133,
+     159,   157,   128,   126,   126,   129,    54,    64,    87,   129,
+      99,    98,   122,    27,    98,   129,   117,   111,   114,   125,
+     134,   134,   159,    36,    37,   123,   128,   106,   156,   124,
+      54,    35,    86,   129,   134,    85,    99,   118,   134,    54,
+     128,   124,   106,   119,   112,   134,    85,    53,   129,   124,
+     115,   129,    86,   119,   124,   125,   129,   119,    86,   129,
+      86
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1406,12 +1416,12 @@ static const yytype_uint8 yyr1[] =
      135,   135,   135,   135,   135,   135,   135,   136,   136,   136,
      136,   137,   137,   137,   137,   137,   138,   137,   139,   137,
      140,   137,   137,   137,   137,   141,   137,   137,   137,   142,
-     142,   143,   143,   144,   144,   145,   145,   145,   145,   145,
-     145,   146,   146,   147,   147,   147,   148,   147,   150,   149,
-     149,   151,   149,   149,   149,   153,   152,   154,   154,   154,
-     155,   155,   155,   156,   157,   157,   157,   158,   158,   159,
-     160,   160,   160,   160,   161,   161,   162,   162,   163,   163,
-     163
+     142,   142,   143,   143,   143,   144,   144,   144,   145,   145,
+     145,   145,   145,   145,   146,   146,   147,   147,   147,   148,
+     147,   150,   149,   149,   151,   149,   149,   149,   153,   152,
+     154,   155,   155,   155,   156,   156,   156,   157,   158,   158,
+     158,   159,   159,   159,   160,   161,   161,   161,   161,   162,
+     162,   163,   163,   164,   164,   164
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1430,13 +1440,13 @@ static const yytype_int8 yyr2[] =
        3,     3,     3,     3,     3,     3,     3,     3,     2,     4,
        6,     4,     6,     4,     6,     4,     6,     1,     2,     2,
        2,     2,     1,     1,     2,     1,     0,     3,     0,     3,
-       0,     3,     4,     2,     4,     0,     7,     4,     2,     1,
-       3,     1,     3,     1,     3,     1,     2,     2,     2,     3,
-       2,     3,     2,     2,     3,     2,     0,     3,     0,     8,
-       2,     0,     7,     8,     6,     0,     3,     0,     1,     3,
-       0,     1,     3,     0,     0,     1,     3,     1,     3,     3,
-       0,     1,     1,     1,     1,     3,     1,     3,     3,     3,
-       3
+       0,     3,     4,     2,     4,     0,     7,     4,     2,     0,
+       1,     3,     0,     1,     3,     0,     1,     3,     1,     2,
+       2,     2,     3,     2,     3,     2,     2,     3,     2,     0,
+       3,     0,     8,     2,     0,     7,     8,     6,     0,     3,
+       1,     0,     1,     3,     0,     1,     3,     0,     0,     1,
+       3,     1,     2,     3,     3,     0,     1,     1,     1,     1,
+       3,     1,     3,     3,     3,     3
 };
 
 
@@ -1710,61 +1720,61 @@ yydestruct (const char *yymsg,
     case YYSYMBOL_THEFUNC: /* THEFUNC  */
 #line 228 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1714 "engines/director/lingo/lingo-gr.cpp"
+#line 1724 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_THEFUNCINOF: /* THEFUNCINOF  */
 #line 228 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1720 "engines/director/lingo/lingo-gr.cpp"
+#line 1730 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_VARID: /* VARID  */
 #line 228 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1726 "engines/director/lingo/lingo-gr.cpp"
+#line 1736 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_STRING: /* STRING  */
 #line 228 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1732 "engines/director/lingo/lingo-gr.cpp"
+#line 1742 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_SYMBOL: /* SYMBOL  */
 #line 228 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1738 "engines/director/lingo/lingo-gr.cpp"
+#line 1748 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_ENDCLAUSE: /* ENDCLAUSE  */
 #line 228 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1744 "engines/director/lingo/lingo-gr.cpp"
+#line 1754 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_tPLAYACCEL: /* tPLAYACCEL  */
 #line 228 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1750 "engines/director/lingo/lingo-gr.cpp"
+#line 1760 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_tMETHOD: /* tMETHOD  */
 #line 228 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1756 "engines/director/lingo/lingo-gr.cpp"
+#line 1766 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_ID: /* ID  */
 #line 228 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1762 "engines/director/lingo/lingo-gr.cpp"
+#line 1772 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_on: /* on  */
 #line 228 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1768 "engines/director/lingo/lingo-gr.cpp"
+#line 1778 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2032,25 +2042,25 @@ yyreduce:
   case 8: /* ID: tCAST  */
 #line 240 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("cast"); }
-#line 2036 "engines/director/lingo/lingo-gr.cpp"
+#line 2046 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9: /* ID: tFIELD  */
 #line 241 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("field"); }
-#line 2042 "engines/director/lingo/lingo-gr.cpp"
+#line 2052 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10: /* ID: tSCRIPT  */
 #line 242 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("script"); }
-#line 2048 "engines/director/lingo/lingo-gr.cpp"
+#line 2058 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11: /* ID: tWINDOW  */
 #line 243 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("window"); }
-#line 2054 "engines/director/lingo/lingo-gr.cpp"
+#line 2064 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12: /* asgn: tPUT expr tINTO ID  */
@@ -2062,7 +2072,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2066 "engines/director/lingo/lingo-gr.cpp"
+#line 2076 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13: /* asgn: tPUT expr tINTO chunkexpr  */
@@ -2070,7 +2080,7 @@ yyreduce:
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2074 "engines/director/lingo/lingo-gr.cpp"
+#line 2084 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14: /* asgn: tPUT THEMENUITEMSENTITY ID simpleexpr tINTO expr  */
@@ -2086,7 +2096,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2090 "engines/director/lingo/lingo-gr.cpp"
+#line 2100 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15: /* asgn: tPUT expr tAFTER ID  */
@@ -2098,7 +2108,7 @@ yyreduce:
 		g_lingo->code1(LC::c_putafter);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2102 "engines/director/lingo/lingo-gr.cpp"
+#line 2112 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16: /* asgn: tPUT expr tAFTER chunkexpr  */
@@ -2106,7 +2116,7 @@ yyreduce:
                                         {
 		g_lingo->code1(LC::c_putafter);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2110 "engines/director/lingo/lingo-gr.cpp"
+#line 2120 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17: /* asgn: tPUT expr tBEFORE ID  */
@@ -2118,7 +2128,7 @@ yyreduce:
 		g_lingo->code1(LC::c_putbefore);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2122 "engines/director/lingo/lingo-gr.cpp"
+#line 2132 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18: /* asgn: tPUT expr tBEFORE chunkexpr  */
@@ -2126,7 +2136,7 @@ yyreduce:
                                         {
 		g_lingo->code1(LC::c_putbefore);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2130 "engines/director/lingo/lingo-gr.cpp"
+#line 2140 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19: /* asgn: tSET ID tEQ expr  */
@@ -2138,7 +2148,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2142 "engines/director/lingo/lingo-gr.cpp"
+#line 2152 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20: /* asgn: tSET THEENTITY tEQ expr  */
@@ -2150,7 +2160,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2154 "engines/director/lingo/lingo-gr.cpp"
+#line 2164 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 21: /* asgn: tSET ID tTO expr  */
@@ -2162,7 +2172,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2166 "engines/director/lingo/lingo-gr.cpp"
+#line 2176 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 22: /* asgn: tSET THEENTITY tTO expr  */
@@ -2174,7 +2184,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2178 "engines/director/lingo/lingo-gr.cpp"
+#line 2188 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 23: /* asgn: tSET THEENTITYWITHID simpleexpr tTO expr  */
@@ -2185,7 +2195,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2189 "engines/director/lingo/lingo-gr.cpp"
+#line 2199 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 24: /* asgn: tSET THEENTITYWITHID simpleexpr tEQ expr  */
@@ -2196,7 +2206,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2200 "engines/director/lingo/lingo-gr.cpp"
+#line 2210 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 25: /* asgn: tSET THEMENUITEMENTITY simpleexpr tOF ID simpleexpr tTO expr  */
@@ -2212,7 +2222,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2216 "engines/director/lingo/lingo-gr.cpp"
+#line 2226 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 26: /* asgn: tSET THEMENUITEMENTITY simpleexpr tOF ID simpleexpr tEQ expr  */
@@ -2228,7 +2238,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2232 "engines/director/lingo/lingo-gr.cpp"
+#line 2242 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 27: /* asgn: tSET THEOBJECTPROP tTO expr  */
@@ -2240,7 +2250,7 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2244 "engines/director/lingo/lingo-gr.cpp"
+#line 2254 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 28: /* asgn: tSET THEOBJECTPROP tEQ expr  */
@@ -2252,7 +2262,7 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2256 "engines/director/lingo/lingo-gr.cpp"
+#line 2266 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33: /* stmt: tREPEAT tWHILE lbl expr jumpifz startrepeat stmtlist jump tENDREPEAT  */
@@ -2264,7 +2274,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start;	/* looping back */
 		endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code));	}
-#line 2268 "engines/director/lingo/lingo-gr.cpp"
+#line 2278 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34: /* $@1: %empty  */
@@ -2272,20 +2282,20 @@ yyreduce:
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2276 "engines/director/lingo/lingo-gr.cpp"
+#line 2286 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35: /* $@2: %empty  */
 #line 391 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2283 "engines/director/lingo/lingo-gr.cpp"
+#line 2293 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36: /* $@3: %empty  */
 #line 394 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2289 "engines/director/lingo/lingo-gr.cpp"
+#line 2299 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37: /* stmt: tREPEAT tWITH ID tEQ expr $@1 varassign $@2 tTO expr $@3 jumpifz startrepeat stmtlist tENDREPEAT  */
@@ -2310,7 +2320,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2314 "engines/director/lingo/lingo-gr.cpp"
+#line 2324 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38: /* $@4: %empty  */
@@ -2318,20 +2328,20 @@ yyreduce:
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2322 "engines/director/lingo/lingo-gr.cpp"
+#line 2332 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39: /* $@5: %empty  */
 #line 425 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2329 "engines/director/lingo/lingo-gr.cpp"
+#line 2339 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40: /* $@6: %empty  */
 #line 428 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2335 "engines/director/lingo/lingo-gr.cpp"
+#line 2345 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41: /* stmt: tREPEAT tWITH ID tEQ expr $@4 varassign $@5 tDOWN tTO expr $@6 jumpifz startrepeat stmtlist tENDREPEAT  */
@@ -2356,7 +2366,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2360 "engines/director/lingo/lingo-gr.cpp"
+#line 2370 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42: /* $@7: %empty  */
@@ -2367,7 +2377,7 @@ yyreduce:
 				  g_lingo->codeFunc(&count, 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2371 "engines/director/lingo/lingo-gr.cpp"
+#line 2381 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43: /* $@8: %empty  */
@@ -2377,7 +2387,7 @@ yyreduce:
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2381 "engines/director/lingo/lingo-gr.cpp"
+#line 2391 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44: /* $@9: %empty  */
@@ -2392,7 +2402,7 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), globalCheck());
 				  g_lingo->code1(LC::c_assign); }
-#line 2396 "engines/director/lingo/lingo-gr.cpp"
+#line 2406 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45: /* stmt: tREPEAT tWITH ID tIN expr $@7 lbl $@8 jumpifz $@9 startrepeat stmtlist tENDREPEAT  */
@@ -2416,7 +2426,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		endRepeat(end2, nextPos); }
-#line 2420 "engines/director/lingo/lingo-gr.cpp"
+#line 2430 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46: /* stmt: tNEXT tREPEAT  */
@@ -2429,7 +2439,7 @@ yyreduce:
 		} else {
 			warning("# LINGO: next repeat not inside repeat block");
 		} }
-#line 2433 "engines/director/lingo/lingo-gr.cpp"
+#line 2443 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47: /* stmt: tWHEN ID tTHEN expr  */
@@ -2437,37 +2447,37 @@ yyreduce:
                                 {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2441 "engines/director/lingo/lingo-gr.cpp"
+#line 2451 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48: /* stmt: tTELL expr '\n' tellstart stmtlist lbl tENDTELL  */
 #line 509 "engines/director/lingo/lingo-gr.y"
                                                           { g_lingo->code1(LC::c_telldone); }
-#line 2447 "engines/director/lingo/lingo-gr.cpp"
+#line 2457 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49: /* stmt: tTELL expr tTO tellstart stmtoneliner lbl  */
 #line 510 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->code1(LC::c_telldone); }
-#line 2453 "engines/director/lingo/lingo-gr.cpp"
+#line 2463 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50: /* stmt: error '\n'  */
 #line 511 "engines/director/lingo/lingo-gr.y"
                                         { yyerrok; }
-#line 2459 "engines/director/lingo/lingo-gr.cpp"
+#line 2469 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51: /* startrepeat: %empty  */
 #line 513 "engines/director/lingo/lingo-gr.y"
                                 { startRepeat(); }
-#line 2465 "engines/director/lingo/lingo-gr.cpp"
+#line 2475 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52: /* tellstart: %empty  */
 #line 515 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_tell); }
-#line 2471 "engines/director/lingo/lingo-gr.cpp"
+#line 2481 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53: /* ifstmt: if expr jumpifz tTHEN stmtlist jump elseifstmtlist lbl tENDIF  */
@@ -2479,7 +2489,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2483 "engines/director/lingo/lingo-gr.cpp"
+#line 2493 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54: /* ifstmt: if expr jumpifz tTHEN stmtlist jump elseifstmtlist tELSE stmtlist lbl tENDIF  */
@@ -2491,7 +2501,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); }
-#line 2495 "engines/director/lingo/lingo-gr.cpp"
+#line 2505 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57: /* elseifstmt: tELSIF expr jumpifz tTHEN stmtlist jump  */
@@ -2501,7 +2511,7 @@ yyreduce:
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2505 "engines/director/lingo/lingo-gr.cpp"
+#line 2515 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58: /* jumpifz: %empty  */
@@ -2509,7 +2519,7 @@ yyreduce:
                                 {
 		g_lingo->code2(LC::c_jumpifz, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2513 "engines/director/lingo/lingo-gr.cpp"
+#line 2523 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59: /* jump: %empty  */
@@ -2517,7 +2527,7 @@ yyreduce:
                                 {
 		g_lingo->code2(LC::c_jump, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2521 "engines/director/lingo/lingo-gr.cpp"
+#line 2531 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60: /* varassign: %empty  */
@@ -2525,20 +2535,20 @@ yyreduce:
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2529 "engines/director/lingo/lingo-gr.cpp"
+#line 2539 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61: /* if: tIF  */
 #line 553 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2536 "engines/director/lingo/lingo-gr.cpp"
+#line 2546 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62: /* lbl: %empty  */
 #line 556 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2542 "engines/director/lingo/lingo-gr.cpp"
+#line 2552 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67: /* simpleexprnoparens: INT  */
@@ -2546,7 +2556,7 @@ yyreduce:
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2550 "engines/director/lingo/lingo-gr.cpp"
+#line 2560 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68: /* simpleexprnoparens: FLOAT  */
@@ -2554,7 +2564,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2558 "engines/director/lingo/lingo-gr.cpp"
+#line 2568 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69: /* simpleexprnoparens: SYMBOL  */
@@ -2563,7 +2573,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2567 "engines/director/lingo/lingo-gr.cpp"
+#line 2577 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70: /* simpleexprnoparens: STRING  */
@@ -2572,25 +2582,25 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2576 "engines/director/lingo/lingo-gr.cpp"
+#line 2586 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71: /* simpleexprnoparens: '+' simpleexpr  */
 #line 578 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[0].code); }
-#line 2582 "engines/director/lingo/lingo-gr.cpp"
+#line 2592 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72: /* simpleexprnoparens: '-' simpleexpr  */
 #line 579 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2588 "engines/director/lingo/lingo-gr.cpp"
+#line 2598 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73: /* simpleexprnoparens: tNOT simpleexpr  */
 #line 580 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_not); }
-#line 2594 "engines/director/lingo/lingo-gr.cpp"
+#line 2604 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75: /* simpleexprnoparens: THEENTITY  */
@@ -2603,7 +2613,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2607 "engines/director/lingo/lingo-gr.cpp"
+#line 2617 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76: /* simpleexprnoparens: THEENTITYWITHID simpleexpr  */
@@ -2614,7 +2624,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2618 "engines/director/lingo/lingo-gr.cpp"
+#line 2628 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77: /* simpleexprnoparens: THEFUNCINOF simpleexpr  */
@@ -2622,7 +2632,7 @@ yyreduce:
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2626 "engines/director/lingo/lingo-gr.cpp"
+#line 2636 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78: /* simpleexprnoparens: THEFUNC tOF simpleexpr  */
@@ -2630,7 +2640,7 @@ yyreduce:
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2634 "engines/director/lingo/lingo-gr.cpp"
+#line 2644 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79: /* simpleexprnoparens: THEOBJECTPROP  */
@@ -2641,19 +2651,19 @@ yyreduce:
 		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
 		delete (yyvsp[0].objectprop).obj;
 		delete (yyvsp[0].objectprop).prop; }
-#line 2645 "engines/director/lingo/lingo-gr.cpp"
+#line 2655 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80: /* simpleexprnoparens: tSPRITE expr tINTERSECTS simpleexpr  */
 #line 608 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2651 "engines/director/lingo/lingo-gr.cpp"
+#line 2661 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81: /* simpleexprnoparens: tSPRITE expr tWITHIN simpleexpr  */
 #line 609 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 2657 "engines/director/lingo/lingo-gr.cpp"
+#line 2667 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83: /* simpleexprnoparens: ID '(' ID ')'  */
@@ -2664,13 +2674,13 @@ yyreduce:
 			g_lingo->codeFunc((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2668 "engines/director/lingo/lingo-gr.cpp"
+#line 2678 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84: /* $@10: %empty  */
 #line 617 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2674 "engines/director/lingo/lingo-gr.cpp"
+#line 2684 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85: /* simpleexprnoparens: ID '(' ID ',' $@10 nonemptyarglist ')'  */
@@ -2679,7 +2689,7 @@ yyreduce:
 			g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 2683 "engines/director/lingo/lingo-gr.cpp"
+#line 2693 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86: /* simpleexprnoparens: ID '(' arglist ')'  */
@@ -2687,7 +2697,7 @@ yyreduce:
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2691 "engines/director/lingo/lingo-gr.cpp"
+#line 2701 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87: /* simpleexprnoparens: ID  */
@@ -2700,121 +2710,121 @@ yyreduce:
 		}
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2704 "engines/director/lingo/lingo-gr.cpp"
+#line 2714 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89: /* simpleexpr: '(' expr ')'  */
 #line 635 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2710 "engines/director/lingo/lingo-gr.cpp"
+#line 2720 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90: /* expr: simpleexpr  */
 #line 637 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2716 "engines/director/lingo/lingo-gr.cpp"
+#line 2726 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91: /* expr: expr '+' expr  */
 #line 638 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2722 "engines/director/lingo/lingo-gr.cpp"
+#line 2732 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92: /* expr: expr '-' expr  */
 #line 639 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2728 "engines/director/lingo/lingo-gr.cpp"
+#line 2738 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93: /* expr: expr '*' expr  */
 #line 640 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2734 "engines/director/lingo/lingo-gr.cpp"
+#line 2744 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94: /* expr: expr '/' expr  */
 #line 641 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2740 "engines/director/lingo/lingo-gr.cpp"
+#line 2750 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95: /* expr: expr tMOD expr  */
 #line 642 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2746 "engines/director/lingo/lingo-gr.cpp"
+#line 2756 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96: /* expr: expr '>' expr  */
 #line 643 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2752 "engines/director/lingo/lingo-gr.cpp"
+#line 2762 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97: /* expr: expr '<' expr  */
 #line 644 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2758 "engines/director/lingo/lingo-gr.cpp"
+#line 2768 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98: /* expr: expr tEQ expr  */
 #line 645 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2764 "engines/director/lingo/lingo-gr.cpp"
+#line 2774 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99: /* expr: expr tNEQ expr  */
 #line 646 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2770 "engines/director/lingo/lingo-gr.cpp"
+#line 2780 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100: /* expr: expr tGE expr  */
 #line 647 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2776 "engines/director/lingo/lingo-gr.cpp"
+#line 2786 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101: /* expr: expr tLE expr  */
 #line 648 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2782 "engines/director/lingo/lingo-gr.cpp"
+#line 2792 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102: /* expr: expr tAND expr  */
 #line 649 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2788 "engines/director/lingo/lingo-gr.cpp"
+#line 2798 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103: /* expr: expr tOR expr  */
 #line 650 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2794 "engines/director/lingo/lingo-gr.cpp"
+#line 2804 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104: /* expr: expr '&' expr  */
 #line 651 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2800 "engines/director/lingo/lingo-gr.cpp"
+#line 2810 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105: /* expr: expr tCONCAT expr  */
 #line 652 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2806 "engines/director/lingo/lingo-gr.cpp"
+#line 2816 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106: /* expr: expr tCONTAINS expr  */
 #line 653 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2812 "engines/director/lingo/lingo-gr.cpp"
+#line 2822 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107: /* expr: expr tSTARTS expr  */
 #line 654 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2818 "engines/director/lingo/lingo-gr.cpp"
+#line 2828 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108: /* chunkexpr: tFIELD simpleexprnoparens  */
@@ -2822,55 +2832,55 @@ yyreduce:
                                         {
 		Common::String field("field");
 		g_lingo->codeFunc(&field, 1); }
-#line 2826 "engines/director/lingo/lingo-gr.cpp"
+#line 2836 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109: /* chunkexpr: tCHAR expr tOF simpleexpr  */
 #line 659 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_charOf); }
-#line 2832 "engines/director/lingo/lingo-gr.cpp"
+#line 2842 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110: /* chunkexpr: tCHAR expr tTO expr tOF simpleexpr  */
 #line 660 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2838 "engines/director/lingo/lingo-gr.cpp"
+#line 2848 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 111: /* chunkexpr: tITEM expr tOF simpleexpr  */
 #line 661 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 2844 "engines/director/lingo/lingo-gr.cpp"
+#line 2854 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112: /* chunkexpr: tITEM expr tTO expr tOF simpleexpr  */
 #line 662 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2850 "engines/director/lingo/lingo-gr.cpp"
+#line 2860 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113: /* chunkexpr: tLINE expr tOF simpleexpr  */
 #line 663 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 2856 "engines/director/lingo/lingo-gr.cpp"
+#line 2866 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114: /* chunkexpr: tLINE expr tTO expr tOF simpleexpr  */
 #line 664 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2862 "engines/director/lingo/lingo-gr.cpp"
+#line 2872 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115: /* chunkexpr: tWORD expr tOF simpleexpr  */
 #line 665 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 2868 "engines/director/lingo/lingo-gr.cpp"
+#line 2878 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116: /* chunkexpr: tWORD expr tTO expr tOF simpleexpr  */
 #line 666 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2874 "engines/director/lingo/lingo-gr.cpp"
+#line 2884 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118: /* reference: tCAST simpleexprnoparens  */
@@ -2878,7 +2888,7 @@ yyreduce:
                                                 {
 		Common::String cast("cast");
 		g_lingo->codeFunc(&cast, 1); }
-#line 2882 "engines/director/lingo/lingo-gr.cpp"
+#line 2892 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119: /* reference: tSCRIPT simpleexprnoparens  */
@@ -2886,7 +2896,7 @@ yyreduce:
                                         {
 		Common::String script("script");
 		g_lingo->codeFunc(&script, 1); }
-#line 2890 "engines/director/lingo/lingo-gr.cpp"
+#line 2900 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120: /* reference: tWINDOW simpleexprnoparens  */
@@ -2894,13 +2904,13 @@ yyreduce:
                                         {
 		Common::String window("window");
 		g_lingo->codeFunc(&window, 1); }
-#line 2898 "engines/director/lingo/lingo-gr.cpp"
+#line 2908 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121: /* proc: tPUT expr  */
 #line 679 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 2904 "engines/director/lingo/lingo-gr.cpp"
+#line 2914 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124: /* proc: tEXIT tREPEAT  */
@@ -2913,49 +2923,49 @@ yyreduce:
 		} else {
 			warning("# LINGO: exit repeat not inside repeat block");
 		} }
-#line 2917 "engines/director/lingo/lingo-gr.cpp"
+#line 2927 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125: /* proc: tEXIT  */
 #line 690 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 2923 "engines/director/lingo/lingo-gr.cpp"
+#line 2933 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126: /* $@11: %empty  */
 #line 691 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 2929 "engines/director/lingo/lingo-gr.cpp"
+#line 2939 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127: /* proc: tGLOBAL $@11 globallist  */
 #line 691 "engines/director/lingo/lingo-gr.y"
                                                                                  { inLast(); }
-#line 2935 "engines/director/lingo/lingo-gr.cpp"
+#line 2945 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128: /* $@12: %empty  */
 #line 692 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 2941 "engines/director/lingo/lingo-gr.cpp"
+#line 2951 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129: /* proc: tPROPERTY $@12 propertylist  */
 #line 692 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 2947 "engines/director/lingo/lingo-gr.cpp"
+#line 2957 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130: /* $@13: %empty  */
 #line 693 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 2953 "engines/director/lingo/lingo-gr.cpp"
+#line 2963 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131: /* proc: tINSTANCE $@13 instancelist  */
 #line 693 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 2959 "engines/director/lingo/lingo-gr.cpp"
+#line 2969 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132: /* proc: tOPEN expr tWITH expr  */
@@ -2963,7 +2973,7 @@ yyreduce:
                                         {
 		Common::String open("open");
 		g_lingo->codeCmd(&open, 2); }
-#line 2967 "engines/director/lingo/lingo-gr.cpp"
+#line 2977 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133: /* proc: tOPEN expr  */
@@ -2971,7 +2981,7 @@ yyreduce:
                                                 {
 		Common::String open("open");
 		g_lingo->codeCmd(&open, 1); }
-#line 2975 "engines/director/lingo/lingo-gr.cpp"
+#line 2985 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134: /* proc: ID '(' ID ')'  */
@@ -2982,13 +2992,13 @@ yyreduce:
 			g_lingo->codeCmd((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2986 "engines/director/lingo/lingo-gr.cpp"
+#line 2996 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135: /* $@14: %empty  */
 #line 706 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2992 "engines/director/lingo/lingo-gr.cpp"
+#line 3002 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136: /* proc: ID '(' ID ',' $@14 nonemptyarglist ')'  */
@@ -2997,7 +3007,7 @@ yyreduce:
 			g_lingo->codeCmd((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 3001 "engines/director/lingo/lingo-gr.cpp"
+#line 3011 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137: /* proc: ID '(' arglist ')'  */
@@ -3005,7 +3015,7 @@ yyreduce:
                                         {
 		g_lingo->codeCmd((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3009 "engines/director/lingo/lingo-gr.cpp"
+#line 3019 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138: /* proc: ID arglist  */
@@ -3013,184 +3023,184 @@ yyreduce:
                                                 {
 		g_lingo->codeCmd((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3017 "engines/director/lingo/lingo-gr.cpp"
+#line 3027 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139: /* globallist: ID  */
-#line 718 "engines/director/lingo/lingo-gr.y"
-                                                {
+  case 140: /* globallist: ID  */
+#line 719 "engines/director/lingo/lingo-gr.y"
+                                                        {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3025 "engines/director/lingo/lingo-gr.cpp"
+#line 3035 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140: /* globallist: globallist ',' ID  */
-#line 721 "engines/director/lingo/lingo-gr.y"
+  case 141: /* globallist: ID ',' globallist  */
+#line 722 "engines/director/lingo/lingo-gr.y"
                                                 {
-		mVar((yyvsp[0].s), kVarGlobal);
-		delete (yyvsp[0].s); }
-#line 3033 "engines/director/lingo/lingo-gr.cpp"
+		mVar((yyvsp[-2].s), kVarGlobal);
+		delete (yyvsp[-2].s); }
+#line 3043 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141: /* propertylist: ID  */
-#line 725 "engines/director/lingo/lingo-gr.y"
-                                                {
+  case 143: /* propertylist: ID  */
+#line 727 "engines/director/lingo/lingo-gr.y"
+                                                        {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3041 "engines/director/lingo/lingo-gr.cpp"
+#line 3051 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142: /* propertylist: propertylist ',' ID  */
-#line 728 "engines/director/lingo/lingo-gr.y"
+  case 144: /* propertylist: ID ',' propertylist  */
+#line 730 "engines/director/lingo/lingo-gr.y"
                                         {
-		mVar((yyvsp[0].s), kVarProperty);
-		delete (yyvsp[0].s); }
-#line 3049 "engines/director/lingo/lingo-gr.cpp"
+		mVar((yyvsp[-2].s), kVarProperty);
+		delete (yyvsp[-2].s); }
+#line 3059 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143: /* instancelist: ID  */
-#line 732 "engines/director/lingo/lingo-gr.y"
-                                                {
+  case 146: /* instancelist: ID  */
+#line 735 "engines/director/lingo/lingo-gr.y"
+                                                        {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3057 "engines/director/lingo/lingo-gr.cpp"
+#line 3067 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144: /* instancelist: instancelist ',' ID  */
-#line 735 "engines/director/lingo/lingo-gr.y"
+  case 147: /* instancelist: ID ',' instancelist  */
+#line 738 "engines/director/lingo/lingo-gr.y"
                                         {
-		mVar((yyvsp[0].s), kVarInstance);
-		delete (yyvsp[0].s); }
-#line 3065 "engines/director/lingo/lingo-gr.cpp"
+		mVar((yyvsp[-2].s), kVarInstance);
+		delete (yyvsp[-2].s); }
+#line 3075 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145: /* gotofunc: tGOLOOP  */
-#line 746 "engines/director/lingo/lingo-gr.y"
+  case 148: /* gotofunc: tGOLOOP  */
+#line 749 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3071 "engines/director/lingo/lingo-gr.cpp"
+#line 3081 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146: /* gotofunc: tGO tNEXT  */
-#line 747 "engines/director/lingo/lingo-gr.y"
+  case 149: /* gotofunc: tGO tNEXT  */
+#line 750 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3077 "engines/director/lingo/lingo-gr.cpp"
+#line 3087 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147: /* gotofunc: tGO tPREVIOUS  */
-#line 748 "engines/director/lingo/lingo-gr.y"
+  case 150: /* gotofunc: tGO tPREVIOUS  */
+#line 751 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3083 "engines/director/lingo/lingo-gr.cpp"
+#line 3093 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148: /* gotofunc: tGO expr  */
-#line 749 "engines/director/lingo/lingo-gr.y"
+  case 151: /* gotofunc: tGO expr  */
+#line 752 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3092 "engines/director/lingo/lingo-gr.cpp"
+#line 3102 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149: /* gotofunc: tGO expr gotomovie  */
-#line 753 "engines/director/lingo/lingo-gr.y"
+  case 152: /* gotofunc: tGO expr gotomovie  */
+#line 756 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3101 "engines/director/lingo/lingo-gr.cpp"
+#line 3111 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150: /* gotofunc: tGO gotomovie  */
-#line 757 "engines/director/lingo/lingo-gr.y"
+  case 153: /* gotofunc: tGO gotomovie  */
+#line 760 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3110 "engines/director/lingo/lingo-gr.cpp"
+#line 3120 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153: /* playfunc: tPLAY expr  */
-#line 765 "engines/director/lingo/lingo-gr.y"
+  case 156: /* playfunc: tPLAY expr  */
+#line 768 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3119 "engines/director/lingo/lingo-gr.cpp"
+#line 3129 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154: /* playfunc: tPLAY expr gotomovie  */
-#line 769 "engines/director/lingo/lingo-gr.y"
+  case 157: /* playfunc: tPLAY expr gotomovie  */
+#line 772 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3128 "engines/director/lingo/lingo-gr.cpp"
+#line 3138 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155: /* playfunc: tPLAY gotomovie  */
-#line 773 "engines/director/lingo/lingo-gr.y"
+  case 158: /* playfunc: tPLAY gotomovie  */
+#line 776 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3137 "engines/director/lingo/lingo-gr.cpp"
+#line 3147 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156: /* $@15: %empty  */
-#line 777 "engines/director/lingo/lingo-gr.y"
+  case 159: /* $@15: %empty  */
+#line 780 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3143 "engines/director/lingo/lingo-gr.cpp"
+#line 3153 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157: /* playfunc: tPLAYACCEL $@15 arglist  */
-#line 777 "engines/director/lingo/lingo-gr.y"
+  case 160: /* playfunc: tPLAYACCEL $@15 arglist  */
+#line 780 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeCmd((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3152 "engines/director/lingo/lingo-gr.cpp"
+#line 3162 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158: /* $@16: %empty  */
-#line 807 "engines/director/lingo/lingo-gr.y"
+  case 161: /* $@16: %empty  */
+#line 810 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3158 "engines/director/lingo/lingo-gr.cpp"
+#line 3168 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159: /* defn: tMACRO $@16 ID lbl argdef '\n' argstore stmtlist  */
-#line 808 "engines/director/lingo/lingo-gr.y"
+  case 162: /* defn: tMACRO $@16 ID lbl argdef '\n' argstore stmtlist  */
+#line 811 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3168 "engines/director/lingo/lingo-gr.cpp"
+#line 3178 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160: /* defn: tFACTORY ID  */
-#line 813 "engines/director/lingo/lingo-gr.y"
+  case 163: /* defn: tFACTORY ID  */
+#line 816 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3174 "engines/director/lingo/lingo-gr.cpp"
+#line 3184 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161: /* $@17: %empty  */
-#line 814 "engines/director/lingo/lingo-gr.y"
+  case 164: /* $@17: %empty  */
+#line 817 "engines/director/lingo/lingo-gr.y"
                   { startDef(); (*g_lingo->_methodVars)["me"] = kVarArgument; }
-#line 3180 "engines/director/lingo/lingo-gr.cpp"
+#line 3190 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162: /* defn: tMETHOD $@17 lbl argdef '\n' argstore stmtlist  */
-#line 815 "engines/director/lingo/lingo-gr.y"
+  case 165: /* defn: tMETHOD $@17 lbl argdef '\n' argstore stmtlist  */
+#line 818 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3190 "engines/director/lingo/lingo-gr.cpp"
+#line 3200 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163: /* defn: on lbl argdef '\n' argstore stmtlist ENDCLAUSE endargdef  */
-#line 820 "engines/director/lingo/lingo-gr.y"
+  case 166: /* defn: on lbl argdef '\n' argstore stmtlist ENDCLAUSE endargdef  */
+#line 823 "engines/director/lingo/lingo-gr.y"
                                                                    {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3199,180 +3209,192 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3203 "engines/director/lingo/lingo-gr.cpp"
+#line 3213 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164: /* defn: on lbl argdef '\n' argstore stmtlist  */
-#line 828 "engines/director/lingo/lingo-gr.y"
+  case 167: /* defn: on lbl argdef '\n' argstore stmtlist  */
+#line 831 "engines/director/lingo/lingo-gr.y"
                                                {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3213 "engines/director/lingo/lingo-gr.cpp"
+#line 3223 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165: /* $@18: %empty  */
-#line 834 "engines/director/lingo/lingo-gr.y"
+  case 168: /* $@18: %empty  */
+#line 837 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3219 "engines/director/lingo/lingo-gr.cpp"
+#line 3229 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166: /* on: tON $@18 ID  */
-#line 834 "engines/director/lingo/lingo-gr.y"
+  case 169: /* on: tON $@18 ID  */
+#line 837 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = (yyvsp[0].s); }
-#line 3225 "engines/director/lingo/lingo-gr.cpp"
+#line 3235 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 170: /* argname: ID  */
+#line 839 "engines/director/lingo/lingo-gr.y"
+                                                        { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); delete (yyvsp[0].s); }
+#line 3241 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167: /* argdef: %empty  */
-#line 836 "engines/director/lingo/lingo-gr.y"
+  case 171: /* argdef: %empty  */
+#line 841 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3231 "engines/director/lingo/lingo-gr.cpp"
+#line 3247 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 168: /* argdef: ID  */
-#line 837 "engines/director/lingo/lingo-gr.y"
-                                                        { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3237 "engines/director/lingo/lingo-gr.cpp"
+  case 172: /* argdef: argname  */
+#line 842 "engines/director/lingo/lingo-gr.y"
+                                                        { (yyval.narg) = 1; }
+#line 3253 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169: /* argdef: argdef ',' ID  */
-#line 838 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3243 "engines/director/lingo/lingo-gr.cpp"
+  case 173: /* argdef: argname ',' argdef  */
+#line 843 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.narg) = (yyvsp[0].narg) + 1; }
+#line 3259 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 171: /* endargdef: ID  */
-#line 841 "engines/director/lingo/lingo-gr.y"
+  case 175: /* endargdef: ID  */
+#line 846 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3249 "engines/director/lingo/lingo-gr.cpp"
+#line 3265 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 172: /* endargdef: endargdef ',' ID  */
-#line 842 "engines/director/lingo/lingo-gr.y"
+  case 176: /* endargdef: endargdef ',' ID  */
+#line 847 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3255 "engines/director/lingo/lingo-gr.cpp"
+#line 3271 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 173: /* argstore: %empty  */
-#line 844 "engines/director/lingo/lingo-gr.y"
+  case 177: /* argstore: %empty  */
+#line 849 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
-#line 3261 "engines/director/lingo/lingo-gr.cpp"
+#line 3277 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 174: /* arglist: %empty  */
-#line 846 "engines/director/lingo/lingo-gr.y"
+  case 178: /* arglist: %empty  */
+#line 851 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3267 "engines/director/lingo/lingo-gr.cpp"
+#line 3283 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 175: /* arglist: expr  */
-#line 847 "engines/director/lingo/lingo-gr.y"
+  case 179: /* arglist: expr  */
+#line 852 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3273 "engines/director/lingo/lingo-gr.cpp"
+#line 3289 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 176: /* arglist: arglist ',' expr  */
-#line 848 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3279 "engines/director/lingo/lingo-gr.cpp"
+  case 180: /* arglist: expr ',' arglist  */
+#line 853 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.narg) = (yyvsp[0].narg) + 1; }
+#line 3295 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 177: /* nonemptyarglist: expr  */
-#line 850 "engines/director/lingo/lingo-gr.y"
+  case 181: /* nonemptyarglist: expr  */
+#line 855 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3285 "engines/director/lingo/lingo-gr.cpp"
+#line 3301 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 178: /* nonemptyarglist: nonemptyarglist ',' expr  */
-#line 851 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3291 "engines/director/lingo/lingo-gr.cpp"
+  case 182: /* nonemptyarglist: expr ','  */
+#line 856 "engines/director/lingo/lingo-gr.y"
+                                                        { (yyval.narg) = 1; }
+#line 3307 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 179: /* list: '[' valuelist ']'  */
-#line 853 "engines/director/lingo/lingo-gr.y"
+  case 183: /* nonemptyarglist: expr ',' nonemptyarglist  */
+#line 857 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.narg) = (yyvsp[0].narg) + 1; }
+#line 3313 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 184: /* list: '[' valuelist ']'  */
+#line 859 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3297 "engines/director/lingo/lingo-gr.cpp"
+#line 3319 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 180: /* valuelist: %empty  */
-#line 855 "engines/director/lingo/lingo-gr.y"
+  case 185: /* valuelist: %empty  */
+#line 861 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3303 "engines/director/lingo/lingo-gr.cpp"
+#line 3325 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 181: /* valuelist: ':'  */
-#line 856 "engines/director/lingo/lingo-gr.y"
+  case 186: /* valuelist: ':'  */
+#line 862 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3309 "engines/director/lingo/lingo-gr.cpp"
+#line 3331 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 182: /* valuelist: proplist  */
-#line 857 "engines/director/lingo/lingo-gr.y"
+  case 187: /* valuelist: proplist  */
+#line 863 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3315 "engines/director/lingo/lingo-gr.cpp"
+#line 3337 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 183: /* valuelist: linearlist  */
-#line 858 "engines/director/lingo/lingo-gr.y"
+  case 188: /* valuelist: linearlist  */
+#line 864 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3321 "engines/director/lingo/lingo-gr.cpp"
+#line 3343 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 184: /* linearlist: expr  */
-#line 860 "engines/director/lingo/lingo-gr.y"
+  case 189: /* linearlist: expr  */
+#line 866 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3327 "engines/director/lingo/lingo-gr.cpp"
+#line 3349 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 185: /* linearlist: linearlist ',' expr  */
-#line 861 "engines/director/lingo/lingo-gr.y"
+  case 190: /* linearlist: linearlist ',' expr  */
+#line 867 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3333 "engines/director/lingo/lingo-gr.cpp"
+#line 3355 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 186: /* proplist: proppair  */
-#line 863 "engines/director/lingo/lingo-gr.y"
+  case 191: /* proplist: proppair  */
+#line 869 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3339 "engines/director/lingo/lingo-gr.cpp"
+#line 3361 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 187: /* proplist: proplist ',' proppair  */
-#line 864 "engines/director/lingo/lingo-gr.y"
+  case 192: /* proplist: proplist ',' proppair  */
+#line 870 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3345 "engines/director/lingo/lingo-gr.cpp"
+#line 3367 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 188: /* proppair: SYMBOL ':' expr  */
-#line 866 "engines/director/lingo/lingo-gr.y"
+  case 193: /* proppair: SYMBOL ':' expr  */
+#line 872 "engines/director/lingo/lingo-gr.y"
                           {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3354 "engines/director/lingo/lingo-gr.cpp"
+#line 3376 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 189: /* proppair: STRING ':' expr  */
-#line 870 "engines/director/lingo/lingo-gr.y"
+  case 194: /* proppair: STRING ':' expr  */
+#line 876 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3363 "engines/director/lingo/lingo-gr.cpp"
+#line 3385 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 190: /* proppair: ID ':' expr  */
-#line 874 "engines/director/lingo/lingo-gr.y"
+  case 195: /* proppair: ID ':' expr  */
+#line 880 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3372 "engines/director/lingo/lingo-gr.cpp"
+#line 3394 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3376 "engines/director/lingo/lingo-gr.cpp"
+#line 3398 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3571,7 +3593,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 880 "engines/director/lingo/lingo-gr.y"
+#line 886 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index d22a55da94..3b2481a7bc 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -715,24 +715,27 @@ proc: tPUT expr					{ g_lingo->code1(LC::c_printtop); }
 		g_lingo->codeCmd($ID, $arglist);
 		delete $ID; }
 
-globallist: ID					{
+globallist:		/* nothing */
+	| ID						{
 		mVar($ID, kVarGlobal);
 		delete $ID; }
-	| globallist ',' ID			{
+	| ID ',' globallist			{
 		mVar($ID, kVarGlobal);
 		delete $ID; }
 
-propertylist: ID				{
+propertylist:	/* nothing */
+	| ID						{
 		mVar($ID, kVarProperty);
 		delete $ID; }
-	| propertylist ',' ID		{
+	| ID ',' propertylist		{
 		mVar($ID, kVarProperty);
 		delete $ID; }
 
-instancelist: ID				{
+instancelist:	/* nothing */
+	| ID						{
 		mVar($ID, kVarInstance);
 		delete $ID; }
-	| instancelist ',' ID		{
+	| ID ',' instancelist		{
 		mVar($ID, kVarInstance);
 		delete $ID; }
 
@@ -833,9 +836,11 @@ defn: tMACRO { startDef(); } ID
 
 on:  tON { startDef(); } ID 	{ $$ = $ID; }
 
+argname: ID						{ g_lingo->codeArg($ID); mVar($ID, kVarArgument); delete $ID; }
+
 argdef:  /* nothing */ 			{ $$ = 0; }
-	| ID						{ g_lingo->codeArg($ID); mVar($ID, kVarArgument); $$ = 1; delete $ID; }
-	| argdef ',' ID				{ g_lingo->codeArg($ID); mVar($ID, kVarArgument); $$ = $1 + 1; delete $ID; }
+	| argname					{ $$ = 1; }
+	| argname ',' argdef		{ $$ = $3 + 1; }
 
 endargdef:	/* nothing */
 	| ID						{ delete $ID; }
@@ -845,10 +850,11 @@ argstore:	  /* nothing */		{ inDef(); }
 
 arglist:  /* nothing */ 		{ $$ = 0; }
 	| expr						{ $$ = 1; }
-	| arglist ',' expr			{ $$ = $1 + 1; }
+	| expr ',' arglist			{ $$ = $3 + 1; }
 
 nonemptyarglist:  expr			{ $$ = 1; }
-	| nonemptyarglist ',' expr	{ $$ = $1 + 1; }
+	| expr ','					{ $$ = 1; }
+	| expr ',' nonemptyarglist	{ $$ = $3 + 1; }
 
 list: '[' valuelist ']'			{ $$ = $valuelist; }
 
diff --git a/engines/director/lingo/tests/trailingcomma.lingo b/engines/director/lingo/tests/trailingcomma.lingo
new file mode 100644
index 0000000000..61a7398af7
--- /dev/null
+++ b/engines/director/lingo/tests/trailingcomma.lingo
@@ -0,0 +1,8 @@
+on test a, b, c,
+  put a
+end
+
+global foo, bar,
+property baz,
+
+test "foo", "bar", "baz",




More information about the Scummvm-git-logs mailing list