Index: src/parser/xhpast/__tests__/data/php-array-dereference.expect
===================================================================
--- /dev/null
+++ src/parser/xhpast/__tests__/data/php-array-dereference.expect
@@ -0,0 +1,640 @@
+{
+  "tree"   : [
+    9000,
+    0,
+    71,
+    [
+      [
+        9006,
+        0,
+        70,
+        [
+          [
+            9007,
+            0,
+            0
+          ],
+          [
+            9004,
+            2,
+            21,
+            [
+              [
+                9050,
+                2,
+                21,
+                [
+                  [
+                    9005
+                  ],
+                  [
+                    9005
+                  ],
+                  [
+                    9013,
+                    4,
+                    4
+                  ],
+                  [
+                    9059,
+                    5,
+                    6
+                  ],
+                  [
+                    9005
+                  ],
+                  [
+                    9006,
+                    8,
+                    21,
+                    [
+                      [
+                        9004,
+                        10,
+                        19,
+                        [
+                          [
+                            9027,
+                            10,
+                            18,
+                            [
+                              [
+                                9082,
+                                12,
+                                18,
+                                [
+                                  [
+                                    9093,
+                                    13,
+                                    17,
+                                    [
+                                      [
+                                        9094,
+                                        13,
+                                        13,
+                                        [
+                                          [
+                                            9005
+                                          ],
+                                          [
+                                            9086,
+                                            13,
+                                            13
+                                          ]
+                                        ]
+                                      ],
+                                      [
+                                        9094,
+                                        15,
+                                        15,
+                                        [
+                                          [
+                                            9005
+                                          ],
+                                          [
+                                            9086,
+                                            15,
+                                            15
+                                          ]
+                                        ]
+                                      ],
+                                      [
+                                        9094,
+                                        17,
+                                        17,
+                                        [
+                                          [
+                                            9005
+                                          ],
+                                          [
+                                            9086,
+                                            17,
+                                            17
+                                          ]
+                                        ]
+                                      ]
+                                    ]
+                                  ]
+                                ]
+                              ]
+                            ]
+                          ]
+                        ]
+                      ]
+                    ]
+                  ]
+                ]
+              ]
+            ]
+          ],
+          [
+            9004,
+            23,
+            28,
+            [
+              [
+                9077,
+                23,
+                27,
+                [
+                  [
+                    9047,
+                    23,
+                    23
+                  ],
+                  [
+                    9081,
+                    25,
+                    25
+                  ],
+                  [
+                    9086,
+                    27,
+                    27
+                  ]
+                ]
+              ]
+            ]
+          ],
+          [
+            9004,
+            30,
+            40,
+            [
+              [
+                9077,
+                30,
+                39,
+                [
+                  [
+                    9047,
+                    30,
+                    30
+                  ],
+                  [
+                    9081,
+                    32,
+                    32
+                  ],
+                  [
+                    9100,
+                    34,
+                    39,
+                    [
+                      [
+                        9099,
+                        34,
+                        36,
+                        [
+                          [
+                            9001,
+                            34,
+                            34
+                          ],
+                          [
+                            9095,
+                            35,
+                            36
+                          ]
+                        ]
+                      ],
+                      [
+                        9086,
+                        38,
+                        38
+                      ]
+                    ]
+                  ]
+                ]
+              ]
+            ]
+          ],
+          [
+            9004,
+            42,
+            52,
+            [
+              [
+                9077,
+                42,
+                51,
+                [
+                  [
+                    9047,
+                    42,
+                    42
+                  ],
+                  [
+                    9081,
+                    44,
+                    44
+                  ],
+                  [
+                    9100,
+                    46,
+                    51,
+                    [
+                      [
+                        9099,
+                        46,
+                        48,
+                        [
+                          [
+                            9001,
+                            46,
+                            46
+                          ],
+                          [
+                            9095,
+                            47,
+                            48
+                          ]
+                        ]
+                      ],
+                      [
+                        9047,
+                        50,
+                        50
+                      ]
+                    ]
+                  ]
+                ]
+              ]
+            ]
+          ],
+          [
+            9004,
+            54,
+            70,
+            [
+              [
+                9015,
+                54,
+                70,
+                [
+                  [
+                    9017,
+                    54,
+                    70,
+                    [
+                      [
+                        9016,
+                        56,
+                        66,
+                        [
+                          [
+                            9099,
+                            57,
+                            65,
+                            [
+                              [
+                                9001,
+                                57,
+                                57
+                              ],
+                              [
+                                9095,
+                                58,
+                                65,
+                                [
+                                  [
+                                    9100,
+                                    59,
+                                    64,
+                                    [
+                                      [
+                                        9099,
+                                        59,
+                                        61,
+                                        [
+                                          [
+                                            9001,
+                                            59,
+                                            59
+                                          ],
+                                          [
+                                            9095,
+                                            60,
+                                            61
+                                          ]
+                                        ]
+                                      ],
+                                      [
+                                        9086,
+                                        63,
+                                        63
+                                      ]
+                                    ]
+                                  ]
+                                ]
+                              ]
+                            ]
+                          ]
+                        ]
+                      ],
+                      [
+                        9006,
+                        68,
+                        70
+                      ]
+                    ]
+                  ]
+                ]
+              ]
+            ]
+          ]
+        ]
+      ]
+    ]
+  ],
+  "stream" : [
+    [
+      371,
+      6
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      337,
+      8
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      309,
+      3
+    ],
+    [
+      40,
+      1
+    ],
+    [
+      41,
+      1
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      123,
+      1
+    ],
+    [
+      375,
+      3
+    ],
+    [
+      339,
+      6
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      91,
+      1
+    ],
+    [
+      307,
+      1
+    ],
+    [
+      44,
+      1
+    ],
+    [
+      307,
+      1
+    ],
+    [
+      44,
+      1
+    ],
+    [
+      307,
+      1
+    ],
+    [
+      93,
+      1
+    ],
+    [
+      59,
+      1
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      125,
+      1
+    ],
+    [
+      375,
+      2
+    ],
+    [
+      311,
+      2
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      61,
+      1
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      307,
+      1
+    ],
+    [
+      59,
+      1
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      311,
+      2
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      61,
+      1
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      309,
+      3
+    ],
+    [
+      40,
+      1
+    ],
+    [
+      41,
+      1
+    ],
+    [
+      91,
+      1
+    ],
+    [
+      307,
+      1
+    ],
+    [
+      93,
+      1
+    ],
+    [
+      59,
+      1
+    ],
+    [
+      375,
+      2
+    ],
+    [
+      311,
+      2
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      61,
+      1
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      309,
+      3
+    ],
+    [
+      40,
+      1
+    ],
+    [
+      41,
+      1
+    ],
+    [
+      91,
+      1
+    ],
+    [
+      311,
+      2
+    ],
+    [
+      93,
+      1
+    ],
+    [
+      59,
+      1
+    ],
+    [
+      375,
+      2
+    ],
+    [
+      303,
+      2
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      40,
+      1
+    ],
+    [
+      353,
+      5
+    ],
+    [
+      40,
+      1
+    ],
+    [
+      309,
+      3
+    ],
+    [
+      40,
+      1
+    ],
+    [
+      41,
+      1
+    ],
+    [
+      91,
+      1
+    ],
+    [
+      307,
+      1
+    ],
+    [
+      93,
+      1
+    ],
+    [
+      41,
+      1
+    ],
+    [
+      41,
+      1
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      123,
+      1
+    ],
+    [
+      375,
+      1
+    ],
+    [
+      125,
+      1
+    ],
+    [
+      375,
+      2
+    ]
+  ]
+}
Index: src/parser/xhpast/__tests__/data/php-array-dereference.test
===================================================================
--- /dev/null
+++ src/parser/xhpast/__tests__/data/php-array-dereference.test
@@ -0,0 +1,14 @@
+# pass
+<?php
+
+function foo() {
+  return [1,2,3];
+}
+
+$i = 1;
+$x = foo()[2];
+
+$y = foo()[$i];
+
+if (isset(foo()[0])) { }
+
Index: src/parser/xhpast/bin/xhpast_parse.php
===================================================================
--- src/parser/xhpast/bin/xhpast_parse.php
+++ src/parser/xhpast/bin/xhpast_parse.php
@@ -12,7 +12,7 @@
       list($err, $stdout) = exec_manual('%s --version', $bin);
       if (!$err) {
         $version = trim($stdout);
-        if ($version === "xhpast version 5.5.8/1c") {
+        if ($version === "xhpast version 5.5.8/1d") {
           $available = true;
         }
       }
Index: support/xhpast/parser.y
===================================================================
--- support/xhpast/parser.y
+++ support/xhpast/parser.y
@@ -69,7 +69,7 @@
 
 %}
 
-%expect 13
+%expect 5
 // 2: PHP's if/else grammar
 // 7: expr '[' dim_offset ']' -- shift will default to first grammar
 %name-prefix = "xhpast"
@@ -1806,6 +1806,7 @@
     $$ = $1;
   }
 | scalar
+| combined_scalar_offset
 | combined_scalar
 | T_PRINT expr {
     $$ = NNEW(n_UNARY_PREFIX_EXPRESSION);
@@ -2301,8 +2302,24 @@
   reference_variable
 ;
 
+array_function_dereference:
+  array_function_dereference '[' dim_offset ']' {
+    $$ = NNEW(n_INDEX_ACCESS);
+    $$->appendChild($1);
+    $$->appendChild($3);
+    NMORE($$, $4);
+  }
+| function_call '[' dim_offset ']' {
+    $$ = NNEW(n_INDEX_ACCESS);
+    $$->appendChild($1);
+    $$->appendChild($3);
+    NMORE($$, $4);
+  }
+;
+
 base_variable_with_function_calls:
   base_variable
+| array_function_dereference
 | function_call
 ;
 
@@ -2567,6 +2584,27 @@
   }
 ;
 
+combined_scalar_offset:
+  combined_scalar '[' dim_offset ']' {
+    $$ = NNEW(n_INDEX_ACCESS);
+    $$->appendChild($1);
+    $$->appendChild($3);
+    NMORE($$, $4);
+  }
+| combined_scalar_offset '[' dim_offset ']' {
+    $$ = NNEW(n_INDEX_ACCESS);
+    $$->appendChild($1);
+    $$->appendChild($3);
+    NMORE($$, $4);
+  }
+| T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']' {
+    $$ = NNEW(n_INDEX_ACCESS);
+    $$->appendChild(NTYPE($1, n_STRING_SCALAR));
+    $$->appendChild($3);
+    NMORE($$, $4);
+  }
+;
+
 combined_scalar:
   T_ARRAY '(' array_pair_list ')' {
     NTYPE($1, n_ARRAY_LITERAL);
@@ -2604,24 +2642,6 @@
   }
 ;
 
-// Fix the "bug" in PHP's grammar where you can't chain the [] operator on a
-// function call.
-// This introduces some shift/reduce conflicts. We want the shift here to fall
-// back to regular PHP grammar. In the case where it's an extension of the PHP
-// grammar our code gets picked up.
-expr_without_variable:
-  expr '[' dim_offset ']' {
-    if (yyextra->idx_expr) {
-      yyextra->used = true;
-    }
-    $$ = NNEW(n_INDEX_ACCESS);
-    $$->appendChild($1);
-    $$->appendChild($3);
-    NMORE($$, $4);
-  }
-;
-
-
 %%
 
 const char* yytokname(int tok) {
Index: support/xhpast/parser.yacc.cpp
===================================================================
--- support/xhpast/parser.yacc.cpp
+++ support/xhpast/parser.yacc.cpp
@@ -574,16 +574,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   7883
+#define YYLAST   7807
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  165
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  127
+#define YYNNTS  129
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  423
+#define YYNRULES  429
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  870
+#define YYNSTATES  885
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -669,22 +669,22 @@
      851,   855,   859,   863,   867,   871,   874,   877,   880,   883,
      887,   891,   895,   899,   903,   907,   911,   915,   919,   921,
      923,   929,   934,   936,   939,   942,   945,   948,   951,   954,
-     957,   960,   963,   965,   967,   969,   972,   974,   984,   995,
-     998,  1001,  1006,  1011,  1013,  1014,  1019,  1023,  1028,  1030,
-    1033,  1038,  1045,  1051,  1058,  1065,  1072,  1079,  1084,  1086,
-    1088,  1092,  1095,  1097,  1101,  1104,  1106,  1108,  1113,  1115,
-    1118,  1119,  1122,  1123,  1126,  1130,  1131,  1135,  1137,  1139,
+     957,   960,   963,   965,   967,   969,   971,   974,   976,   986,
+     997,  1000,  1003,  1008,  1013,  1015,  1016,  1021,  1025,  1030,
+    1032,  1035,  1040,  1047,  1053,  1060,  1067,  1074,  1081,  1086,
+    1088,  1090,  1094,  1097,  1099,  1103,  1106,  1108,  1110,  1115,
+    1117,  1120,  1121,  1124,  1125,  1128,  1132,  1133,  1137,  1139,
     1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,  1157,  1159,
-    1161,  1163,  1167,  1170,  1173,  1176,  1181,  1185,  1187,  1191,
-    1193,  1195,  1197,  1201,  1204,  1206,  1207,  1210,  1211,  1213,
-    1219,  1223,  1227,  1229,  1231,  1233,  1235,  1237,  1239,  1245,
-    1247,  1250,  1251,  1255,  1259,  1260,  1262,  1265,  1269,  1273,
-    1275,  1277,  1279,  1281,  1285,  1288,  1290,  1295,  1300,  1302,
-    1304,  1309,  1310,  1312,  1314,  1316,  1321,  1326,  1328,  1330,
-    1334,  1336,  1339,  1343,  1345,  1347,  1352,  1353,  1354,  1357,
-    1363,  1367,  1371,  1373,  1380,  1385,  1390,  1393,  1398,  1403,
-    1406,  1409,  1414,  1417,  1420,  1422,  1426,  1430,  1434,  1439,
-    1443,  1447,  1451,  1455
+    1161,  1163,  1165,  1169,  1172,  1175,  1178,  1183,  1187,  1189,
+    1193,  1195,  1197,  1199,  1203,  1206,  1208,  1209,  1212,  1213,
+    1215,  1221,  1225,  1229,  1231,  1233,  1235,  1237,  1239,  1241,
+    1247,  1249,  1252,  1253,  1257,  1261,  1262,  1264,  1267,  1271,
+    1275,  1277,  1282,  1287,  1289,  1291,  1293,  1295,  1299,  1302,
+    1304,  1309,  1314,  1316,  1318,  1323,  1324,  1326,  1328,  1330,
+    1335,  1340,  1342,  1344,  1348,  1350,  1353,  1357,  1359,  1361,
+    1366,  1367,  1368,  1371,  1377,  1381,  1385,  1387,  1394,  1399,
+    1404,  1407,  1412,  1417,  1420,  1423,  1428,  1431,  1434,  1436,
+    1440,  1444,  1448,  1453,  1458,  1463,  1468,  1472,  1476,  1480
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -762,7 +762,7 @@
       13,   256,    -1,    75,    -1,    75,    13,   256,    -1,   237,
        8,    73,    13,   256,    -1,   102,    73,    13,   256,    -1,
      238,     8,   262,    -1,   262,    -1,    -1,   240,    -1,   240,
-       8,   262,    -1,   262,    -1,   126,   158,   282,   159,    13,
+       8,   262,    -1,   262,    -1,   126,   158,   283,   159,    13,
      262,    -1,   266,    13,   262,    -1,   266,    13,    31,   266,
       -1,   266,    13,    31,    65,   249,   254,    -1,    64,   262,
       -1,   266,    24,   262,    -1,   266,    23,   262,    -1,   266,
@@ -781,61 +781,64 @@
       50,   262,    -1,   262,    33,   262,    -1,   262,    32,   262,
       -1,   262,    35,   262,    -1,   262,    34,   262,    -1,   262,
       36,   262,    -1,   262,    39,   262,    -1,   262,    37,   262,
-      -1,   262,    38,   262,    -1,   262,    49,   249,    -1,   288,
-      -1,   290,    -1,   262,    25,   262,    26,   262,    -1,   262,
-      25,    26,   262,    -1,   286,    -1,    60,   262,    -1,    59,
+      -1,   262,    38,   262,    -1,   262,    49,   249,    -1,   289,
+      -1,   292,    -1,   262,    25,   262,    26,   262,    -1,   262,
+      25,    26,   262,    -1,   287,    -1,    60,   262,    -1,    59,
      262,    -1,    58,   262,    -1,    55,   262,    -1,    54,   262,
       -1,    53,   262,    -1,    52,   262,    -1,    66,   253,    -1,
-      51,   262,    -1,    82,    -1,   258,    -1,   289,    -1,    12,
-     262,    -1,   156,    -1,   243,   185,   158,   208,   159,   244,
-     161,   173,   162,    -1,   114,   243,   185,   158,   208,   159,
-     244,   161,   173,   162,    -1,   156,   241,    -1,   156,   266,
-      -1,   156,   262,   125,   241,    -1,   156,   262,   125,   266,
-      -1,   101,    -1,    -1,   107,   158,   245,   159,    -1,   245,
-       8,    75,    -1,   245,     8,    31,    75,    -1,    75,    -1,
-      31,    75,    -1,   168,   158,   211,   159,    -1,   148,   151,
-     168,   158,   211,   159,    -1,   151,   168,   158,   211,   159,
-      -1,   247,   145,    73,   158,   211,   159,    -1,   272,   145,
-      73,   158,   211,   159,    -1,   272,   145,   270,   158,   211,
-     159,    -1,   247,   145,   270,   158,   211,   159,    -1,   270,
-     158,   211,   159,    -1,   114,    -1,   168,    -1,   148,   151,
-     168,    -1,   151,   168,    -1,   168,    -1,   148,   151,   168,
-      -1,   151,   168,    -1,   247,    -1,   250,    -1,   274,   124,
-     278,   251,    -1,   274,    -1,   251,   252,    -1,    -1,   124,
-     278,    -1,    -1,   158,   159,    -1,   158,   262,   159,    -1,
-      -1,   158,   211,   159,    -1,    71,    -1,    72,    -1,    81,
-      -1,   131,    -1,   132,    -1,   150,    -1,   128,    -1,   129,
-      -1,   155,    -1,   130,    -1,   149,    -1,   142,    -1,   255,
-      -1,   168,    -1,   148,   151,   168,    -1,   151,   168,    -1,
-      42,   256,    -1,    43,   256,    -1,   127,   158,   259,   159,
-      -1,    63,   259,   164,    -1,   257,    -1,   247,   145,    73,
-      -1,    74,    -1,   291,    -1,   168,    -1,   148,   151,   168,
-      -1,   151,   168,    -1,   255,    -1,    -1,   261,   260,    -1,
-      -1,     8,    -1,   261,     8,   256,   125,   256,    -1,   261,
-       8,   256,    -1,   256,   125,   256,    -1,   256,    -1,   263,
-      -1,   241,    -1,   266,    -1,   266,    -1,   266,    -1,   273,
-     124,   278,   269,   267,    -1,   273,    -1,   267,   268,    -1,
-      -1,   124,   278,   269,    -1,   158,   211,   159,    -1,    -1,
-     275,    -1,   281,   275,    -1,   247,   145,   270,    -1,   272,
-     145,   270,    -1,   275,    -1,   274,    -1,   246,    -1,   275,
-      -1,   158,   290,   159,    -1,   281,   275,    -1,   271,    -1,
-     275,    63,   277,   164,    -1,   275,   161,   262,   162,    -1,
-     276,    -1,    75,    -1,   163,   161,   262,   162,    -1,    -1,
-     262,    -1,   279,    -1,   270,    -1,   279,    63,   277,   164,
-      -1,   279,   161,   262,   162,    -1,   280,    -1,    73,    -1,
-     161,   262,   162,    -1,   163,    -1,   281,   163,    -1,   282,
-       8,   283,    -1,   283,    -1,   266,    -1,   126,   158,   282,
-     159,    -1,    -1,    -1,   285,   260,    -1,   285,     8,   262,
-     125,   262,    -1,   285,     8,   262,    -1,   262,   125,   262,
-      -1,   262,    -1,   285,     8,   262,   125,    31,   264,    -1,
-     285,     8,    31,   264,    -1,   262,   125,    31,   264,    -1,
-      31,   264,    -1,   117,   158,   287,   159,    -1,   118,   158,
-     266,   159,    -1,     7,   262,    -1,     6,   262,    -1,     5,
-     158,   262,   159,    -1,     4,   262,    -1,     3,   262,    -1,
-     266,    -1,   287,     8,   266,    -1,   158,   262,   159,    -1,
-     158,   242,   159,    -1,   127,   158,   284,   159,    -1,    63,
-     284,   164,    -1,    65,   249,   254,    -1,   247,   145,    73,
-      -1,   272,   145,    73,    -1,   262,    63,   277,   164,    -1
+      51,   262,    -1,    82,    -1,   258,    -1,   290,    -1,   291,
+      -1,    12,   262,    -1,   156,    -1,   243,   185,   158,   208,
+     159,   244,   161,   173,   162,    -1,   114,   243,   185,   158,
+     208,   159,   244,   161,   173,   162,    -1,   156,   241,    -1,
+     156,   266,    -1,   156,   262,   125,   241,    -1,   156,   262,
+     125,   266,    -1,   101,    -1,    -1,   107,   158,   245,   159,
+      -1,   245,     8,    75,    -1,   245,     8,    31,    75,    -1,
+      75,    -1,    31,    75,    -1,   168,   158,   211,   159,    -1,
+     148,   151,   168,   158,   211,   159,    -1,   151,   168,   158,
+     211,   159,    -1,   247,   145,    73,   158,   211,   159,    -1,
+     272,   145,    73,   158,   211,   159,    -1,   272,   145,   270,
+     158,   211,   159,    -1,   247,   145,   270,   158,   211,   159,
+      -1,   270,   158,   211,   159,    -1,   114,    -1,   168,    -1,
+     148,   151,   168,    -1,   151,   168,    -1,   168,    -1,   148,
+     151,   168,    -1,   151,   168,    -1,   247,    -1,   250,    -1,
+     275,   124,   279,   251,    -1,   275,    -1,   251,   252,    -1,
+      -1,   124,   279,    -1,    -1,   158,   159,    -1,   158,   262,
+     159,    -1,    -1,   158,   211,   159,    -1,    71,    -1,    72,
+      -1,    81,    -1,   131,    -1,   132,    -1,   150,    -1,   128,
+      -1,   129,    -1,   155,    -1,   130,    -1,   149,    -1,   142,
+      -1,   255,    -1,   168,    -1,   148,   151,   168,    -1,   151,
+     168,    -1,    42,   256,    -1,    43,   256,    -1,   127,   158,
+     259,   159,    -1,    63,   259,   164,    -1,   257,    -1,   247,
+     145,    73,    -1,    74,    -1,   293,    -1,   168,    -1,   148,
+     151,   168,    -1,   151,   168,    -1,   255,    -1,    -1,   261,
+     260,    -1,    -1,     8,    -1,   261,     8,   256,   125,   256,
+      -1,   261,     8,   256,    -1,   256,   125,   256,    -1,   256,
+      -1,   263,    -1,   241,    -1,   266,    -1,   266,    -1,   266,
+      -1,   274,   124,   279,   269,   267,    -1,   274,    -1,   267,
+     268,    -1,    -1,   124,   279,   269,    -1,   158,   211,   159,
+      -1,    -1,   276,    -1,   282,   276,    -1,   247,   145,   270,
+      -1,   272,   145,   270,    -1,   276,    -1,   273,    63,   278,
+     164,    -1,   246,    63,   278,   164,    -1,   275,    -1,   273,
+      -1,   246,    -1,   276,    -1,   158,   292,   159,    -1,   282,
+     276,    -1,   271,    -1,   276,    63,   278,   164,    -1,   276,
+     161,   262,   162,    -1,   277,    -1,    75,    -1,   163,   161,
+     262,   162,    -1,    -1,   262,    -1,   280,    -1,   270,    -1,
+     280,    63,   278,   164,    -1,   280,   161,   262,   162,    -1,
+     281,    -1,    73,    -1,   161,   262,   162,    -1,   163,    -1,
+     282,   163,    -1,   283,     8,   284,    -1,   284,    -1,   266,
+      -1,   126,   158,   283,   159,    -1,    -1,    -1,   286,   260,
+      -1,   286,     8,   262,   125,   262,    -1,   286,     8,   262,
+      -1,   262,   125,   262,    -1,   262,    -1,   286,     8,   262,
+     125,    31,   264,    -1,   286,     8,    31,   264,    -1,   262,
+     125,    31,   264,    -1,    31,   264,    -1,   117,   158,   288,
+     159,    -1,   118,   158,   266,   159,    -1,     7,   262,    -1,
+       6,   262,    -1,     5,   158,   262,   159,    -1,     4,   262,
+      -1,     3,   262,    -1,   266,    -1,   288,     8,   266,    -1,
+     158,   262,   159,    -1,   158,   242,   159,    -1,   291,    63,
+     278,   164,    -1,   290,    63,   278,   164,    -1,    81,    63,
+     278,   164,    -1,   127,   158,   285,   159,    -1,    63,   285,
+     164,    -1,    65,   249,   254,    -1,   247,   145,    73,    -1,
+     272,   145,    73,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -868,22 +871,22 @@
     1640,  1646,  1652,  1658,  1664,  1670,  1675,  1680,  1685,  1690,
     1696,  1702,  1708,  1714,  1720,  1726,  1732,  1738,  1744,  1745,
     1746,  1752,  1758,  1759,  1764,  1769,  1774,  1779,  1784,  1789,
-    1794,  1799,  1804,  1808,  1809,  1810,  1815,  1821,  1832,  1852,
-    1858,  1864,  1870,  1879,  1883,  1886,  1894,  1897,  1902,  1906,
-    1915,  1920,  1926,  1932,  1940,  1948,  1956,  1964,  1972,  1975,
-    1978,  1982,  1989,  1992,  1996,  2003,  2004,  2008,  2017,  2021,
-    2024,  2030,  2036,  2039,  2043,  2051,  2054,  2060,  2063,  2066,
-    2069,  2072,  2075,  2078,  2081,  2084,  2087,  2090,  2093,  2099,
-    2100,  2101,  2105,  2109,  2114,  2119,  2125,  2131,  2135,  2143,
-    2144,  2145,  2146,  2149,  2152,  2156,  2159,  2165,  2168,  2172,
-    2179,  2186,  2193,  2203,  2204,  2208,  2212,  2216,  2220,  2240,
-    2244,  2247,  2253,  2263,  2266,  2272,  2273,  2288,  2293,  2301,
-    2305,  2306,  2310,  2311,  2314,  2326,  2330,  2336,  2342,  2346,
-    2349,  2357,  2360,  2366,  2367,  2371,  2377,  2383,  2387,  2391,
-    2397,  2400,  2415,  2418,  2425,  2426,  2431,  2437,  2440,  2446,
-    2453,  2460,  2467,  2474,  2481,  2488,  2495,  2505,  2515,  2525,
-    2528,  2531,  2541,  2544,  2550,  2554,  2560,  2565,  2571,  2577,
-    2586,  2595,  2600,  2613
+    1794,  1799,  1804,  1808,  1809,  1810,  1811,  1816,  1822,  1833,
+    1853,  1859,  1865,  1871,  1880,  1884,  1887,  1895,  1898,  1903,
+    1907,  1916,  1921,  1927,  1933,  1941,  1949,  1957,  1965,  1973,
+    1976,  1979,  1983,  1990,  1993,  1997,  2004,  2005,  2009,  2018,
+    2022,  2025,  2031,  2037,  2040,  2044,  2052,  2055,  2061,  2064,
+    2067,  2070,  2073,  2076,  2079,  2082,  2085,  2088,  2091,  2094,
+    2100,  2101,  2102,  2106,  2110,  2115,  2120,  2126,  2132,  2136,
+    2144,  2145,  2146,  2147,  2150,  2153,  2157,  2160,  2166,  2169,
+    2173,  2180,  2187,  2194,  2204,  2205,  2209,  2213,  2217,  2221,
+    2241,  2245,  2248,  2254,  2264,  2267,  2273,  2274,  2289,  2294,
+    2302,  2306,  2313,  2323,  2324,  2325,  2329,  2330,  2333,  2345,
+    2349,  2355,  2361,  2365,  2368,  2376,  2379,  2385,  2386,  2390,
+    2396,  2402,  2406,  2410,  2416,  2419,  2434,  2437,  2444,  2445,
+    2450,  2456,  2459,  2465,  2472,  2479,  2486,  2493,  2500,  2507,
+    2514,  2524,  2534,  2544,  2547,  2550,  2560,  2563,  2569,  2573,
+    2579,  2584,  2590,  2597,  2604,  2614,  2620,  2629,  2638,  2643
 };
 #endif
 
@@ -962,14 +965,15 @@
   "non_empty_static_array_pair_list", "expr", "r_variable", "w_variable",
   "rw_variable", "variable", "variable_properties", "variable_property",
   "method_or_not", "variable_without_objects", "static_member",
-  "variable_class_name", "base_variable_with_function_calls",
-  "base_variable", "reference_variable", "compound_variable", "dim_offset",
+  "variable_class_name", "array_function_dereference",
+  "base_variable_with_function_calls", "base_variable",
+  "reference_variable", "compound_variable", "dim_offset",
   "object_property", "object_dim_list", "variable_name",
   "simple_indirect_reference", "assignment_list",
   "assignment_list_element", "array_pair_list",
   "non_empty_array_pair_list", "internal_functions_in_yacc",
-  "isset_variables", "parenthesis_expr", "combined_scalar", "new_expr",
-  "class_constant", YY_NULL
+  "isset_variables", "parenthesis_expr", "combined_scalar_offset",
+  "combined_scalar", "new_expr", "class_constant", YY_NULL
 };
 #endif
 
@@ -1028,22 +1032,22 @@
      241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
      241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
      241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
-     241,   241,   241,   241,   241,   241,   241,   241,   241,   242,
-     242,   242,   242,   243,   244,   244,   245,   245,   245,   245,
-     246,   246,   246,   246,   246,   246,   246,   246,   247,   247,
-     247,   247,   248,   248,   248,   249,   249,   250,   250,   251,
-     251,   252,   253,   253,   253,   254,   254,   255,   255,   255,
-     255,   255,   255,   255,   255,   255,   255,   255,   255,   256,
-     256,   256,   256,   256,   256,   256,   256,   256,   257,   258,
-     258,   258,   258,   258,   258,   259,   259,   260,   260,   261,
-     261,   261,   261,   262,   262,   263,   264,   265,   266,   266,
-     267,   267,   268,   269,   269,   270,   270,   271,   271,   272,
-     273,   273,   274,   274,   274,   274,   275,   275,   275,   276,
-     276,   277,   277,   278,   278,   279,   279,   279,   280,   280,
-     281,   281,   282,   282,   283,   283,   283,   284,   284,   285,
-     285,   285,   285,   285,   285,   285,   285,   286,   286,   286,
-     286,   286,   286,   286,   287,   287,   288,   288,   289,   289,
-     290,   291,   291,   241
+     241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
+     242,   242,   242,   242,   243,   244,   244,   245,   245,   245,
+     245,   246,   246,   246,   246,   246,   246,   246,   246,   247,
+     247,   247,   247,   248,   248,   248,   249,   249,   250,   250,
+     251,   251,   252,   253,   253,   253,   254,   254,   255,   255,
+     255,   255,   255,   255,   255,   255,   255,   255,   255,   255,
+     256,   256,   256,   256,   256,   256,   256,   256,   256,   257,
+     258,   258,   258,   258,   258,   258,   259,   259,   260,   260,
+     261,   261,   261,   261,   262,   262,   263,   264,   265,   266,
+     266,   267,   267,   268,   269,   269,   270,   270,   271,   271,
+     272,   273,   273,   274,   274,   274,   275,   275,   275,   275,
+     276,   276,   276,   277,   277,   278,   278,   279,   279,   280,
+     280,   280,   281,   281,   282,   282,   283,   283,   284,   284,
+     284,   285,   285,   286,   286,   286,   286,   286,   286,   286,
+     286,   287,   287,   287,   287,   287,   287,   287,   288,   288,
+     289,   289,   290,   290,   290,   291,   291,   292,   293,   293
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1076,22 +1080,22 @@
        3,     3,     3,     3,     3,     2,     2,     2,     2,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     1,     1,
        5,     4,     1,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     1,     1,     1,     2,     1,     9,    10,     2,
-       2,     4,     4,     1,     0,     4,     3,     4,     1,     2,
-       4,     6,     5,     6,     6,     6,     6,     4,     1,     1,
-       3,     2,     1,     3,     2,     1,     1,     4,     1,     2,
-       0,     2,     0,     2,     3,     0,     3,     1,     1,     1,
+       2,     2,     1,     1,     1,     1,     2,     1,     9,    10,
+       2,     2,     4,     4,     1,     0,     4,     3,     4,     1,
+       2,     4,     6,     5,     6,     6,     6,     6,     4,     1,
+       1,     3,     2,     1,     3,     2,     1,     1,     4,     1,
+       2,     0,     2,     0,     2,     3,     0,     3,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     3,     2,     2,     2,     4,     3,     1,     3,     1,
-       1,     1,     3,     2,     1,     0,     2,     0,     1,     5,
-       3,     3,     1,     1,     1,     1,     1,     1,     5,     1,
-       2,     0,     3,     3,     0,     1,     2,     3,     3,     1,
-       1,     1,     1,     3,     2,     1,     4,     4,     1,     1,
-       4,     0,     1,     1,     1,     4,     4,     1,     1,     3,
-       1,     2,     3,     1,     1,     4,     0,     0,     2,     5,
-       3,     3,     1,     6,     4,     4,     2,     4,     4,     2,
-       2,     4,     2,     2,     1,     3,     3,     3,     4,     3,
-       3,     3,     3,     4
+       1,     1,     3,     2,     2,     2,     4,     3,     1,     3,
+       1,     1,     1,     3,     2,     1,     0,     2,     0,     1,
+       5,     3,     3,     1,     1,     1,     1,     1,     1,     5,
+       1,     2,     0,     3,     3,     0,     1,     2,     3,     3,
+       1,     4,     4,     1,     1,     1,     1,     3,     2,     1,
+       4,     4,     1,     1,     4,     0,     1,     1,     1,     4,
+       4,     1,     1,     3,     1,     2,     3,     1,     1,     4,
+       0,     0,     2,     5,     3,     3,     1,     6,     4,     4,
+       2,     4,     4,     2,     2,     4,     2,     2,     1,     3,
+       3,     3,     4,     4,     4,     4,     3,     3,     3,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -1101,414 +1105,417 @@
 {
        4,     0,     2,     1,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   397,     0,     0,   312,     0,   317,
-     318,     5,   339,   379,    52,   319,   272,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   283,     0,     0,
-       0,     0,     0,     0,     0,     0,   298,     0,     0,     0,
-       0,    80,    86,     0,     0,   323,   324,   326,   320,   321,
-      32,    33,    34,   328,     0,   327,   322,     0,    83,   325,
-     276,     0,    59,    25,   390,   341,     3,     0,     7,    30,
-       8,     9,    73,    74,     0,     0,   354,     0,    75,   371,
-       0,   344,   273,     0,   353,     0,   355,     0,   375,     0,
-     359,   370,   372,   378,     0,   262,   258,   274,   259,   340,
-       5,   298,     0,   276,    75,   413,   412,     0,   410,   409,
-     275,   245,   246,   247,   248,   271,   269,   268,   267,   266,
-     265,   264,   263,   298,     0,     0,     0,   299,     0,   228,
-     357,     0,   226,     0,   402,     0,   347,   213,     0,     0,
-     299,   305,   315,   306,     0,   308,   372,     0,     0,   270,
-       0,    31,     0,   204,     0,     0,   205,     0,     0,     0,
-      42,     0,    44,     0,     0,     0,    46,   354,     0,   355,
-      25,     0,     0,    18,     0,    17,   148,     0,     0,   147,
-      82,    81,   153,     0,    75,     0,     0,     0,     0,   396,
-     397,     0,     4,     0,   343,   354,     0,   355,     0,     0,
-     259,     0,     0,     0,   139,     0,    15,    84,    87,    54,
-      76,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   401,     0,     0,   313,     0,   318,
+     319,     5,   340,   383,    52,   320,   272,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   284,     0,     0,
+       0,     0,     0,     0,     0,     0,   299,     0,     0,     0,
+       0,    80,    86,     0,     0,   324,   325,   327,   321,   322,
+      32,    33,    34,   329,     0,   328,   323,     0,    83,   326,
+     277,     0,    59,    25,   394,   342,     3,     0,     7,    30,
+       8,     9,    73,    74,     0,     0,   355,     0,    75,   375,
+       0,   345,   273,     0,   354,     0,   356,     0,   379,     0,
+     374,   360,   373,   376,   382,     0,   262,   258,   274,   275,
+     259,   341,     5,   299,     0,   277,    75,   417,   416,     0,
+     414,   413,   276,   245,   246,   247,   248,   271,   269,   268,
+     267,   266,   265,   264,   263,   299,     0,     0,     0,   300,
+       0,   228,   358,     0,   226,     0,   406,     0,   348,   213,
+       0,     0,   300,   306,   316,   307,     0,   309,   376,     0,
+       0,   270,     0,    31,   385,     0,   204,     0,     0,   205,
+       0,     0,     0,    42,     0,    44,     0,     0,     0,    46,
+     355,     0,   356,    25,     0,     0,    18,     0,    17,   148,
+       0,     0,   147,    82,    81,   153,     0,    75,     0,     0,
+       0,     0,   400,   401,     0,     4,     0,   344,   355,     0,
+     356,     0,     0,   259,     0,     0,     0,   139,     0,    15,
+      84,    87,    54,    76,     0,   385,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   381,
-      53,   227,   225,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   139,     0,     0,   381,     0,
-     391,   374,     0,     0,     0,   301,     0,     0,     0,   406,
-     356,     0,   419,   348,   398,     0,   301,     0,   139,   420,
-       0,     0,   374,   313,     0,     0,     0,    51,     0,     0,
-       0,   206,   208,   354,   355,     0,     0,     0,    43,    45,
-      62,     0,    47,    48,     0,    61,    20,     0,     0,    14,
-       0,   149,   355,     0,    49,     0,     0,    50,     0,     0,
-      70,    72,   414,     0,     0,     0,     0,   394,     0,   393,
-       0,   342,     0,    11,     4,   139,     0,   417,   416,   373,
-       0,    35,    24,    26,    27,    28,     0,     6,     0,     0,
-     138,   354,   355,     0,     0,    89,     0,     0,     0,   134,
-     421,   367,   365,     0,   231,   233,   232,     0,     0,   229,
-     230,   234,   236,   235,   250,   249,   252,   251,   253,   255,
-     256,   254,   244,   243,   238,   239,   237,   240,   241,   242,
-     257,   382,     0,     0,   210,   224,   223,   222,   221,   220,
-     219,   218,   217,   216,   215,   214,     0,   422,   368,   388,
-       0,   384,   364,   383,   387,     0,     0,   411,   300,     0,
-       0,     0,   401,     0,   400,   300,   367,     0,   368,   310,
-     314,     0,   203,     0,     0,   205,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   345,     0,     0,     0,   330,
-       0,   329,    23,   337,     0,     0,    19,    16,     0,   146,
-     154,   151,   134,     0,     0,     0,   407,   408,    10,   396,
-     396,     0,   418,   139,    13,     0,     0,   354,   355,     0,
-     380,   142,   290,     0,     0,     0,     0,   302,    85,     0,
-       0,    88,    91,   156,   134,   136,   137,     0,   124,     0,
-     135,   139,   139,   366,   261,     0,   423,     0,   211,   297,
-     139,   139,     0,   139,   361,   381,     0,   376,   377,   405,
-     404,     0,   316,   307,    25,   116,     0,    25,   114,    38,
-       0,   207,    93,     0,    93,    95,   103,     0,    25,   101,
-      58,   109,   109,    41,   333,   334,   352,     0,   347,   345,
-       0,   332,     0,     0,    21,   150,     0,     0,    71,    55,
-     415,     0,   392,     0,     0,    12,   292,     0,     0,   354,
-     355,    22,     0,   304,    90,   156,     0,   187,     0,   284,
-     134,     0,   126,     0,     0,   260,   315,     0,     0,   389,
-       0,   358,     0,     0,     0,   399,     0,   309,   118,   120,
-       0,     0,   205,     0,     0,    96,     0,     0,     0,   109,
-       0,   109,     0,     0,   336,   348,   346,     0,   331,   338,
-       0,   152,   284,   395,   209,   291,    29,   145,   303,   187,
-      92,     0,     0,   191,   192,   193,   196,   195,   194,   186,
-      79,   155,   159,     0,     0,   185,   189,     0,     0,     0,
-       0,     0,   127,     0,   293,   296,   212,   294,   295,   363,
-       0,   360,   385,   386,   403,   311,   122,     0,     0,    36,
-      39,     0,     0,    94,     0,     0,   104,     0,     0,     0,
-       0,     0,     0,   105,   351,   350,   335,     0,     0,    78,
-       0,     0,   163,   199,     0,   160,   190,     0,   158,    25,
-       0,    25,     0,   130,     0,   129,   364,     0,     0,     0,
-       0,   121,   115,     0,    25,    99,    57,    56,   102,     0,
-     107,     0,   112,   113,    25,   106,     0,     0,    25,     0,
-       0,   165,   167,   162,     0,     0,   157,    75,     0,     0,
-       0,   288,     0,     0,   131,     0,   128,   362,     0,    25,
-       0,     0,    25,    97,    40,     0,   108,    25,   111,   349,
-       0,     0,   202,   164,     5,     0,   168,   169,     0,     0,
-     177,     0,     0,   200,   197,     0,     0,    77,   289,     0,
-     285,   277,     0,   133,     0,   123,    37,     0,     0,     0,
-     110,    25,   278,   166,   170,   171,   181,     0,   172,     0,
-       0,     0,   201,     0,   286,   132,     0,   117,     0,   100,
-       0,     0,   180,   173,   174,   178,   198,   134,   287,    25,
-      98,    64,   179,     0,     0,   119,     0,    65,    63,    67,
-     175,     0,     0,     0,    60,    68,   183,    25,   161,     0,
-      25,     0,     0,     0,   184,     0,    66,    25,     0,    69
+       0,     0,     0,    53,   227,   225,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   139,     0,
+     385,     0,   385,     0,   395,   378,   385,   385,     0,     0,
+       0,   302,     0,     0,     0,   410,   357,     0,   426,   349,
+     402,     0,   302,     0,   139,   427,     0,     0,   378,   314,
+       0,     0,   386,     0,     0,    51,     0,     0,     0,   206,
+     208,   355,   356,     0,     0,     0,    43,    45,    62,     0,
+      47,    48,     0,    61,    20,     0,     0,    14,     0,   149,
+     356,     0,    49,     0,     0,    50,     0,     0,    70,    72,
+     418,     0,     0,     0,     0,   398,     0,   397,     0,   343,
+       0,    11,     4,   139,     0,   421,   420,   377,     0,    35,
+      24,    26,    27,    28,     0,     6,     0,     0,   138,   355,
+     356,     0,     0,    89,     0,     0,     0,   134,     0,   428,
+     368,   366,     0,   231,   233,   232,     0,     0,   229,   230,
+     234,   236,   235,   250,   249,   252,   251,   253,   255,   256,
+     254,   244,   243,   238,   239,   237,   240,   241,   242,   257,
+       0,   210,   224,   223,   222,   221,   220,   219,   218,   217,
+     216,   215,   214,     0,   429,   369,     0,   392,     0,   388,
+     365,   387,   391,     0,     0,     0,     0,   415,   301,     0,
+       0,     0,   405,     0,   404,   301,   368,     0,   369,   311,
+     315,     0,   424,   203,     0,     0,   205,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   346,   320,     0,     0,
+       0,   331,     0,   330,    23,   338,     0,     0,    19,    16,
+       0,   146,   154,   151,   134,     0,     0,     0,   411,   412,
+      10,   400,   400,     0,   425,   139,    13,     0,     0,   355,
+     356,     0,   384,   142,   291,     0,     0,     0,     0,   303,
+      85,     0,     0,    88,    91,   156,   134,   136,   137,     0,
+     124,     0,   135,   372,   139,   139,   367,   261,     0,     0,
+     211,   298,   139,   139,   371,     0,   139,   362,   385,     0,
+     380,   381,   423,   422,   409,   408,     0,   317,   308,    25,
+     116,     0,    25,   114,    38,     0,   207,    93,     0,    93,
+      95,   103,     0,    25,   101,    58,   109,   109,    41,   334,
+     335,   353,     0,   348,   346,     0,   333,     0,     0,    21,
+     150,     0,     0,    71,    55,   419,     0,   396,     0,     0,
+      12,   293,     0,     0,   355,   356,    22,     0,   305,    90,
+     156,     0,   187,     0,   285,   134,     0,   126,     0,     0,
+     260,   316,     0,     0,   393,     0,   359,     0,     0,     0,
+     403,     0,   310,   118,   120,     0,     0,   205,     0,     0,
+      96,     0,     0,     0,   109,     0,   109,     0,     0,   337,
+     349,   347,     0,   332,   339,     0,   152,   285,   399,   209,
+     292,    29,   145,   304,   187,    92,     0,     0,   191,   192,
+     193,   196,   195,   194,   186,    79,   155,   159,     0,     0,
+     185,   189,     0,     0,     0,     0,     0,   127,     0,   294,
+     297,   212,   295,   296,   364,     0,   361,   389,   390,   407,
+     312,   122,     0,     0,    36,    39,     0,     0,    94,     0,
+       0,   104,     0,     0,     0,     0,     0,     0,   105,   352,
+     351,   336,     0,     0,    78,     0,     0,   163,   199,     0,
+     160,   190,     0,   158,    25,     0,    25,     0,   130,     0,
+     129,   365,     0,     0,     0,     0,   121,   115,     0,    25,
+      99,    57,    56,   102,     0,   107,     0,   112,   113,    25,
+     106,     0,     0,    25,     0,     0,   165,   167,   162,     0,
+       0,   157,    75,     0,     0,     0,   289,     0,     0,   131,
+       0,   128,   363,     0,    25,     0,     0,    25,    97,    40,
+       0,   108,    25,   111,   350,     0,     0,   202,   164,     5,
+       0,   168,   169,     0,     0,   177,     0,     0,   200,   197,
+       0,     0,    77,   290,     0,   286,   278,     0,   133,     0,
+     123,    37,     0,     0,     0,   110,    25,   279,   166,   170,
+     171,   181,     0,   172,     0,     0,     0,   201,     0,   287,
+     132,     0,   117,     0,   100,     0,     0,   180,   173,   174,
+     178,   198,   134,   288,    25,    98,    64,   179,     0,     0,
+     119,     0,    65,    63,    67,   175,     0,     0,     0,    60,
+      68,   183,    25,   161,     0,    25,     0,     0,     0,   184,
+       0,    66,    25,     0,    69
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     2,    85,    86,   194,   195,    87,   221,   362,
-     363,    89,   847,   854,   848,   849,   339,   340,   364,   365,
-     231,    92,    93,    94,   375,    95,   377,   510,   511,   624,
-     554,   774,   736,   560,   316,   563,   630,   744,   549,   619,
-     686,   689,   729,   517,   518,   519,   369,   370,   198,   199,
-     203,   597,   661,   757,   662,   711,   753,   785,   786,   787,
-     788,   833,   789,   790,   791,   831,   858,   663,   664,   665,
-     666,   714,   667,   172,   310,   311,    96,    97,   124,   670,
-     762,    99,   100,   520,   162,   163,   543,   617,   169,   299,
-     101,   566,   473,   102,   567,   294,   568,   103,   104,   289,
-     105,   106,   611,   681,   534,   107,   108,   109,   110,   111,
-     112,   113,   412,   432,   433,   434,   114,   348,   349,   155,
-     156,   115,   343,   116,   117,   118,   119
+      -1,     1,     2,    85,    86,   197,   198,    87,   224,   370,
+     371,    89,   862,   869,   863,   864,   347,   348,   372,   373,
+     234,    92,    93,    94,   383,    95,   385,   522,   523,   639,
+     569,   789,   751,   575,   324,   578,   645,   759,   564,   634,
+     701,   704,   744,   529,   530,   531,   377,   378,   201,   202,
+     206,   612,   676,   772,   677,   726,   768,   800,   801,   802,
+     803,   848,   804,   805,   806,   846,   873,   678,   679,   680,
+     681,   729,   682,   175,   318,   319,    96,    97,   126,   685,
+     777,    99,   100,   532,   164,   165,   558,   632,   171,   305,
+     101,   581,   485,   102,   582,   300,   583,   103,   104,   295,
+     105,   106,   626,   696,   547,   107,   108,   109,   110,   111,
+     112,   113,   114,   313,   440,   441,   442,   115,   356,   357,
+     157,   158,   116,   351,   117,   118,   119,   120,   121
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -623
+#define YYPACT_NINF -666
 static const yytype_int16 yypact[] =
 {
-    -623,    70,  1927,  -623,  6439,  6439,   -83,  6439,  6439,  6439,
-    6439,  6439,  6439,  6439,  6439,  6439,  6439,  6439,  6439,  6439,
-    6439,  6439,   276,   276,  4867,  6439,   367,   -71,   -69,  -623,
-    -623,    65,  -623,  -623,  -623,  -623,  -623,  6439,  4727,   -57,
-     -38,    -1,    35,    37,  4998,  5129,    68,  -623,   100,  5260,
-      55,  6439,    72,   -25,   118,   130,   -13,   144,   151,   155,
-     167,  -623,  -623,   169,   179,  -623,  -623,  -623,  -623,  -623,
-    -623,  -623,  -623,  -623,     7,  -623,  -623,   268,  -623,  -623,
-    6439,  6570,  -623,  -623,   182,   -84,  -623,    11,  -623,  -623,
-    -623,  -623,  -623,  -623,   275,   279,  -623,   195,   326,  -623,
-     223,  -623,  -623,  1101,  -623,   184,  1372,   230,  -623,   244,
-     271,  -623,   -12,  -623,    -4,  -623,  -623,  -623,  -623,  -623,
-    -623,   290,   247,  -623,   326,  7633,  7633,  6439,  7633,  7633,
-    7747,   337,   337,    -3,   337,   337,   337,   337,   337,   337,
-     337,   337,   337,  -623,   251,   268,   339,   -73,   261,  -623,
-    -623,   262,  -623,   276,  7435,   248,   405,  -623,   265,   268,
-     269,   272,   264,  -623,   274,   299,   -27,    -4,  5391,  -623,
-    6439,  -623,    14,  7633,   343,  6439,  6439,  6439,   356,  6439,
-    -623,  1605,  -623,  6933,   273,   418,  -623,   289,  7633,   212,
-    -623,  6990,   268,   -52,    15,  -623,  -623,   149,    16,  -623,
-    -623,  -623,   437,    20,   326,   276,   276,   276,   292,   267,
-    4867,   268,  -623,   -95,   173,   105,  7476,   854,   296,  7031,
-     298,  2067,  6439,   389,  5522,   394,  -623,   348,   350,  -623,
-    -623,   -15,    88,  6439,  6439,  6439,  5653,  6439,  6439,  6439,
-    6439,  6439,  6439,  6439,  6439,  6439,  6439,  6439,  6439,  6439,
-    6439,  6439,  6439,  6439,  6439,  6439,  6439,  6439,   367,  6439,
-    -623,  -623,  -623,  5784,  6439,  6439,  6439,  6439,  6439,  6439,
-    6439,  6439,  6439,  6439,  6439,  5522,    89,    42,  6439,  6439,
-     182,   -14,   315,  7072,   268,   -72,   298,   123,   124,  -623,
-    -623,  5915,  -623,  6046,  -623,   268,   269,     9,  5522,  -623,
-       9,    42,    -8,  -623,  7128,  7169,  6439,  -623,   316,  7210,
-     319,   467,  7633,   383,  1397,   469,    18,  7261,  -623,  -623,
-    -623,  1142,  -623,  -623,  2207,  -623,   -49,   410,    72,  -623,
-    6439,  -623,  -623,   -25,  -623,  1142,   411,  -623,   329,    25,
-    -623,  -623,  -623,    26,   332,   328,   340,  -623,    27,  -623,
-     336,   175,  1619,  -623,  -623,  5522,  6439,  -623,  -623,  -623,
-     342,  -623,  -623,  -623,  -623,  -623,  1437,  -623,   276,   352,
-     484,    29,    90,   489,    69,   384,    69,   351,   355,   246,
-     358,   359,    -8,    -4,  7673,  7710,  7747,  6439,  7577,  7820,
-    1504,  4920,  5051,  5182,  5313,  5313,  5313,  5313,  1009,  1009,
-    1009,  1009,   530,   530,   333,   333,   333,    -3,    -3,    -3,
-    -623,  7633,   357,   263,  7747,  7747,  7747,  7747,  7747,  7747,
-    7747,  7747,  7747,  7747,  7747,  7747,   360,   362,   365,  -623,
-    6439,  -623,   366,    -6,  -623,   363,  6713,  -623,   -68,   358,
-     362,   276,  7633,   276,  7534,   269,  -623,   369,  -623,  -623,
-    -623,  4027,  7633,  6439,  4167,  6439,  6439,   276,   181,  1142,
-     453,  4307,     6,  1142,  1142,  1142,   371,   381,   268,   -51,
-     390,  -623,  -623,  -623,   429,   463,  -623,  -623,  6754,  -623,
-    -623,   524,   246,   276,   379,   276,  -623,  -623,  -623,   267,
-     267,   527,  -623,  5522,  -623,  1787,   382,   201,   939,   385,
-    -623,  -623,  -623,  6177,  1142,   408,   268,   269,  -623,    69,
-     400,   537,  -623,  -623,   246,  -623,  -623,   403,   555,    61,
-    -623,  5522,  5522,    -8,  7784,  6439,  -623,   367,  -623,  -623,
-    5522,  5522,  6795,  5522,  -623,  6439,  6439,  -623,  -623,  -623,
-    -623,  6308,  -623,   445,  -623,  -623,  7302,  -623,  -623,  -623,
-     420,  7633,   457,   276,   457,  -623,  -623,   565,  -623,  -623,
-    -623,   426,   428,  -623,  -623,  -623,   465,   430,   584,  1142,
-     268,   110,   525,   442,  -623,  -623,  1142,   451,  -623,  -623,
-    -623,    30,  -623,  6439,   452,  -623,  -623,   441,   276,    31,
-     108,  -623,   268,   269,   537,  -623,    69,   440,   454,   505,
-     148,   539,   602,   458,   461,  7784,   264,   462,   466,  -623,
-     470,   500,   468,  6851,   276,  7633,    42,  -623,  3887,   225,
-     471,  2347,  6439,   181,   474,  -623,   479,  1142,  2487,  -623,
-     112,  -623,   114,  1142,  -623,  1142,  -623,   480,   153,  -623,
-      69,  -623,   505,  -623,  7747,  -623,  -623,  -623,   269,   580,
-    -623,   568,    69,  -623,  -623,  -623,  -623,  -623,  -623,  -623,
-    -623,  -623,  -623,   567,   290,   334,  -623,    21,   482,   486,
-     485,   187,   632,  1142,  -623,  -623,  -623,  -623,  -623,  -623,
-      42,  -623,  -623,  -623,  -623,  -623,   266,   495,  4727,  -623,
-    -623,   497,   499,  -623,  4447,  4447,  -623,   506,   250,   510,
-    6439,    19,   146,  -623,  -623,   529,  -623,   585,   512,  -623,
-     658,     5,  -623,   661,    22,  -623,  -623,   603,  -623,  -623,
-     213,  -623,   600,   664,  1142,  -623,   366,   520,   654,   613,
-    6439,  -623,  -623,  4587,  -623,  -623,  -623,  -623,  -623,   528,
-    -623,  6892,  -623,  -623,  -623,  -623,  1142,   538,  -623,  1142,
-      69,  -623,   216,  -623,  1142,   609,  -623,   326,   683,  2627,
-     624,  -623,    32,  2767,   687,  1142,  -623,  -623,  6439,  -623,
-     542,  7343,  -623,  -623,  -623,  2907,  -623,  -623,  3887,  -623,
-     545,  3047,  -623,  -623,   610,   546,   216,  -623,   547,   616,
-     558,   551,   569,  -623,   699,   640,  1142,  -623,  -623,   217,
-    -623,  -623,  1142,  -623,  7394,  3887,  -623,  4727,  3187,   560,
-    3887,  -623,  -623,  -623,  -623,  -623,   494,    69,  -623,   642,
-    1142,   563,  -623,   643,  -623,  -623,   696,  -623,   564,  -623,
-    3327,   650,   652,   719,  -623,  -623,  -623,   246,  -623,  -623,
-    -623,   623,  -623,    69,   571,  3887,   573,   575,   623,  -623,
-    -623,   215,    69,   572,  -623,  -623,  -623,  -623,  -623,   659,
-    -623,  3467,   576,  3607,  -623,   577,  -623,  -623,  3747,  -623
+    -666,    56,  1917,  -666,  6429,  6429,   -92,  6429,  6429,  6429,
+    6429,  6429,  6429,  6429,  6429,  6429,  6429,  6429,  6429,  6429,
+    6429,  6429,   170,   170,  4857,  6429,   262,   -87,   -82,  -666,
+    -666,    53,  -666,  -666,  -666,    31,  -666,  6429,  4717,   -74,
+      34,    57,    81,   102,  4988,  5119,    80,  -666,    87,  5250,
+     104,  6429,    85,   -27,    42,   157,    68,   124,   156,   158,
+     181,  -666,  -666,   183,   185,  -666,  -666,  -666,  -666,  -666,
+    -666,  -666,  -666,  -666,   -34,  -666,  -666,   144,  -666,  -666,
+    6429,  6560,  -666,  -666,   166,   -65,  -666,    14,  -666,  -666,
+    -666,  -666,  -666,  -666,   286,   296,  -666,   213,   343,   312,
+     233,  -666,  -666,   949,  -666,   140,  1535,   223,  -666,   238,
+     321,   261,  -666,   -21,  -666,    48,  -666,  -666,   324,   326,
+    -666,  -666,  -666,   290,   243,  -666,   343,  7615,  7615,  6429,
+    7615,  7615,  7715,  -666,  -666,   349,  -666,  -666,  -666,  -666,
+    -666,  -666,  -666,  -666,  -666,  -666,   248,   144,   339,    97,
+     263,  -666,  -666,   266,  -666,   170,  7417,   250,   404,  -666,
+     265,   144,   267,   272,   264,  -666,   274,   297,   -17,    48,
+    5381,  -666,  6429,  -666,  6429,    15,  7615,   338,  6429,  6429,
+    6429,   351,  6429,  -666,  6882,  -666,  6923,   268,   420,  -666,
+     282,  7615,  1474,  -666,  6975,   144,   -50,    16,  -666,  -666,
+     242,    17,  -666,  -666,  -666,   430,    19,   343,   170,   170,
+     170,   285,   688,  4857,   144,  -666,   -64,   189,   109,  7458,
+    1284,   291,  7016,   292,  2057,  6429,   372,  5512,   379,  -666,
+     332,   333,  -666,  -666,   -10,  6429,     0,  6429,  6429,  6429,
+    5643,  6429,  6429,  6429,  6429,  6429,  6429,  6429,  6429,  6429,
+    6429,  6429,  6429,  6429,  6429,  6429,  6429,  6429,  6429,  6429,
+    6429,  6429,   262,  -666,  -666,  -666,  5774,  6429,  6429,  6429,
+    6429,  6429,  6429,  6429,  6429,  6429,  6429,  6429,  5512,    10,
+    6429,   -22,  6429,  6429,   166,    -4,  6429,  6429,   298,  7057,
+     144,   139,   292,    43,    47,  -666,  -666,  5905,  -666,  6036,
+    -666,   144,   267,    55,  5512,  -666,    55,   -22,   -30,  -666,
+    7109,  7151,  7615,   303,  6429,  -666,   315,  7192,   314,   470,
+    7615,   387,  1004,   468,     8,  7242,  -666,  -666,  -666,   761,
+    -666,  -666,  2197,  -666,   -25,   409,    85,  -666,  6429,  -666,
+    -666,   -27,  -666,   761,   408,  -666,   335,    23,  -666,  -666,
+    -666,    24,   336,   334,   342,  -666,    26,  -666,   344,   191,
+    1637,  -666,  -666,  5512,  6429,  -666,  -666,  -666,   346,  -666,
+    -666,  -666,  -666,  -666,  1236,  -666,   170,   347,   483,    27,
+      90,   488,   -13,   389,   -13,   356,   352,    72,   358,   367,
+     368,   -30,    48,  7655,  7692,  7715,  6429,  7559,  7737,  7758,
+    4910,  5041,  1769,  1909,  1909,  1909,  1909,  1311,  1311,  1311,
+    1311,   515,   515,   319,   319,   319,   349,   349,   349,  -666,
+     197,  7715,  7715,  7715,  7715,  7715,  7715,  7715,  7715,  7715,
+    7715,  7715,  7715,   370,   369,   373,   366,  -666,  6429,  -666,
+     374,   -14,  -666,   377,  1580,   386,   388,  -666,   168,   367,
+     369,   170,  7615,   170,  7516,   267,  -666,   378,  -666,  -666,
+    -666,  4017,  -666,  7615,  6429,  4157,  6429,  6429,   170,   162,
+     761,   460,  4297,    -6,   761,   761,   761,  -666,   396,   385,
+     144,    79,   411,  -666,  -666,  -666,   461,   492,  -666,  -666,
+    6703,  -666,  -666,   555,    72,   170,   412,   170,  -666,  -666,
+    -666,   688,   688,   561,  -666,  5512,  -666,  1777,   416,   121,
+    1403,   418,  -666,  -666,  -666,  6167,   761,   427,   144,   267,
+    -666,   -13,   422,   576,  -666,  -666,    72,  -666,  -666,   426,
+     580,    59,  -666,  -666,  5512,  5512,   -30,  1086,  6429,   262,
+    -666,  -666,  5512,  5512,  -666,  6744,  5512,  -666,  6429,  6429,
+    -666,  -666,  -666,  -666,  -666,  -666,  6298,  -666,   465,  -666,
+    -666,  7284,  -666,  -666,  -666,   431,  7615,   472,   170,   472,
+    -666,  -666,   577,  -666,  -666,  -666,   439,   443,  -666,  -666,
+    -666,   479,   429,   599,   761,   144,   201,   540,   456,  -666,
+    -666,   761,   462,  -666,  -666,  -666,    28,  -666,  6429,   463,
+    -666,  -666,   455,   170,    30,   650,  -666,   144,   267,   576,
+    -666,   -13,   325,   464,   519,   105,   552,   615,   471,   473,
+    1086,   264,   476,   477,  -666,   480,   505,   474,  6785,   170,
+    7615,   -22,  -666,  3877,   226,   482,  2337,  6429,   162,   481,
+    -666,   487,   761,  2477,  -666,   131,  -666,     3,   761,  -666,
+     761,  -666,   489,   206,  -666,   -13,  -666,   519,  -666,  7715,
+    -666,  -666,  -666,   267,   433,  -666,   578,   -13,  -666,  -666,
+    -666,  -666,  -666,  -666,  -666,  -666,  -666,  -666,   574,   290,
+     348,  -666,    20,   493,   497,   495,   165,   644,   761,  -666,
+    -666,  -666,  -666,  -666,  -666,   -22,  -666,  -666,  -666,  -666,
+    -666,   235,   502,  4717,  -666,  -666,   501,   517,  -666,  4437,
+    4437,  -666,   518,   155,   521,  6429,     4,    36,  -666,  -666,
+     554,  -666,   607,   523,  -666,   672,    11,  -666,   673,    21,
+    -666,  -666,   621,  -666,  -666,   169,  -666,   620,   684,   761,
+    -666,   374,   541,   674,   628,  6429,  -666,  -666,  4577,  -666,
+    -666,  -666,  -666,  -666,   542,  -666,  6841,  -666,  -666,  -666,
+    -666,   761,   544,  -666,   761,   -13,  -666,    46,  -666,   761,
+     626,  -666,   343,   691,  2617,   631,  -666,    32,  2757,   694,
+     761,  -666,  -666,  6429,  -666,   549,  7325,  -666,  -666,  -666,
+    2897,  -666,  -666,  3877,  -666,   553,  3037,  -666,  -666,   625,
+     551,    46,  -666,   559,   627,   569,   562,   581,  -666,   710,
+     651,   761,  -666,  -666,   188,  -666,  -666,   761,  -666,  7375,
+    3877,  -666,  4717,  3177,   565,  3877,  -666,  -666,  -666,  -666,
+    -666,   579,   -13,  -666,   655,   761,   572,  -666,   656,  -666,
+    -666,   706,  -666,   573,  -666,  3317,   662,   663,   729,  -666,
+    -666,  -666,    72,  -666,  -666,  -666,   633,  -666,   -13,   582,
+    3877,   584,   583,   633,  -666,  -666,   145,   -13,   586,  -666,
+    -666,  -666,  -666,  -666,   664,  -666,  3457,   589,  3597,  -666,
+     588,  -666,  -666,  3737,  -666
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -623,  -623,  -198,    -5,  -623,  -623,   409,  -623,  -188,  -623,
-      10,  -623,  -623,  -623,  -623,  -112,  -623,   256,     1,     2,
-    -123,  -623,  -623,  -623,  -623,  -623,  -623,  -623,   231,   192,
-     125,  -623,    56,  -623,  -623,  -623,  -494,    12,  -623,  -623,
-    -623,  -623,  -623,  -472,  -623,   150,  -216,  -623,  -623,   419,
-    -623,   159,  -623,  -623,  -623,  -623,  -623,  -623,  -623,   -30,
-    -623,  -623,  -623,  -623,  -623,  -623,  -623,  -623,  -623,  -623,
-    -622,  -623,  -623,  -623,  -444,  -623,   134,   677,    -2,   117,
-    -623,  -623,   443,  -349,  -242,  -623,  -623,  -623,  -623,   156,
-     434,   222,  -623,  -623,   194,   197,  -623,  1076,   570,  -348,
-     364,   361,  -623,  -623,    40,  -224,  -623,   966,  -623,   -21,
-     -17,  -623,  -263,  -295,  -623,  -623,   -19,   281,   278,   561,
-    -623,  -623,  -623,  -623,  -623,   -50,  -623
+    -666,  -666,  -174,    -5,  -666,  -666,   407,  -666,  -167,  -666,
+       7,  -666,  -666,  -666,  -666,  -110,  -666,   259,     1,     2,
+    -125,  -666,  -666,  -666,  -666,  -666,  -666,  -666,   236,   196,
+     120,  -666,    58,  -666,  -666,  -666,  -485,    13,  -666,  -666,
+    -666,  -666,  -666,  -489,  -666,   151,  -234,  -666,  -666,   438,
+    -666,   160,  -666,  -666,  -666,  -666,  -666,  -666,  -666,   -19,
+    -666,  -666,  -666,  -666,  -666,  -666,  -666,  -666,  -666,  -666,
+    -665,  -666,  -666,  -666,  -453,  -666,    66,   686,    -2,   117,
+    -666,  -666,   276,  -214,  -250,  -666,  -666,  -666,  -666,   159,
+    -262,  -241,  -666,  -666,   199,   198,  -666,   924,   585,  -362,
+     331,  1032,  -666,  -666,    45,  -229,  -666,   874,  -666,  -666,
+     -24,   -20,  -666,  -225,  -299,  -666,  -666,   -15,   283,   287,
+     587,  -666,  -666,  -666,  -666,  -666,  -666,   -23,  -666
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -370
+#define YYTABLE_NINF -371
 static const yytype_int16 yytable[] =
 {
-      98,   282,   324,    90,    91,   165,   449,   167,   381,   166,
-     577,   550,    88,   750,   352,   435,   410,   147,   147,   225,
-     501,   160,   306,   328,   333,   508,   460,   512,   336,   717,
-     755,   220,   561,   483,   485,   490,   278,  -140,   490,  -143,
-     799,   327,   598,   716,   475,   742,   258,   193,   174,   278,
-     196,   278,   428,   431,   204,   278,   223,   535,   378,   426,
-     259,  -299,   202,   381,   428,   353,   354,   223,   632,   213,
-       3,    33,   214,   446,   224,   127,   448,   431,   223,   223,
-     120,   338,   447,   223,    33,   224,   355,   168,    47,   170,
-     493,   171,   601,   539,  -299,   540,   286,   281,  -141,   223,
-     223,   175,   223,   263,   264,   265,   266,   267,   268,   269,
-     270,   271,   272,   273,   274,   429,  -144,    33,  -369,   204,
-     176,   263,   264,   265,   266,   267,   268,   269,   270,   271,
-     272,   273,   274,  -369,   279,   698,   602,   702,   197,   496,
-     285,   184,   120,   379,  -366,   120,  -365,   279,   147,   279,
-     302,  -357,  -357,   279,   296,   536,   495,   177,   211,   280,
-     512,   380,   427,    33,    33,   751,   752,   562,   212,  -357,
-    -357,   226,    84,   185,   307,   329,   334,   461,   692,   743,
-     337,   718,   756,   187,   484,   486,   491,   326,  -140,   643,
-    -143,   800,   147,   178,   832,   179,   439,   440,    33,    33,
-     147,   147,   147,   430,   147,    84,   351,   699,   700,   701,
-     700,   701,   553,   383,   215,   382,   190,   505,   722,    98,
-     506,   120,   120,   192,    33,   263,   264,   265,   266,   267,
-     268,   269,   270,   271,   272,   273,   274,   165,   200,   167,
-     647,   166,   700,   701,   760,   261,   262,   650,   823,  -141,
-     201,    84,    84,   160,   120,  -301,    33,   383,   383,   382,
-     382,   223,   723,   143,  -279,  -279,   684,  -144,   383,   383,
-     382,   382,   612,  -357,  -357,   515,   703,   584,   383,   438,
-     382,   383,   383,   382,   382,   606,    84,    84,   761,   784,
-     445,   707,   824,   687,   688,   143,   505,   144,  -300,   506,
-     145,   516,   205,   712,   223,   603,   604,   146,   745,   206,
-     330,   313,    84,   207,   607,   608,   469,   610,  -301,   120,
-    -300,   685,    98,   193,   223,   208,   223,   209,   527,   144,
-     469,   355,   145,   493,   727,   728,   120,   210,    33,   146,
-     120,   120,    33,   222,    84,   739,   700,   701,   227,   120,
-      98,    33,   228,    90,    91,   229,   618,   230,   371,   621,
-    -281,  -281,    88,   147,   505,   844,   523,   506,   232,   507,
-     628,   507,   323,   515,   507,   856,   857,   143,   255,   256,
-     257,   143,   258,   150,   150,   726,   149,   152,   275,   276,
-     143,    47,   431,   346,   505,   277,   259,   506,   211,   516,
-     259,   783,   284,   792,    26,  -125,   287,   288,   147,   371,
-     189,   144,   292,   293,   145,   144,   295,   297,   145,   300,
-     223,   146,   298,   301,   144,   146,    84,   145,   308,   315,
-      84,   321,   371,   320,   146,  -188,   147,   792,   147,    84,
-     120,   217,    33,   653,   654,   655,   656,   657,   658,   322,
-     335,   345,   147,   147,   469,   357,   431,   359,   469,   469,
-     469,   545,   367,   571,   548,   148,   148,   373,   834,   161,
-     374,   559,   376,   379,   453,   456,   457,   507,   147,   455,
-     147,   143,   459,   476,   147,   147,   481,   482,   488,   371,
-     497,   487,   503,    98,   850,   492,    90,    91,   489,   469,
-     499,   593,   504,   859,   507,    88,   165,   509,   167,   507,
-     166,   502,   513,   514,   290,   158,   521,   522,   159,   529,
-     530,   526,   160,   531,   533,   146,   557,   537,   542,   569,
-      84,   759,   570,   763,   573,   572,   574,   576,   314,   579,
-     583,   586,   651,   472,   587,   596,   775,   652,   147,   653,
-     654,   655,   656,   657,   658,   659,   778,   480,   332,   592,
-     781,   595,   599,   600,   469,   638,   341,   342,   344,   616,
-     347,   469,   252,   253,   254,   255,   256,   257,   627,   258,
-     622,   805,   623,   147,   808,   372,   629,   648,   631,   810,
-     633,   507,   635,   259,   634,   507,   148,   383,   639,   382,
-     640,   646,   660,   653,   654,   655,   656,   657,   658,   147,
-     642,   645,   669,   668,   672,   673,    98,   674,   147,    98,
-     675,   677,   469,   830,   680,   678,    98,   371,   469,   679,
-     469,   690,   682,   694,   795,   507,   372,   589,   695,   706,
-     148,   710,   713,   719,   720,   724,   721,   507,   148,   148,
-     148,   845,   148,   730,   746,   371,   371,   732,   733,   372,
-     747,   383,   715,   382,   371,   371,   738,   371,   469,   861,
-     740,   749,   863,   748,   754,   764,   758,   765,   768,   868,
-     769,   556,   651,   770,   794,   564,   565,   652,   776,   653,
-     654,   655,   656,   657,   658,   659,   796,   780,   731,   798,
-     802,   161,   806,  -176,   735,   735,   811,   815,   813,   816,
-     817,   818,   820,   821,   819,   835,   372,   498,   838,   469,
-     829,   837,   839,   842,   840,  -182,   591,   843,   846,   290,
-     851,   852,   853,   860,   862,   865,   855,   477,   867,   578,
-     594,   469,   709,   773,   469,   507,   626,   507,   693,   469,
-     671,   737,   479,   777,   649,   471,   814,    98,   218,   708,
-     469,    98,   676,   637,   470,   636,   767,   331,   582,   471,
-     581,   350,     0,    98,   528,     0,    98,     0,   470,    98,
-       0,   507,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   469,     0,     0,     0,     0,     0,   469,   641,     0,
-       0,     0,   290,    98,   290,     0,    98,     0,    98,     0,
-       0,   148,   507,     0,     0,   469,     0,   827,   552,   555,
-       0,     0,     0,     0,     0,     0,     0,     0,    98,     0,
-       0,     0,   507,     0,     0,     0,     0,     0,   507,     0,
-       0,     0,     0,    98,   341,     0,   580,   507,     0,   696,
-     347,   347,     0,     0,   372,   704,   148,   705,     0,    98,
-       0,    98,     0,     0,   590,     0,    98,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,     0,
-       0,     0,   372,   372,   148,     0,   148,     0,     0,     0,
-       0,   372,   372,   471,   372,   725,     0,   471,   471,   471,
-     148,   148,   470,     0,     0,     0,   470,   470,   470,     0,
-       0,     0,     0,     0,   625,  -357,  -357,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   148,     0,   148,     0,
-       0,     0,   148,   148,     0,     0,     0,     0,   471,     0,
-       0,     0,     0,     0,     0,     0,   766,   470,     0,   290,
-       0,     0,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,     0,     0,     0,     0,   779,     0,
-     161,   782,     0,     0,     0,   290,   793,     0,     0,     0,
-       0,     0,     0,     0,   555,     0,     0,   803,   151,   151,
-       0,     0,   164,     0,     0,     0,   148,     0,     0,     0,
-    -357,  -357,     0,   471,     0,     0,     0,     0,     0,     0,
-     471,     0,   470,  -280,  -280,     0,     0,     0,   822,   470,
-       0,     0,     0,     0,   825,     0,     0,     0,     0,     0,
-       0,   148,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   836,     0,     0,  -370,  -370,  -370,  -370,   250,
-     251,   252,   253,   254,   255,   256,   257,   148,   258,     0,
-       0,   471,     0,     0,     0,     0,   148,   471,     0,   471,
-     470,     0,   259,     0,     0,     0,   470,     0,   470,     0,
-     125,   126,     0,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,  -282,  -282,
-     154,   157,     0,     0,     0,     0,     0,   471,     0,     0,
-     233,   234,   235,   173,     0,     0,   470,     0,     0,   151,
-     181,   183,     0,     0,     0,   188,   236,   191,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,     0,
-     258,     0,     0,     0,     0,     0,   216,   219,   471,     0,
-       0,     0,     0,   151,   259,     0,     0,   470,     0,     0,
-       0,   151,   151,   151,     0,   151,     0,     0,     0,     0,
-     471,     0,     0,   471,   463,   464,     0,     0,   471,   470,
-       0,     0,   470,     0,     0,     0,     0,   470,     0,   471,
-       0,     0,     0,   283,     0,   465,     0,     0,   470,     0,
-       0,     0,     0,    29,    30,   120,     0,     0,     0,     0,
-       0,     0,     0,    35,   164,     0,     0,     0,     0,     0,
-     471,     0,     0,     0,     0,     0,   471,     0,     0,   470,
-       0,     0,     0,     0,   304,   470,   305,     0,     0,     0,
-       0,   309,   312,   188,   471,   317,   143,     0,     0,     0,
-       0,   260,     0,   470,     0,     0,     0,     0,     0,   466,
-      65,    66,    67,    68,    69,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    73,     0,   154,     0,     0,     0,
-     467,    75,    76,   468,     0,     0,     0,    79,   366,     0,
-     188,     0,     0,     0,     0,     0,     0,     0,     0,   384,
-     385,   386,   388,   389,   390,   391,   392,   393,   394,   395,
-     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
-     406,   407,   408,   409,   151,   411,     0,     0,     0,   414,
-     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
-     425,   188,     0,     0,   411,   436,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   442,     0,   444,
-       0,     0,     0,     0,   188,     0,     0,     0,     0,   151,
-       0,     0,   452,     0,     0,   263,   264,   265,   266,   267,
-     268,   269,   270,   271,   272,   273,   274,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   478,   151,     0,   151,
-     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
-     273,   274,     0,   151,   151,     0,     0,     0,     0,     0,
-       0,   188,   188,  -357,  -357,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   233,   234,   235,   151,
-       0,   151,     0,     0,     0,   151,   151,     0,  -357,  -357,
-       0,     0,   236,   524,   237,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,     0,   258,     0,     0,     0,
-     458,     0,     0,   164,     0,     0,     0,     0,     0,     0,
-     259,     0,     0,     0,     0,     0,   532,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   546,
-       0,   312,   551,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,     0,   258,   151,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   259,     0,   188,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
-     151,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,     0,     0,     0,     0,     0,     0,   188,   188,   500,
-       0,   605,     0,     0,     0,     0,   188,   188,     0,   188,
-       0,   411,   613,     0,   233,   234,   235,   615,     0,     0,
-       0,     0,     4,     5,     6,     7,     8,     0,     0,     0,
-     236,     9,   237,   238,   239,   240,   241,   242,   243,   244,
+      98,   288,   167,    90,    91,   592,   168,   390,   459,    88,
+     388,   169,   419,   565,   513,   731,   471,   149,   149,   765,
+     576,   162,   228,   314,   336,   341,   332,   344,   732,   770,
+     757,   495,   497,   282,   502,  -140,   502,   613,  -143,   122,
+     814,   360,   282,   335,   433,   177,   282,   196,   199,   548,
+     435,   437,   439,    33,   207,   436,     3,   443,   223,   282,
+     122,   445,   446,   386,   390,   435,   129,   483,   487,   216,
+     457,   170,   217,   389,   456,    33,   172,   458,   439,   173,
+    -300,   483,   346,   434,   178,    33,   226,   226,   484,   554,
+     616,   555,   647,   227,   174,   285,   361,   362,  -141,   715,
+     716,   226,   492,   266,   267,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   190,   449,   214,    33,   799,
+     450,   207,    33,    33,  -370,   292,   226,   215,  -370,   508,
+      33,   283,   715,   716,   617,   517,   200,  -366,   518,   438,
+     283,    84,   291,   205,   283,   122,   218,   549,   387,   308,
+     149,  -358,  -358,   187,  -367,   577,   302,   283,   122,   713,
+     188,   717,   203,    84,   758,   718,   847,   472,   520,    47,
+     524,   766,   767,    84,   229,   315,   337,   342,   122,   345,
+     733,   771,   496,   498,   707,   503,  -140,   658,   507,  -143,
+     334,   815,   179,   568,   517,   149,   737,   518,   760,   527,
+     775,   264,   265,   149,   149,   149,    84,   149,   483,   359,
+      84,   284,   483,   483,   483,   180,   391,   122,    84,   838,
+     517,   392,    98,   518,  -300,   528,   714,   715,   716,   571,
+     226,  -125,   527,   579,   580,   122,   195,    33,   167,   181,
+     738,   662,   168,   122,   776,    33,   321,   169,   226,  -141,
+     754,   715,   716,   517,   483,   227,   518,   162,   528,   391,
+     182,   391,   539,   839,   392,   193,   392,   699,  -280,  -280,
+     122,   599,    33,   391,   391,   606,   145,   204,   392,   392,
+    -282,  -282,   208,   391,   145,   448,   391,   391,   392,   621,
+     226,   392,   392,   379,   702,   703,   455,   363,   150,   150,
+     618,   619,   163,   742,   743,   871,   872,   524,   622,   623,
+     146,   145,   625,   147,   209,   122,   210,    33,   146,   226,
+     148,   147,   483,   627,   481,    84,   505,   225,   148,   483,
+      98,   196,   700,    84,  -302,   122,  -301,    33,   481,   211,
+     226,   212,   226,   213,   379,   146,  -302,   363,   147,   505,
+     656,  -301,   226,   151,   154,   148,   145,   226,    98,   230,
+      84,    90,    91,   859,   259,   260,   261,    88,   262,   231,
+     379,   149,   536,   232,   233,   235,   145,   519,   236,   519,
+     483,   278,   519,   279,   280,   281,   483,   286,   483,   287,
+     146,    47,   633,   147,   214,   636,   741,   665,   262,   290,
+     148,   711,   439,   338,    26,    84,   643,   719,   293,   720,
+     160,   294,   299,   161,   298,   149,   301,   303,   226,   306,
+     148,   307,   304,   316,   323,    84,   483,   666,   328,   379,
+     509,   150,   667,   329,   668,   669,   670,   671,   672,   673,
+     674,   722,   330,   343,   353,   375,   149,   740,   149,  -188,
+     365,   367,   381,   727,   382,   384,   387,   668,   669,   670,
+     671,   672,   673,   149,   149,   481,   439,   462,   560,   481,
+     481,   481,   563,   464,   466,   586,   150,   483,   467,   574,
+     468,   470,   488,   493,   150,   150,   150,   675,   150,   519,
+     149,   515,   149,   494,   500,   499,   149,   149,   781,   483,
+     501,   516,   483,   504,   511,    98,   514,   483,    90,    91,
+     526,   481,   521,   608,    88,   167,   519,   525,   483,   168,
+     794,   519,   533,   797,   169,   534,   535,   542,   808,   541,
+     544,   543,   546,   572,   162,   666,   585,   557,   163,   818,
+     667,   550,   668,   669,   670,   671,   672,   673,   674,   483,
+     552,   798,   553,   807,   584,   483,   587,   256,   257,   258,
+     259,   260,   261,   149,   262,   589,   588,   774,   591,   778,
+     837,   379,   594,   483,   598,   601,   840,   602,   607,   481,
+     653,   604,   790,   610,   611,   614,   481,   807,   615,   631,
+     642,   637,   793,   649,   851,   724,   796,   638,   149,   644,
+     379,   379,   663,   646,   648,   482,   519,   650,   379,   379,
+     519,   391,   379,   654,   655,   661,   392,   820,   849,   482,
+     823,   657,   660,   683,   149,   825,   684,   687,   688,   695,
+     689,    98,   690,   149,    98,   692,   693,   481,   697,   694,
+     709,    98,   705,   481,   865,   481,   710,   810,   721,   728,
+     519,   725,   150,   874,   734,   735,   736,   739,  -144,   845,
+     745,   747,   519,   266,   267,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   391,   748,   730,   753,   761,
+     392,   755,   762,   481,   763,   764,   769,   860,   668,   669,
+     670,   671,   672,   673,   773,   779,   150,   780,   785,   783,
+     784,   809,   791,   795,   811,   876,   813,   817,   878,   821,
+     746,  -358,  -358,   828,   826,   883,   750,   750,  -176,   830,
+     831,   832,   833,   835,   836,   844,   834,   150,   850,   150,
+     852,   853,   854,   855,   481,   857,  -182,   858,   861,   877,
+     868,   866,   867,   489,   150,   150,   482,   875,   880,   882,
+     482,   482,   482,   870,   593,   788,   481,   609,   708,   481,
+     519,   122,   519,    33,   481,   641,   686,   221,   752,   792,
+     664,   150,    98,   150,   723,   481,    98,   150,   150,   491,
+     691,   651,   829,   652,   596,   339,   782,     0,    98,   597,
+       0,    98,   482,     0,    98,     0,   519,     0,     0,     0,
+     358,     0,   145,   474,   475,     0,   481,     0,     0,  -144,
+       0,     0,   481,     0,   354,   163,     0,     0,    98,     0,
+       0,    98,     0,    98,   476,     0,     0,   519,     0,   842,
+     481,     0,    29,    30,   122,     0,   146,     0,     0,   147,
+       0,     0,   477,    98,   150,     0,   148,   519,     0,     0,
+       0,    84,     0,   519,     0,     0,     0,     0,    98,     0,
+     482,     0,   519,     0,     0,     0,     0,   482,     0,     0,
+       0,     0,     0,     0,    98,   145,    98,     0,     0,   150,
+       0,    98,     0,     0,     0,     0,     0,     0,   478,    65,
+      66,    67,    68,    69,     0,     0,   153,   153,     0,     0,
+     166,     0,     0,    73,     0,   150,     0,     0,     0,   479,
+      75,    76,   480,     0,   150,     0,    79,     0,   482,     0,
+       0,     0,     0,     0,   482,     0,   482,     0,   127,   128,
+       0,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,     0,     0,   156,   159,
+       0,     0,     0,     0,     0,     0,     0,     0,   237,   238,
+     239,   176,     0,     0,   482,     0,     0,     0,   184,   186,
+       0,     0,     0,   191,   240,   194,   241,   242,   243,   244,
      245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,     0,   258,     0,     0,     0,     0,   644,
-       0,    10,    11,     0,     0,     0,     0,    12,   259,    13,
-      14,    15,    16,    17,    18,     0,     0,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,     0,     0,     0,
-      29,    30,    31,    32,    33,     0,    34,     0,   312,     0,
-      35,    36,    37,    38,    39,     0,    40,     0,    41,     0,
-      42,     0,     0,    43,     0,     0,     0,    44,    45,    46,
-      47,    48,    49,    50,     0,    51,    52,    53,     0,     0,
-       0,    54,    55,    56,     0,    57,    58,    59,    60,    61,
-      62,     0,     0,     0,     0,    63,    64,    65,    66,    67,
-      68,    69,     0,     0,    70,    71,     0,    72,     0,     0,
-       0,    73,     0,     0,     0,   318,     0,    74,    75,    76,
-      77,     0,     0,    78,    79,    80,   741,    81,     0,    82,
-      83,   494,    84,     0,     0,     0,     0,     0,     0,     0,
+     255,   256,   257,   258,   259,   260,   261,     0,   262,     0,
+       0,     0,     0,     0,   219,   222,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   482,     0,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   153,
+       0,     0,     0,     0,     0,     0,     0,   482,     0,     0,
+     482,     0,     0,     0,     0,   482,     0,     0,     0,     0,
+       0,     0,     0,   289,   152,   152,   482,     0,     0,     0,
+       0,     0,     0,     0,     0,  -358,  -358,     0,     0,     0,
+       0,     0,     0,     0,   153,     0,     0,     0,     0,     0,
+       0,   192,   153,   153,   153,     0,   153,   482,     0,     0,
+       0,     0,     0,   482,   310,     0,   311,   469,   312,     0,
+       0,     0,   317,   320,   191,     0,   325,     0,     0,   263,
+       0,   482,   220,   241,   242,   243,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,     0,   262,   166,   156,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   374,
+       0,   191,     0,     0,     0,     0,     0,     0,     0,   312,
+       0,   393,   394,   395,   397,   398,   399,   400,   401,   402,
+     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
+     413,   414,   415,   416,   417,   418,     0,   296,     0,     0,
+     421,   422,   423,   424,   425,   426,   427,   428,   429,   430,
+     431,   432,   191,     0,   312,     0,   312,   444,     0,     0,
+     312,   312,   322,     0,     0,     0,     0,     0,     0,     0,
+       0,   452,     0,   454,     0,     0,     0,     0,   191,     0,
+       0,     0,   340,     0,     0,     0,     0,     0,   463,     0,
+     349,   350,   352,     0,   355,   237,   238,   239,     0,     0,
+     153,     0,     0,     0,     0,     0,     0,     0,     0,   380,
+       0,   240,   490,   241,   242,   243,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,     0,   262,     0,   191,   191,     0,
+       0,     0,     0,     0,   153,     0,     0,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,     0,
+     380,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     537,     0,     0,     0,     0,   153,     0,   153,     0,     0,
+       0,     0,     0,     0,     0,     0,   380,     0,     0,     0,
+       0,     0,   153,   153,     0,  -358,  -358,  -371,  -371,  -371,
+    -371,   254,   255,   256,   257,   258,   259,   260,   261,     0,
+     262,     0,   545,     0,     0,     0,     0,     0,     0,   153,
+       0,   153,     0,     0,     0,   153,   153,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   561,     0,
+     320,   566,     0,     0,     0,   380,   510,     0,   512,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   296,     0,
+       0,     0,     0,   166,     0,     0,   266,   267,   268,   269,
+     270,   271,   272,   273,   274,   275,   276,   277,     0,   191,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   191,
+       0,     0,   153,  -281,  -281,     0,     0,     0,     0,     0,
+       0,     0,   540,     0,     0,     0,     0,     0,   191,   191,
+       0,     0,   620,     0,  -358,  -358,   191,   191,     0,     0,
+     191,     0,   312,   628,     0,     0,     0,   153,     0,     0,
+     630,     0,     0,   296,     0,   296,     0,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,     0,
+     567,   570,     0,   153,     0,     0,     0,     0,     0,     0,
+       0,     0,   153,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   659,     0,     0,     0,     0,   349,     0,   595,
+       0,     0,     0,   355,   355,  -358,  -358,   380,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   605,   266,   267,
+     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
+       0,   320,  -283,  -283,     0,     0,   380,   380,     0,     0,
+       0,     0,     0,     0,   380,   380,     0,     0,   380,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   237,
+     238,   239,     0,     0,     0,     0,  -358,  -358,     0,     0,
+     640,     0,     0,     0,     0,   240,     0,   241,   242,   243,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,     0,   262,
+       0,     0,     0,     0,   331,   296,     0,     0,     0,   756,
        4,     5,     6,     7,     8,     0,     0,     0,     0,     9,
-       0,     0,     0,     0,     0,     0,   771,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
+       0,   296,     0,     0,     0,     0,     0,     0,     0,   786,
+     570,     0,     0,     0,     0,     0,     0,     0,     0,    10,
+      11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
+      16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,     0,     0,   819,    29,    30,
+      31,    32,    33,     0,    34,     0,     0,     0,    35,    36,
+      37,    38,    39,     0,    40,     0,    41,     0,    42,     0,
+       0,    43,     0,     0,     0,    44,    45,    46,    47,    48,
+      49,    50,   551,    51,    52,    53,     0,     0,     0,    54,
+      55,    56,     0,    57,    58,    59,    60,    61,    62,     0,
+       0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
+       0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
+       4,     5,     6,     7,     8,    74,    75,    76,    77,     9,
+       0,    78,    79,    80,     0,    81,     0,    82,    83,   506,
+      84,   246,   247,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,     0,   262,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
-      16,    17,    18,     0,   804,    19,    20,    21,    22,    23,
+      16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
       31,    32,    33,     0,    34,     0,     0,     0,    35,    36,
       37,    38,    39,     0,    40,     0,    41,     0,    42,     0,
@@ -1518,9 +1525,9 @@
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
        4,     5,     6,     7,     8,    74,    75,    76,    77,     9,
-       0,    78,    79,    80,     0,    81,     0,    82,    83,   585,
-      84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
+       0,    78,    79,    80,     0,    81,     0,    82,    83,   600,
+      84,  -371,  -371,  -371,  -371,   250,   251,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,     0,   262,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
       16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
@@ -1542,11 +1549,11 @@
       37,    38,    39,     0,    40,     0,    41,     0,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
-       0,    78,    79,    80,     0,    81,     0,    82,    83,   361,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
+       0,    78,    79,    80,     0,    81,     0,    82,    83,   369,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
@@ -1556,24 +1563,24 @@
       37,    38,    39,     0,    40,     0,    41,     0,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
-       0,    78,    79,    80,     0,    81,     0,    82,    83,   474,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
+       0,    78,    79,    80,     0,    81,     0,    82,    83,   486,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
       16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
       31,    32,    33,     0,    34,     0,     0,     0,    35,    36,
-      37,    38,    39,   691,    40,     0,    41,     0,    42,     0,
+      37,    38,    39,   706,    40,     0,    41,     0,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
        0,    78,    79,    80,     0,    81,     0,    82,    83,     0,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
@@ -1581,13 +1588,13 @@
       16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
       31,    32,    33,     0,    34,     0,     0,     0,    35,    36,
-      37,    38,    39,     0,    40,     0,    41,     0,    42,   697,
+      37,    38,    39,     0,    40,     0,    41,     0,    42,   712,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
        0,    78,    79,    80,     0,    81,     0,    82,    83,     0,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
@@ -1598,11 +1605,11 @@
       37,    38,    39,     0,    40,     0,    41,     0,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
-       0,    78,    79,    80,     0,    81,     0,    82,    83,   797,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
+       0,    78,    79,    80,     0,    81,     0,    82,    83,   812,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
@@ -1612,24 +1619,24 @@
       37,    38,    39,     0,    40,     0,    41,     0,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
-       0,    78,    79,    80,     0,    81,     0,    82,    83,   801,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
+       0,    78,    79,    80,     0,    81,     0,    82,    83,   816,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
       16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
       31,    32,    33,     0,    34,     0,     0,     0,    35,    36,
-      37,    38,    39,     0,    40,     0,    41,   809,    42,     0,
+      37,    38,    39,     0,    40,     0,    41,   824,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
        0,    78,    79,    80,     0,    81,     0,    82,    83,     0,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
@@ -1640,24 +1647,24 @@
       37,    38,    39,     0,    40,     0,    41,     0,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
-       0,    78,    79,    80,     0,    81,     0,    82,    83,   812,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
+       0,    78,    79,    80,     0,    81,     0,    82,    83,   827,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
       16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
       31,    32,    33,     0,    34,     0,     0,     0,    35,    36,
-      37,    38,    39,     0,    40,   828,    41,     0,    42,     0,
+      37,    38,    39,     0,    40,   843,    41,     0,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
        0,    78,    79,    80,     0,    81,     0,    82,    83,     0,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
@@ -1668,11 +1675,11 @@
       37,    38,    39,     0,    40,     0,    41,     0,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
-       0,    78,    79,    80,     0,    81,     0,    82,    83,   841,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
+       0,    78,    79,    80,     0,    81,     0,    82,    83,   856,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
@@ -1682,11 +1689,11 @@
       37,    38,    39,     0,    40,     0,    41,     0,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
-       0,    78,    79,    80,     0,    81,     0,    82,    83,   864,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
+       0,    78,    79,    80,     0,    81,     0,    82,    83,   879,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
@@ -1696,11 +1703,11 @@
       37,    38,    39,     0,    40,     0,    41,     0,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
-       0,    78,    79,    80,     0,    81,     0,    82,    83,   866,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
+       0,    78,    79,    80,     0,    81,     0,    82,    83,   881,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
@@ -1710,11 +1717,11 @@
       37,    38,    39,     0,    40,     0,    41,     0,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
-       0,    78,    79,    80,     0,    81,     0,    82,    83,   869,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
+       0,    78,    79,    80,     0,    81,     0,    82,    83,   884,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
@@ -1724,12 +1731,12 @@
       37,    38,    39,     0,    40,     0,    41,     0,    42,     0,
        0,    43,     0,     0,     0,    44,    45,    46,    47,     0,
       49,    50,     0,    51,     0,    53,     0,     0,     0,    54,
-      55,    56,     0,    57,    58,    59,   360,    61,    62,     0,
+      55,    56,     0,    57,    58,    59,   368,    61,    62,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
        0,    78,    79,    80,     0,    81,     0,    82,    83,     0,
-      84,     0,     0,   544,     0,     0,     0,     0,     0,     0,
+      84,     0,     0,   559,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
       16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
@@ -1741,9 +1748,9 @@
        0,    56,     0,    57,    58,    59,     0,     0,     0,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
        0,     0,    79,    80,     0,    81,     0,    82,    83,     0,
-      84,     0,     0,   547,     0,     0,     0,     0,     0,     0,
+      84,     0,     0,   562,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
       16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
@@ -1755,9 +1762,9 @@
        0,    56,     0,    57,    58,    59,     0,     0,     0,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
        0,     0,    79,    80,     0,    81,     0,    82,    83,     0,
-      84,     0,     0,   558,     0,     0,     0,     0,     0,     0,
+      84,     0,     0,   573,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
       16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
@@ -1769,9 +1776,9 @@
        0,    56,     0,    57,    58,    59,     0,     0,     0,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
        0,     0,    79,    80,     0,    81,     0,    82,    83,     0,
-      84,     0,     0,   734,     0,     0,     0,     0,     0,     0,
+      84,     0,     0,   749,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
       16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
@@ -1783,9 +1790,9 @@
        0,    56,     0,    57,    58,    59,     0,     0,     0,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
        0,     0,    79,    80,     0,    81,     0,    82,    83,     0,
-      84,     0,     0,   772,     0,     0,     0,     0,     0,     0,
+      84,     0,     0,   787,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
       16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
@@ -1797,7 +1804,7 @@
        0,    56,     0,    57,    58,    59,     0,     0,     0,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
        0,     0,    79,    80,     0,    81,     0,    82,    83,     0,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
@@ -1811,503 +1818,495 @@
        0,    56,     0,    57,    58,    59,     0,     0,     0,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     0,    70,    71,     0,    72,     0,     0,     0,    73,
-       4,     5,     6,     7,     8,   122,    75,    76,    77,     9,
+       4,     5,     6,     7,     8,   124,    75,    76,    77,     9,
        0,     0,    79,    80,     0,    81,     0,    82,    83,     0,
-      84,     0,     0,     0,     0,     0,     0,     0,   153,     0,
+      84,     0,     0,     0,     0,     0,     0,     0,   155,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
       16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
       24,    25,    26,    27,     0,     0,     0,     0,    29,    30,
-     120,    32,    33,     0,     0,     0,     0,     0,    35,    36,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,    47,   258,
+     122,    32,    33,     0,     0,     0,     0,     0,    35,    36,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,    47,   262,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   121,     0,   259,    58,    59,     0,     0,     0,     0,
+       0,   123,     0,     0,    58,    59,     0,     0,     0,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     4,     5,     6,     7,     8,     0,     0,     0,    73,
-       9,     0,     0,     0,     0,   122,    75,    76,    77,     0,
-       0,     0,    79,   123,     0,    81,     0,     0,     0,     0,
+       9,     0,     0,     0,     0,   124,    75,    76,    77,     0,
+       0,     0,    79,   125,     0,    81,     0,     0,     0,     0,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       10,    11,     0,     0,     0,     0,    12,     0,    13,    14,
       15,    16,    17,    18,     0,     0,    19,    20,    21,    22,
       23,    24,    25,    26,    27,     0,     0,     0,     0,    29,
-      30,   120,    32,    33,     0,     0,     0,     0,     0,    35,
-      36,     0,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,    47,
-     258,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   121,     0,   259,    58,    59,     0,     0,     0,
+      30,   122,    32,    33,     0,     0,     0,     0,     0,    35,
+      36,     0,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,    47,
+     262,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   123,     0,     0,    58,    59,     0,     0,     0,
        0,     0,     0,     0,    63,    64,    65,    66,    67,    68,
       69,     0,     4,     5,     6,     7,     8,     0,     0,     0,
-      73,     9,     0,     0,     0,     0,   122,    75,    76,    77,
-       0,     0,     0,    79,   123,     0,    81,     0,   180,     0,
+      73,     9,     0,     0,     0,     0,   124,    75,    76,    77,
+       0,     0,     0,    79,   125,     0,    81,     0,   183,     0,
        0,    84,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    10,    11,     0,     0,     0,     0,    12,     0,    13,
       14,    15,    16,    17,    18,     0,     0,    19,    20,    21,
       22,    23,    24,    25,    26,    27,     0,     0,     0,     0,
-      29,    30,   120,    32,    33,     0,     0,     0,     0,     0,
-      35,    36,     0,     0,   242,   243,   244,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-      47,   258,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   121,     0,   259,    58,    59,     0,     0,
+      29,    30,   122,    32,    33,     0,     0,     0,     0,     0,
+      35,    36,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   123,     0,     0,    58,    59,     0,     0,
        0,     0,     0,     0,     0,    63,    64,    65,    66,    67,
       68,    69,     0,     4,     5,     6,     7,     8,     0,     0,
-       0,    73,     9,     0,     0,     0,     0,   122,    75,    76,
-      77,     0,     0,     0,    79,   123,     0,    81,     0,   182,
+       0,    73,     9,     0,     0,     0,     0,   124,    75,    76,
+      77,     0,     0,     0,    79,   125,     0,    81,     0,   185,
        0,     0,    84,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    10,    11,     0,     0,     0,     0,    12,     0,
       13,    14,    15,    16,    17,    18,     0,     0,    19,    20,
       21,    22,    23,    24,    25,    26,    27,     0,     0,     0,
-       0,    29,    30,   120,    32,    33,     0,     0,     0,     0,
-       0,    35,    36,     0,     0,  -370,  -370,  -370,  -370,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,    47,   258,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   121,     0,   259,    58,    59,     0,
+       0,    29,    30,   122,    32,    33,     0,     0,     0,     0,
+       0,    35,    36,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    47,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   123,     0,     0,    58,    59,     0,
        0,     0,     0,     0,     0,     0,    63,    64,    65,    66,
       67,    68,    69,     0,     4,     5,     6,     7,     8,     0,
-       0,     0,    73,     9,     0,     0,     0,     0,   122,    75,
-      76,    77,     0,     0,     0,    79,   123,     0,    81,     0,
-     186,     0,     0,    84,     0,     0,     0,     0,     0,     0,
+       0,     0,    73,     9,     0,     0,     0,     0,   124,    75,
+      76,    77,     0,     0,     0,    79,   125,     0,    81,     0,
+     189,     0,     0,    84,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    10,    11,     0,     0,     0,     0,    12,
        0,    13,    14,    15,    16,    17,    18,     0,     0,    19,
       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
-       0,     0,    29,    30,   120,    32,    33,     0,     0,     0,
+       0,     0,    29,    30,   122,    32,    33,     0,     0,     0,
        0,     0,    35,    36,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    47,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   121,     0,     0,    58,    59,
+       0,     0,     0,     0,     0,   123,     0,     0,    58,    59,
        0,     0,     0,     0,     0,     0,     0,    63,    64,    65,
       66,    67,    68,    69,     0,     4,     5,     6,     7,     8,
-       0,     0,     0,    73,     9,     0,     0,     0,     0,   122,
-      75,    76,    77,     0,     0,     0,    79,   123,     0,    81,
-     303,     0,     0,   368,    84,     0,     0,     0,     0,     0,
+       0,     0,     0,    73,     9,     0,     0,     0,     0,   124,
+      75,    76,    77,     0,     0,     0,    79,   125,     0,    81,
+     309,     0,     0,   376,    84,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    10,    11,     0,     0,     0,     0,
       12,     0,    13,    14,    15,    16,    17,    18,     0,     0,
       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
-       0,     0,     0,    29,    30,   120,    32,    33,     0,     0,
+       0,     0,     0,    29,    30,   122,    32,    33,     0,     0,
        0,     0,     0,    35,    36,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    47,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   121,     0,     0,    58,
+       0,     0,     0,     0,     0,     0,   123,     0,     0,    58,
       59,     0,     0,     0,     0,     0,     0,     0,    63,    64,
       65,    66,    67,    68,    69,     0,     4,     5,     6,     7,
        8,     0,     0,     0,    73,     9,     0,     0,     0,     0,
-     122,    75,    76,    77,     0,     0,     0,    79,   123,   387,
+     124,    75,    76,    77,     0,     0,     0,    79,   125,   396,
       81,     0,     0,     0,     0,    84,     0,     0,     0,     0,
        0,     0,     0,     0,     0,    10,    11,     0,     0,     0,
        0,    12,     0,    13,    14,    15,    16,    17,    18,     0,
        0,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-       0,     0,     0,     0,    29,    30,   120,    32,    33,     0,
+       0,     0,     0,     0,    29,    30,   122,    32,    33,     0,
        0,     0,     0,     0,    35,    36,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    47,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   121,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   123,     0,     0,
       58,    59,     0,     0,     0,     0,     0,     0,     0,    63,
       64,    65,    66,    67,    68,    69,     0,     4,     5,     6,
        7,     8,     0,     0,     0,    73,     9,     0,     0,     0,
-       0,   122,    75,    76,    77,     0,     0,     0,    79,   123,
-       0,    81,     0,     0,     0,   413,    84,     0,     0,     0,
+       0,   124,    75,    76,    77,     0,     0,     0,    79,   125,
+       0,    81,     0,     0,     0,   420,    84,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    10,    11,     0,     0,
        0,     0,    12,     0,    13,    14,    15,    16,    17,    18,
        0,     0,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,     0,     0,     0,     0,    29,    30,   120,    32,    33,
+      27,     0,     0,     0,     0,    29,    30,   122,    32,    33,
        0,     0,     0,     0,     0,    35,    36,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,    47,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   121,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   123,     0,
        0,    58,    59,     0,     0,     0,     0,     0,     0,     0,
       63,    64,    65,    66,    67,    68,    69,     0,     4,     5,
        6,     7,     8,     0,     0,     0,    73,     9,     0,     0,
-       0,     0,   122,    75,    76,    77,     0,     0,     0,    79,
-     123,     0,    81,     0,     0,     0,   441,    84,     0,     0,
+       0,     0,   124,    75,    76,    77,     0,     0,     0,    79,
+     125,     0,    81,     0,     0,     0,   451,    84,     0,     0,
        0,     0,     0,     0,     0,     0,     0,    10,    11,     0,
        0,     0,     0,    12,     0,    13,    14,    15,    16,    17,
       18,     0,     0,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,     0,     0,     0,     0,    29,    30,   120,    32,
+      26,    27,     0,     0,     0,     0,    29,    30,   122,    32,
       33,     0,     0,     0,     0,     0,    35,    36,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    47,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   121,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   123,
        0,     0,    58,    59,     0,     0,     0,     0,     0,     0,
        0,    63,    64,    65,    66,    67,    68,    69,     0,     4,
        5,     6,     7,     8,     0,     0,     0,    73,     9,     0,
-       0,     0,     0,   122,    75,    76,    77,     0,     0,     0,
-      79,   123,     0,    81,     0,     0,     0,   443,    84,     0,
+       0,     0,     0,   124,    75,    76,    77,     0,     0,     0,
+      79,   125,     0,    81,     0,     0,     0,   453,    84,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    10,    11,
        0,     0,     0,     0,    12,     0,    13,    14,    15,    16,
       17,    18,     0,     0,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,     0,     0,     0,     0,    29,    30,   120,
+      25,    26,    27,     0,     0,     0,     0,    29,    30,   122,
       32,    33,     0,     0,     0,     0,     0,    35,    36,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,    47,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     121,     0,     0,    58,    59,     0,     0,     0,     0,     0,
+     123,     0,     0,    58,    59,     0,     0,     0,     0,     0,
        0,     0,    63,    64,    65,    66,    67,    68,    69,     0,
        4,     5,     6,     7,     8,     0,     0,     0,    73,     9,
-       0,     0,     0,     0,   122,    75,    76,    77,     0,     0,
-       0,    79,   123,     0,    81,     0,     0,     0,   588,    84,
+       0,     0,     0,     0,   124,    75,    76,    77,     0,     0,
+       0,    79,   125,     0,    81,     0,     0,     0,   603,    84,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
       11,     0,     0,     0,     0,    12,     0,    13,    14,    15,
       16,    17,    18,     0,     0,    19,    20,    21,    22,    23,
       24,    25,    26,    27,     0,     0,     0,     0,    29,    30,
-     120,    32,    33,     0,     0,     0,     0,     0,    35,    36,
+     122,    32,    33,     0,     0,     0,     0,     0,    35,    36,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    47,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   121,     0,     0,    58,    59,     0,     0,     0,     0,
+       0,   123,     0,     0,    58,    59,     0,     0,     0,     0,
        0,     0,     0,    63,    64,    65,    66,    67,    68,    69,
        0,     4,     5,     6,     7,     8,     0,     0,     0,    73,
-       9,     0,     0,     0,     0,   122,    75,    76,    77,     0,
-       0,     0,    79,   123,     0,    81,     0,     0,     0,   614,
+       9,     0,     0,     0,     0,   124,    75,    76,    77,     0,
+       0,     0,    79,   125,     0,    81,     0,     0,     0,   629,
       84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       10,    11,     0,     0,     0,     0,    12,     0,    13,    14,
       15,    16,    17,    18,     0,     0,    19,    20,    21,    22,
       23,    24,    25,    26,    27,     0,     0,     0,     0,    29,
-      30,   120,    32,    33,     0,     0,     0,     0,     0,    35,
+      30,   122,    32,    33,     0,     0,     0,     0,     0,    35,
       36,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    47,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   121,     0,     0,    58,    59,     0,     0,     0,
+       0,     0,   123,     0,     0,    58,    59,     0,     0,     0,
        0,     0,     0,     0,    63,    64,    65,    66,    67,    68,
       69,     0,     4,     5,     6,     7,     8,     0,     0,     0,
-      73,     9,     0,     0,     0,     0,   122,    75,    76,    77,
-       0,     0,     0,    79,   123,     0,    81,     0,     0,     0,
+      73,     9,     0,     0,     0,     0,   124,    75,    76,    77,
+       0,     0,     0,    79,   125,     0,    81,     0,     0,     0,
        0,    84,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    10,    11,     0,     0,     0,     0,    12,     0,    13,
       14,    15,    16,    17,    18,     0,     0,    19,    20,    21,
       22,    23,    24,    25,    26,    27,     0,     0,     0,     0,
-      29,    30,   120,    32,    33,     0,     0,     0,     0,     0,
+      29,    30,   122,    32,    33,     0,     0,     0,     0,     0,
       35,    36,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   121,     0,     0,    58,    59,     0,     0,
+       0,     0,     0,   123,     0,     0,    58,    59,     0,     0,
        0,     0,     0,     0,     0,    63,    64,    65,    66,    67,
       68,    69,     0,     4,     5,     6,     7,     8,     0,     0,
-       0,    73,     9,     0,     0,     0,     0,   122,    75,    76,
-      77,     0,     0,     0,    79,   123,     0,    81,     0,     0,
+       0,    73,     9,     0,     0,     0,     0,   124,    75,    76,
+      77,     0,     0,     0,    79,   125,     0,    81,     0,     0,
        0,     0,    84,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    10,    11,     0,     0,     0,     0,    12,     0,
       13,    14,    15,    16,    17,    18,     0,     0,    19,    20,
       21,    22,    23,    24,    25,    26,    27,     0,     0,     0,
-       0,    29,    30,   120,    32,    33,     0,     0,     0,     0,
+       0,    29,    30,   122,    32,    33,     0,     0,     0,     0,
        0,    35,    36,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    47,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   121,     0,     0,    58,    59,     0,
+       0,     0,     0,     0,   123,     0,     0,    58,    59,     0,
        0,     0,     0,     0,     0,     0,    63,    64,    65,    66,
       67,    68,    69,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    73,     0,     0,     0,     0,     0,   122,    75,
-      76,    77,   233,   234,   235,    79,    80,     0,    81,     0,
-       0,     0,     0,    84,     0,     0,     0,     0,   236,     0,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,     0,   258,   233,   234,   235,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   259,     0,     0,   236,
-       0,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,     0,   258,   233,   234,   235,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   259,     0,     0,
-     236,     0,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,     0,   258,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   259,     0,
-     233,   234,   235,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   538,   236,     0,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,     0,
-     258,   233,   234,   235,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   259,     0,   575,   236,   742,   237,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-       0,   258,   233,   234,   235,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   259,     0,   609,   236,     0,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,     0,   258,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   259,     0,     0,   233,
-     234,   235,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   683,     0,   236,     0,   237,   238,   239,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,     0,   258,
-     233,   234,   235,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   743,   259,     0,     0,   236,     0,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,     0,
-     258,   233,   234,   235,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   319,   259,     0,     0,   236,     0,   237,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-       0,   258,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   259,     0,   233,   234,   235,
+       0,     0,    73,     0,     0,     0,     0,     0,   124,    75,
+      76,    77,   237,   238,   239,    79,    80,     0,    81,     0,
+       0,     0,     0,    84,     0,     0,     0,     0,   240,     0,
+     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
+     261,     0,   262,   237,   238,   239,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   240,
+       0,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,     0,   262,   237,   238,   239,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     325,     0,     0,   236,     0,   237,   238,   239,   240,   241,
+     240,     0,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,     0,   262,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     237,   238,   239,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   590,   240,   757,   241,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,     0,
+     262,   237,   238,   239,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   624,   240,     0,   241,
      242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
-     252,   253,   254,   255,   256,   257,     0,   258,   233,   234,
-     235,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     358,   259,     0,     0,   236,     0,   237,   238,   239,   240,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+       0,   262,   237,   238,   239,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   698,   240,     0,
      241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   257,     0,   258,   233,
-     234,   235,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   437,   259,     0,     0,   236,     0,   237,   238,   239,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,     0,   258,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
+     261,     0,   262,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   237,   238,   239,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     240,   758,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,     0,   262,   237,   238,   239,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     233,   234,   235,   259,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   236,   450,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,     0,
-     258,   233,   234,   235,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   259,     0,     0,   236,   451,   237,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
+       0,   240,   326,   241,   242,   243,   244,   245,   246,   247,
      248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-       0,   258,   233,   234,   235,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   259,     0,     0,   236,   454,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     258,   259,   260,   261,     0,   262,   237,   238,   239,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   240,   327,   241,   242,   243,   244,   245,   246,
      247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,     0,   258,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   233,   234,   235,   259,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   236,
-     462,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,     0,   258,   233,   234,   235,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   259,     0,     0,
-     236,   620,   237,   238,   239,   240,   241,   242,   243,   244,
+     257,   258,   259,   260,   261,     0,   262,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   237,   238,
+     239,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   240,   333,   241,   242,   243,   244,
      245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,     0,   258,   233,   234,   235,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   259,     0,
-       0,   236,   807,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,     0,   258,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   259,
-       0,     0,     0,   233,   234,   235,     0,     0,     0,     0,
-       0,     0,     0,   826,     0,     0,     0,     0,     0,   236,
-     291,   237,   238,   239,   240,   241,   242,   243,   244,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,     0,   258,     0,     0,   233,   234,   235,     0,
-       0,     0,     0,     0,     0,     0,     0,   259,     0,     0,
-       0,   356,   236,   525,   237,   238,   239,   240,   241,   242,
+     255,   256,   257,   258,   259,   260,   261,     0,   262,     0,
+     237,   238,   239,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   366,   240,     0,   241,   242,
      243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,     0,   258,     0,     0,     0,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,     0,
+     262,   237,   238,   239,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   447,   240,     0,   241,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+       0,   262,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   237,   238,   239,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   240,   460,   241,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+       0,   262,     0,   237,   238,   239,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   240,
+     461,   241,   242,   243,   244,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+     260,   261,     0,   262,   237,   238,   239,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     259,     0,   233,   234,   235,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   236,   541,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,     0,   258,   234,   235,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   259,     0,   236,     0,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,   235,   258,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   236,   259,   237,   238,   239,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,     0,   258,
+     240,   465,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,     0,   262,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   237,   238,   239,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   236,   259,   237,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,     0,   258,     0,     0,     0,
+     240,   473,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,     0,   262,     0,   237,   238,   239,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     259,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+       0,     0,   240,   635,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,     0,   262,   237,   238,   239,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   240,   822,   241,   242,   243,   244,   245,
      246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
-     256,   257,     0,   258,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   259,   238,   239,
-     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,     0,   258,
+     256,   257,   258,   259,   260,   261,     0,   262,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   237,   238,   239,     0,     0,
+       0,     0,     0,     0,   841,     0,     0,     0,     0,     0,
+       0,   240,   297,   241,   242,   243,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   259,   260,   261,     0,   262,     0,     0,   237,   238,
+     239,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   364,   240,   538,   241,   242,   243,   244,
+     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,     0,   262,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   237,   238,   239,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     240,   556,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,     0,   262,   238,   239,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   259
+     240,     0,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,   239,   262,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   240,     0,   241,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     240,   262,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,     0,   262,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
+     257,   258,   259,   260,   261,     0,   262,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,     0,   262
 };
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-623)))
+  (!!((Yystate) == (-666)))
 
 #define yytable_value_is_error(Yytable_value) \
-  (!!((Yytable_value) == (-370)))
+  (!!((Yytable_value) == (-371)))
 
 static const yytype_int16 yycheck[] =
 {
-       2,   124,   190,     2,     2,    26,   301,    26,   232,    26,
-     482,   455,     2,     8,   212,   278,   258,    22,    23,     8,
-     368,    26,     8,     8,     8,   374,     8,   376,     8,     8,
-       8,    81,    26,     8,     8,     8,    63,     8,     8,     8,
-       8,    93,   514,   665,    93,    26,    49,    52,    38,    63,
-      75,    63,   276,   277,    56,    63,   151,    63,    73,   275,
-      63,   145,    75,   287,   288,   160,   161,   151,   562,    74,
-       0,    75,    77,   297,   158,   158,   300,   301,   151,   151,
-      73,   204,   298,   151,    75,   158,   158,   158,   101,   158,
-     158,    26,    31,   441,   145,   443,   146,   114,     8,   151,
-     151,   158,   151,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    73,     8,    75,   145,   121,
-     158,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,   145,   161,   629,    75,   631,   163,   355,
-     145,    73,    73,   158,   158,    73,   158,   161,   153,   161,
-     167,    61,    62,   161,   159,   161,   354,   158,   151,   163,
-     509,    73,    73,    75,    75,   160,   161,   161,   161,    61,
-      62,   160,   163,    73,   160,   160,   160,   159,   622,   160,
-     160,   160,   160,    49,   159,   159,   159,   192,   159,   159,
-     159,   159,   197,   158,   816,   158,    73,    73,    75,    75,
-     205,   206,   207,   161,   209,   163,   211,    95,    96,    97,
-      96,    97,    31,   232,    80,   232,   161,   148,    31,   221,
-     151,    73,    73,   151,    75,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,   258,   120,   258,
-     588,   258,    96,    97,    31,    61,    62,   596,    31,   159,
-     120,   163,   163,   258,    73,   145,    75,   276,   277,   276,
-     277,   151,    75,   114,   159,   160,   614,   159,   287,   288,
-     287,   288,   535,    61,    62,   127,   162,   493,   297,   284,
-     297,   300,   301,   300,   301,   527,   163,   163,    75,    73,
-     295,   640,    75,    68,    69,   114,   148,   148,   145,   151,
-     151,   153,   158,   652,   151,   521,   522,   158,   162,   158,
-     161,   177,   163,   158,   530,   531,   321,   533,   145,    73,
-     145,   616,   324,   328,   151,   158,   151,   158,    65,   148,
-     335,   158,   151,   158,    68,    69,    73,   158,    75,   158,
-      73,    73,    75,   161,   163,    95,    96,    97,    73,    73,
-     352,    75,    73,   352,   352,   160,   544,    31,   224,   547,
-     159,   160,   352,   368,   148,   837,   383,   151,   145,   374,
-     558,   376,   160,   127,   379,   160,   161,   114,    45,    46,
-      47,   114,    49,    22,    23,   680,    22,    23,   158,   145,
-     114,   101,   616,   126,   148,   124,    63,   151,   151,   153,
-      63,   750,   151,   752,    65,   159,   145,   145,   413,   275,
-      49,   148,   164,     8,   151,   148,   151,   145,   151,   145,
-     151,   158,   158,   124,   148,   158,   163,   151,    85,    73,
-     163,    13,   298,   160,   158,   101,   441,   786,   443,   163,
-      73,    80,    75,   109,   110,   111,   112,   113,   114,   160,
-      13,   159,   457,   458,   459,   159,   680,   159,   463,   464,
-     465,   451,    73,   468,   454,    22,    23,    73,   817,    26,
-     122,   461,   122,   158,   158,     8,    93,   482,   483,   160,
-     485,   114,    13,    73,   489,   490,    75,   158,   160,   355,
-     356,   159,     8,   495,   843,   159,   495,   495,   158,   504,
-     158,   506,    13,   852,   509,   495,   527,   123,   527,   514,
-     527,   159,   161,   158,   153,   148,   158,   158,   151,   159,
-     158,   164,   527,   158,   158,   158,    73,   164,   159,   158,
-     163,   719,   151,   721,   105,   145,    73,    13,   177,   160,
-      13,   159,   102,   321,   159,     8,   734,   107,   553,   109,
-     110,   111,   112,   113,   114,   115,   744,   335,   197,   151,
-     748,   161,   159,     8,   569,   570,   205,   206,   207,   124,
-     209,   576,    42,    43,    44,    45,    46,    47,    13,    49,
-     160,   769,   125,   588,   772,   224,   160,   592,   160,   777,
-     125,   596,     8,    63,   164,   600,   153,   616,    73,   616,
-     158,   160,   162,   109,   110,   111,   112,   113,   114,   614,
-     159,   159,   107,   159,    75,    13,   618,   159,   623,   621,
-     159,   159,   627,   811,   124,   159,   628,   493,   633,   159,
-     635,   160,   164,   159,   757,   640,   275,   503,   159,   159,
-     197,    73,    75,   161,   158,    13,   161,   652,   205,   206,
-     207,   839,   209,   158,   125,   521,   522,   160,   159,   298,
-      75,   680,   664,   680,   530,   531,   160,   533,   673,   857,
-     160,    13,   860,   161,    13,    75,    73,    13,   158,   867,
-      26,   459,   102,    70,    75,   463,   464,   107,   160,   109,
-     110,   111,   112,   113,   114,   115,    13,   159,   688,    75,
-      13,   258,   160,    93,   694,   695,   161,   160,   162,    93,
-     152,   160,    13,    73,   145,    73,   355,   356,    75,   724,
-     160,   158,    26,    73,   160,    73,   504,     8,   105,   368,
-     159,   158,   157,   161,    75,   159,   848,   328,   161,   483,
-     509,   746,   162,   733,   749,   750,   554,   752,   623,   754,
-     600,   695,   333,   741,   595,   321,   786,   759,    81,   642,
-     765,   763,   606,   569,   321,   568,   726,   197,   490,   335,
-     489,   210,    -1,   775,   413,    -1,   778,    -1,   335,   781,
-      -1,   786,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   796,    -1,    -1,    -1,    -1,    -1,   802,   576,    -1,
-      -1,    -1,   441,   805,   443,    -1,   808,    -1,   810,    -1,
-      -1,   368,   817,    -1,    -1,   820,    -1,   807,   457,   458,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   830,    -1,
-      -1,    -1,   837,    -1,    -1,    -1,    -1,    -1,   843,    -1,
-      -1,    -1,    -1,   845,   483,    -1,   485,   852,    -1,   627,
-     489,   490,    -1,    -1,   493,   633,   413,   635,    -1,   861,
-      -1,   863,    -1,    -1,   503,    -1,   868,    13,    14,    15,
+       2,   126,    26,     2,     2,   494,    26,   236,   307,     2,
+     235,    26,   262,   466,   376,   680,     8,    22,    23,     8,
+      26,    26,     8,     8,     8,     8,   193,     8,     8,     8,
+      26,     8,     8,    63,     8,     8,     8,   526,     8,    73,
+       8,   215,    63,    93,   278,    38,    63,    52,    75,    63,
+     279,    73,   281,    75,    56,   280,     0,   282,    81,    63,
+      73,   286,   287,    73,   293,   294,   158,   329,    93,    74,
+     304,   158,    77,    73,   303,    75,   158,   306,   307,    26,
+     145,   343,   207,    73,   158,    75,   151,   151,   329,   451,
+      31,   453,   577,   158,    63,   115,   160,   161,     8,    96,
+      97,   151,   343,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    49,    73,   151,    75,    73,
+      73,   123,    75,    75,   145,   148,   151,   161,   145,   363,
+      75,   161,    96,    97,    75,   148,   163,   158,   151,   161,
+     161,   163,   147,    75,   161,    73,    80,   161,   158,   169,
+     155,    61,    62,    73,   158,   161,   161,   161,    73,   644,
+      73,   646,   120,   163,   160,   162,   831,   159,   382,   101,
+     384,   160,   161,   163,   160,   160,   160,   160,    73,   160,
+     160,   160,   159,   159,   637,   159,   159,   159,   362,   159,
+     195,   159,   158,    31,   148,   200,    31,   151,   162,   127,
+      31,    61,    62,   208,   209,   210,   163,   212,   470,   214,
+     163,   163,   474,   475,   476,   158,   236,    73,   163,    31,
+     148,   236,   224,   151,   145,   153,    95,    96,    97,   470,
+     151,   159,   127,   474,   475,    73,   151,    75,   262,   158,
+      75,   603,   262,    73,    75,    75,   180,   262,   151,   159,
+      95,    96,    97,   148,   516,   158,   151,   262,   153,   279,
+     158,   281,    65,    75,   279,   161,   281,   629,   159,   160,
+      73,   505,    75,   293,   294,   516,   114,   120,   293,   294,
+     159,   160,   158,   303,   114,   290,   306,   307,   303,   539,
+     151,   306,   307,   227,    68,    69,   301,   158,    22,    23,
+     534,   535,    26,    68,    69,   160,   161,   521,   542,   543,
+     148,   114,   546,   151,   158,    73,   158,    75,   148,   151,
+     158,   151,   584,   548,   329,   163,   158,   161,   158,   591,
+     332,   336,   631,   163,   145,    73,   145,    75,   343,   158,
+     151,   158,   151,   158,   278,   148,   145,   158,   151,   158,
+     591,   145,   151,    22,    23,   158,   114,   151,   360,    73,
+     163,   360,   360,   852,    45,    46,    47,   360,    49,    73,
+     304,   376,   392,   160,    31,    63,   114,   382,   145,   384,
+     642,   158,   387,   145,    63,   124,   648,    63,   650,    63,
+     148,   101,   559,   151,   151,   562,   695,   611,    49,   151,
+     158,   642,   631,   161,    65,   163,   573,   648,   145,   650,
+     148,   145,     8,   151,   164,   420,   151,   145,   151,   145,
+     158,   124,   158,    85,    73,   163,   688,   102,   160,   363,
+     364,   155,   107,    13,   109,   110,   111,   112,   113,   114,
+     115,   655,   160,    13,   159,    73,   451,   688,   453,   101,
+     159,   159,    73,   667,   122,   122,   158,   109,   110,   111,
+     112,   113,   114,   468,   469,   470,   695,   164,   461,   474,
+     475,   476,   465,   158,   160,   480,   200,   739,     8,   472,
+      93,    13,    73,    75,   208,   209,   210,   162,   212,   494,
+     495,     8,   497,   158,   160,   159,   501,   502,   739,   761,
+     158,    13,   764,   159,   158,   507,   159,   769,   507,   507,
+     158,   516,   123,   518,   507,   539,   521,   161,   780,   539,
+     761,   526,   164,   764,   539,   158,   158,   158,   769,   159,
+     164,   158,   158,    73,   539,   102,   151,   159,   262,   780,
+     107,   164,   109,   110,   111,   112,   113,   114,   115,   811,
+     164,   765,   164,   767,   158,   817,   145,    42,    43,    44,
+      45,    46,    47,   568,    49,    73,   105,   734,    13,   736,
+     811,   505,   160,   835,    13,   159,   817,   159,   151,   584,
+     585,   515,   749,   161,     8,   159,   591,   801,     8,   124,
+      13,   160,   759,   164,   835,   162,   763,   125,   603,   160,
+     534,   535,   607,   160,   125,   329,   611,     8,   542,   543,
+     615,   631,   546,    73,   158,   160,   631,   784,   832,   343,
+     787,   159,   159,   159,   629,   792,   107,    75,    13,   124,
+     159,   633,   159,   638,   636,   159,   159,   642,   164,   159,
+     159,   643,   160,   648,   858,   650,   159,   772,   159,    75,
+     655,    73,   376,   867,   161,   158,   161,    13,     8,   826,
+     158,   160,   667,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,   695,   159,   679,   160,   125,
+     695,   160,    75,   688,   161,    13,    13,   854,   109,   110,
+     111,   112,   113,   114,    73,    75,   420,    13,    70,   158,
+      26,    75,   160,   159,    13,   872,    75,    13,   875,   160,
+     703,    61,    62,   162,   161,   882,   709,   710,    93,   160,
+      93,   152,   160,    13,    73,   160,   145,   451,    73,   453,
+     158,    75,    26,   160,   739,    73,    73,     8,   105,    75,
+     157,   159,   158,   336,   468,   469,   470,   161,   159,   161,
+     474,   475,   476,   863,   495,   748,   761,   521,   638,   764,
+     765,    73,   767,    75,   769,   569,   615,    81,   710,   756,
+     610,   495,   774,   497,   657,   780,   778,   501,   502,   341,
+     621,   583,   801,   584,   501,   200,   741,    -1,   790,   502,
+      -1,   793,   516,    -1,   796,    -1,   801,    -1,    -1,    -1,
+     213,    -1,   114,    42,    43,    -1,   811,    -1,    -1,   159,
+      -1,    -1,   817,    -1,   126,   539,    -1,    -1,   820,    -1,
+      -1,   823,    -1,   825,    63,    -1,    -1,   832,    -1,   822,
+     835,    -1,    71,    72,    73,    -1,   148,    -1,    -1,   151,
+      -1,    -1,    81,   845,   568,    -1,   158,   852,    -1,    -1,
+      -1,   163,    -1,   858,    -1,    -1,    -1,    -1,   860,    -1,
+     584,    -1,   867,    -1,    -1,    -1,    -1,   591,    -1,    -1,
+      -1,    -1,    -1,    -1,   876,   114,   878,    -1,    -1,   603,
+      -1,   883,    -1,    -1,    -1,    -1,    -1,    -1,   127,   128,
+     129,   130,   131,   132,    -1,    -1,    22,    23,    -1,    -1,
+      26,    -1,    -1,   142,    -1,   629,    -1,    -1,    -1,   148,
+     149,   150,   151,    -1,   638,    -1,   155,    -1,   642,    -1,
+      -1,    -1,    -1,    -1,   648,    -1,   650,    -1,     4,     5,
+      -1,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    -1,    -1,    24,    25,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     9,    10,
+      11,    37,    -1,    -1,   688,    -1,    -1,    -1,    44,    45,
+      -1,    -1,    -1,    49,    25,    51,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   739,    -1,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,   155,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   761,    -1,    -1,
+     764,    -1,    -1,    -1,    -1,   769,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   129,    22,    23,   780,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   200,    -1,    -1,    -1,    -1,    -1,
+      -1,    49,   208,   209,   210,    -1,   212,   811,    -1,    -1,
+      -1,    -1,    -1,   817,   170,    -1,   172,    93,   174,    -1,
+      -1,    -1,   178,   179,   180,    -1,   182,    -1,    -1,   160,
+      -1,   835,    80,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    -1,    49,   262,   213,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   225,
+      -1,   227,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   235,
+      -1,   237,   238,   239,   240,   241,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,    -1,   155,    -1,    -1,
+     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
+     276,   277,   278,    -1,   280,    -1,   282,   283,    -1,    -1,
+     286,   287,   180,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   297,    -1,   299,    -1,    -1,    -1,    -1,   304,    -1,
+      -1,    -1,   200,    -1,    -1,    -1,    -1,    -1,   314,    -1,
+     208,   209,   210,    -1,   212,     9,    10,    11,    -1,    -1,
+     376,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   227,
+      -1,    25,   338,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    -1,    49,    -1,   363,   364,    -1,
+      -1,    -1,    -1,    -1,   420,    -1,    -1,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    -1,
-      -1,    -1,   521,   522,   441,    -1,   443,    -1,    -1,    -1,
-      -1,   530,   531,   459,   533,   673,    -1,   463,   464,   465,
-     457,   458,   459,    -1,    -1,    -1,   463,   464,   465,    -1,
-      -1,    -1,    -1,    -1,   553,    61,    62,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   483,    -1,   485,    -1,
-      -1,    -1,   489,   490,    -1,    -1,    -1,    -1,   504,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   724,   504,    -1,   588,
-      -1,    -1,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    -1,    -1,    -1,    -1,   746,    -1,
-     527,   749,    -1,    -1,    -1,   614,   754,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   623,    -1,    -1,   765,    22,    23,
-      -1,    -1,    26,    -1,    -1,    -1,   553,    -1,    -1,    -1,
-      61,    62,    -1,   569,    -1,    -1,    -1,    -1,    -1,    -1,
-     576,    -1,   569,   159,   160,    -1,    -1,    -1,   796,   576,
-      -1,    -1,    -1,    -1,   802,    -1,    -1,    -1,    -1,    -1,
-      -1,   588,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   820,    -1,    -1,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,   614,    49,    -1,
-      -1,   627,    -1,    -1,    -1,    -1,   623,   633,    -1,   635,
-     627,    -1,    63,    -1,    -1,    -1,   633,    -1,   635,    -1,
-       4,     5,    -1,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,   159,   160,
-      24,    25,    -1,    -1,    -1,    -1,    -1,   673,    -1,    -1,
-       9,    10,    11,    37,    -1,    -1,   673,    -1,    -1,   153,
-      44,    45,    -1,    -1,    -1,    49,    25,    51,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+     278,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     396,    -1,    -1,    -1,    -1,   451,    -1,   453,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   304,    -1,    -1,    -1,
+      -1,    -1,   468,   469,    -1,    61,    62,    36,    37,    38,
       39,    40,    41,    42,    43,    44,    45,    46,    47,    -1,
-      49,    -1,    -1,    -1,    -1,    -1,    80,    81,   724,    -1,
-      -1,    -1,    -1,   197,    63,    -1,    -1,   724,    -1,    -1,
-      -1,   205,   206,   207,    -1,   209,    -1,    -1,    -1,    -1,
-     746,    -1,    -1,   749,    42,    43,    -1,    -1,   754,   746,
-      -1,    -1,   749,    -1,    -1,    -1,    -1,   754,    -1,   765,
-      -1,    -1,    -1,   127,    -1,    63,    -1,    -1,   765,    -1,
-      -1,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    81,   258,    -1,    -1,    -1,    -1,    -1,
-     796,    -1,    -1,    -1,    -1,    -1,   802,    -1,    -1,   796,
-      -1,    -1,    -1,    -1,   168,   802,   170,    -1,    -1,    -1,
-      -1,   175,   176,   177,   820,   179,   114,    -1,    -1,    -1,
-      -1,   160,    -1,   820,    -1,    -1,    -1,    -1,    -1,   127,
-     128,   129,   130,   131,   132,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   142,    -1,   210,    -1,    -1,    -1,
-     148,   149,   150,   151,    -1,    -1,    -1,   155,   222,    -1,
-     224,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   368,   259,    -1,    -1,    -1,   263,
-     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
-     274,   275,    -1,    -1,   278,   279,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   291,    -1,   293,
-      -1,    -1,    -1,    -1,   298,    -1,    -1,    -1,    -1,   413,
-      -1,    -1,   306,    -1,    -1,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   330,   441,    -1,   443,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    -1,   457,   458,    -1,    -1,    -1,    -1,    -1,
-      -1,   355,   356,    61,    62,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,     9,    10,    11,   483,
-      -1,   485,    -1,    -1,    -1,   489,   490,    -1,    61,    62,
-      -1,    -1,    25,   387,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    -1,    49,    -1,    -1,    -1,
-      93,    -1,    -1,   527,    -1,    -1,    -1,    -1,    -1,    -1,
-      63,    -1,    -1,    -1,    -1,    -1,   430,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   553,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   453,
-      -1,   455,   456,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    -1,    49,   588,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,   493,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   503,
-     614,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   623,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   521,   522,   162,
-      -1,   525,    -1,    -1,    -1,    -1,   530,   531,    -1,   533,
-      -1,   535,   536,    -1,     9,    10,    11,   541,    -1,    -1,
-      -1,    -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,
-      25,    12,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    -1,    49,    -1,    -1,    -1,    -1,   583,
-      -1,    42,    43,    -1,    -1,    -1,    -1,    48,    63,    50,
-      51,    52,    53,    54,    55,    -1,    -1,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    -1,    -1,    -1,
-      71,    72,    73,    74,    75,    -1,    77,    -1,   622,    -1,
-      81,    82,    83,    84,    85,    -1,    87,    -1,    89,    -1,
-      91,    -1,    -1,    94,    -1,    -1,    -1,    98,    99,   100,
-     101,   102,   103,   104,    -1,   106,   107,   108,    -1,    -1,
-      -1,   112,   113,   114,    -1,   116,   117,   118,   119,   120,
-     121,    -1,    -1,    -1,    -1,   126,   127,   128,   129,   130,
-     131,   132,    -1,    -1,   135,   136,    -1,   138,    -1,    -1,
-      -1,   142,    -1,    -1,    -1,   160,    -1,   148,   149,   150,
-     151,    -1,    -1,   154,   155,   156,   700,   158,    -1,   160,
-     161,   162,   163,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      49,    -1,   438,    -1,    -1,    -1,    -1,    -1,    -1,   495,
+      -1,   497,    -1,    -1,    -1,   501,   502,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   464,    -1,
+     466,   467,    -1,    -1,    -1,   363,   364,    -1,   162,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   376,    -1,
+      -1,    -1,    -1,   539,    -1,    -1,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    -1,   505,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   515,
+      -1,    -1,   568,   159,   160,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   420,    -1,    -1,    -1,    -1,    -1,   534,   535,
+      -1,    -1,   538,    -1,    61,    62,   542,   543,    -1,    -1,
+     546,    -1,   548,   549,    -1,    -1,    -1,   603,    -1,    -1,
+     556,    -1,    -1,   451,    -1,   453,    -1,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    -1,
+     468,   469,    -1,   629,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   638,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   598,    -1,    -1,    -1,    -1,   495,    -1,   497,
+      -1,    -1,    -1,   501,   502,    61,    62,   505,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   515,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      -1,   637,   159,   160,    -1,    -1,   534,   535,    -1,    -1,
+      -1,    -1,    -1,    -1,   542,   543,    -1,    -1,   546,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     9,
+      10,    11,    -1,    -1,    -1,    -1,    61,    62,    -1,    -1,
+     568,    -1,    -1,    -1,    -1,    25,    -1,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
+      -1,    -1,    -1,    -1,   160,   603,    -1,    -1,    -1,   715,
        3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
-      -1,    -1,    -1,    -1,    -1,    -1,   730,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
+      -1,   629,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,
+     638,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
       43,    -1,    -1,    -1,    -1,    48,    -1,    50,    51,    52,
-      53,    54,    55,    -1,   768,    58,    59,    60,    61,    62,
+      53,    54,    55,    -1,    -1,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    -1,    -1,   783,    71,    72,
+      73,    74,    75,    -1,    77,    -1,    -1,    -1,    81,    82,
+      83,    84,    85,    -1,    87,    -1,    89,    -1,    91,    -1,
+      -1,    94,    -1,    -1,    -1,    98,    99,   100,   101,   102,
+     103,   104,   162,   106,   107,   108,    -1,    -1,    -1,   112,
+     113,   114,    -1,   116,   117,   118,   119,   120,   121,    -1,
+      -1,    -1,    -1,   126,   127,   128,   129,   130,   131,   132,
+      -1,    -1,   135,   136,    -1,   138,    -1,    -1,    -1,   142,
+       3,     4,     5,     6,     7,   148,   149,   150,   151,    12,
+      -1,   154,   155,   156,    -1,   158,    -1,   160,   161,   162,
+     163,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    -1,    49,    42,
+      43,    -1,    -1,    -1,    -1,    48,    -1,    50,    51,    52,
+      53,    54,    55,    -1,    -1,    58,    59,    60,    61,    62,
       63,    64,    65,    66,    67,    -1,    -1,    -1,    71,    72,
       73,    74,    75,    -1,    77,    -1,    -1,    -1,    81,    82,
       83,    84,    85,    -1,    87,    -1,    89,    -1,    91,    -1,
@@ -2318,8 +2317,8 @@
       -1,    -1,   135,   136,    -1,   138,    -1,    -1,    -1,   142,
        3,     4,     5,     6,     7,   148,   149,   150,   151,    12,
       -1,   154,   155,   156,    -1,   158,    -1,   160,   161,   162,
-     163,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
+     163,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    -1,    49,    42,
       43,    -1,    -1,    -1,    -1,    48,    -1,    50,    51,    52,
       53,    54,    55,    -1,    -1,    58,    59,    60,    61,    62,
       63,    64,    65,    66,    67,    -1,    -1,    -1,    71,    72,
@@ -2621,7 +2620,7 @@
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
       40,    41,    42,    43,    44,    45,    46,    47,   101,    49,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   114,    -1,    63,   117,   118,    -1,    -1,    -1,    -1,
+      -1,   114,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,   126,   127,   128,   129,   130,   131,   132,
       -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,   142,
       12,    -1,    -1,    -1,    -1,   148,   149,   150,   151,    -1,
@@ -2634,7 +2633,7 @@
       82,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
       39,    40,    41,    42,    43,    44,    45,    46,    47,   101,
       49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   114,    -1,    63,   117,   118,    -1,    -1,    -1,
+      -1,    -1,   114,    -1,    -1,   117,   118,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,   126,   127,   128,   129,   130,   131,
      132,    -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,
      142,    12,    -1,    -1,    -1,    -1,   148,   149,   150,   151,
@@ -2644,10 +2643,10 @@
       51,    52,    53,    54,    55,    -1,    -1,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    -1,    -1,    -1,    -1,
       71,    72,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
-      81,    82,    -1,    -1,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-     101,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   114,    -1,    63,   117,   118,    -1,    -1,
+      81,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   114,    -1,    -1,   117,   118,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   126,   127,   128,   129,   130,
      131,   132,    -1,     3,     4,     5,     6,     7,    -1,    -1,
       -1,   142,    12,    -1,    -1,    -1,    -1,   148,   149,   150,
@@ -2657,10 +2656,10 @@
       50,    51,    52,    53,    54,    55,    -1,    -1,    58,    59,
       60,    61,    62,    63,    64,    65,    66,    -1,    -1,    -1,
       -1,    71,    72,    73,    74,    75,    -1,    -1,    -1,    -1,
-      -1,    81,    82,    -1,    -1,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,   101,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   114,    -1,    63,   117,   118,    -1,
+      -1,    81,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   114,    -1,    -1,   117,   118,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,   126,   127,   128,   129,
      130,   131,   132,    -1,     3,     4,     5,     6,     7,    -1,
       -1,    -1,   142,    12,    -1,    -1,    -1,    -1,   148,   149,
@@ -2800,118 +2799,111 @@
       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
       47,    -1,    49,     9,    10,    11,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,    25,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,
       -1,    27,    28,    29,    30,    31,    32,    33,    34,    35,
       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
       46,    47,    -1,    49,     9,    10,    11,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       25,    -1,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    -1,    49,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        9,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   162,    25,    -1,    27,    28,
+      -1,    -1,    -1,    -1,    -1,   162,    25,    26,    27,    28,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
       39,    40,    41,    42,    43,    44,    45,    46,    47,    -1,
       49,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    63,    -1,   162,    25,    26,    27,
+      -1,    -1,    -1,    -1,    -1,    -1,   162,    25,    -1,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
       -1,    49,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    63,    -1,   162,    25,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   162,    25,    -1,
       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
       47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,     9,
-      10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   162,    -1,    25,    -1,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
+      -1,    -1,    -1,    -1,     9,    10,    11,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      25,   160,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    -1,    49,     9,    10,    11,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    25,   160,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    -1,    49,     9,    10,    11,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    25,   160,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    -1,    49,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     9,    10,
+      11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    25,   160,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
        9,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   160,    63,    -1,    -1,    25,    -1,    27,    28,
+      -1,    -1,    -1,    -1,    -1,   159,    25,    -1,    27,    28,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
       39,    40,    41,    42,    43,    44,    45,    46,    47,    -1,
       49,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   160,    63,    -1,    -1,    25,    -1,    27,
+      -1,    -1,    -1,    -1,    -1,    -1,   159,    25,    -1,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
       -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    63,    -1,     9,    10,    11,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     160,    -1,    -1,    25,    -1,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    -1,    49,     9,    10,
-      11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     159,    63,    -1,    -1,    25,    -1,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    -1,    49,     9,
-      10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   159,    63,    -1,    -1,    25,    -1,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       9,    10,    11,    63,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    25,   159,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    -1,
-      49,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    63,    -1,    -1,    25,   159,    27,
+      -1,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,   159,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      -1,    49,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,    25,   159,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,     9,    10,    11,    63,    -1,    -1,    -1,
+      -1,    49,    -1,     9,    10,    11,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,
      159,    27,    28,    29,    30,    31,    32,    33,    34,    35,
       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
       46,    47,    -1,    49,     9,    10,    11,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       25,   159,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    -1,    49,     9,    10,    11,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,
-      -1,    25,   159,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    -1,    49,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,
-      -1,    -1,    -1,     9,    10,    11,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   159,    -1,    -1,    -1,    -1,    -1,    25,
-     125,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    -1,    49,    -1,    -1,     9,    10,    11,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,
-      -1,   125,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    -1,    49,    -1,    -1,    -1,
+      45,    46,    47,    -1,    49,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     9,    10,    11,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      63,    -1,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,   125,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    -1,    49,    10,    11,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,    25,    -1,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    11,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    25,    63,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
+      25,   159,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    -1,    49,    -1,     9,    10,    11,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    25,    63,    27,    28,    29,    30,    31,    32,
+      -1,    -1,    25,   159,    27,    28,    29,    30,    31,    32,
       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    -1,    49,    -1,    -1,    -1,
+      43,    44,    45,    46,    47,    -1,    49,     9,    10,    11,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      63,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
+      -1,    -1,    -1,    25,   159,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    -1,    49,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     9,    10,    11,    -1,    -1,
+      -1,    -1,    -1,    -1,   159,    -1,    -1,    -1,    -1,    -1,
+      -1,    25,   125,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    -1,    49,    -1,    -1,     9,    10,
+      11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   125,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     9,    10,    11,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      25,   125,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    -1,    49,    10,    11,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    63
+      25,    -1,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    11,    49,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    -1,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      25,    49,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    -1,    49,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    -1,    49,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    -1,    49
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -2929,82 +2921,84 @@
      156,   158,   160,   161,   163,   168,   169,   172,   175,   176,
      183,   184,   186,   187,   188,   190,   241,   242,   243,   246,
      247,   255,   258,   262,   263,   265,   266,   270,   271,   272,
-     273,   274,   275,   276,   281,   286,   288,   289,   290,   291,
-      73,   114,   148,   156,   243,   262,   262,   158,   262,   262,
-     262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
-     262,   262,   262,   114,   148,   151,   158,   168,   247,   265,
-     266,   272,   265,    31,   262,   284,   285,   262,   148,   151,
-     168,   247,   249,   250,   272,   274,   275,   281,   158,   253,
-     158,    26,   238,   262,   175,   158,   158,   158,   158,   158,
-     160,   262,   160,   262,    73,    73,   160,   241,   262,   266,
-     161,   262,   151,   168,   170,   171,    75,   163,   213,   214,
-     120,   120,    75,   215,   243,   158,   158,   158,   158,   158,
-     158,   151,   161,   168,   168,   241,   262,   266,   242,   262,
-     290,   173,   161,   151,   158,     8,   160,    73,    73,   160,
-      31,   185,   145,     9,    10,    11,    25,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    49,    63,
-     160,    61,    62,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,   158,   145,   124,    63,   161,
-     163,   275,   185,   262,   151,   168,   290,   145,   145,   264,
-     266,   125,   164,     8,   260,   151,   168,   145,   158,   254,
-     145,   124,   275,   159,   262,   262,     8,   160,    85,   262,
-     239,   240,   262,   241,   266,    73,   199,   262,   160,   160,
-     160,    13,   160,   160,   173,   160,   168,    93,     8,   160,
-     161,   263,   266,     8,   160,    13,     8,   160,   185,   181,
-     182,   266,   266,   287,   266,   159,   126,   266,   282,   283,
-     284,   168,   167,   160,   161,   158,   125,   159,   159,   159,
-     119,   162,   174,   175,   183,   184,   262,    73,    31,   211,
-     212,   241,   266,    73,   122,   189,   122,   191,    73,   158,
-      73,   270,   275,   281,   262,   262,   262,    26,   262,   262,
+     273,   274,   275,   276,   277,   282,   287,   289,   290,   291,
+     292,   293,    73,   114,   148,   156,   243,   262,   262,   158,
      262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
+     262,   262,   262,   262,   262,   114,   148,   151,   158,   168,
+     247,   265,   266,   272,   265,    31,   262,   285,   286,   262,
+     148,   151,   168,   247,   249,   250,   272,   275,   276,   282,
+     158,   253,   158,    26,    63,   238,   262,   175,   158,   158,
+     158,   158,   158,   160,   262,   160,   262,    73,    73,   160,
+     241,   262,   266,   161,   262,   151,   168,   170,   171,    75,
+     163,   213,   214,   120,   120,    75,   215,   243,   158,   158,
+     158,   158,   158,   158,   151,   161,   168,   168,   241,   262,
+     266,   242,   262,   292,   173,   161,   151,   158,     8,   160,
+      73,    73,   160,    31,   185,    63,   145,     9,    10,    11,
+      25,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    49,   160,    61,    62,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,   158,   145,
+      63,   124,    63,   161,   163,   276,    63,    63,   185,   262,
+     151,   168,   292,   145,   145,   264,   266,   125,   164,     8,
+     260,   151,   168,   145,   158,   254,   145,   124,   276,   159,
+     262,   262,   262,   278,     8,   160,    85,   262,   239,   240,
+     262,   241,   266,    73,   199,   262,   160,   160,   160,    13,
+     160,   160,   173,   160,   168,    93,     8,   160,   161,   263,
+     266,     8,   160,    13,     8,   160,   185,   181,   182,   266,
+     266,   288,   266,   159,   126,   266,   283,   284,   285,   168,
+     167,   160,   161,   158,   125,   159,   159,   159,   119,   162,
+     174,   175,   183,   184,   262,    73,    31,   211,   212,   241,
+     266,    73,   122,   189,   122,   191,    73,   158,   278,    73,
+     270,   276,   282,   262,   262,   262,    26,   262,   262,   262,
      262,   262,   262,   262,   262,   262,   262,   262,   262,   262,
-     249,   262,   277,    31,   262,   262,   262,   262,   262,   262,
-     262,   262,   262,   262,   262,   262,   211,    73,   270,    73,
-     161,   270,   278,   279,   280,   277,   262,   159,   168,    73,
-      73,    31,   262,    31,   262,   168,   270,   211,   270,   278,
-     159,   159,   262,   158,   159,   160,     8,    93,    93,    13,
-       8,   159,   159,    42,    43,    63,   127,   148,   151,   168,
-     247,   255,   256,   257,   162,    93,    73,   171,   262,   214,
-     256,    75,   158,     8,   159,     8,   159,   159,   160,   158,
-       8,   159,   159,   158,   162,   167,   211,   241,   266,   158,
-     162,   264,   159,     8,    13,   148,   151,   168,   248,   123,
-     192,   193,   248,   161,   158,   127,   153,   208,   209,   210,
-     248,   158,   158,   275,   262,    26,   164,    65,   266,   159,
-     158,   158,   262,   158,   269,    63,   161,   164,   162,   264,
-     264,   125,   159,   251,    26,   175,   262,    26,   175,   203,
-     239,   262,   266,    31,   195,   266,   256,    73,    26,   175,
-     198,    26,   161,   200,   256,   256,   256,   259,   261,   158,
-     151,   168,   145,   105,    73,   162,    13,   208,   182,   160,
-     266,   282,   283,    13,   211,   162,   159,   159,    31,   241,
-     266,   256,   151,   168,   193,   161,     8,   216,   208,   159,
-       8,    31,    75,   211,   211,   262,   249,   211,   211,   162,
-     211,   267,   277,   262,    31,   262,   124,   252,   173,   204,
-     159,   173,   160,   125,   194,   266,   194,    13,   173,   160,
-     201,   160,   201,   125,   164,     8,   260,   259,   168,    73,
-     158,   256,   159,   159,   262,   159,   160,   264,   168,   216,
-     248,   102,   107,   109,   110,   111,   112,   113,   114,   115,
-     162,   217,   219,   232,   233,   234,   235,   237,   159,   107,
-     244,   210,    75,    13,   159,   159,   254,   159,   159,   159,
-     124,   268,   164,   162,   264,   278,   205,    68,    69,   206,
-     160,    86,   239,   195,   159,   159,   256,    92,   201,    95,
-      96,    97,   201,   162,   256,   256,   159,   248,   244,   162,
-      73,   220,   248,    75,   236,   243,   235,     8,   160,   161,
-     158,   161,    31,    75,    13,   256,   278,    68,    69,   207,
-     158,   175,   160,   159,    26,   175,   197,   197,   160,    95,
-     160,   262,    26,   160,   202,   162,   125,    75,   161,    13,
-       8,   160,   161,   221,    13,     8,   160,   218,    73,   173,
-      31,    75,   245,   173,    75,    13,   256,   269,   158,    26,
-      70,   262,    26,   175,   196,   173,   160,   202,   173,   256,
-     159,   173,   256,   248,    73,   222,   223,   224,   225,   227,
-     228,   229,   248,   256,    75,   185,    13,   162,    75,     8,
-     159,   162,    13,   256,   262,   173,   160,   159,   173,    90,
-     173,   161,   162,   162,   224,   160,    93,   152,   160,   145,
-      13,    73,   256,    31,    75,   256,   159,   175,    88,   160,
-     173,   230,   235,   226,   248,    73,   256,   158,    75,    26,
-     160,   162,    73,     8,   208,   173,   105,   177,   179,   180,
-     248,   159,   158,   157,   178,   180,   160,   161,   231,   248,
-     161,   173,    75,   173,   162,   159,   162,   161,   173,   162
+     262,   262,   262,   262,   262,   262,   262,   262,   262,   249,
+      31,   262,   262,   262,   262,   262,   262,   262,   262,   262,
+     262,   262,   262,   211,    73,   270,   278,    73,   161,   270,
+     279,   280,   281,   278,   262,   278,   278,   159,   168,    73,
+      73,    31,   262,    31,   262,   168,   270,   211,   270,   279,
+     159,   159,   164,   262,   158,   159,   160,     8,    93,    93,
+      13,     8,   159,   159,    42,    43,    63,    81,   127,   148,
+     151,   168,   247,   255,   256,   257,   162,    93,    73,   171,
+     262,   214,   256,    75,   158,     8,   159,     8,   159,   159,
+     160,   158,     8,   159,   159,   158,   162,   167,   211,   241,
+     266,   158,   162,   264,   159,     8,    13,   148,   151,   168,
+     248,   123,   192,   193,   248,   161,   158,   127,   153,   208,
+     209,   210,   248,   164,   158,   158,   276,   262,    26,    65,
+     266,   159,   158,   158,   164,   262,   158,   269,    63,   161,
+     164,   162,   164,   164,   264,   264,   125,   159,   251,    26,
+     175,   262,    26,   175,   203,   239,   262,   266,    31,   195,
+     266,   256,    73,    26,   175,   198,    26,   161,   200,   256,
+     256,   256,   259,   261,   158,   151,   168,   145,   105,    73,
+     162,    13,   208,   182,   160,   266,   283,   284,    13,   211,
+     162,   159,   159,    31,   241,   266,   256,   151,   168,   193,
+     161,     8,   216,   208,   159,     8,    31,    75,   211,   211,
+     262,   249,   211,   211,   162,   211,   267,   278,   262,    31,
+     262,   124,   252,   173,   204,   159,   173,   160,   125,   194,
+     266,   194,    13,   173,   160,   201,   160,   201,   125,   164,
+       8,   260,   259,   168,    73,   158,   256,   159,   159,   262,
+     159,   160,   264,   168,   216,   248,   102,   107,   109,   110,
+     111,   112,   113,   114,   115,   162,   217,   219,   232,   233,
+     234,   235,   237,   159,   107,   244,   210,    75,    13,   159,
+     159,   254,   159,   159,   159,   124,   268,   164,   162,   264,
+     279,   205,    68,    69,   206,   160,    86,   239,   195,   159,
+     159,   256,    92,   201,    95,    96,    97,   201,   162,   256,
+     256,   159,   248,   244,   162,    73,   220,   248,    75,   236,
+     243,   235,     8,   160,   161,   158,   161,    31,    75,    13,
+     256,   279,    68,    69,   207,   158,   175,   160,   159,    26,
+     175,   197,   197,   160,    95,   160,   262,    26,   160,   202,
+     162,   125,    75,   161,    13,     8,   160,   161,   221,    13,
+       8,   160,   218,    73,   173,    31,    75,   245,   173,    75,
+      13,   256,   269,   158,    26,    70,   262,    26,   175,   196,
+     173,   160,   202,   173,   256,   159,   173,   256,   248,    73,
+     222,   223,   224,   225,   227,   228,   229,   248,   256,    75,
+     185,    13,   162,    75,     8,   159,   162,    13,   256,   262,
+     173,   160,   159,   173,    90,   173,   161,   162,   162,   224,
+     160,    93,   152,   160,   145,    13,    73,   256,    31,    75,
+     256,   159,   175,    88,   160,   173,   230,   235,   226,   248,
+      73,   256,   158,    75,    26,   160,   162,    73,     8,   208,
+     173,   105,   177,   179,   180,   248,   159,   158,   157,   178,
+     180,   160,   161,   231,   248,   161,   173,    75,   173,   162,
+     159,   162,   161,   173,   162
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -6371,9 +6365,9 @@
   }
     break;
 
-  case 275:
+  case 276:
 /* Line 1787 of yacc.c  */
-#line 1810 "parser.y"
+#line 1811 "parser.y"
     {
     (yyval) = NNEW(n_UNARY_PREFIX_EXPRESSION);
     (yyval)->appendChild(NTYPE((yyvsp[(1) - (2)]), n_OPERATOR));
@@ -6381,9 +6375,9 @@
   }
     break;
 
-  case 276:
+  case 277:
 /* Line 1787 of yacc.c  */
-#line 1815 "parser.y"
+#line 1816 "parser.y"
     {
     NTYPE((yyvsp[(1) - (1)]), n_YIELD);
     (yyvsp[(1) - (1)])->appendChild(NNEW(n_EMPTY));
@@ -6392,9 +6386,9 @@
   }
     break;
 
-  case 277:
+  case 278:
 /* Line 1787 of yacc.c  */
-#line 1821 "parser.y"
+#line 1822 "parser.y"
     {
     NSPAN((yyvsp[(1) - (9)]), n_FUNCTION_DECLARATION, (yyvsp[(9) - (9)]));
     (yyvsp[(1) - (9)])->appendChild(NNEW(n_EMPTY));
@@ -6408,9 +6402,9 @@
   }
     break;
 
-  case 278:
+  case 279:
 /* Line 1787 of yacc.c  */
-#line 1832 "parser.y"
+#line 1833 "parser.y"
     {
     NSPAN((yyvsp[(2) - (10)]), n_FUNCTION_DECLARATION, (yyvsp[(10) - (10)]));
     NLMORE((yyvsp[(2) - (10)]), (yyvsp[(1) - (10)]));
@@ -6430,9 +6424,9 @@
   }
     break;
 
-  case 279:
+  case 280:
 /* Line 1787 of yacc.c  */
-#line 1852 "parser.y"
+#line 1853 "parser.y"
     {
     NTYPE((yyvsp[(1) - (2)]), n_YIELD);
     (yyvsp[(2) - (2)])->appendChild(NNEW(n_EMPTY));
@@ -6441,9 +6435,9 @@
   }
     break;
 
-  case 280:
+  case 281:
 /* Line 1787 of yacc.c  */
-#line 1858 "parser.y"
+#line 1859 "parser.y"
     {
     NTYPE((yyvsp[(1) - (2)]), n_YIELD);
     (yyvsp[(2) - (2)])->appendChild(NNEW(n_EMPTY));
@@ -6452,9 +6446,9 @@
   }
     break;
 
-  case 281:
+  case 282:
 /* Line 1787 of yacc.c  */
-#line 1864 "parser.y"
+#line 1865 "parser.y"
     {
     NTYPE((yyvsp[(1) - (4)]), n_YIELD);
     (yyvsp[(1) - (4)])->appendChild((yyvsp[(2) - (4)]));
@@ -6463,9 +6457,9 @@
   }
     break;
 
-  case 282:
+  case 283:
 /* Line 1787 of yacc.c  */
-#line 1870 "parser.y"
+#line 1871 "parser.y"
     {
     NTYPE((yyvsp[(1) - (4)]), n_YIELD);
     (yyvsp[(1) - (4)])->appendChild((yyvsp[(2) - (4)]));
@@ -6474,17 +6468,17 @@
   }
     break;
 
-  case 284:
+  case 285:
 /* Line 1787 of yacc.c  */
-#line 1883 "parser.y"
+#line 1884 "parser.y"
     {
     (yyval) = NNEW(n_EMPTY);
   }
     break;
 
-  case 285:
+  case 286:
 /* Line 1787 of yacc.c  */
-#line 1886 "parser.y"
+#line 1887 "parser.y"
     {
     NTYPE((yyvsp[(1) - (4)]), n_LEXICAL_VARIABLE_LIST);
     (yyvsp[(1) - (4)])->appendChildren((yyvsp[(3) - (4)]));
@@ -6492,17 +6486,17 @@
   }
     break;
 
-  case 286:
+  case 287:
 /* Line 1787 of yacc.c  */
-#line 1894 "parser.y"
+#line 1895 "parser.y"
     {
     (yyval) = (yyvsp[(1) - (3)])->appendChild(NTYPE((yyvsp[(3) - (3)]), n_VARIABLE));
   }
     break;
 
-  case 287:
+  case 288:
 /* Line 1787 of yacc.c  */
-#line 1897 "parser.y"
+#line 1898 "parser.y"
     {
     NTYPE((yyvsp[(3) - (4)]), n_VARIABLE_REFERENCE);
     (yyvsp[(3) - (4)])->appendChild(NTYPE((yyvsp[(4) - (4)]), n_VARIABLE));
@@ -6510,18 +6504,18 @@
   }
     break;
 
-  case 288:
+  case 289:
 /* Line 1787 of yacc.c  */
-#line 1902 "parser.y"
+#line 1903 "parser.y"
     {
     (yyval) = NNEW(n_LEXICAL_VARIABLE_LIST);
     (yyval)->appendChild(NTYPE((yyvsp[(1) - (1)]), n_VARIABLE));
   }
     break;
 
-  case 289:
+  case 290:
 /* Line 1787 of yacc.c  */
-#line 1906 "parser.y"
+#line 1907 "parser.y"
     {
     NTYPE((yyvsp[(1) - (2)]), n_VARIABLE_REFERENCE);
     (yyvsp[(1) - (2)])->appendChild(NTYPE((yyvsp[(2) - (2)]), n_VARIABLE));
@@ -6530,9 +6524,9 @@
   }
     break;
 
-  case 290:
+  case 291:
 /* Line 1787 of yacc.c  */
-#line 1915 "parser.y"
+#line 1916 "parser.y"
     {
     (yyval) = NNEW(n_FUNCTION_CALL);
     (yyval)->appendChild((yyvsp[(1) - (4)]));
@@ -6540,9 +6534,9 @@
   }
     break;
 
-  case 291:
+  case 292:
 /* Line 1787 of yacc.c  */
-#line 1920 "parser.y"
+#line 1921 "parser.y"
     {
     NLMORE((yyvsp[(3) - (6)]), (yyvsp[(1) - (6)]));
     (yyval) = NNEW(n_FUNCTION_CALL);
@@ -6551,9 +6545,9 @@
   }
     break;
 
-  case 292:
+  case 293:
 /* Line 1787 of yacc.c  */
-#line 1926 "parser.y"
+#line 1927 "parser.y"
     {
     NLMORE((yyvsp[(2) - (5)]), (yyvsp[(1) - (5)]));
     (yyval) = NNEW(n_FUNCTION_CALL);
@@ -6562,9 +6556,9 @@
   }
     break;
 
-  case 293:
+  case 294:
 /* Line 1787 of yacc.c  */
-#line 1932 "parser.y"
+#line 1933 "parser.y"
     {
     (yyval) = NNEW(n_CLASS_STATIC_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (6)]));
@@ -6575,9 +6569,9 @@
   }
     break;
 
-  case 294:
+  case 295:
 /* Line 1787 of yacc.c  */
-#line 1940 "parser.y"
+#line 1941 "parser.y"
     {
     (yyval) = NNEW(n_CLASS_STATIC_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (6)]));
@@ -6588,9 +6582,9 @@
   }
     break;
 
-  case 295:
+  case 296:
 /* Line 1787 of yacc.c  */
-#line 1948 "parser.y"
+#line 1949 "parser.y"
     {
     (yyval) = NNEW(n_CLASS_STATIC_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (6)]));
@@ -6601,9 +6595,9 @@
   }
     break;
 
-  case 296:
+  case 297:
 /* Line 1787 of yacc.c  */
-#line 1956 "parser.y"
+#line 1957 "parser.y"
     {
     (yyval) = NNEW(n_CLASS_STATIC_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (6)]));
@@ -6614,9 +6608,9 @@
   }
     break;
 
-  case 297:
+  case 298:
 /* Line 1787 of yacc.c  */
-#line 1964 "parser.y"
+#line 1965 "parser.y"
     {
     (yyval) = NNEW(n_FUNCTION_CALL);
     (yyval)->appendChild((yyvsp[(1) - (4)]));
@@ -6624,69 +6618,69 @@
   }
     break;
 
-  case 298:
+  case 299:
 /* Line 1787 of yacc.c  */
-#line 1972 "parser.y"
+#line 1973 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_CLASS_NAME);
   }
     break;
 
-  case 299:
+  case 300:
 /* Line 1787 of yacc.c  */
-#line 1975 "parser.y"
+#line 1976 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_CLASS_NAME);
   }
     break;
 
-  case 300:
+  case 301:
 /* Line 1787 of yacc.c  */
-#line 1978 "parser.y"
+#line 1979 "parser.y"
     {
     NLMORE((yyvsp[(3) - (3)]), (yyvsp[(1) - (3)]));
     (yyval) = NTYPE((yyvsp[(3) - (3)]), n_CLASS_NAME);
   }
     break;
 
-  case 301:
+  case 302:
 /* Line 1787 of yacc.c  */
-#line 1982 "parser.y"
+#line 1983 "parser.y"
     {
     NLMORE((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
     (yyval) = NTYPE((yyvsp[(2) - (2)]), n_CLASS_NAME);
   }
     break;
 
-  case 302:
+  case 303:
 /* Line 1787 of yacc.c  */
-#line 1989 "parser.y"
+#line 1990 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_CLASS_NAME);
   }
     break;
 
-  case 303:
+  case 304:
 /* Line 1787 of yacc.c  */
-#line 1992 "parser.y"
+#line 1993 "parser.y"
     {
     NLMORE((yyvsp[(3) - (3)]), (yyvsp[(1) - (3)]));
     (yyval) = NTYPE((yyvsp[(3) - (3)]), n_CLASS_NAME);
   }
     break;
 
-  case 304:
+  case 305:
 /* Line 1787 of yacc.c  */
-#line 1996 "parser.y"
+#line 1997 "parser.y"
     {
     NLMORE((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
     (yyval) = NTYPE((yyvsp[(2) - (2)]), n_CLASS_NAME);
   }
     break;
 
-  case 307:
+  case 308:
 /* Line 1787 of yacc.c  */
-#line 2008 "parser.y"
+#line 2009 "parser.y"
     {
     (yyval) = NNEW(n_OBJECT_PROPERTY_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (4)]));
@@ -6698,50 +6692,50 @@
   }
     break;
 
-  case 309:
+  case 310:
 /* Line 1787 of yacc.c  */
-#line 2021 "parser.y"
+#line 2022 "parser.y"
     {
     (yyval) = (yyvsp[(1) - (2)])->appendChild((yyvsp[(2) - (2)]));
   }
     break;
 
-  case 310:
+  case 311:
 /* Line 1787 of yacc.c  */
-#line 2024 "parser.y"
+#line 2025 "parser.y"
     {
     (yyval) = NNEW(n_EMPTY);
   }
     break;
 
-  case 311:
+  case 312:
 /* Line 1787 of yacc.c  */
-#line 2030 "parser.y"
+#line 2031 "parser.y"
     {
     (yyval) = (yyvsp[(2) - (2)]);
   }
     break;
 
-  case 312:
+  case 313:
 /* Line 1787 of yacc.c  */
-#line 2036 "parser.y"
+#line 2037 "parser.y"
     {
     (yyval) = NNEW(n_EMPTY);
   }
     break;
 
-  case 313:
+  case 314:
 /* Line 1787 of yacc.c  */
-#line 2039 "parser.y"
+#line 2040 "parser.y"
     {
     NSPAN((yyvsp[(1) - (2)]), n_EMPTY, (yyvsp[(2) - (2)]));
     (yyval) = (yyvsp[(1) - (2)]);
   }
     break;
 
-  case 314:
+  case 315:
 /* Line 1787 of yacc.c  */
-#line 2043 "parser.y"
+#line 2044 "parser.y"
     {
     NSPAN((yyvsp[(1) - (3)]), n_PARENTHETICAL_EXPRESSION, (yyvsp[(3) - (3)]));
     (yyvsp[(1) - (3)])->appendChild((yyvsp[(2) - (3)]));
@@ -6749,33 +6743,25 @@
   }
     break;
 
-  case 315:
-/* Line 1787 of yacc.c  */
-#line 2051 "parser.y"
-    {
-    (yyval) = NNEW(n_EMPTY);
-  }
-    break;
-
   case 316:
 /* Line 1787 of yacc.c  */
-#line 2054 "parser.y"
+#line 2052 "parser.y"
     {
-    (yyval) = NEXPAND((yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]));
+    (yyval) = NNEW(n_EMPTY);
   }
     break;
 
   case 317:
 /* Line 1787 of yacc.c  */
-#line 2060 "parser.y"
+#line 2055 "parser.y"
     {
-    (yyval) = NTYPE((yyvsp[(1) - (1)]), n_NUMERIC_SCALAR);
+    (yyval) = NEXPAND((yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]));
   }
     break;
 
   case 318:
 /* Line 1787 of yacc.c  */
-#line 2063 "parser.y"
+#line 2061 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_NUMERIC_SCALAR);
   }
@@ -6783,23 +6769,23 @@
 
   case 319:
 /* Line 1787 of yacc.c  */
-#line 2066 "parser.y"
+#line 2064 "parser.y"
     {
-    (yyval) = NTYPE((yyvsp[(1) - (1)]), n_STRING_SCALAR);
+    (yyval) = NTYPE((yyvsp[(1) - (1)]), n_NUMERIC_SCALAR);
   }
     break;
 
   case 320:
 /* Line 1787 of yacc.c  */
-#line 2069 "parser.y"
+#line 2067 "parser.y"
     {
-    (yyval) = NTYPE((yyvsp[(1) - (1)]), n_MAGIC_SCALAR);
+    (yyval) = NTYPE((yyvsp[(1) - (1)]), n_STRING_SCALAR);
   }
     break;
 
   case 321:
 /* Line 1787 of yacc.c  */
-#line 2072 "parser.y"
+#line 2070 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_MAGIC_SCALAR);
   }
@@ -6807,7 +6793,7 @@
 
   case 322:
 /* Line 1787 of yacc.c  */
-#line 2075 "parser.y"
+#line 2073 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_MAGIC_SCALAR);
   }
@@ -6815,7 +6801,7 @@
 
   case 323:
 /* Line 1787 of yacc.c  */
-#line 2078 "parser.y"
+#line 2076 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_MAGIC_SCALAR);
   }
@@ -6823,7 +6809,7 @@
 
   case 324:
 /* Line 1787 of yacc.c  */
-#line 2081 "parser.y"
+#line 2079 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_MAGIC_SCALAR);
   }
@@ -6831,7 +6817,7 @@
 
   case 325:
 /* Line 1787 of yacc.c  */
-#line 2084 "parser.y"
+#line 2082 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_MAGIC_SCALAR);
   }
@@ -6839,7 +6825,7 @@
 
   case 326:
 /* Line 1787 of yacc.c  */
-#line 2087 "parser.y"
+#line 2085 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_MAGIC_SCALAR);
   }
@@ -6847,7 +6833,7 @@
 
   case 327:
 /* Line 1787 of yacc.c  */
-#line 2090 "parser.y"
+#line 2088 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_MAGIC_SCALAR);
   }
@@ -6855,33 +6841,41 @@
 
   case 328:
 /* Line 1787 of yacc.c  */
-#line 2093 "parser.y"
+#line 2091 "parser.y"
+    {
+    (yyval) = NTYPE((yyvsp[(1) - (1)]), n_MAGIC_SCALAR);
+  }
+    break;
+
+  case 329:
+/* Line 1787 of yacc.c  */
+#line 2094 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_HEREDOC);
   }
     break;
 
-  case 331:
+  case 332:
 /* Line 1787 of yacc.c  */
-#line 2101 "parser.y"
+#line 2102 "parser.y"
     {
     NLMORE((yyvsp[(3) - (3)]), (yyvsp[(1) - (3)]));
     (yyval) = (yyvsp[(3) - (3)]);
   }
     break;
 
-  case 332:
+  case 333:
 /* Line 1787 of yacc.c  */
-#line 2105 "parser.y"
+#line 2106 "parser.y"
     {
     NLMORE((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
     (yyval) = (yyvsp[(2) - (2)]);
   }
     break;
 
-  case 333:
+  case 334:
 /* Line 1787 of yacc.c  */
-#line 2109 "parser.y"
+#line 2110 "parser.y"
     {
     (yyval) = NNEW(n_UNARY_PREFIX_EXPRESSION);
     (yyval)->appendChild(NTYPE((yyvsp[(1) - (2)]), n_OPERATOR));
@@ -6889,9 +6883,9 @@
   }
     break;
 
-  case 334:
+  case 335:
 /* Line 1787 of yacc.c  */
-#line 2114 "parser.y"
+#line 2115 "parser.y"
     {
     (yyval) = NNEW(n_UNARY_PREFIX_EXPRESSION);
     (yyval)->appendChild(NTYPE((yyvsp[(1) - (2)]), n_OPERATOR));
@@ -6899,9 +6893,9 @@
   }
     break;
 
-  case 335:
+  case 336:
 /* Line 1787 of yacc.c  */
-#line 2119 "parser.y"
+#line 2120 "parser.y"
     {
     NTYPE((yyvsp[(1) - (4)]), n_ARRAY_LITERAL);
     (yyvsp[(1) - (4)])->appendChild((yyvsp[(3) - (4)]));
@@ -6910,9 +6904,9 @@
   }
     break;
 
-  case 336:
+  case 337:
 /* Line 1787 of yacc.c  */
-#line 2125 "parser.y"
+#line 2126 "parser.y"
     {
     NTYPE((yyvsp[(1) - (3)]), n_ARRAY_LITERAL);
     (yyvsp[(1) - (3)])->appendChild((yyvsp[(2) - (3)]));
@@ -6921,9 +6915,9 @@
   }
     break;
 
-  case 338:
+  case 339:
 /* Line 1787 of yacc.c  */
-#line 2135 "parser.y"
+#line 2136 "parser.y"
     {
     (yyval) = NNEW(n_CLASS_STATIC_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (3)]));
@@ -6931,49 +6925,49 @@
   }
     break;
 
-  case 342:
+  case 343:
 /* Line 1787 of yacc.c  */
-#line 2146 "parser.y"
+#line 2147 "parser.y"
     {
     (yyval) = NLMORE((yyvsp[(3) - (3)]), (yyvsp[(1) - (3)]));
   }
     break;
 
-  case 343:
+  case 344:
 /* Line 1787 of yacc.c  */
-#line 2149 "parser.y"
+#line 2150 "parser.y"
     {
     (yyval) = NLMORE((yyvsp[(2) - (2)]), (yyvsp[(1) - (2)]));
   }
     break;
 
-  case 345:
+  case 346:
 /* Line 1787 of yacc.c  */
-#line 2156 "parser.y"
+#line 2157 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE_LIST);
   }
     break;
 
-  case 346:
+  case 347:
 /* Line 1787 of yacc.c  */
-#line 2159 "parser.y"
+#line 2160 "parser.y"
     {
     (yyval) = NMORE((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
   }
     break;
 
-  case 347:
+  case 348:
 /* Line 1787 of yacc.c  */
-#line 2165 "parser.y"
+#line 2166 "parser.y"
     {
     (yyval) = NNEW(n_EMPTY);
   }
     break;
 
-  case 349:
+  case 350:
 /* Line 1787 of yacc.c  */
-#line 2172 "parser.y"
+#line 2173 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE);
     (yyval)->appendChild((yyvsp[(3) - (5)]));
@@ -6983,9 +6977,9 @@
   }
     break;
 
-  case 350:
+  case 351:
 /* Line 1787 of yacc.c  */
-#line 2179 "parser.y"
+#line 2180 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE);
     (yyval)->appendChild(NNEW(n_EMPTY));
@@ -6995,9 +6989,9 @@
   }
     break;
 
-  case 351:
+  case 352:
 /* Line 1787 of yacc.c  */
-#line 2186 "parser.y"
+#line 2187 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE);
     (yyval)->appendChild((yyvsp[(1) - (3)]));
@@ -7007,9 +7001,9 @@
   }
     break;
 
-  case 352:
+  case 353:
 /* Line 1787 of yacc.c  */
-#line 2193 "parser.y"
+#line 2194 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE);
     (yyval)->appendChild(NNEW(n_EMPTY));
@@ -7019,9 +7013,9 @@
   }
     break;
 
-  case 358:
+  case 359:
 /* Line 1787 of yacc.c  */
-#line 2220 "parser.y"
+#line 2221 "parser.y"
     {
     (yyval) = NNEW(n_OBJECT_PROPERTY_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (5)]));
@@ -7044,25 +7038,25 @@
   }
     break;
 
-  case 360:
+  case 361:
 /* Line 1787 of yacc.c  */
-#line 2244 "parser.y"
+#line 2245 "parser.y"
     {
     (yyval) = (yyvsp[(1) - (2)])->appendChildren((yyvsp[(2) - (2)]));
   }
     break;
 
-  case 361:
+  case 362:
 /* Line 1787 of yacc.c  */
-#line 2247 "parser.y"
+#line 2248 "parser.y"
     {
     (yyval) = NNEW(n_EMPTY);
   }
     break;
 
-  case 362:
+  case 363:
 /* Line 1787 of yacc.c  */
-#line 2253 "parser.y"
+#line 2254 "parser.y"
     {
     (yyval) = NNEW(n_EMPTY);
     (yyval)->appendChild((yyvsp[(2) - (3)]));
@@ -7072,25 +7066,25 @@
   }
     break;
 
-  case 363:
+  case 364:
 /* Line 1787 of yacc.c  */
-#line 2263 "parser.y"
+#line 2264 "parser.y"
     {
     (yyval) = NEXPAND((yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]));
   }
     break;
 
-  case 364:
+  case 365:
 /* Line 1787 of yacc.c  */
-#line 2266 "parser.y"
+#line 2267 "parser.y"
     {
     (yyval) = NNEW(n_EMPTY);
   }
     break;
 
-  case 366:
+  case 367:
 /* Line 1787 of yacc.c  */
-#line 2273 "parser.y"
+#line 2274 "parser.y"
     {
     xhpast::Node *last = (yyvsp[(1) - (2)]);
     NMORE((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
@@ -7105,9 +7099,9 @@
   }
     break;
 
-  case 367:
+  case 368:
 /* Line 1787 of yacc.c  */
-#line 2288 "parser.y"
+#line 2289 "parser.y"
     {
     (yyval) = NNEW(n_CLASS_STATIC_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (3)]));
@@ -7115,9 +7109,9 @@
   }
     break;
 
-  case 368:
+  case 369:
 /* Line 1787 of yacc.c  */
-#line 2293 "parser.y"
+#line 2294 "parser.y"
     {
     (yyval) = NNEW(n_CLASS_STATIC_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (3)]));
@@ -7125,17 +7119,41 @@
   }
     break;
 
-  case 373:
+  case 371:
 /* Line 1787 of yacc.c  */
-#line 2311 "parser.y"
+#line 2306 "parser.y"
+    {
+		(yyval) = NNEW(n_INDEX_ACCESS);
+		(yyval)->appendChild((yyvsp[(1) - (4)]));
+		(yyval)->appendChild((yyvsp[(3) - (4)]));
+		NMORE((yyval), (yyvsp[(4) - (4)]));
+//    $$ = $1->appendChild(NEXPAND($2, $3, $4));
+  }
+    break;
+
+  case 372:
+/* Line 1787 of yacc.c  */
+#line 2313 "parser.y"
+    {
+		(yyval) = NNEW(n_INDEX_ACCESS);
+		(yyval)->appendChild((yyvsp[(1) - (4)]));
+		(yyval)->appendChild((yyvsp[(3) - (4)]));
+		NMORE((yyval), (yyvsp[(4) - (4)]));
+//    $$ = $1->appendChild(NEXPAND($2, $3, $4));
+  }
+    break;
+
+  case 377:
+/* Line 1787 of yacc.c  */
+#line 2330 "parser.y"
     {
     (yyval) = NEXPAND((yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]));
   }
     break;
 
-  case 374:
+  case 378:
 /* Line 1787 of yacc.c  */
-#line 2314 "parser.y"
+#line 2333 "parser.y"
     {
     xhpast::Node *last = (yyvsp[(1) - (2)]);
     NMORE((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
@@ -7150,9 +7168,9 @@
   }
     break;
 
-  case 376:
+  case 380:
 /* Line 1787 of yacc.c  */
-#line 2330 "parser.y"
+#line 2349 "parser.y"
     {
     (yyval) = NNEW(n_INDEX_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (4)]));
@@ -7161,9 +7179,9 @@
   }
     break;
 
-  case 377:
+  case 381:
 /* Line 1787 of yacc.c  */
-#line 2336 "parser.y"
+#line 2355 "parser.y"
     {
     (yyval) = NNEW(n_INDEX_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (4)]));
@@ -7172,17 +7190,17 @@
   }
     break;
 
-  case 379:
+  case 383:
 /* Line 1787 of yacc.c  */
-#line 2346 "parser.y"
+#line 2365 "parser.y"
     {
     NTYPE((yyvsp[(1) - (1)]), n_VARIABLE);
   }
     break;
 
-  case 380:
+  case 384:
 /* Line 1787 of yacc.c  */
-#line 2349 "parser.y"
+#line 2368 "parser.y"
     {
     NSPAN((yyvsp[(1) - (4)]), n_VARIABLE_EXPRESSION, (yyvsp[(4) - (4)]));
     (yyvsp[(1) - (4)])->appendChild((yyvsp[(3) - (4)]));
@@ -7190,25 +7208,25 @@
   }
     break;
 
-  case 381:
+  case 385:
 /* Line 1787 of yacc.c  */
-#line 2357 "parser.y"
+#line 2376 "parser.y"
     {
     (yyval) = NNEW(n_EMPTY);
   }
     break;
 
-  case 382:
+  case 386:
 /* Line 1787 of yacc.c  */
-#line 2360 "parser.y"
+#line 2379 "parser.y"
     {
     (yyval) = (yyvsp[(1) - (1)]);
   }
     break;
 
-  case 385:
+  case 389:
 /* Line 1787 of yacc.c  */
-#line 2371 "parser.y"
+#line 2390 "parser.y"
     {
     (yyval) = NNEW(n_INDEX_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (4)]));
@@ -7217,9 +7235,9 @@
   }
     break;
 
-  case 386:
+  case 390:
 /* Line 1787 of yacc.c  */
-#line 2377 "parser.y"
+#line 2396 "parser.y"
     {
     (yyval) = NNEW(n_INDEX_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (4)]));
@@ -7228,34 +7246,34 @@
   }
     break;
 
-  case 388:
+  case 392:
 /* Line 1787 of yacc.c  */
-#line 2387 "parser.y"
+#line 2406 "parser.y"
     {
     NTYPE((yyvsp[(1) - (1)]), n_STRING);
     (yyval) = (yyvsp[(1) - (1)]);
   }
     break;
 
-  case 389:
+  case 393:
 /* Line 1787 of yacc.c  */
-#line 2391 "parser.y"
+#line 2410 "parser.y"
     {
   (yyval) = NEXPAND((yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]));
   }
     break;
 
-  case 390:
+  case 394:
 /* Line 1787 of yacc.c  */
-#line 2397 "parser.y"
+#line 2416 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (1)]), n_VARIABLE_VARIABLE);
   }
     break;
 
-  case 391:
+  case 395:
 /* Line 1787 of yacc.c  */
-#line 2400 "parser.y"
+#line 2419 "parser.y"
     {
     (yyvsp[(2) - (2)]) = NTYPE((yyvsp[(2) - (2)]), n_VARIABLE_VARIABLE);
 
@@ -7270,26 +7288,26 @@
   }
     break;
 
-  case 392:
+  case 396:
 /* Line 1787 of yacc.c  */
-#line 2415 "parser.y"
+#line 2434 "parser.y"
     {
     (yyval) = (yyvsp[(1) - (3)])->appendChild((yyvsp[(3) - (3)]));
   }
     break;
 
-  case 393:
+  case 397:
 /* Line 1787 of yacc.c  */
-#line 2418 "parser.y"
+#line 2437 "parser.y"
     {
     (yyval) = NNEW(n_ASSIGNMENT_LIST);
     (yyval)->appendChild((yyvsp[(1) - (1)]));
   }
     break;
 
-  case 395:
+  case 399:
 /* Line 1787 of yacc.c  */
-#line 2426 "parser.y"
+#line 2445 "parser.y"
     {
     (yyval) = NNEW(n_LIST);
     (yyval)->appendChild((yyvsp[(3) - (4)]));
@@ -7297,33 +7315,33 @@
   }
     break;
 
-  case 396:
+  case 400:
 /* Line 1787 of yacc.c  */
-#line 2431 "parser.y"
+#line 2450 "parser.y"
     {
     (yyval) = NNEW(n_EMPTY);
   }
     break;
 
-  case 397:
+  case 401:
 /* Line 1787 of yacc.c  */
-#line 2437 "parser.y"
+#line 2456 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE_LIST);
   }
     break;
 
-  case 398:
+  case 402:
 /* Line 1787 of yacc.c  */
-#line 2440 "parser.y"
+#line 2459 "parser.y"
     {
     (yyval) = NMORE((yyvsp[(1) - (2)]), (yyvsp[(2) - (2)]));
   }
     break;
 
-  case 399:
+  case 403:
 /* Line 1787 of yacc.c  */
-#line 2446 "parser.y"
+#line 2465 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE);
     (yyval)->appendChild((yyvsp[(3) - (5)]));
@@ -7333,9 +7351,9 @@
   }
     break;
 
-  case 400:
+  case 404:
 /* Line 1787 of yacc.c  */
-#line 2453 "parser.y"
+#line 2472 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE);
     (yyval)->appendChild(NNEW(n_EMPTY));
@@ -7345,9 +7363,9 @@
   }
     break;
 
-  case 401:
+  case 405:
 /* Line 1787 of yacc.c  */
-#line 2460 "parser.y"
+#line 2479 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE);
     (yyval)->appendChild((yyvsp[(1) - (3)]));
@@ -7357,9 +7375,9 @@
   }
     break;
 
-  case 402:
+  case 406:
 /* Line 1787 of yacc.c  */
-#line 2467 "parser.y"
+#line 2486 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE);
     (yyval)->appendChild(NNEW(n_EMPTY));
@@ -7369,9 +7387,9 @@
   }
     break;
 
-  case 403:
+  case 407:
 /* Line 1787 of yacc.c  */
-#line 2474 "parser.y"
+#line 2493 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE);
     (yyval)->appendChild((yyvsp[(3) - (6)]));
@@ -7381,9 +7399,9 @@
   }
     break;
 
-  case 404:
+  case 408:
 /* Line 1787 of yacc.c  */
-#line 2481 "parser.y"
+#line 2500 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE);
     (yyval)->appendChild(NNEW(n_EMPTY));
@@ -7393,9 +7411,9 @@
   }
     break;
 
-  case 405:
+  case 409:
 /* Line 1787 of yacc.c  */
-#line 2488 "parser.y"
+#line 2507 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE);
     (yyval)->appendChild((yyvsp[(1) - (4)]));
@@ -7405,9 +7423,9 @@
   }
     break;
 
-  case 406:
+  case 410:
 /* Line 1787 of yacc.c  */
-#line 2495 "parser.y"
+#line 2514 "parser.y"
     {
     (yyval) = NNEW(n_ARRAY_VALUE);
     (yyval)->appendChild(NNEW(n_EMPTY));
@@ -7417,9 +7435,9 @@
   }
     break;
 
-  case 407:
+  case 411:
 /* Line 1787 of yacc.c  */
-#line 2505 "parser.y"
+#line 2524 "parser.y"
     {
     NTYPE((yyvsp[(1) - (4)]), n_SYMBOL_NAME);
 
@@ -7432,9 +7450,9 @@
   }
     break;
 
-  case 408:
+  case 412:
 /* Line 1787 of yacc.c  */
-#line 2515 "parser.y"
+#line 2534 "parser.y"
     {
     NTYPE((yyvsp[(1) - (4)]), n_SYMBOL_NAME);
 
@@ -7447,25 +7465,25 @@
   }
     break;
 
-  case 409:
+  case 413:
 /* Line 1787 of yacc.c  */
-#line 2525 "parser.y"
+#line 2544 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (2)]), n_INCLUDE_FILE)->appendChild((yyvsp[(2) - (2)]));
   }
     break;
 
-  case 410:
+  case 414:
 /* Line 1787 of yacc.c  */
-#line 2528 "parser.y"
+#line 2547 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (2)]), n_INCLUDE_FILE)->appendChild((yyvsp[(2) - (2)]));
   }
     break;
 
-  case 411:
+  case 415:
 /* Line 1787 of yacc.c  */
-#line 2531 "parser.y"
+#line 2550 "parser.y"
     {
     NTYPE((yyvsp[(1) - (4)]), n_SYMBOL_NAME);
 
@@ -7478,42 +7496,42 @@
   }
     break;
 
-  case 412:
+  case 416:
 /* Line 1787 of yacc.c  */
-#line 2541 "parser.y"
+#line 2560 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (2)]), n_INCLUDE_FILE)->appendChild((yyvsp[(2) - (2)]));
   }
     break;
 
-  case 413:
+  case 417:
 /* Line 1787 of yacc.c  */
-#line 2544 "parser.y"
+#line 2563 "parser.y"
     {
     (yyval) = NTYPE((yyvsp[(1) - (2)]), n_INCLUDE_FILE)->appendChild((yyvsp[(2) - (2)]));
   }
     break;
 
-  case 414:
+  case 418:
 /* Line 1787 of yacc.c  */
-#line 2550 "parser.y"
+#line 2569 "parser.y"
     {
     (yyval) = NNEW(n_EMPTY);
     (yyval)->appendChild((yyvsp[(1) - (1)]));
   }
     break;
 
-  case 415:
+  case 419:
 /* Line 1787 of yacc.c  */
-#line 2554 "parser.y"
+#line 2573 "parser.y"
     {
     (yyval) = (yyvsp[(1) - (3)])->appendChild((yyvsp[(3) - (3)]));
   }
     break;
 
-  case 416:
+  case 420:
 /* Line 1787 of yacc.c  */
-#line 2560 "parser.y"
+#line 2579 "parser.y"
     {
     NSPAN((yyvsp[(1) - (3)]), n_PARENTHETICAL_EXPRESSION, (yyvsp[(3) - (3)]));
     (yyvsp[(1) - (3)])->appendChild((yyvsp[(2) - (3)]));
@@ -7521,17 +7539,53 @@
   }
     break;
 
-  case 417:
+  case 421:
 /* Line 1787 of yacc.c  */
-#line 2565 "parser.y"
+#line 2584 "parser.y"
     {
     (yyval) = NEXPAND((yyvsp[(1) - (3)]), (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)]));
   }
     break;
 
-  case 418:
+  case 422:
+/* Line 1787 of yacc.c  */
+#line 2590 "parser.y"
+    {
+//		$$ = $1->appendChild(NEXPAND($2, $3, $4));
+		(yyval) = NNEW(n_INDEX_ACCESS);
+		(yyval)->appendChild((yyvsp[(1) - (4)]));
+		(yyval)->appendChild((yyvsp[(3) - (4)]));
+		NMORE((yyval), (yyvsp[(4) - (4)]));
+	}
+    break;
+
+  case 423:
 /* Line 1787 of yacc.c  */
-#line 2571 "parser.y"
+#line 2597 "parser.y"
+    {
+//		$$ = $1->appendChild(NEXPAND($2, $3, $4));
+		(yyval) = NNEW(n_INDEX_ACCESS);
+		(yyval)->appendChild((yyvsp[(1) - (4)]));
+		(yyval)->appendChild((yyvsp[(3) - (4)]));
+		NMORE((yyval), (yyvsp[(4) - (4)]));
+	}
+    break;
+
+  case 424:
+/* Line 1787 of yacc.c  */
+#line 2604 "parser.y"
+    {
+//		$$ = $1->appendChild(NEXPAND($2, $3, $4));
+		(yyval) = NNEW(n_INDEX_ACCESS);
+		(yyval)->appendChild(NTYPE((yyvsp[(1) - (4)]), n_STRING_SCALAR));
+		(yyval)->appendChild((yyvsp[(3) - (4)]));
+		NMORE((yyval), (yyvsp[(4) - (4)]));
+	}
+    break;
+
+  case 425:
+/* Line 1787 of yacc.c  */
+#line 2614 "parser.y"
     {
     NTYPE((yyvsp[(1) - (4)]), n_ARRAY_LITERAL);
     (yyvsp[(1) - (4)])->appendChild((yyvsp[(3) - (4)]));
@@ -7540,9 +7594,9 @@
   }
     break;
 
-  case 419:
+  case 426:
 /* Line 1787 of yacc.c  */
-#line 2577 "parser.y"
+#line 2620 "parser.y"
     {
     NTYPE((yyvsp[(1) - (3)]), n_ARRAY_LITERAL);
     (yyvsp[(1) - (3)])->appendChild((yyvsp[(2) - (3)]));
@@ -7551,9 +7605,9 @@
   }
     break;
 
-  case 420:
+  case 427:
 /* Line 1787 of yacc.c  */
-#line 2586 "parser.y"
+#line 2629 "parser.y"
     {
     NTYPE((yyvsp[(1) - (3)]), n_NEW);
     (yyvsp[(1) - (3)])->appendChild((yyvsp[(2) - (3)]));
@@ -7562,9 +7616,9 @@
   }
     break;
 
-  case 421:
+  case 428:
 /* Line 1787 of yacc.c  */
-#line 2595 "parser.y"
+#line 2638 "parser.y"
     {
     (yyval) = NNEW(n_CLASS_STATIC_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (3)]));
@@ -7572,9 +7626,9 @@
   }
     break;
 
-  case 422:
+  case 429:
 /* Line 1787 of yacc.c  */
-#line 2600 "parser.y"
+#line 2643 "parser.y"
     {
     (yyval) = NNEW(n_CLASS_STATIC_ACCESS);
     (yyval)->appendChild((yyvsp[(1) - (3)]));
@@ -7582,23 +7636,9 @@
   }
     break;
 
-  case 423:
-/* Line 1787 of yacc.c  */
-#line 2613 "parser.y"
-    {
-    if (yyextra->idx_expr) {
-      yyextra->used = true;
-    }
-    (yyval) = NNEW(n_INDEX_ACCESS);
-    (yyval)->appendChild((yyvsp[(1) - (4)]));
-    (yyval)->appendChild((yyvsp[(3) - (4)]));
-    NMORE((yyval), (yyvsp[(4) - (4)]));
-  }
-    break;
-
 
 /* Line 1787 of yacc.c  */
-#line 7602 "parser.yacc.cpp"
+#line 7642 "parser.yacc.cpp"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -7830,7 +7870,7 @@
 
 
 /* Line 2050 of yacc.c  */
-#line 2625 "parser.y"
+#line 2650 "parser.y"
 
 
 const char* yytokname(int tok) {
Index: support/xhpast/xhpast.cpp
===================================================================
--- support/xhpast/xhpast.cpp
+++ support/xhpast/xhpast.cpp
@@ -16,7 +16,7 @@
 
   if (argc != 1) {
     //coupling: modify also libphutil/src/parser/xhpast/bin/xhpast_parse.php
-    cout << "xhpast version 5.5.8/1c\n";
+    cout << "xhpast version 5.5.8/1d\n";
     return 0;
   }