This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Cleanup remnants of 'KEY_err' removal
authorBranislav ZahradnĂ­k <barney@cpan.org>
Fri, 11 Dec 2020 16:19:21 +0000 (17:19 +0100)
committerKarl Williamson <khw@cpan.org>
Sun, 27 Dec 2020 16:46:09 +0000 (09:46 -0700)
f23102e2d6 removed DOROP token (KEY_err) but related grammar remained

perly.act
perly.h
perly.tab
perly.y
toke.c

index d72d1f5..41ca498 100644 (file)
--- a/perly.act
+++ b/perly.act
@@ -1111,20 +1111,14 @@ case 2:
 
     break;
 
-  case 128:
-#line 905 "perly.y"
-                        { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+  case 129:
+#line 909 "perly.y"
+                        { (yyval.opval) = (ps[-1].val.opval); }
 
     break;
 
   case 130:
 #line 911 "perly.y"
-                        { (yyval.opval) = (ps[-1].val.opval); }
-
-    break;
-
-  case 131:
-#line 913 "perly.y"
                         {
                          OP* term = (ps[0].val.opval);
                          (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term);
@@ -1132,24 +1126,24 @@ case 2:
 
     break;
 
-  case 133:
-#line 922 "perly.y"
+  case 132:
+#line 920 "perly.y"
                         { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED,
                                op_prepend_elem(OP_LIST, newGVREF((ps[-2].val.ival),(ps[-1].val.opval)), (ps[0].val.opval)) );
                        }
 
     break;
 
-  case 134:
-#line 926 "perly.y"
+  case 133:
+#line 924 "perly.y"
                         { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED,
                                op_prepend_elem(OP_LIST, newGVREF((ps[-4].val.ival),(ps[-2].val.opval)), (ps[-1].val.opval)) );
                        }
 
     break;
 
-  case 135:
-#line 930 "perly.y"
+  case 134:
+#line 928 "perly.y"
                         { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST,
                                    op_prepend_elem(OP_LIST, scalar((ps[-5].val.opval)), (ps[-1].val.opval)),
@@ -1158,8 +1152,8 @@ case 2:
 
     break;
 
-  case 136:
-#line 936 "perly.y"
+  case 135:
+#line 934 "perly.y"
                         { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST, scalar((ps[-2].val.opval)),
                                    newMETHOP(OP_METHOD, 0, (ps[0].val.opval))));
@@ -1167,8 +1161,8 @@ case 2:
 
     break;
 
-  case 137:
-#line 941 "perly.y"
+  case 136:
+#line 939 "perly.y"
                         { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST,
                                    op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)),
@@ -1177,8 +1171,8 @@ case 2:
 
     break;
 
-  case 138:
-#line 947 "perly.y"
+  case 137:
+#line 945 "perly.y"
                         { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST,
                                    op_prepend_elem(OP_LIST, (ps[-3].val.opval), (ps[-1].val.opval)),
@@ -1187,9 +1181,15 @@ case 2:
 
     break;
 
+  case 138:
+#line 951 "perly.y"
+                        { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+
+    break;
+
   case 139:
 #line 953 "perly.y"
-                        { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+                        { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
 
     break;
 
@@ -1201,19 +1201,13 @@ case 2:
 
   case 141:
 #line 957 "perly.y"
-                        { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
-
-    break;
-
-  case 142:
-#line 959 "perly.y"
                         { SvREFCNT_inc_simple_void(PL_compcv);
                          (yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, NULL, (ps[0].val.opval)); }
 
     break;
 
-  case 143:
-#line 962 "perly.y"
+  case 142:
+#line 960 "perly.y"
                         { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                 op_append_elem(OP_LIST,
                                   op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), (ps[-4].val.opval)));
@@ -1221,21 +1215,21 @@ case 2:
 
     break;
 
-  case 146:
-#line 977 "perly.y"
+  case 145:
+#line 975 "perly.y"
                         { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); }
 
     break;
 
-  case 147:
-#line 979 "perly.y"
+  case 146:
+#line 977 "perly.y"
                         { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval)));
                        }
 
     break;
 
-  case 148:
-#line 982 "perly.y"
+  case 147:
+#line 980 "perly.y"
                         { (yyval.opval) = newBINOP(OP_AELEM, 0,
                                        ref(newAVREF((ps[-4].val.opval)),OP_RV2AV),
                                        scalar((ps[-1].val.opval)));
@@ -1243,8 +1237,8 @@ case 2:
 
     break;
 
-  case 149:
-#line 987 "perly.y"
+  case 148:
+#line 985 "perly.y"
                         { (yyval.opval) = newBINOP(OP_AELEM, 0,
                                        ref(newAVREF((ps[-3].val.opval)),OP_RV2AV),
                                        scalar((ps[-1].val.opval)));
@@ -1252,31 +1246,31 @@ case 2:
 
     break;
 
-  case 150:
-#line 992 "perly.y"
+  case 149:
+#line 990 "perly.y"
                         { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval)));
                        }
 
     break;
 
-  case 151:
-#line 995 "perly.y"
+  case 150:
+#line 993 "perly.y"
                         { (yyval.opval) = newBINOP(OP_HELEM, 0,
                                        ref(newHVREF((ps[-5].val.opval)),OP_RV2HV),
                                        jmaybe((ps[-2].val.opval))); }
 
     break;
 
-  case 152:
-#line 999 "perly.y"
+  case 151:
+#line 997 "perly.y"
                         { (yyval.opval) = newBINOP(OP_HELEM, 0,
                                        ref(newHVREF((ps[-4].val.opval)),OP_RV2HV),
                                        jmaybe((ps[-2].val.opval))); }
 
     break;
 
-  case 153:
-#line 1003 "perly.y"
+  case 152:
+#line 1001 "perly.y"
                         { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                   newCVREF(0, scalar((ps[-3].val.opval))));
                          if (parser->expect == XBLOCK)
@@ -1285,8 +1279,8 @@ case 2:
 
     break;
 
-  case 154:
-#line 1009 "perly.y"
+  case 153:
+#line 1007 "perly.y"
                         { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                   op_append_elem(OP_LIST, (ps[-1].val.opval),
                                       newCVREF(0, scalar((ps[-4].val.opval)))));
@@ -1296,8 +1290,8 @@ case 2:
 
     break;
 
-  case 155:
-#line 1017 "perly.y"
+  case 154:
+#line 1015 "perly.y"
                         { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                   op_append_elem(OP_LIST, (ps[-1].val.opval),
                                               newCVREF(0, scalar((ps[-3].val.opval)))));
@@ -1307,8 +1301,8 @@ case 2:
 
     break;
 
-  case 156:
-#line 1024 "perly.y"
+  case 155:
+#line 1022 "perly.y"
                         { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                   newCVREF(0, scalar((ps[-2].val.opval))));
                          if (parser->expect == XBLOCK)
@@ -1317,38 +1311,38 @@ case 2:
 
     break;
 
+  case 156:
+#line 1028 "perly.y"
+                        { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }
+
+    break;
+
   case 157:
 #line 1030 "perly.y"
-                        { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }
+                        { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }
 
     break;
 
   case 158:
 #line 1032 "perly.y"
-                        { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }
+                        { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); }
 
     break;
 
   case 159:
-#line 1034 "perly.y"
-                        { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); }
+#line 1037 "perly.y"
+                        { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }
 
     break;
 
   case 160:
 #line 1039 "perly.y"
-                        { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }
+                        { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
 
     break;
 
   case 161:
 #line 1041 "perly.y"
-                        { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
-
-    break;
-
-  case 162:
-#line 1043 "perly.y"
                         {   if ((ps[-1].val.ival) != OP_REPEAT)
                                scalar((ps[-2].val.opval));
                            (yyval.opval) = newBINOP((ps[-1].val.ival), 0, (ps[-2].val.opval), scalar((ps[0].val.opval)));
@@ -1356,6 +1350,12 @@ case 2:
 
     break;
 
+  case 162:
+#line 1046 "perly.y"
+                        { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
+    break;
+
   case 163:
 #line 1048 "perly.y"
                         { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
@@ -1364,7 +1364,7 @@ case 2:
 
   case 164:
 #line 1050 "perly.y"
-                        { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+                        { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
@@ -1376,7 +1376,7 @@ case 2:
 
   case 166:
 #line 1054 "perly.y"
-                        { (yyval.opval) = (ps[0].val.opval); }
+                        { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
 
     break;
 
@@ -1388,49 +1388,49 @@ case 2:
 
   case 168:
 #line 1058 "perly.y"
-                        { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+                        { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
 
     break;
 
   case 169:
 #line 1060 "perly.y"
-                        { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+                        { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 170:
 #line 1062 "perly.y"
-                        { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+                        { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 171:
 #line 1064 "perly.y"
-                        { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+                        { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 172:
 #line 1066 "perly.y"
-                        { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+                        { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 173:
-#line 1068 "perly.y"
-                        { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+#line 1070 "perly.y"
+                        { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); }
 
     break;
 
   case 174:
 #line 1072 "perly.y"
-                        { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); }
+                        { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
 
     break;
 
   case 175:
 #line 1074 "perly.y"
-                        { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+                        { yyerror("syntax error"); YYERROR; }
 
     break;
 
@@ -1441,32 +1441,32 @@ case 2:
     break;
 
   case 177:
-#line 1078 "perly.y"
-                        { yyerror("syntax error"); YYERROR; }
+#line 1080 "perly.y"
+                        { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 178:
 #line 1082 "perly.y"
-                        { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+                        { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 179:
-#line 1084 "perly.y"
-                        { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+#line 1086 "perly.y"
+                        { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); }
 
     break;
 
   case 180:
 #line 1088 "perly.y"
-                        { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); }
+                        { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
 
     break;
 
   case 181:
 #line 1090 "perly.y"
-                        { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+                        { yyerror("syntax error"); YYERROR; }
 
     break;
 
@@ -1477,63 +1477,57 @@ case 2:
     break;
 
   case 183:
-#line 1094 "perly.y"
-                        { yyerror("syntax error"); YYERROR; }
+#line 1096 "perly.y"
+                        { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 184:
 #line 1098 "perly.y"
-                        { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+                        { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 185:
-#line 1100 "perly.y"
-                        { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+#line 1103 "perly.y"
+                        { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }
 
     break;
 
   case 186:
 #line 1105 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }
+                        { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 187:
-#line 1107 "perly.y"
-                        { (yyval.opval) = (ps[0].val.opval); }
+#line 1108 "perly.y"
+                        { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
 
     break;
 
   case 188:
 #line 1110 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
+                        { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }
 
     break;
 
   case 189:
 #line 1112 "perly.y"
-                        { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }
-
-    break;
-
-  case 190:
-#line 1114 "perly.y"
                         { (yyval.opval) = newUNOP(OP_POSTINC, 0,
                                        op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); }
 
     break;
 
-  case 191:
-#line 1117 "perly.y"
+  case 190:
+#line 1115 "perly.y"
                         { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
                                        op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));}
 
     break;
 
-  case 192:
-#line 1120 "perly.y"
+  case 191:
+#line 1118 "perly.y"
                         { (yyval.opval) = op_convert_list(OP_JOIN, 0,
                                       op_append_elem(
                                        OP_LIST,
@@ -1547,115 +1541,121 @@ case 2:
 
     break;
 
-  case 193:
-#line 1131 "perly.y"
+  case 192:
+#line 1129 "perly.y"
                         { (yyval.opval) = newUNOP(OP_PREINC, 0,
                                        op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); }
 
     break;
 
-  case 194:
-#line 1134 "perly.y"
+  case 193:
+#line 1132 "perly.y"
                         { (yyval.opval) = newUNOP(OP_PREDEC, 0,
                                        op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); }
 
     break;
 
+  case 194:
+#line 1139 "perly.y"
+                        { (yyval.opval) = newANONLIST((ps[-1].val.opval)); }
+
+    break;
+
   case 195:
 #line 1141 "perly.y"
-                        { (yyval.opval) = newANONLIST((ps[-1].val.opval)); }
+                        { (yyval.opval) = newANONLIST(NULL);}
 
     break;
 
   case 196:
 #line 1143 "perly.y"
-                        { (yyval.opval) = newANONLIST(NULL);}
+                        { (yyval.opval) = newANONHASH((ps[-2].val.opval)); }
 
     break;
 
   case 197:
 #line 1145 "perly.y"
-                        { (yyval.opval) = newANONHASH((ps[-2].val.opval)); }
+                        { (yyval.opval) = newANONHASH(NULL); }
 
     break;
 
   case 198:
 #line 1147 "perly.y"
-                        { (yyval.opval) = newANONHASH(NULL); }
+                        { SvREFCNT_inc_simple_void(PL_compcv);
+                         (yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 199:
-#line 1149 "perly.y"
+#line 1150 "perly.y"
                         { SvREFCNT_inc_simple_void(PL_compcv);
-                         (yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); }
+                         (yyval.opval) = newANONATTRSUB((ps[-2].val.ival), NULL, (ps[-1].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 200:
-#line 1152 "perly.y"
-                        { SvREFCNT_inc_simple_void(PL_compcv);
-                         (yyval.opval) = newANONATTRSUB((ps[-2].val.ival), NULL, (ps[-1].val.opval), (ps[0].val.opval)); }
+#line 1156 "perly.y"
+                        { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));}
 
     break;
 
   case 201:
 #line 1158 "perly.y"
-                        { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));}
+                        { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));}
 
     break;
 
-  case 202:
-#line 1160 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));}
+  case 206:
+#line 1166 "perly.y"
+                        { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }
 
     break;
 
   case 207:
 #line 1168 "perly.y"
-                        { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }
+                        { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }
 
     break;
 
   case 208:
 #line 1170 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }
+                        { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); }
 
     break;
 
   case 209:
 #line 1172 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); }
+                        { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 210:
 #line 1174 "perly.y"
-                        { (yyval.opval) = (ps[0].val.opval); }
+                        { (yyval.opval) = localize((ps[0].val.opval),0); }
 
     break;
 
   case 211:
 #line 1176 "perly.y"
-                        { (yyval.opval) = localize((ps[0].val.opval),0); }
+                        { (yyval.opval) = sawparens((ps[-1].val.opval)); }
 
     break;
 
   case 212:
 #line 1178 "perly.y"
-                        { (yyval.opval) = sawparens((ps[-1].val.opval)); }
+                        { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 213:
 #line 1180 "perly.y"
-                        { (yyval.opval) = (ps[0].val.opval); }
+                        { (yyval.opval) = sawparens(newNULLLIST()); }
 
     break;
 
   case 214:
 #line 1182 "perly.y"
-                        { (yyval.opval) = sawparens(newNULLLIST()); }
+                        { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
@@ -1679,24 +1679,18 @@ case 2:
 
   case 218:
 #line 1190 "perly.y"
-                        { (yyval.opval) = (ps[0].val.opval); }
+                        { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}
 
     break;
 
   case 219:
 #line 1192 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}
+                        { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 220:
 #line 1194 "perly.y"
-                        { (yyval.opval) = (ps[0].val.opval); }
-
-    break;
-
-  case 221:
-#line 1196 "perly.y"
                         { (yyval.opval) = op_prepend_elem(OP_ASLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_ASLICE, 0,
@@ -1709,8 +1703,8 @@ case 2:
 
     break;
 
-  case 222:
-#line 1206 "perly.y"
+  case 221:
+#line 1204 "perly.y"
                         { (yyval.opval) = op_prepend_elem(OP_KVASLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_KVASLICE, 0,
@@ -1723,8 +1717,8 @@ case 2:
 
     break;
 
-  case 223:
-#line 1216 "perly.y"
+  case 222:
+#line 1214 "perly.y"
                         { (yyval.opval) = op_prepend_elem(OP_HSLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_HSLICE, 0,
@@ -1737,8 +1731,8 @@ case 2:
 
     break;
 
-  case 224:
-#line 1226 "perly.y"
+  case 223:
+#line 1224 "perly.y"
                         { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_KVHSLICE, 0,
@@ -1751,27 +1745,27 @@ case 2:
 
     break;
 
-  case 225:
-#line 1236 "perly.y"
+  case 224:
+#line 1234 "perly.y"
                         { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
-  case 226:
-#line 1238 "perly.y"
+  case 225:
+#line 1236 "perly.y"
                         { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); }
 
     break;
 
-  case 227:
-#line 1240 "perly.y"
+  case 226:
+#line 1238 "perly.y"
                         { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval)));
                        }
 
     break;
 
-  case 228:
-#line 1243 "perly.y"
+  case 227:
+#line 1241 "perly.y"
                         {
                          (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval))));
@@ -1779,67 +1773,73 @@ case 2:
 
     break;
 
-  case 229:
-#line 1248 "perly.y"
+  case 228:
+#line 1246 "perly.y"
                         { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
                            op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval))));
                        }
 
     break;
 
+  case 229:
+#line 1250 "perly.y"
+                        { (yyval.opval) = newSVREF((ps[-3].val.opval)); }
+
+    break;
+
   case 230:
 #line 1252 "perly.y"
-                        { (yyval.opval) = newSVREF((ps[-3].val.opval)); }
+                        { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
 
     break;
 
   case 231:
 #line 1254 "perly.y"
-                        { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
+                        { (yyval.opval) = newHVREF((ps[-3].val.opval)); }
 
     break;
 
   case 232:
 #line 1256 "perly.y"
-                        { (yyval.opval) = newHVREF((ps[-3].val.opval)); }
+                        { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
+                                      scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }
 
     break;
 
   case 233:
-#line 1258 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
-                                      scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }
+#line 1259 "perly.y"
+                        { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }
 
     break;
 
   case 234:
 #line 1261 "perly.y"
-                        { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }
+                        { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);
+                           PL_hints |= HINT_BLOCK_SCOPE; }
 
     break;
 
   case 235:
-#line 1263 "perly.y"
-                        { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);
-                           PL_hints |= HINT_BLOCK_SCOPE; }
+#line 1264 "perly.y"
+                        { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }
 
     break;
 
   case 236:
 #line 1266 "perly.y"
-                        { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }
+                        { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
 
     break;
 
   case 237:
 #line 1268 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
+                        { (yyval.opval) = newOP((ps[0].val.ival), 0); }
 
     break;
 
   case 238:
 #line 1270 "perly.y"
-                        { (yyval.opval) = newOP((ps[0].val.ival), 0); }
+                        { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
 
     break;
 
@@ -1851,81 +1851,75 @@ case 2:
 
   case 240:
 #line 1274 "perly.y"
-                        { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+                        { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); }
 
     break;
 
   case 241:
 #line 1276 "perly.y"
-                        { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); }
+                        { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); }
 
     break;
 
   case 242:
 #line 1278 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); }
+                        { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
 
     break;
 
   case 243:
 #line 1280 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
+                        { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+                           op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); }
 
     break;
 
   case 244:
-#line 1282 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
-                           op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); }
+#line 1283 "perly.y"
+                        { (yyval.opval) = newOP((ps[0].val.ival), 0); }
 
     break;
 
   case 245:
 #line 1285 "perly.y"
-                        { (yyval.opval) = newOP((ps[0].val.ival), 0); }
+                        { (yyval.opval) = newOP((ps[-2].val.ival), 0);}
 
     break;
 
   case 246:
 #line 1287 "perly.y"
-                        { (yyval.opval) = newOP((ps[-2].val.ival), 0);}
+                        { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 247:
 #line 1289 "perly.y"
-                        { (yyval.opval) = (ps[0].val.opval); }
+                        { (yyval.opval) = (ps[-2].val.opval); }
 
     break;
 
   case 248:
 #line 1291 "perly.y"
-                        { (yyval.opval) = (ps[-2].val.opval); }
+                        { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
 
     break;
 
   case 249:
 #line 1293 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
-
-    break;
-
-  case 250:
-#line 1295 "perly.y"
                         { (yyval.opval) = ((ps[-2].val.ival) == OP_NOT)
                           ? newUNOP((ps[-2].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0)))
                           : newOP((ps[-2].val.ival), OPf_SPECIAL); }
 
     break;
 
-  case 251:
-#line 1299 "perly.y"
+  case 250:
+#line 1297 "perly.y"
                         { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
 
     break;
 
-  case 252:
-#line 1301 "perly.y"
+  case 251:
+#line 1299 "perly.y"
                         {
                            if (   (ps[0].val.opval)->op_type != OP_TRANS
                                && (ps[0].val.opval)->op_type != OP_TRANSR
@@ -1939,39 +1933,45 @@ case 2:
 
     break;
 
-  case 253:
-#line 1312 "perly.y"
+  case 252:
+#line 1310 "perly.y"
                         { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); }
 
     break;
 
+  case 256:
+#line 1318 "perly.y"
+                        { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); }
+
+    break;
+
   case 257:
 #line 1320 "perly.y"
-                        { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); }
+                        { (yyval.opval) = localize((ps[0].val.opval),1); }
 
     break;
 
   case 258:
 #line 1322 "perly.y"
-                        { (yyval.opval) = localize((ps[0].val.opval),1); }
+                        { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); }
 
     break;
 
   case 259:
-#line 1324 "perly.y"
-                        { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); }
+#line 1327 "perly.y"
+                        { (yyval.opval) = sawparens((ps[-1].val.opval)); }
 
     break;
 
   case 260:
 #line 1329 "perly.y"
-                        { (yyval.opval) = sawparens((ps[-1].val.opval)); }
+                        { (yyval.opval) = sawparens(newNULLLIST()); }
 
     break;
 
   case 261:
-#line 1331 "perly.y"
-                        { (yyval.opval) = sawparens(newNULLLIST()); }
+#line 1332 "perly.y"
+                        { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
@@ -1988,137 +1988,131 @@ case 2:
     break;
 
   case 264:
-#line 1338 "perly.y"
-                        { (yyval.opval) = (ps[0].val.opval); }
+#line 1341 "perly.y"
+                        { (yyval.opval) = NULL; }
 
     break;
 
   case 265:
 #line 1343 "perly.y"
-                        { (yyval.opval) = NULL; }
+                        { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 266:
-#line 1345 "perly.y"
-                        { (yyval.opval) = (ps[0].val.opval); }
+#line 1347 "perly.y"
+                        { (yyval.opval) = NULL; }
 
     break;
 
   case 267:
 #line 1349 "perly.y"
-                        { (yyval.opval) = NULL; }
+                        { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
   case 268:
-#line 1351 "perly.y"
-                        { (yyval.opval) = (ps[0].val.opval); }
+#line 1353 "perly.y"
+                        { (yyval.opval) = NULL; }
 
     break;
 
   case 269:
 #line 1355 "perly.y"
-                        { (yyval.opval) = NULL; }
-
-    break;
-
-  case 270:
-#line 1357 "perly.y"
                         { (yyval.opval) = (ps[0].val.opval); }
 
     break;
 
-  case 271:
-#line 1363 "perly.y"
+  case 270:
+#line 1361 "perly.y"
                         { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
 
     break;
 
-  case 279:
-#line 1380 "perly.y"
+  case 278:
+#line 1378 "perly.y"
                         { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); }
 
     break;
 
-  case 280:
-#line 1384 "perly.y"
+  case 279:
+#line 1382 "perly.y"
                         { (yyval.opval) = newSVREF((ps[0].val.opval)); }
 
     break;
 
-  case 281:
-#line 1388 "perly.y"
+  case 280:
+#line 1386 "perly.y"
                         { (yyval.opval) = newAVREF((ps[0].val.opval));
                          if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
                        }
 
     break;
 
-  case 282:
-#line 1394 "perly.y"
+  case 281:
+#line 1392 "perly.y"
                         { (yyval.opval) = newHVREF((ps[0].val.opval));
                          if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
                        }
 
     break;
 
-  case 283:
-#line 1400 "perly.y"
+  case 282:
+#line 1398 "perly.y"
                         { (yyval.opval) = newAVREF((ps[0].val.opval)); }
 
     break;
 
-  case 284:
-#line 1402 "perly.y"
+  case 283:
+#line 1400 "perly.y"
                         { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
 
     break;
 
-  case 285:
-#line 1406 "perly.y"
+  case 284:
+#line 1404 "perly.y"
                         { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); }
 
     break;
 
-  case 287:
-#line 1411 "perly.y"
+  case 286:
+#line 1409 "perly.y"
                         { (yyval.opval) = newAVREF((ps[-2].val.opval)); }
 
     break;
 
-  case 289:
-#line 1416 "perly.y"
+  case 288:
+#line 1414 "perly.y"
                         { (yyval.opval) = newHVREF((ps[-2].val.opval)); }
 
     break;
 
-  case 291:
-#line 1421 "perly.y"
+  case 290:
+#line 1419 "perly.y"
                         { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); }
 
     break;
 
-  case 292:
-#line 1426 "perly.y"
+  case 291:
+#line 1424 "perly.y"
                         { (yyval.opval) = scalar((ps[0].val.opval)); }
 
     break;
 
-  case 293:
-#line 1428 "perly.y"
+  case 292:
+#line 1426 "perly.y"
                         { (yyval.opval) = scalar((ps[0].val.opval)); }
 
     break;
 
-  case 294:
-#line 1430 "perly.y"
+  case 293:
+#line 1428 "perly.y"
                         { (yyval.opval) = op_scope((ps[0].val.opval)); }
 
     break;
 
-  case 295:
-#line 1433 "perly.y"
+  case 294:
+#line 1431 "perly.y"
                         { (yyval.opval) = (ps[0].val.opval); }
 
     break;
@@ -2130,6 +2124,6 @@ case 2:
     
 
 /* Generated from:
- * 125e373e186e1cf8e055f2faf0d9fa51818b4e2b7b6bfda0b1688f3da43b8c35 perly.y
+ * 8501134166a6baa08c401894156c496a30dbabab6b166ea837cd490b6db2e410 perly.y
  * acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl
  * ex: set ro: */
diff --git a/perly.h b/perly.h
index 0fec7dc..550c522 100644 (file)
--- a/perly.h
+++ b/perly.h
@@ -135,36 +135,35 @@ extern int yydebug;
     SUBLEXEND = 334,
     PREC_LOW = 335,
     OROP = 336,
-    DOROP = 337,
-    ANDOP = 338,
-    NOTOP = 339,
-    ASSIGNOP = 340,
-    PERLY_QUESTION_MARK = 341,
-    PERLY_COLON = 342,
-    OROR = 343,
-    DORDOR = 344,
-    ANDAND = 345,
-    BITOROP = 346,
-    BITANDOP = 347,
-    CHEQOP = 348,
-    NCEQOP = 349,
-    CHRELOP = 350,
-    NCRELOP = 351,
-    SHIFTOP = 352,
-    MATCHOP = 353,
-    PERLY_EXCLAMATION_MARK = 354,
-    PERLY_TILDE = 355,
-    UMINUS = 356,
-    REFGEN = 357,
-    POWOP = 358,
-    PREINC = 359,
-    PREDEC = 360,
-    POSTINC = 361,
-    POSTDEC = 362,
-    POSTJOIN = 363,
-    ARROW = 364,
-    PERLY_PAREN_CLOSE = 365,
-    PERLY_PAREN_OPEN = 366
+    ANDOP = 337,
+    NOTOP = 338,
+    ASSIGNOP = 339,
+    PERLY_QUESTION_MARK = 340,
+    PERLY_COLON = 341,
+    OROR = 342,
+    DORDOR = 343,
+    ANDAND = 344,
+    BITOROP = 345,
+    BITANDOP = 346,
+    CHEQOP = 347,
+    NCEQOP = 348,
+    CHRELOP = 349,
+    NCRELOP = 350,
+    SHIFTOP = 351,
+    MATCHOP = 352,
+    PERLY_EXCLAMATION_MARK = 353,
+    PERLY_TILDE = 354,
+    UMINUS = 355,
+    REFGEN = 356,
+    POWOP = 357,
+    PREINC = 358,
+    PREDEC = 359,
+    POSTINC = 360,
+    POSTDEC = 361,
+    POSTJOIN = 362,
+    ARROW = 363,
+    PERLY_PAREN_CLOSE = 364,
+    PERLY_PAREN_OPEN = 365
   };
 #endif
 
@@ -216,6 +215,6 @@ int yyparse (void);
 
 
 /* Generated from:
- * 125e373e186e1cf8e055f2faf0d9fa51818b4e2b7b6bfda0b1688f3da43b8c35 perly.y
+ * 8501134166a6baa08c401894156c496a30dbabab6b166ea837cd490b6db2e410 perly.y
  * acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl
  * ex: set ro: */
index c27aaea..3c1942e 100644 (file)
--- a/perly.tab
+++ b/perly.tab
@@ -6,19 +6,19 @@
 
 #define YYFINAL  16
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3137
+#define YYLAST   3128
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  112
+#define YYNTOKENS  111
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  97
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  295
+#define YYNRULES  294
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  573
+#define YYNSTATES  571
 
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   366
+#define YYMAXUTOK   365
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -66,7 +66,7 @@ static const yytype_int8 yytranslate[] =
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111
+     105,   106,   107,   108,   109,   110
 };
 
 #if YYDEBUG
@@ -85,24 +85,24 @@ static const yytype_int16 yyrline[] =
      625,   626,   631,   632,   637,   638,   640,   645,   647,   659,
      660,   665,   667,   671,   691,   692,   694,   700,   765,   767,
      773,   775,   779,   785,   786,   791,   792,   796,   800,   800,
-     868,   869,   874,   885,   886,   889,   900,   902,   904,   906,
-     910,   912,   917,   921,   925,   929,   935,   940,   946,   952,
-     954,   956,   959,   958,   969,   970,   974,   978,   981,   986,
-     991,   994,   998,  1002,  1008,  1016,  1023,  1029,  1031,  1033,
-    1038,  1040,  1042,  1047,  1049,  1051,  1053,  1055,  1057,  1059,
-    1061,  1063,  1065,  1067,  1071,  1073,  1075,  1077,  1081,  1083,
-    1087,  1089,  1091,  1093,  1097,  1099,  1104,  1106,  1109,  1111,
-    1113,  1116,  1119,  1130,  1133,  1140,  1142,  1144,  1146,  1148,
-    1151,  1157,  1159,  1163,  1164,  1165,  1166,  1167,  1169,  1171,
+     868,   869,   874,   885,   886,   889,   900,   902,   904,   908,
+     910,   915,   919,   923,   927,   933,   938,   944,   950,   952,
+     954,   957,   956,   967,   968,   972,   976,   979,   984,   989,
+     992,   996,  1000,  1006,  1014,  1021,  1027,  1029,  1031,  1036,
+    1038,  1040,  1045,  1047,  1049,  1051,  1053,  1055,  1057,  1059,
+    1061,  1063,  1065,  1069,  1071,  1073,  1075,  1079,  1081,  1085,
+    1087,  1089,  1091,  1095,  1097,  1102,  1104,  1107,  1109,  1111,
+    1114,  1117,  1128,  1131,  1138,  1140,  1142,  1144,  1146,  1149,
+    1155,  1157,  1161,  1162,  1163,  1164,  1165,  1167,  1169,  1171,
     1173,  1175,  1177,  1179,  1181,  1183,  1185,  1187,  1189,  1191,
-    1193,  1195,  1205,  1215,  1225,  1235,  1237,  1239,  1242,  1247,
-    1251,  1253,  1255,  1257,  1260,  1262,  1265,  1267,  1269,  1271,
-    1273,  1275,  1277,  1279,  1281,  1284,  1286,  1288,  1290,  1292,
-    1294,  1298,  1301,  1300,  1313,  1314,  1315,  1319,  1321,  1323,
-    1328,  1330,  1333,  1335,  1337,  1342,  1344,  1349,  1350,  1355,
-    1356,  1362,  1366,  1367,  1368,  1371,  1372,  1375,  1376,  1379,
-    1383,  1387,  1393,  1399,  1401,  1405,  1409,  1410,  1414,  1415,
-    1419,  1420,  1425,  1427,  1429,  1432
+    1193,  1203,  1213,  1223,  1233,  1235,  1237,  1240,  1245,  1249,
+    1251,  1253,  1255,  1258,  1260,  1263,  1265,  1267,  1269,  1271,
+    1273,  1275,  1277,  1279,  1282,  1284,  1286,  1288,  1290,  1292,
+    1296,  1299,  1298,  1311,  1312,  1313,  1317,  1319,  1321,  1326,
+    1328,  1331,  1333,  1335,  1340,  1342,  1347,  1348,  1353,  1354,
+    1360,  1364,  1365,  1366,  1369,  1370,  1373,  1374,  1377,  1381,
+    1385,  1391,  1397,  1399,  1403,  1407,  1408,  1412,  1413,  1417,
+    1418,  1423,  1425,  1427,  1430
 };
 #endif
 
@@ -125,9 +125,9 @@ static const char *const yytname[] =
   "LOOPEX", "DOTDOT", "YADAYADA", "FUNC0", "FUNC1", "FUNC", "UNIOP",
   "LSTOP", "MULOP", "ADDOP", "DOLSHARP", "DO", "HASHBRACK", "NOAMP",
   "LOCAL", "MY", "REQUIRE", "COLONATTR", "FORMLBRACK", "FORMRBRACK",
-  "SUBLEXSTART", "SUBLEXEND", "PREC_LOW", "OROP", "DOROP", "ANDOP",
-  "NOTOP", "ASSIGNOP", "PERLY_QUESTION_MARK", "PERLY_COLON", "OROR",
-  "DORDOR", "ANDAND", "BITOROP", "BITANDOP", "CHEQOP", "NCEQOP", "CHRELOP",
+  "SUBLEXSTART", "SUBLEXEND", "PREC_LOW", "OROP", "ANDOP", "NOTOP",
+  "ASSIGNOP", "PERLY_QUESTION_MARK", "PERLY_COLON", "OROR", "DORDOR",
+  "ANDAND", "BITOROP", "BITANDOP", "CHEQOP", "NCEQOP", "CHRELOP",
   "NCRELOP", "SHIFTOP", "MATCHOP", "PERLY_EXCLAMATION_MARK", "PERLY_TILDE",
   "UMINUS", "REFGEN", "POWOP", "PREINC", "PREDEC", "POSTINC", "POSTDEC",
   "POSTJOIN", "ARROW", "PERLY_PAREN_CLOSE", "PERLY_PAREN_OPEN", "$accept",
@@ -166,16 +166,16 @@ static const yytype_int16 yytoknum[] =
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
-     365,   366
+     365
 };
 # endif
 
-#define YYPACT_NINF (-497)
+#define YYPACT_NINF (-464)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-291)
+#define YYTABLE_NINF (-290)
 
 #define yytable_value_is_error(Yyn) \
   ((Yyn) == YYTABLE_NINF)
@@ -184,64 +184,64 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    1082,  -497,  -497,  -497,  -497,  -497,  -497,  -497,    30,  -497,
-    2773,    23,  1394,  1298,  -497,  -497,  -497,  -497,   136,  1840,
-     136,  2773,   136,  2773,   136,   136,  -497,   136,   136,  -497,
-    -497,    48,   -35,  -497,  2773,  -497,  -497,  -497,  -497,  2773,
-     -31,   -12,   -36,  1936,  1747,   136,  1936,  2029,    88,  2773,
-      16,  2773,  2773,  2773,  2773,  2773,  2773,  2773,  2122,   241,
-      86,  -497,     5,  -497,   -52,    25,    79,    35,  -497,  -497,
-    -497,  2938,  -497,  -497,     6,    66,    72,    97,  -497,   127,
-     131,   263,   137,  -497,  -497,  -497,  -497,  -497,  -497,    88,
-      88,   151,  -497,    80,    84,   109,   116,    -9,   128,   142,
-      23,   220,   215,  -497,   257,  1485,  1298,  -497,  -497,  -497,
-     530,  -497,   155,   626,  -497,  -497,  -497,  -497,  -497,  -497,
-      13,  -497,  1078,  -497,  1078,  -497,  -497,  2773,   171,   205,
-    2773,   192,   995,    23,   274,   236,  2938,   206,  2215,  2773,
-    1747,  -497,   995,  1646,    86,  -497,   355,  2773,  -497,  -497,
-     995,   307,   111,  -497,  -497,  2773,   995,  2866,  2308,   256,
-    -497,  -497,  -497,   995,    86,  1078,  1078,  1078,   416,   416,
-     319,   -29,  2773,  2773,  2773,  2773,  2773,  2773,  2401,  -497,
-    -497,  2773,  -497,  -497,  2773,  2773,  2773,  2773,  2773,  2773,
-    2773,  2773,  2773,  2773,  2773,  2773,  2773,  2773,  2773,  2773,
-    2773,  2773,  -497,  -497,  -497,  1365,  2494,  2773,  2773,  2773,
-    2773,  2773,  2773,  2773,  -497,   313,  -497,  -497,   314,  -497,
-    -497,  -497,  -497,  -497,   242,   164,  -497,  -497,   232,  -497,
-    -497,  -497,  -497,    23,  -497,  -497,  2773,  2773,  2773,  2773,
-    2773,  2773,  -497,  -497,  -497,   322,  -497,  -497,   322,  -497,
-    -497,  -497,   344,  -497,  -497,  -497,  2773,  2773,    24,  -497,
-    -497,  -497,   236,   331,  -497,  -497,  -497,   -23,   282,   255,
-    2773,    86,  -497,   359,  -497,  2587,  1078,   256,    11,    22,
-      36,  -497,   325,   338,  -497,  2773,   361,   292,   292,  -497,
-    2938,   190,    43,  -497,   374,   995,   899,  3028,  1182,   288,
-    2938,  2893,   515,   515,   611,   707,   803,   899,   899,   995,
-     995,  1091,  1078,  1078,   357,  2773,  2773,   482,   358,   360,
-     362,  -497,   364,  2680,   279,  -497,  -497,   385,   223,    54,
-     244,    78,   247,   126,   298,   722,  -497,   380,  -497,  -497,
-      26,   375,  2773,  2773,  2773,  2773,  -497,   384,  -497,  -497,
-     302,  -497,  -497,  -497,  -497,  1487,   297,  -497,  2773,  2773,
-    -497,  -497,   241,  -497,   241,  -497,  -497,  -497,  -497,  -497,
-     330,   330,   155,   310,    51,  -497,  2773,  -497,  -497,   312,
-    -497,  -497,  -497,  -497,   396,  -497,     7,   418,  -497,  -497,
-    -497,   168,  2773,   413,  -497,  -497,  2773,  -497,   336,   173,
-    -497,  -497,  -497,  -497,  -497,  -497,   451,  2773,  -497,   414,
-    -497,   417,  -497,   421,  -497,   442,  -497,  -497,  -497,   274,
-     236,  -497,  -497,   402,   349,   241,   350,   363,   241,   365,
-     369,  -497,  -497,  -497,  -497,   366,   447,   438,  -497,  2773,
-     371,   372,  2773,  -497,  -497,  -497,  -497,  2773,   411,  -497,
-     486,  -497,  -497,   499,  -497,  -497,    28,  -497,   182,  -497,
-    2983,   500,  -497,  -497,   401,  -497,  -497,  -497,  -497,   492,
-     236,   493,  -497,  2773,  -497,  -497,   506,   506,  2773,  2773,
-     506,  -497,   407,   419,   506,   506,  2938,   241,  -497,  -497,
-     425,  -497,  -497,  -497,  -497,   459,   516,  -497,  -497,  -497,
-    -497,   523,   506,   506,  -497,   159,   159,   437,   443,   215,
-    2773,  2773,   506,  -497,  -497,   818,  -497,   914,  -497,  -497,
-    -497,  -497,  1010,  -497,   215,   215,  -497,   506,   472,  -497,
-    -497,   506,   506,  -497,   567,   487,   215,  -497,  -497,    33,
-    -497,  -497,  -497,  1106,  -497,  2773,   215,   215,  -497,   506,
-    -497,   579,   539,  -497,  -497,   507,  -497,  -497,  -497,   215,
-    -497,  -497,  -497,   506,  1580,  -497,  1202,   159,   509,  -497,
-    -497,   506,  -497
+     470,  -464,  -464,  -464,  -464,  -464,  -464,  -464,     7,  -464,
+    2748,     5,  1383,  1288,  -464,  -464,  -464,  -464,   225,  1825,
+     225,  2748,   225,  2748,   225,   225,  -464,   225,   225,  -464,
+    -464,    47,   -47,  -464,  2748,  -464,  -464,  -464,  -464,  2748,
+     -36,   -31,   -25,  1920,  1733,   225,  1920,  2012,   211,  2748,
+      -2,  2748,  2748,  2748,  2748,  2748,  2748,  2748,  2104,    91,
+      52,  -464,     4,  -464,   159,    35,   167,    -6,  -464,  -464,
+    -464,  2900,  -464,  -464,    -3,    45,   150,   180,  -464,   134,
+     252,   314,   168,  -464,  -464,  -464,  -464,  -464,  -464,   211,
+     211,   112,  -464,    99,   116,   169,   194,    16,   197,   201,
+       5,   246,   276,  -464,   322,  1034,  1288,  -464,  -464,  -464,
+     528,  -464,    20,   623,  -464,  -464,  -464,  -464,  -464,  -464,
+      13,  -464,   786,  -464,   786,  -464,  -464,  2748,   250,   278,
+    2748,   289,   703,     5,   348,   312,  2900,   290,  2196,  2748,
+    1733,  -464,   703,   357,    52,  -464,  1633,  2748,  -464,  -464,
+     703,   388,    66,  -464,  -464,  2748,   703,  2840,  2288,   327,
+    -464,  -464,  -464,   703,    52,   786,   786,   786,   268,   268,
+     390,    43,  2748,  2748,  2748,  2748,  2748,  2380,  -464,  -464,
+    2748,  -464,  -464,  2748,  2748,  2748,  2748,  2748,  2748,  2748,
+    2748,  2748,  2748,  2748,  2748,  2748,  2748,  2748,  2748,  2748,
+    2748,  -464,  -464,  -464,   165,  2472,  2748,  2748,  2748,  2748,
+    2748,  2748,  2748,  -464,   382,  -464,  -464,   383,  -464,  -464,
+    -464,  -464,  -464,   311,   228,  -464,  -464,   305,  -464,  -464,
+    -464,  -464,     5,  -464,  -464,  2748,  2748,  2748,  2748,  2748,
+    2748,  -464,  -464,  -464,   395,  -464,  -464,   395,  -464,  -464,
+    -464,   419,  -464,  -464,  -464,  2748,  2748,    19,  -464,  -464,
+    -464,   312,   406,  -464,  -464,  -464,    78,   361,   347,  2748,
+      52,  -464,   443,  -464,  2564,   786,   327,    36,    58,   131,
+    -464,   153,   431,  -464,  2748,   448,   385,  -464,  2900,   164,
+      24,  -464,   158,   703,   391,  2988,   288,   893,  2900,   425,
+    3020,  3020,   513,   608,   325,   391,   391,   703,   703,   798,
+     786,   786,   446,  2748,  2748,   787,   455,   457,   458,  -464,
+     465,  2656,   392,  -464,  -464,   221,   200,    28,   227,    38,
+     233,    54,   236,   718,  -464,   477,  -464,  -464,    32,   478,
+    2748,  2748,  2748,  2748,  -464,   487,  -464,  -464,   396,  -464,
+    -464,  -464,  -464,  1475,   345,  -464,  2748,  2748,  -464,  -464,
+      91,  -464,    91,  -464,  -464,  -464,  -464,  -464,   421,   421,
+      20,   399,   151,  -464,  2748,  -464,  -464,   413,  -464,  -464,
+    -464,  -464,   255,  -464,    21,   259,  -464,  -464,  -464,   102,
+    2748,   512,  -464,  -464,  2748,  -464,   242,   113,  -464,  -464,
+    -464,  -464,  -464,  -464,   277,  2748,  -464,   514,  -464,   522,
+    -464,   524,  -464,   525,  -464,  -464,  -464,   348,   312,  -464,
+    -464,   499,   434,    91,   436,   437,    91,   442,   449,  -464,
+    -464,  -464,  -464,   472,   565,   272,  -464,  2748,   485,   486,
+    2748,  -464,  -464,  -464,  -464,  2748,   533,  -464,   602,  -464,
+    -464,   603,  -464,  -464,    22,  -464,   126,  -464,  2944,   604,
+    -464,  -464,   508,  -464,  -464,  -464,  -464,   600,   312,   606,
+    -464,  2748,  -464,  -464,   614,   614,  2748,  2748,   614,  -464,
+     520,   526,   614,   614,  2900,    91,  -464,  -464,   531,  -464,
+    -464,  -464,  -464,   560,   619,  -464,  -464,  -464,  -464,   624,
+     614,   614,  -464,   287,   287,   545,   567,   276,  2748,  2748,
+     614,  -464,  -464,   813,  -464,   908,  -464,  -464,  -464,  -464,
+    1003,  -464,   276,   276,  -464,   614,   572,  -464,  -464,   614,
+     614,  -464,   667,   581,   276,  -464,  -464,     8,  -464,  -464,
+    -464,  1098,  -464,  2748,   276,   276,  -464,   614,  -464,   681,
+     631,  -464,  -464,   599,  -464,  -464,  -464,   276,  -464,  -464,
+    -464,   614,  1567,  -464,  1193,   287,   609,  -464,  -464,   614,
+    -464
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -250,92 +250,92 @@ static const yytype_int16 yypact[] =
 static const yytype_int16 yydefact[] =
 {
        0,     2,     4,     6,     8,    10,    12,    14,     0,    18,
-     267,     0,     0,     0,    21,   118,     1,    21,     0,     0,
-       0,     0,     0,     0,     0,     0,   254,     0,     0,   225,
-     252,   213,   247,   249,   243,    88,   256,    88,    88,   235,
-     245,     0,     0,   238,   265,     0,     0,     0,     0,     0,
-       0,   241,     0,     0,     0,     0,     0,     0,     0,   268,
-     129,   255,   220,   203,   165,   174,   166,   180,   204,   205,
-     206,   132,   210,     5,   226,   215,   218,   217,   219,   216,
+     266,     0,     0,     0,    21,   118,     1,    21,     0,     0,
+       0,     0,     0,     0,     0,     0,   253,     0,     0,   224,
+     251,   212,   246,   248,   242,    88,   255,    88,    88,   234,
+     244,     0,     0,   237,   264,     0,     0,     0,     0,     0,
+       0,   240,     0,     0,     0,     0,     0,     0,     0,   267,
+     128,   254,   219,   202,   164,   173,   165,   179,   203,   204,
+     205,   131,   209,     5,   225,   214,   217,   216,   218,   215,
        0,     0,     0,    18,     7,    64,    59,    29,    89,     0,
        0,     0,    87,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    75,     9,     0,    65,     0,    11,    26,    25,
-       0,    15,   113,     0,   292,   295,   294,   293,   279,   196,
-       0,   280,   186,   282,   187,   281,   285,   265,     0,     0,
-       0,     0,   244,     0,    92,    94,   236,     0,     0,   267,
-     267,   239,   240,   292,   266,   139,   293,     0,   283,   202,
-     201,     0,     0,    90,    91,   265,   211,     0,     0,   258,
-     262,   264,   263,   242,   237,   188,   189,   208,   193,   194,
-     214,     0,     0,     0,     0,   130,     0,     0,     0,   177,
-     176,     0,   183,   182,     0,     0,     0,     0,     0,     0,
+       0,    15,   113,     0,   291,   294,   293,   292,   278,   195,
+       0,   279,   185,   281,   186,   280,   284,   264,     0,     0,
+       0,     0,   243,     0,    92,    94,   235,     0,     0,   266,
+     266,   238,   239,   291,   265,   138,   292,     0,   282,   201,
+     200,     0,     0,    90,    91,   264,   210,     0,     0,   257,
+     261,   263,   262,   241,   236,   187,   188,   207,   192,   193,
+     213,     0,     0,     0,   129,     0,     0,     0,   176,   175,
+       0,   182,   181,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   190,   191,   192,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    21,    86,    87,    87,     0,    36,
-      18,    18,    18,    18,    18,     0,    18,    18,     0,    18,
-      18,    42,    58,     0,    54,    57,     0,     0,     0,     0,
-       0,     0,    28,    27,    22,    99,   102,   101,    99,   109,
-     108,   112,   114,   119,   195,   137,   267,     0,     0,   248,
-     142,    93,    94,    96,    18,   246,   250,     0,     0,     0,
-       0,   133,   198,     0,   229,     0,   209,     0,   215,   218,
-     217,   261,     0,    98,   257,     0,   212,   127,   128,   126,
-     131,     0,     0,   156,     0,   179,   185,   169,   162,   163,
-     160,     0,   171,   172,   170,   168,   167,   184,   181,   178,
-     175,   164,   173,   161,     0,     0,     0,     0,   289,   287,
-     291,   144,     0,     0,   136,   145,   227,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    85,     0,    31,    33,
-       0,     0,    80,     0,     0,     0,   277,     0,   278,   275,
-       0,   276,   272,   273,   274,     0,     0,    18,     0,     0,
-      76,    68,    63,    69,    82,    66,    67,    70,    71,   100,
-     104,   104,   110,     0,   269,   158,   265,    18,    95,   115,
-     200,   251,   141,   140,     0,   197,   214,     0,   259,   260,
-      97,     0,     0,     0,   149,   155,     0,   233,     0,     0,
-     230,   232,   231,   234,   284,   153,     0,   267,   228,     0,
-     147,     0,   221,     0,   222,     0,    16,    18,    30,    92,
-      94,    18,    35,     0,     0,    81,     0,     0,    83,     0,
-       0,   271,    18,    79,    84,     0,     0,    65,    50,     0,
-       0,     0,   105,   107,   103,   111,   138,     0,     0,   143,
-       0,   199,   118,     0,   116,   134,   212,   159,     0,   152,
-     207,     0,   148,   154,     0,   150,   223,   224,   146,     0,
-      94,    18,    55,   265,    77,    77,     0,     0,     0,     0,
-       0,    45,     0,     0,     0,     0,   106,   270,   253,    21,
-       0,    21,   157,   151,   135,     0,    18,   124,    34,   123,
-      21,     0,     0,     0,    20,    72,    72,     0,     0,    75,
-      80,     0,     0,    40,    41,     0,   117,     0,    23,   121,
-      32,   120,     0,    37,    75,    75,    21,     0,     0,    38,
-      39,     0,     0,    53,     0,     0,    75,   122,   125,     0,
-      56,    43,    44,     0,    73,     0,    75,    75,    46,     0,
-      49,     0,    61,    24,    19,     0,    48,    52,    77,    75,
-      17,    21,    60,     0,     0,    51,     0,    72,     0,    62,
-      74,     0,    47
+       0,   189,   190,   191,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    21,    86,    87,    87,     0,    36,    18,
+      18,    18,    18,    18,     0,    18,    18,     0,    18,    18,
+      42,    58,     0,    54,    57,     0,     0,     0,     0,     0,
+       0,    28,    27,    22,    99,   102,   101,    99,   109,   108,
+     112,   114,   119,   194,   136,   266,     0,     0,   247,   141,
+      93,    94,    96,    18,   245,   249,     0,     0,     0,     0,
+     132,   197,     0,   228,     0,   208,     0,   214,   217,   216,
+     260,     0,    98,   256,     0,   211,   127,   126,   130,     0,
+       0,   155,     0,   178,   184,   168,   161,   162,   159,     0,
+     170,   171,   169,   167,   166,   183,   180,   177,   174,   163,
+     172,   160,     0,     0,     0,     0,   288,   286,   290,   143,
+       0,     0,   135,   144,   226,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    85,     0,    31,    33,     0,     0,
+      80,     0,     0,     0,   276,     0,   277,   274,     0,   275,
+     271,   272,   273,     0,     0,    18,     0,     0,    76,    68,
+      63,    69,    82,    66,    67,    70,    71,   100,   104,   104,
+     110,     0,   268,   157,   264,    18,    95,   115,   199,   250,
+     140,   139,     0,   196,   213,     0,   258,   259,    97,     0,
+       0,     0,   148,   154,     0,   232,     0,     0,   229,   231,
+     230,   233,   283,   152,     0,   266,   227,     0,   146,     0,
+     220,     0,   221,     0,    16,    18,    30,    92,    94,    18,
+      35,     0,     0,    81,     0,     0,    83,     0,     0,   270,
+      18,    79,    84,     0,     0,    65,    50,     0,     0,     0,
+     105,   107,   103,   111,   137,     0,     0,   142,     0,   198,
+     118,     0,   116,   133,   211,   158,     0,   151,   206,     0,
+     147,   153,     0,   149,   222,   223,   145,     0,    94,    18,
+      55,   264,    77,    77,     0,     0,     0,     0,     0,    45,
+       0,     0,     0,     0,   106,   269,   252,    21,     0,    21,
+     156,   150,   134,     0,    18,   124,    34,   123,    21,     0,
+       0,     0,    20,    72,    72,     0,     0,    75,    80,     0,
+       0,    40,    41,     0,   117,     0,    23,   121,    32,   120,
+       0,    37,    75,    75,    21,     0,     0,    38,    39,     0,
+       0,    53,     0,     0,    75,   122,   125,     0,    56,    43,
+      44,     0,    73,     0,    75,    75,    46,     0,    49,     0,
+      61,    24,    19,     0,    48,    52,    77,    75,    17,    21,
+      60,     0,     0,    51,     0,    72,     0,    62,    74,     0,
+      47
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,    45,
-    -497,    -5,  -139,  -497,   -17,  -497,   603,   514,     3,  -497,
-    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,   751,  -341,
-    -496,   -20,  -458,  -497,   115,   285,  -169,    67,  -497,    19,
-     209,  -497,   169,   214,  -257,   367,   390,  -497,  -497,   269,
-    -497,   271,  -497,  -497,  -497,  -497,   197,  -497,  -497,   161,
-    -497,   208,    -8,   -43,  -497,  -497,  -497,  -497,  -497,  -497,
-    -497,  -497,  -497,  -497,  -497,  -497,   100,  -497,  -497,   528,
-    -124,  -127,  -497,  -497,   337,  -497,  -497,   467,     1,   -44,
-     -42,  -497,  -497,  -497,  -497,  -497,   216
+    -464,  -464,  -464,  -464,  -464,  -464,  -464,  -464,  -464,    37,
+    -464,    -5,  2417,  -464,   -17,  -464,   696,   605,    12,  -464,
+    -464,  -464,  -464,  -464,  -464,  -464,  -464,  -464,    33,  -343,
+    -463,  -156,  -453,  -464,   204,   376,  -266,   161,  -464,   127,
+     346,  -464,   273,   303,  -256,   456,   488,  -464,  -464,   356,
+    -464,   366,  -464,  -464,  -464,  -464,   291,  -464,  -464,   283,
+    -464,   280,    -8,   -43,  -464,  -464,  -464,  -464,  -464,  -464,
+    -464,  -464,  -464,  -464,  -464,  -464,   100,  -464,  -464,   627,
+    -124,  -127,  -464,  -464,   417,  -464,  -464,   561,     1,   -44,
+     -42,  -464,  -464,  -464,  -464,  -464,    48
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,     8,     9,    10,    11,    12,    13,    14,    15,   102,
-     418,   379,   505,   526,   110,   539,   244,   108,   109,   419,
-     420,   341,   510,   558,   482,   500,   553,   562,   361,   104,
-     529,   234,   502,   434,   424,   363,   427,   436,   337,   219,
-     133,   215,   155,   262,   264,   284,   370,   248,   249,   443,
-     250,   251,   252,   253,   453,   454,   111,   112,   520,   451,
-     498,   380,   105,    60,    61,   376,   324,    62,    63,    64,
+     416,   377,   503,   524,   110,   537,   243,   108,   109,   417,
+     418,   339,   508,   556,   480,   498,   551,   560,   359,   104,
+     527,   233,   500,   432,   422,   361,   425,   434,   335,   218,
+     133,   214,   155,   261,   263,   283,   368,   247,   248,   441,
+     249,   250,   251,   252,   451,   452,   111,   112,   518,   449,
+     496,   378,   105,    60,    61,   374,   322,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,   129,    72,   159,
-     145,    73,   448,   430,   349,   350,   227,    74,    75,    76,
+     145,    73,   446,   428,   347,   348,   226,    74,    75,    76,
       77,    78,    79,    80,    81,    82,   121
 };
 
@@ -344,136 +344,135 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-     113,   144,    59,   255,    17,   377,   161,    20,   162,   164,
-     530,   120,   268,   269,   433,   103,   176,   503,   177,   117,
-     285,   117,   207,   117,   208,   117,   117,   254,   117,   117,
-      16,   274,    20,  -286,    83,  -286,    22,   421,   375,   152,
-      24,   392,   139,   179,   180,   146,   117,  -288,   422,  -288,
-     171,   160,   172,   173,   174,   551,    84,   394,   172,   173,
-     174,   130,   552,   116,   224,   116,   175,   116,   410,   116,
-     116,   570,   116,   116,   447,   140,   131,   207,   214,   208,
-     137,   286,  -261,  -286,   144,  -286,  -262,   381,   141,   116,
-     116,   149,   412,   225,   172,   173,   174,  -264,   228,   138,
-     564,   175,   226,  -260,   271,   172,   173,   174,  -288,   243,
-    -288,  -263,   144,   279,   153,   280,   178,   206,   157,   154,
-     181,   122,   258,   124,   172,   173,   174,   158,   184,   373,
-     267,    59,    59,   273,   132,   172,   173,   174,  -290,   136,
-     414,   146,   209,   142,   210,   231,   150,    83,   213,   156,
-     282,   163,    20,   165,   166,   167,   168,   169,   278,   172,
-     173,   174,   114,   471,   287,   288,   289,   115,   291,   292,
-     294,   245,   182,   183,    18,   246,   429,   218,   260,   247,
-      20,   353,   457,   354,    22,   116,   435,   462,    24,   440,
-     441,   220,   172,   173,   174,   221,   492,   335,   327,   328,
-     329,   330,   331,   332,   333,   334,   325,   172,   173,   174,
-     527,   528,   393,   496,   374,   342,   343,   344,   345,   347,
-     222,   355,   356,   433,   358,   359,   352,   223,   362,   364,
-     362,   362,   362,   362,   118,   338,   339,   348,   123,   229,
-     125,   126,   232,   127,   128,   409,   134,   135,    59,   172,
-     173,   174,   449,   230,   172,   173,   174,   276,   216,   217,
-     147,   148,   384,   172,   173,   174,   411,   387,   233,   413,
-     483,   172,   173,   174,   211,   290,   212,   391,   360,   235,
-     464,   295,   256,   257,   296,   297,   298,   299,   300,   301,
-     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     312,   313,   259,   261,   172,   173,   174,   398,   399,   507,
-     508,   263,   353,    20,   354,   406,   265,    22,   117,   272,
-     415,    24,   172,   173,   174,   172,   173,   174,   172,   173,
-     174,   283,   285,   144,   425,   364,   428,   428,   506,   336,
-     340,   509,   535,   357,   346,   513,   514,   437,   431,   501,
-     428,   428,   439,   369,   186,  -215,   270,   352,   461,   372,
-     378,   382,   116,   524,   525,   383,   207,   390,   208,  -215,
-    -215,   385,   450,   536,   392,   174,   555,  -215,  -215,   172,
-     173,   174,   397,   401,   458,   402,   200,   403,   544,   404,
-     407,   201,   546,   547,   202,   203,   204,   205,   417,    59,
-      20,   423,  -215,  -215,  -215,  -215,   172,   173,   174,  -215,
-     559,  -215,   469,   432,  -215,   442,   472,   172,   173,   174,
-     446,  -215,  -215,   452,   567,   459,   465,   479,   473,   466,
-     144,   428,   572,   467,  -215,   389,  -215,  -215,  -215,   487,
-    -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,  -215,
-    -215,  -215,  -215,  -215,   468,   172,   173,   174,  -215,   474,
-     475,  -215,  -215,  -215,  -215,  -215,   172,   173,   174,   481,
-     428,   428,   515,   476,   517,   477,   480,   172,   173,   174,
-     478,   484,   485,   522,   395,   236,   237,   238,   239,   533,
-     488,   450,   240,    83,   241,   408,   460,   489,    20,   172,
-     173,   174,   425,   428,   541,   542,   455,   400,   114,   543,
-     491,   494,   493,   115,   495,   497,   550,   504,   511,   172,
-     173,   174,  -291,  -291,  -291,   205,   556,   557,   456,   512,
-     -13,    85,   172,   173,   174,   516,   518,   428,   519,   565,
-      18,    83,   486,    19,   566,   523,    20,   531,   -83,    21,
-      22,    23,    86,   532,    24,    25,    26,    27,    28,    29,
-      30,   463,    31,    32,    33,    34,    35,    36,    87,   106,
-      88,    89,    90,    37,    38,    91,    92,    93,    94,    95,
-      96,   186,   187,   545,    97,    98,    99,   100,    39,   548,
-     101,    40,    41,    42,    43,    44,   560,   549,    45,    46,
-      47,    48,    49,    50,    51,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,    52,   561,   107,   563,   201,   571,
-     242,   202,   203,   204,   205,   534,    -3,    85,   426,    53,
-      54,   568,    55,   470,    56,    57,    18,    83,   371,    19,
-     444,    58,    20,   445,   388,    21,    22,    23,    86,   490,
-      24,    25,    26,    27,    28,    29,    30,   521,    31,    32,
-      33,    34,    35,    36,    87,   106,    88,    89,    90,    37,
-      38,    91,    92,    93,    94,    95,    96,   186,   187,   499,
-      97,    98,    99,   100,    39,   277,   101,    40,    41,    42,
-      43,    44,   351,   438,    45,    46,    47,    48,    49,    50,
-      51,     0,   193,   194,   195,   196,   197,   198,   199,   200,
-      52,     0,     0,     0,   201,     0,     0,   202,   203,   204,
-     205,     0,     0,    85,     0,    53,    54,     0,    55,     0,
-      56,    57,    18,    83,   416,    19,     0,    58,    20,     0,
-       0,    21,    22,    23,    86,     0,    24,    25,    26,    27,
-      28,    29,    30,     0,    31,    32,    33,    34,    35,    36,
-      87,   106,    88,    89,    90,    37,    38,    91,    92,    93,
-      94,    95,    96,   186,   187,     0,    97,    98,    99,   100,
-      39,     0,   101,    40,    41,    42,    43,    44,     0,     0,
-      45,    46,    47,    48,    49,    50,    51,     0,     0,   194,
-     195,   196,   197,   198,   199,   200,    52,     0,     0,     0,
-     201,     0,     0,   202,   203,   204,   205,     0,     0,    85,
+     113,   144,    59,   254,    17,   375,   161,    16,   162,   164,
+     431,   120,   267,   268,    20,   175,    83,   176,    22,   117,
+     501,   117,    24,   117,   103,   117,   117,   253,   117,   117,
+     549,   273,    20,   373,   284,   390,   244,   550,   392,   152,
+     245,   528,   408,   419,   246,   146,   117,   206,    84,   207,
+     171,   160,   410,   139,   420,   116,   206,   116,   207,   116,
+     130,   116,   116,   131,   116,   116,   118,   174,   412,  -285,
+     123,  -285,   125,   126,   137,   127,   128,   427,   213,   138,
+     141,   116,   116,   149,   144,   140,   183,   433,   272,   223,
+     438,   439,   147,   148,   172,   173,  -260,  -259,   227,   157,
+     172,   173,   568,   562,   270,   172,   173,   205,   158,   172,
+     173,  -261,   144,   278,   177,   279,   455,   224,   242,   172,
+     173,   122,   257,   124,   172,   173,   225,   460,   371,   180,
+     266,    59,    59,  -263,   132,   172,   173,   230,   217,   136,
+     490,   146,  -287,   142,  -287,  -289,   150,   172,   173,   156,
+     281,   163,   285,   165,   166,   167,   168,   169,   277,   172,
+     173,  -285,   469,  -285,   286,   287,   174,   289,   290,   292,
+     259,   481,   172,   173,   445,   312,   313,   116,   314,   212,
+     351,   315,   352,   172,   173,   316,   391,   379,   269,   317,
+     318,  -287,   319,  -287,   172,   173,   333,   325,   326,   327,
+     328,   329,   330,   331,   332,   323,  -262,   172,   173,   219,
+     505,   506,   494,   372,   340,   341,   342,   343,   345,   431,
+     353,   354,   407,   356,   357,   350,   220,   360,   362,   360,
+     360,   360,   360,   320,   172,   173,    83,   153,    18,   172,
+     173,    20,   154,   533,    20,   172,   173,    59,    22,   409,
+     447,   114,    24,   178,   179,   411,   115,   275,   413,   181,
+     182,   382,   387,   208,   459,   209,   385,   393,   231,   358,
+     363,   364,   365,   366,   288,   321,   389,   553,   462,   221,
+     293,   172,   173,   294,   295,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   346,   172,   173,   222,   396,   397,   228,   172,   173,
+     351,   229,   352,   404,   172,   173,   117,   172,   173,   235,
+     236,   237,   238,   172,   173,   210,   239,   211,   240,   232,
+     406,   144,   423,   362,   426,   426,   172,   173,   525,   526,
+     172,   173,   336,   337,   234,   435,   429,   499,   426,   426,
+     437,   531,   116,   172,   173,   350,   256,  -253,   172,   173,
+     255,    20,   215,   216,   453,    22,   539,   540,   454,    24,
+     448,  -253,  -253,  -290,  -290,  -290,   204,   260,   548,  -253,
+    -253,   -83,   456,   134,   135,   199,   461,   262,   554,   555,
+     200,   185,   186,   201,   202,   203,   204,    59,   258,   264,
+     271,   563,   282,   284,  -253,  -253,  -253,  -253,   334,   338,
+     467,  -253,   344,  -253,   470,   355,  -253,   194,   195,   196,
+     197,   198,   199,  -253,  -253,   477,   367,   200,   144,   426,
+     201,   202,   203,   204,   370,   376,  -253,   485,  -253,  -253,
+     380,  -253,  -253,  -253,  -253,  -253,  -253,  -253,  -253,  -253,
+    -253,  -253,  -253,  -253,  -253,   383,   381,   185,   186,  -253,
+     388,   390,  -253,  -253,  -253,  -253,  -253,   173,   426,   426,
+     513,   395,   515,     1,     2,     3,     4,     5,     6,     7,
+     399,   520,   400,   401,   184,   196,   197,   198,   199,   448,
+     402,   185,   186,   200,   458,   415,   201,   202,   203,   204,
+     423,   426,   405,    20,   421,   440,   430,   541,   444,   187,
+     188,   394,   189,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   450,   457,   471,   463,   200,   -13,    85,
+     201,   202,   203,   204,   464,   426,   465,   466,    18,    83,
+     484,    19,   564,   472,    20,   473,   474,    21,    22,    23,
+      86,   475,    24,    25,    26,    27,    28,    29,    30,   476,
+      31,    32,    33,    34,    35,    36,    87,   106,    88,    89,
+      90,    37,    38,    91,    92,    93,    94,    95,    96,   185,
+     186,   478,    97,    98,    99,   100,    39,   479,   101,    40,
+      41,    42,    43,    44,   482,   483,    45,    46,    47,    48,
+      49,    50,    51,   192,   193,   194,   195,   196,   197,   198,
+     199,    52,   486,   487,   489,   200,   491,   492,   201,   202,
+     203,   204,   493,    -3,    85,   502,    53,    54,   495,    55,
+     509,    56,    57,    18,    83,   510,    19,   516,    58,    20,
+     514,   517,    21,    22,    23,    86,   521,    24,    25,    26,
+      27,    28,    29,    30,   529,    31,    32,    33,    34,    35,
+      36,    87,   106,    88,    89,    90,    37,    38,    91,    92,
+      93,    94,    95,    96,   185,   186,   530,    97,    98,    99,
+     100,    39,   543,   101,    40,    41,    42,    43,    44,   546,
+     547,    45,    46,    47,    48,    49,    50,    51,   558,   193,
+     194,   195,   196,   197,   198,   199,    52,   559,   561,   107,
+     200,   241,   532,   201,   202,   203,   204,   424,   569,    85,
+     468,    53,    54,   566,    55,   442,    56,    57,    18,    83,
+     414,    19,   386,    58,    20,   369,   443,    21,    22,    23,
+      86,   488,    24,    25,    26,    27,    28,    29,    30,   497,
+      31,    32,    33,    34,    35,    36,    87,   106,    88,    89,
+      90,    37,    38,    91,    92,    93,    94,    95,    96,   185,
+     186,   436,    97,    98,    99,   100,    39,   519,   101,    40,
+      41,    42,    43,    44,   276,   349,    45,    46,    47,    48,
+      49,    50,    51,     0,     0,     0,     0,     0,    83,   198,
+     199,    52,     0,    20,     0,   200,     0,     0,   201,   202,
+     203,   204,   398,   114,    85,     0,    53,    54,   115,    55,
+       0,    56,    57,    18,    83,   535,    19,     0,    58,    20,
+       0,     0,    21,    22,    23,    86,     0,    24,    25,    26,
+      27,    28,    29,    30,     0,    31,    32,    33,    34,    35,
+      36,    87,   106,    88,    89,    90,    37,    38,    91,    92,
+      93,    94,    95,    96,   185,   186,     0,    97,    98,    99,
+     100,    39,     0,   101,    40,    41,    42,    43,    44,     0,
+       0,    45,    46,    47,    48,    49,    50,    51,   200,     0,
+       0,   201,   202,   203,   204,   199,    52,     0,     0,     0,
+     200,     0,     0,   201,   202,   203,   204,     0,     0,    85,
        0,    53,    54,     0,    55,     0,    56,    57,    18,    83,
-     537,    19,     0,    58,    20,     0,     0,    21,    22,    23,
+     536,    19,     0,    58,    20,     0,     0,    21,    22,    23,
       86,     0,    24,    25,    26,    27,    28,    29,    30,     0,
       31,    32,    33,    34,    35,    36,    87,   106,    88,    89,
-      90,    37,    38,    91,    92,    93,    94,    95,    96,   186,
-     187,     0,    97,    98,    99,   100,    39,     0,   101,    40,
+      90,    37,    38,    91,    92,    93,    94,    95,    96,   185,
+       0,     0,    97,    98,    99,   100,    39,     0,   101,    40,
       41,    42,    43,    44,     0,     0,    45,    46,    47,    48,
-      49,    50,    51,     0,     0,     0,   195,   196,   197,   198,
-     199,   200,    52,     0,     0,     0,   201,     0,     0,   202,
-     203,   204,   205,     0,     0,    85,     0,    53,    54,     0,
-      55,     0,    56,    57,    18,    83,   538,    19,     0,    58,
-      20,     0,     0,    21,    22,    23,    86,     0,    24,    25,
-      26,    27,    28,    29,    30,     0,    31,    32,    33,    34,
-      35,    36,    87,   106,    88,    89,    90,    37,    38,    91,
-      92,    93,    94,    95,    96,   186,   187,     0,    97,    98,
-      99,   100,    39,     0,   101,    40,    41,    42,    43,    44,
-       0,     0,    45,    46,    47,    48,    49,    50,    51,   365,
-     366,   367,   368,     0,   197,   198,   199,   200,    52,     0,
-       0,     0,   201,     0,     0,   202,   203,   204,   205,     0,
-       0,    85,     0,    53,    54,     0,    55,     0,    56,    57,
-      18,    83,   540,    19,     0,    58,    20,     0,     0,    21,
-      22,    23,    86,     0,    24,    25,    26,    27,    28,    29,
-      30,     0,    31,    32,    33,    34,    35,    36,    87,   106,
-      88,    89,    90,    37,    38,    91,    92,    93,    94,    95,
-      96,   186,   187,     0,    97,    98,    99,   100,    39,     0,
-     101,    40,    41,    42,    43,    44,     0,     0,    45,    46,
-      47,    48,    49,    50,    51,     1,     2,     3,     4,     5,
-       6,     7,   199,   200,    52,     0,     0,     0,   201,     0,
-       0,   202,   203,   204,   205,     0,     0,    85,     0,    53,
-      54,     0,    55,     0,    56,    57,    18,    83,   554,    19,
-       0,    58,    20,     0,     0,    21,    22,    23,    86,     0,
-      24,    25,    26,    27,    28,    29,    30,     0,    31,    32,
-      33,    34,    35,    36,    87,   106,    88,    89,    90,    37,
-      38,    91,    92,    93,    94,    95,    96,   186,   187,     0,
-      97,    98,    99,   100,    39,     0,   101,    40,    41,    42,
-      43,    44,     0,     0,    45,    46,    47,    48,    49,    50,
-      51,   201,     0,     0,   202,   203,   204,   205,     0,   200,
-      52,     0,     0,     0,   201,     0,     0,   202,   203,   204,
-     205,     0,     0,    85,     0,    53,    54,     0,    55,     0,
-      56,    57,    18,    83,     0,    19,     0,    58,    20,     0,
-       0,    21,    22,    23,    86,     0,    24,    25,    26,    27,
-      28,    29,    30,     0,    31,    32,    33,    34,    35,    36,
-      87,   106,    88,    89,    90,    37,    38,    91,    92,    93,
-      94,    95,    96,     0,     0,     0,    97,    98,    99,   100,
-      39,     0,   101,    40,    41,    42,    43,    44,     0,     0,
-      45,    46,    47,    48,    49,    50,    51,     0,     0,   569,
-     200,     0,     0,     0,     0,   201,    52,     0,   202,   203,
-     204,   205,     0,     0,     0,     0,     0,     0,     0,    85,
+      49,    50,    51,     0,     0,     0,     0,     0,     0,     0,
+     199,    52,     0,     0,     0,   200,     0,     0,   201,   202,
+     203,   204,     0,     0,    85,     0,    53,    54,     0,    55,
+       0,    56,    57,    18,    83,   538,    19,     0,    58,    20,
+       0,     0,    21,    22,    23,    86,     0,    24,    25,    26,
+      27,    28,    29,    30,     0,    31,    32,    33,    34,    35,
+      36,    87,   106,    88,    89,    90,    37,    38,    91,    92,
+      93,    94,    95,    96,     0,     0,     0,    97,    98,    99,
+     100,    39,     0,   101,    40,    41,    42,    43,    44,     0,
+       0,    45,    46,    47,    48,    49,    50,    51,     0,     0,
+       0,   235,   236,   237,   238,     0,    52,     0,   239,     0,
+     240,     0,     0,     0,     0,     0,     0,     0,     0,    85,
+       0,    53,    54,     0,    55,     0,    56,    57,    18,    83,
+     552,    19,     0,    58,    20,   172,   173,    21,    22,    23,
+      86,     0,    24,    25,    26,    27,    28,    29,    30,     0,
+      31,    32,    33,    34,    35,    36,    87,   106,    88,    89,
+      90,    37,    38,    91,    92,    93,    94,    95,    96,     0,
+       0,     0,    97,    98,    99,   100,    39,     0,   101,    40,
+      41,    42,    43,    44,     0,     0,    45,    46,    47,    48,
+      49,    50,    51,     0,     0,     0,     0,     0,     0,     0,
+       0,    52,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    85,     0,    53,    54,     0,    55,
+       0,    56,    57,    18,    83,     0,    19,     0,    58,    20,
+       0,     0,    21,    22,    23,    86,     0,    24,    25,    26,
+      27,    28,    29,    30,     0,    31,    32,    33,    34,    35,
+      36,    87,   106,    88,    89,    90,    37,    38,    91,    92,
+      93,    94,    95,    96,     0,     0,     0,    97,    98,    99,
+     100,    39,     0,   101,    40,    41,    42,    43,    44,     0,
+       0,    45,    46,    47,    48,    49,    50,    51,     0,     0,
+     567,     0,     0,     0,     0,     0,    52,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    85,
        0,    53,    54,     0,    55,     0,    56,    57,    18,    83,
        0,    19,     0,    58,    20,     0,     0,    21,    22,    23,
       86,     0,    24,    25,    26,    27,    28,    29,    30,     0,
@@ -481,600 +480,599 @@ static const yytype_int16 yytable[] =
       90,    37,    38,    91,    92,    93,    94,    95,    96,     0,
        0,     0,    97,    98,    99,   100,    39,     0,   101,    40,
       41,    42,    43,    44,     0,     0,    45,    46,    47,    48,
-      49,    50,    51,     0,     0,   314,   315,     0,   316,     0,
-       0,   317,    52,     0,     0,   318,     0,     0,     0,   319,
-     320,     0,   321,     0,     0,    85,     0,    53,    54,     0,
-      55,     0,    56,    57,    18,    83,     0,    19,     0,    58,
-      20,     0,     0,    21,    22,    23,    86,     0,    24,    25,
-      26,    27,    28,    29,    30,     0,    31,    32,    33,    34,
-      35,    36,    87,   322,    88,    89,    90,    37,    38,    91,
-      92,    93,    94,    95,    96,     0,     0,     0,    97,    98,
-      99,   100,    39,     0,   101,    40,    41,    42,    43,    44,
-       0,     0,    45,    46,    47,    48,    49,    50,    51,     0,
-       0,     0,     0,     0,     0,     0,   323,     0,    52,     0,
+      49,    50,    51,     0,     0,     0,     0,     0,     0,     0,
+       0,    52,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    85,     0,    53,    54,     0,    55,
+       0,    56,    57,    18,    83,     0,    19,     0,    58,    20,
+       0,     0,    21,    22,    23,    86,     0,    24,    25,    26,
+      27,    28,    29,    30,     0,    31,    32,    33,    34,    35,
+      36,    87,     0,    88,    89,    90,    37,    38,    91,    92,
+      93,    94,    95,    96,     0,     0,     0,    97,    98,    99,
+     100,    39,     0,   101,    40,    41,    42,    43,    44,     0,
+       0,    45,    46,    47,    48,    49,    50,    51,     0,     0,
+       0,     0,     0,     0,     0,     0,    52,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    85,     0,     0,     0,
+       0,    53,    54,     0,    55,    18,    56,    57,    19,     0,
+       0,    20,     0,    58,    21,    22,    23,   -78,     0,    24,
+      25,    26,    27,    28,    29,    30,     0,    31,    32,    33,
+      34,    35,    36,     0,     0,     0,     0,     0,    37,    38,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    39,     0,     0,    40,    41,    42,    43,
+      44,     0,     0,    45,    46,    47,    48,    49,    50,    51,
+       0,     0,     0,     0,     0,     0,     0,     0,    52,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    85,     0,
        0,     0,     0,    53,    54,     0,    55,    18,    56,    57,
-      19,     0,     0,    20,     0,    58,    21,    22,    23,   -78,
+      19,     0,     0,    20,     0,    58,    21,    22,    23,     0,
        0,    24,    25,    26,    27,    28,    29,    30,     0,    31,
       32,    33,    34,    35,    36,     0,     0,     0,     0,     0,
-      37,    38,   236,   237,   238,   239,     0,     0,     0,   240,
-       0,   241,     0,     0,     0,    39,     0,     0,    40,    41,
-      42,    43,    44,     0,     0,    45,    46,    47,    48,    49,
-      50,    51,     0,     0,     0,     0,   172,   173,   174,     0,
-       0,    52,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    85,     0,     0,     0,     0,    53,    54,     0,    55,
-      18,    56,    57,    19,     0,     0,    20,     0,    58,    21,
-      22,    23,     0,     0,    24,    25,    26,    27,    28,    29,
-      30,     0,    31,    32,    33,    34,    35,    36,     0,     0,
-       0,     0,     0,    37,    38,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    39,     0,
-       0,    40,    41,    42,    43,    44,  -254,     0,    45,    46,
-      47,    48,    49,    50,    51,     0,     0,     0,     0,     0,
-    -254,  -254,     0,     0,    52,     0,     0,     0,  -254,  -254,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    53,
-      54,     0,    55,     0,    56,    57,     0,     0,     0,     0,
-     -78,    58,     0,  -254,  -254,  -254,  -254,     0,     0,     0,
-    -254,     0,  -254,     0,     0,  -254,     0,     0,     0,     0,
-       0,     0,  -254,  -254,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,  -254,     0,  -254,  -254,  -254,
-       0,  -254,  -254,  -254,  -254,  -254,  -254,  -254,  -254,  -254,
-    -254,  -254,  -254,  -254,  -254,     0,     0,     0,     0,  -254,
-       0,     0,  -254,  -254,  -254,  -254,  -254,    18,    83,     0,
-      19,     0,     0,    20,     0,     0,    21,    22,    23,     0,
-       0,    24,    25,   143,    27,    28,    29,    30,   115,    31,
-      32,    33,    34,    35,    36,     0,     0,     0,     0,     0,
       37,    38,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,    39,     0,     0,    40,    41,
-      42,    43,    44,     0,     0,    45,    46,    47,    48,    49,
-      50,    51,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    52,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    53,    54,     0,    55,
-      18,    56,    57,    19,   119,     0,    20,     0,    58,    21,
+      42,    43,    44,  -214,     0,    45,    46,    47,    48,    49,
+      50,    51,     0,     0,   206,     0,   207,  -214,  -214,     0,
+      52,     0,     0,     0,     0,  -214,  -214,     0,     0,     0,
+       0,     0,     0,     0,     0,    53,    54,     0,    55,     0,
+      56,    57,     0,     0,     0,     0,   -78,    58,     0,     0,
+    -214,  -214,  -214,  -214,     0,     0,     0,  -214,     0,  -214,
+       0,     0,  -214,     0,     0,     0,     0,     0,     0,  -214,
+    -214,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,  -214,     0,  -214,  -214,     0,  -214,  -214,  -214,
+    -214,  -214,  -214,  -214,  -214,  -214,  -214,  -214,  -214,  -214,
+    -214,     0,     0,     0,     0,  -214,     0,     0,  -214,  -214,
+    -214,  -214,  -214,    18,    83,     0,    19,     0,     0,    20,
+       0,     0,    21,    22,    23,     0,     0,    24,    25,   143,
+      27,    28,    29,    30,   115,    31,    32,    33,    34,    35,
+      36,     0,     0,     0,     0,     0,    37,    38,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    39,     0,     0,    40,    41,    42,    43,    44,     0,
+       0,    45,    46,    47,    48,    49,    50,    51,     0,     0,
+       0,     0,     0,     0,     0,     0,    52,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    53,    54,     0,    55,    18,    56,    57,    19,   119,
+       0,    20,     0,    58,    21,    22,    23,     0,     0,    24,
+      25,    26,    27,    28,    29,    30,     0,    31,    32,    33,
+      34,    35,    36,     0,     0,     0,     0,     0,    37,    38,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    39,     0,     0,    40,    41,    42,    43,
+      44,     0,     0,    45,    46,    47,    48,    49,    50,    51,
+       0,     0,     0,     0,     0,     0,     0,     0,    52,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    53,    54,     0,    55,     0,    56,    57,
+      18,    83,     0,    19,     0,    58,    20,     0,     0,    21,
       22,    23,     0,     0,    24,    25,    26,    27,    28,    29,
       30,     0,    31,    32,    33,    34,    35,    36,     0,     0,
        0,     0,     0,    37,    38,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    39,     0,
        0,    40,    41,    42,    43,    44,     0,     0,    45,    46,
       47,    48,    49,    50,    51,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    52,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    53,
-      54,     0,    55,     0,    56,    57,    18,    83,     0,    19,
-       0,    58,    20,     0,     0,    21,    22,    23,     0,     0,
-      24,    25,    26,    27,    28,    29,    30,     0,    31,    32,
-      33,    34,    35,    36,     0,     0,     0,     0,     0,    37,
-      38,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    39,     0,     0,    40,    41,    42,
-      43,    44,     0,     0,    45,    46,    47,    48,    49,    50,
-      51,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      52,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    53,    54,     0,    55,    18,
-      56,    57,    19,     0,     0,    20,     0,    58,    21,    22,
-      23,   151,     0,    24,    25,    26,    27,    28,    29,    30,
-       0,    31,    32,    33,    34,    35,    36,     0,     0,     0,
-       0,     0,    37,    38,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    39,     0,     0,
-      40,    41,    42,    43,    44,     0,     0,    45,    46,    47,
-      48,    49,    50,    51,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    52,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    53,    54,
        0,    55,    18,    56,    57,    19,     0,     0,    20,     0,
-      58,    21,    22,    23,     0,     0,    24,    25,    26,    27,
+      58,    21,    22,    23,   151,     0,    24,    25,    26,    27,
       28,    29,    30,     0,    31,    32,    33,    34,    35,    36,
        0,     0,     0,     0,     0,    37,    38,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       39,     0,     0,    40,    41,    42,    43,    44,     0,     0,
       45,    46,    47,    48,    49,    50,    51,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    52,     0,     0,     0,
+       0,     0,     0,     0,     0,    52,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    53,    54,     0,    55,    18,    56,    57,    19,     0,
-       0,    20,   170,    58,    21,    22,    23,     0,     0,    24,
-      25,    26,    27,    28,    29,    30,     0,    31,    32,    33,
-      34,    35,    36,     0,     0,     0,     0,     0,    37,    38,
+      53,    54,     0,    55,    18,    56,    57,    19,     0,     0,
+      20,     0,    58,    21,    22,    23,     0,     0,    24,    25,
+      26,    27,    28,    29,    30,     0,    31,    32,    33,    34,
+      35,    36,     0,     0,     0,     0,     0,    37,    38,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    39,     0,     0,    40,    41,    42,    43,
-      44,     0,     0,    45,    46,    47,    48,    49,    50,    51,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    52,
+       0,     0,    39,     0,     0,    40,    41,    42,    43,    44,
+       0,     0,    45,    46,    47,    48,    49,    50,    51,     0,
+       0,     0,     0,     0,     0,     0,     0,    52,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    53,    54,     0,    55,    18,    56,    57,    19,
+       0,     0,    20,   170,    58,    21,    22,    23,     0,     0,
+      24,    25,    26,    27,    28,    29,    30,     0,    31,    32,
+      33,    34,    35,    36,     0,     0,     0,     0,     0,    37,
+      38,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    39,     0,     0,    40,    41,    42,
+      43,    44,     0,     0,    45,    46,    47,    48,    49,    50,
+      51,     0,     0,     0,     0,     0,     0,     0,     0,    52,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    53,    54,     0,    55,    18,    56,
-      57,    19,     0,     0,    20,   266,    58,    21,    22,    23,
+      57,    19,     0,     0,    20,   265,    58,    21,    22,    23,
        0,     0,    24,    25,    26,    27,    28,    29,    30,     0,
       31,    32,    33,    34,    35,    36,     0,     0,     0,     0,
        0,    37,    38,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    39,     0,     0,    40,
       41,    42,    43,    44,     0,     0,    45,    46,    47,    48,
       49,    50,    51,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    52,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    53,    54,     0,
-      55,    18,    56,    57,    19,     0,     0,    20,   281,    58,
-      21,    22,    23,     0,     0,    24,    25,    26,    27,    28,
-      29,    30,     0,    31,    32,    33,    34,    35,    36,     0,
-       0,     0,     0,     0,    37,    38,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    39,
-       0,     0,    40,    41,    42,    43,    44,     0,     0,    45,
-      46,    47,    48,    49,    50,    51,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    52,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      53,    54,     0,    55,    18,    56,    57,    19,     0,     0,
-      20,   293,    58,    21,    22,    23,     0,     0,    24,    25,
-      26,    27,    28,    29,    30,     0,    31,    32,    33,    34,
-      35,    36,     0,     0,     0,     0,     0,    37,    38,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    39,     0,     0,    40,    41,    42,    43,    44,
-       0,     0,    45,    46,    47,    48,    49,    50,    51,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    52,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    53,    54,     0,    55,    18,    56,    57,
-      19,     0,     0,    20,   326,    58,    21,    22,    23,     0,
-       0,    24,    25,    26,    27,    28,    29,    30,     0,    31,
-      32,    33,    34,    35,    36,     0,     0,     0,     0,     0,
-      37,    38,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    39,     0,     0,    40,    41,
-      42,    43,    44,     0,     0,    45,    46,    47,    48,    49,
-      50,    51,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    52,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    53,    54,     0,    55,
-      18,    56,    57,    19,     0,     0,    20,   386,    58,    21,
+      18,    56,    57,    19,     0,     0,    20,   280,    58,    21,
       22,    23,     0,     0,    24,    25,    26,    27,    28,    29,
       30,     0,    31,    32,    33,    34,    35,    36,     0,     0,
        0,     0,     0,    37,    38,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    39,     0,
        0,    40,    41,    42,    43,    44,     0,     0,    45,    46,
       47,    48,    49,    50,    51,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    52,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    53,
-      54,     0,    55,    18,    56,    57,    19,     0,     0,    20,
-     405,    58,    21,    22,    23,     0,     0,    24,    25,    26,
-      27,    28,    29,    30,     0,    31,    32,    33,    34,    35,
-      36,     0,     0,     0,     0,     0,    37,    38,     0,     0,
+       0,     0,     0,    52,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    53,    54,
+       0,    55,    18,    56,    57,    19,     0,     0,    20,   291,
+      58,    21,    22,    23,     0,     0,    24,    25,    26,    27,
+      28,    29,    30,     0,    31,    32,    33,    34,    35,    36,
+       0,     0,     0,     0,     0,    37,    38,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    39,     0,     0,    40,    41,    42,    43,    44,     0,
-       0,    45,    46,    47,    48,    49,    50,    51,     0,     0,
+      39,     0,     0,    40,    41,    42,    43,    44,     0,     0,
+      45,    46,    47,    48,    49,    50,    51,     0,     0,     0,
+       0,     0,     0,     0,     0,    52,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      53,    54,     0,    55,    18,    56,    57,    19,     0,     0,
+      20,   324,    58,    21,    22,    23,     0,     0,    24,    25,
+      26,    27,    28,    29,    30,     0,    31,    32,    33,    34,
+      35,    36,     0,     0,     0,     0,     0,    37,    38,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    39,     0,     0,    40,    41,    42,    43,    44,
+       0,     0,    45,    46,    47,    48,    49,    50,    51,     0,
        0,     0,     0,     0,     0,     0,     0,    52,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    53,    54,     0,    55,    18,    56,    57,    19,
-       0,     0,    20,     0,    58,    21,    22,    23,     0,     0,
+       0,     0,    20,   384,    58,    21,    22,    23,     0,     0,
       24,    25,    26,    27,    28,    29,    30,     0,    31,    32,
       33,    34,    35,    36,     0,     0,     0,     0,     0,    37,
       38,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    39,     0,     0,    40,    41,    42,
       43,    44,     0,     0,    45,    46,    47,    48,    49,    50,
-      51,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      52,     0,   185,     0,     0,     0,     0,     0,     0,   186,
-     187,     0,     0,     0,     0,    53,    54,     0,    55,     0,
-      56,    57,     0,     0,     0,     0,     0,   275,   188,   189,
-     396,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,     0,     0,     0,     0,   201,   185,     0,   202,
-     203,   204,   205,     0,   186,   187,     0,     0,     0,     0,
+      51,     0,     0,     0,     0,     0,     0,     0,     0,    52,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   188,   189,     0,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,     0,     0,     0,
-       0,   201,   185,     0,   202,   203,   204,   205,     0,   186,
-     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   189,
-       0,   190,   191,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,     0,     0,     0,     0,   201,  -291,     0,   202,
-     203,   204,   205,     0,   186,   187,     0,     0,     0,     0,
+       0,     0,     0,     0,    53,    54,     0,    55,    18,    56,
+      57,    19,     0,     0,    20,   403,    58,    21,    22,    23,
+       0,     0,    24,    25,    26,    27,    28,    29,    30,     0,
+      31,    32,    33,    34,    35,    36,     0,     0,     0,     0,
+       0,    37,    38,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    39,     0,     0,    40,
+      41,    42,    43,    44,     0,     0,    45,    46,    47,    48,
+      49,    50,    51,     0,     0,     0,     0,     0,     0,     0,
+       0,    52,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    53,    54,     0,    55,
+      18,    56,    57,    19,     0,     0,    20,     0,    58,    21,
+      22,    23,     0,     0,    24,    25,    26,    27,    28,    29,
+      30,     0,    31,    32,    33,    34,    35,    36,     0,     0,
+       0,     0,     0,    37,    38,     0,     0,     0,     0,     0,
+       0,     0,   504,     0,     0,   507,     0,     0,    39,   511,
+     512,    40,    41,    42,    43,    44,     0,     0,    45,    46,
+      47,    48,    49,    50,    51,     0,     0,   522,   523,     0,
+       0,     0,     0,    52,     0,     0,     0,   534,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    53,    54,
+       0,    55,   542,    56,    57,     0,   544,   545,     0,     0,
+     274,     0,     0,     0,     0,     0,     0,     0,     0,   184,
+       0,     0,     0,     0,   557,     0,   185,   186,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   565,     0,
+       0,     0,     0,     0,   187,   188,   570,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,     0,     0,
+       0,     0,   200,   184,     0,   201,   202,   203,   204,     0,
+     185,   186,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
+       0,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,     0,     0,     0,     0,   200,  -290,     0,   201,
+     202,   203,   204,     0,   185,   186,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,     0,     0,     0,
-       0,   201,     0,     0,   202,   203,   204,   205
+       0,     0,     0,     0,     0,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   185,   186,     0,     0,
+     200,     0,     0,   201,   202,   203,   204,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,     0,     0,
+       0,     0,   200,     0,     0,   201,   202,   203,   204
 };
 
 static const yytype_int16 yycheck[] =
 {
-      17,    44,    10,   127,     9,   262,    50,    16,    50,    52,
-     506,    19,   139,   140,   355,    12,    11,   475,    13,    18,
-      13,    20,    11,    22,    13,    24,    25,    14,    27,    28,
-       0,   155,    16,    11,    11,    13,    20,    11,    14,    47,
-      24,    13,    78,    95,    96,    44,    45,    11,    22,    13,
-      58,    50,    81,    82,    83,    22,    11,    14,    81,    82,
-      83,    13,    29,    18,    73,    20,    15,    22,    14,    24,
-      25,   567,    27,    28,    23,   111,   111,    11,    83,    13,
-     111,   110,    75,    11,   127,    13,    75,   110,    43,    44,
-      45,    46,    14,   102,    81,    82,    83,    75,    97,   111,
-     558,    15,   111,    75,   147,    81,    82,    83,    11,   106,
-      13,    75,   155,   157,    26,   157,   111,   111,   102,    31,
-      95,    21,   130,    23,    81,    82,    83,   111,    93,   256,
-     138,   139,   140,    22,    34,    81,    82,    83,    11,    39,
-      14,   140,    11,    43,    13,   100,    46,    11,    11,    49,
-     158,    51,    16,    53,    54,    55,    56,    57,   157,    81,
-      82,    83,    26,   420,   172,   173,   174,    31,   176,   177,
-     178,    16,    93,    94,    10,    20,   345,    26,   133,    24,
-      16,   225,    14,   225,    20,   140,   355,    14,    24,   358,
-     359,   111,    81,    82,    83,   111,    14,   214,   206,   207,
-     208,   209,   210,   211,   212,   213,   205,    81,    82,    83,
-      51,    52,    22,   470,   257,   220,   221,   222,   223,   224,
-     111,   226,   227,   564,   229,   230,   225,   111,   236,   237,
-     238,   239,   240,   241,    18,   216,   217,    73,    22,   111,
-      24,    25,    22,    27,    28,    22,    37,    38,   256,    81,
-      82,    83,   376,   111,    81,    82,    83,   157,    89,    90,
-      44,    45,   270,    81,    82,    83,    22,   275,    53,    22,
-     439,    81,    82,    83,    11,   175,    13,   285,   233,    22,
-     407,   181,   111,    78,   184,   185,   186,   187,   188,   189,
+      17,    44,    10,   127,     9,   261,    50,     0,    50,    52,
+     353,    19,   139,   140,    16,    11,    11,    13,    20,    18,
+     473,    20,    24,    22,    12,    24,    25,    14,    27,    28,
+      22,   155,    16,    14,    13,    13,    16,    29,    14,    47,
+      20,   504,    14,    11,    24,    44,    45,    11,    11,    13,
+      58,    50,    14,    78,    22,    18,    11,    20,    13,    22,
+      13,    24,    25,   110,    27,    28,    18,    15,    14,    11,
+      22,    13,    24,    25,   110,    27,    28,   343,    83,   110,
+      43,    44,    45,    46,   127,   110,    92,   353,    22,    73,
+     356,   357,    44,    45,    81,    82,    75,    75,    97,   101,
+      81,    82,   565,   556,   147,    81,    82,   110,   110,    81,
+      82,    75,   155,   157,   110,   157,    14,   101,   106,    81,
+      82,    21,   130,    23,    81,    82,   110,    14,   255,    94,
+     138,   139,   140,    75,    34,    81,    82,   100,    26,    39,
+      14,   140,    11,    43,    13,    11,    46,    81,    82,    49,
+     158,    51,   109,    53,    54,    55,    56,    57,   157,    81,
+      82,    11,   418,    13,   172,   173,    15,   175,   176,   177,
+     133,   437,    81,    82,    23,    10,    11,   140,    13,    11,
+     224,    16,   224,    81,    82,    20,    22,   109,   140,    24,
+      25,    11,    27,    13,    81,    82,   213,   205,   206,   207,
+     208,   209,   210,   211,   212,   204,    75,    81,    82,   110,
+     476,   477,   468,   256,   219,   220,   221,   222,   223,   562,
+     225,   226,    22,   228,   229,   224,   110,   235,   236,   237,
+     238,   239,   240,    68,    81,    82,    11,    26,    10,    81,
+      82,    16,    31,   509,    16,    81,    82,   255,    20,    22,
+     374,    26,    24,    94,    95,    22,    31,   157,    22,    92,
+      93,   269,   109,    11,    22,    13,   274,   109,    22,   232,
+     237,   238,   239,   240,   174,   110,   284,   543,   405,   110,
+     180,    81,    82,   183,   184,   185,   186,   187,   188,   189,
      190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
-     200,   201,   110,    29,    81,    82,    83,   315,   316,   478,
-     479,    75,   356,    16,   356,   323,   110,    20,   317,    12,
-      22,    24,    81,    82,    83,    81,    82,    83,    81,    82,
-      83,    75,    13,   376,   342,   343,   344,   345,   477,    26,
-      26,   480,   511,   111,   102,   484,   485,   355,   347,   473,
-     358,   359,   357,    31,    66,     0,   140,   356,    22,    15,
-      29,    79,   317,   502,   503,   110,    11,    29,    13,    14,
-      15,    12,   377,   512,    13,    83,   545,    22,    23,    81,
-      82,    83,    25,    25,   392,    25,    98,    25,   527,    25,
-     111,   103,   531,   532,   106,   107,   108,   109,    18,   407,
-      16,    26,    47,    48,    49,    50,    81,    82,    83,    54,
-     549,    56,   417,   111,    59,    85,   421,    81,    82,    83,
-     110,    66,    67,   111,   563,    12,    12,   432,    26,    12,
-     473,   439,   571,    12,    79,   110,    81,    82,    83,   447,
+     200,    73,    81,    82,   110,   313,   314,   110,    81,    82,
+     354,   110,   354,   321,    81,    82,   315,    81,    82,    47,
+      48,    49,    50,    81,    82,    11,    54,    13,    56,    53,
+     109,   374,   340,   341,   342,   343,    81,    82,    51,    52,
+      81,    82,   215,   216,    22,   353,   345,   471,   356,   357,
+     355,   507,   315,    81,    82,   354,    78,     0,    81,    82,
+     110,    16,    89,    90,   109,    20,   522,   523,   109,    24,
+     375,    14,    15,   105,   106,   107,   108,    29,   534,    22,
+      23,   109,   390,    37,    38,    97,   109,    75,   544,   545,
+     102,    66,    67,   105,   106,   107,   108,   405,   109,   109,
+      12,   557,    75,    13,    47,    48,    49,    50,    26,    26,
+     415,    54,   101,    56,   419,   110,    59,    92,    93,    94,
+      95,    96,    97,    66,    67,   430,    31,   102,   471,   437,
+     105,   106,   107,   108,    15,    29,    79,   445,    81,    82,
+      79,    84,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    96,    97,    12,   109,    66,    67,   102,
+      29,    13,   105,   106,   107,   108,   109,    82,   476,   477,
+     487,    25,   489,     3,     4,     5,     6,     7,     8,     9,
+      25,   498,    25,    25,    59,    94,    95,    96,    97,   494,
+      25,    66,    67,   102,   394,    18,   105,   106,   107,   108,
+     508,   509,   110,    16,    26,    84,   110,   524,   109,    84,
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    12,    81,    82,    83,   103,   110,
-     110,   106,   107,   108,   109,   110,    81,    82,    83,    22,
-     478,   479,   489,   110,   491,   110,   110,    81,    82,    83,
-     111,   110,   110,   500,   110,    47,    48,    49,    50,   509,
-      79,   496,    54,    11,    56,   110,   396,    11,    16,    81,
-      82,    83,   510,   511,   524,   525,   110,    25,    26,   526,
-      11,   110,    12,    31,    22,    22,   536,    11,   111,    81,
-      82,    83,   106,   107,   108,   109,   546,   547,   110,   110,
-       0,     1,    81,    82,    83,   110,    77,   545,    22,   559,
-      10,    11,   442,    13,   561,    22,    16,   110,   110,    19,
-      20,    21,    22,   110,    24,    25,    26,    27,    28,    29,
-      30,   110,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    66,    67,   111,    54,    55,    56,    57,    58,    22,
-      60,    61,    62,    63,    64,    65,    17,   110,    68,    69,
-      70,    71,    72,    73,    74,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    84,    76,    13,   110,   103,   110,
-     106,   106,   107,   108,   109,   510,     0,     1,   343,    99,
-     100,   564,   102,   419,   104,   105,    10,    11,   248,    13,
-     371,   111,    16,   372,   277,    19,    20,    21,    22,   452,
-      24,    25,    26,    27,    28,    29,    30,   496,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    66,    67,   471,
-      54,    55,    56,    57,    58,   157,    60,    61,    62,    63,
-      64,    65,   225,   356,    68,    69,    70,    71,    72,    73,
-      74,    -1,    91,    92,    93,    94,    95,    96,    97,    98,
-      84,    -1,    -1,    -1,   103,    -1,    -1,   106,   107,   108,
-     109,    -1,    -1,     1,    -1,    99,   100,    -1,   102,    -1,
-     104,   105,    10,    11,    12,    13,    -1,   111,    16,    -1,
-      -1,    19,    20,    21,    22,    -1,    24,    25,    26,    27,
-      28,    29,    30,    -1,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    66,    67,    -1,    54,    55,    56,    57,
-      58,    -1,    60,    61,    62,    63,    64,    65,    -1,    -1,
-      68,    69,    70,    71,    72,    73,    74,    -1,    -1,    92,
-      93,    94,    95,    96,    97,    98,    84,    -1,    -1,    -1,
-     103,    -1,    -1,   106,   107,   108,   109,    -1,    -1,     1,
-      -1,    99,   100,    -1,   102,    -1,   104,   105,    10,    11,
-      12,    13,    -1,   111,    16,    -1,    -1,    19,    20,    21,
+      95,    96,    97,   110,    12,    26,    12,   102,     0,     1,
+     105,   106,   107,   108,    12,   543,    12,    12,    10,    11,
+     440,    13,   559,   109,    16,   109,   109,    19,    20,    21,
+      22,   109,    24,    25,    26,    27,    28,    29,    30,   110,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    66,
+      67,   109,    54,    55,    56,    57,    58,    22,    60,    61,
+      62,    63,    64,    65,   109,   109,    68,    69,    70,    71,
+      72,    73,    74,    90,    91,    92,    93,    94,    95,    96,
+      97,    83,    79,    11,    11,   102,    12,   109,   105,   106,
+     107,   108,    22,     0,     1,    11,    98,    99,    22,   101,
+     110,   103,   104,    10,    11,   109,    13,    77,   110,    16,
+     109,    22,    19,    20,    21,    22,    22,    24,    25,    26,
+      27,    28,    29,    30,   109,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    66,    67,   109,    54,    55,    56,
+      57,    58,   110,    60,    61,    62,    63,    64,    65,    22,
+     109,    68,    69,    70,    71,    72,    73,    74,    17,    91,
+      92,    93,    94,    95,    96,    97,    83,    76,   109,    13,
+     102,   106,   508,   105,   106,   107,   108,   341,   109,     1,
+     417,    98,    99,   562,   101,   369,   103,   104,    10,    11,
+      12,    13,   276,   110,    16,   247,   370,    19,    20,    21,
+      22,   450,    24,    25,    26,    27,    28,    29,    30,   469,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    66,
+      67,   354,    54,    55,    56,    57,    58,   494,    60,    61,
+      62,    63,    64,    65,   157,   224,    68,    69,    70,    71,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    11,    96,
+      97,    83,    -1,    16,    -1,   102,    -1,    -1,   105,   106,
+     107,   108,    25,    26,     1,    -1,    98,    99,    31,   101,
+      -1,   103,   104,    10,    11,    12,    13,    -1,   110,    16,
+      -1,    -1,    19,    20,    21,    22,    -1,    24,    25,    26,
+      27,    28,    29,    30,    -1,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    66,    67,    -1,    54,    55,    56,
+      57,    58,    -1,    60,    61,    62,    63,    64,    65,    -1,
+      -1,    68,    69,    70,    71,    72,    73,    74,   102,    -1,
+      -1,   105,   106,   107,   108,    97,    83,    -1,    -1,    -1,
+     102,    -1,    -1,   105,   106,   107,   108,    -1,    -1,     1,
+      -1,    98,    99,    -1,   101,    -1,   103,   104,    10,    11,
+      12,    13,    -1,   110,    16,    -1,    -1,    19,    20,    21,
       22,    -1,    24,    25,    26,    27,    28,    29,    30,    -1,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
       42,    43,    44,    45,    46,    47,    48,    49,    50,    66,
-      67,    -1,    54,    55,    56,    57,    58,    -1,    60,    61,
+      -1,    -1,    54,    55,    56,    57,    58,    -1,    60,    61,
       62,    63,    64,    65,    -1,    -1,    68,    69,    70,    71,
-      72,    73,    74,    -1,    -1,    -1,    93,    94,    95,    96,
-      97,    98,    84,    -1,    -1,    -1,   103,    -1,    -1,   106,
-     107,   108,   109,    -1,    -1,     1,    -1,    99,   100,    -1,
-     102,    -1,   104,   105,    10,    11,    12,    13,    -1,   111,
-      16,    -1,    -1,    19,    20,    21,    22,    -1,    24,    25,
-      26,    27,    28,    29,    30,    -1,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    66,    67,    -1,    54,    55,
-      56,    57,    58,    -1,    60,    61,    62,    63,    64,    65,
-      -1,    -1,    68,    69,    70,    71,    72,    73,    74,   238,
-     239,   240,   241,    -1,    95,    96,    97,    98,    84,    -1,
-      -1,    -1,   103,    -1,    -1,   106,   107,   108,   109,    -1,
-      -1,     1,    -1,    99,   100,    -1,   102,    -1,   104,   105,
-      10,    11,    12,    13,    -1,   111,    16,    -1,    -1,    19,
-      20,    21,    22,    -1,    24,    25,    26,    27,    28,    29,
-      30,    -1,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    66,    67,    -1,    54,    55,    56,    57,    58,    -1,
-      60,    61,    62,    63,    64,    65,    -1,    -1,    68,    69,
-      70,    71,    72,    73,    74,     3,     4,     5,     6,     7,
-       8,     9,    97,    98,    84,    -1,    -1,    -1,   103,    -1,
-      -1,   106,   107,   108,   109,    -1,    -1,     1,    -1,    99,
-     100,    -1,   102,    -1,   104,   105,    10,    11,    12,    13,
-      -1,   111,    16,    -1,    -1,    19,    20,    21,    22,    -1,
-      24,    25,    26,    27,    28,    29,    30,    -1,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    66,    67,    -1,
-      54,    55,    56,    57,    58,    -1,    60,    61,    62,    63,
-      64,    65,    -1,    -1,    68,    69,    70,    71,    72,    73,
-      74,   103,    -1,    -1,   106,   107,   108,   109,    -1,    98,
-      84,    -1,    -1,    -1,   103,    -1,    -1,   106,   107,   108,
-     109,    -1,    -1,     1,    -1,    99,   100,    -1,   102,    -1,
-     104,   105,    10,    11,    -1,    13,    -1,   111,    16,    -1,
-      -1,    19,    20,    21,    22,    -1,    24,    25,    26,    27,
-      28,    29,    30,    -1,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    -1,    -1,    -1,    54,    55,    56,    57,
-      58,    -1,    60,    61,    62,    63,    64,    65,    -1,    -1,
-      68,    69,    70,    71,    72,    73,    74,    -1,    -1,    77,
-      98,    -1,    -1,    -1,    -1,   103,    84,    -1,   106,   107,
-     108,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
-      -1,    99,   100,    -1,   102,    -1,   104,   105,    10,    11,
-      -1,    13,    -1,   111,    16,    -1,    -1,    19,    20,    21,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      97,    83,    -1,    -1,    -1,   102,    -1,    -1,   105,   106,
+     107,   108,    -1,    -1,     1,    -1,    98,    99,    -1,   101,
+      -1,   103,   104,    10,    11,    12,    13,    -1,   110,    16,
+      -1,    -1,    19,    20,    21,    22,    -1,    24,    25,    26,
+      27,    28,    29,    30,    -1,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    -1,    -1,    -1,    54,    55,    56,
+      57,    58,    -1,    60,    61,    62,    63,    64,    65,    -1,
+      -1,    68,    69,    70,    71,    72,    73,    74,    -1,    -1,
+      -1,    47,    48,    49,    50,    -1,    83,    -1,    54,    -1,
+      56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
+      -1,    98,    99,    -1,   101,    -1,   103,   104,    10,    11,
+      12,    13,    -1,   110,    16,    81,    82,    19,    20,    21,
       22,    -1,    24,    25,    26,    27,    28,    29,    30,    -1,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
       42,    43,    44,    45,    46,    47,    48,    49,    50,    -1,
       -1,    -1,    54,    55,    56,    57,    58,    -1,    60,    61,
       62,    63,    64,    65,    -1,    -1,    68,    69,    70,    71,
-      72,    73,    74,    -1,    -1,    10,    11,    -1,    13,    -1,
-      -1,    16,    84,    -1,    -1,    20,    -1,    -1,    -1,    24,
-      25,    -1,    27,    -1,    -1,     1,    -1,    99,   100,    -1,
-     102,    -1,   104,   105,    10,    11,    -1,    13,    -1,   111,
-      16,    -1,    -1,    19,    20,    21,    22,    -1,    24,    25,
-      26,    27,    28,    29,    30,    -1,    32,    33,    34,    35,
-      36,    37,    38,    68,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    -1,    -1,    -1,    54,    55,
-      56,    57,    58,    -1,    60,    61,    62,    63,    64,    65,
-      -1,    -1,    68,    69,    70,    71,    72,    73,    74,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    84,    -1,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     1,    -1,    98,    99,    -1,   101,
+      -1,   103,   104,    10,    11,    -1,    13,    -1,   110,    16,
+      -1,    -1,    19,    20,    21,    22,    -1,    24,    25,    26,
+      27,    28,    29,    30,    -1,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    -1,    -1,    -1,    54,    55,    56,
+      57,    58,    -1,    60,    61,    62,    63,    64,    65,    -1,
+      -1,    68,    69,    70,    71,    72,    73,    74,    -1,    -1,
+      77,    -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
+      -1,    98,    99,    -1,   101,    -1,   103,   104,    10,    11,
+      -1,    13,    -1,   110,    16,    -1,    -1,    19,    20,    21,
+      22,    -1,    24,    25,    26,    27,    28,    29,    30,    -1,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    -1,
+      -1,    -1,    54,    55,    56,    57,    58,    -1,    60,    61,
+      62,    63,    64,    65,    -1,    -1,    68,    69,    70,    71,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     1,    -1,    98,    99,    -1,   101,
+      -1,   103,   104,    10,    11,    -1,    13,    -1,   110,    16,
+      -1,    -1,    19,    20,    21,    22,    -1,    24,    25,    26,
+      27,    28,    29,    30,    -1,    32,    33,    34,    35,    36,
+      37,    38,    -1,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    -1,    -1,    -1,    54,    55,    56,
+      57,    58,    -1,    60,    61,    62,    63,    64,    65,    -1,
+      -1,    68,    69,    70,    71,    72,    73,    74,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    -1,
+      -1,    98,    99,    -1,   101,    10,   103,   104,    13,    -1,
+      -1,    16,    -1,   110,    19,    20,    21,    22,    -1,    24,
+      25,    26,    27,    28,    29,    30,    -1,    32,    33,    34,
+      35,    36,    37,    -1,    -1,    -1,    -1,    -1,    43,    44,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    58,    -1,    -1,    61,    62,    63,    64,
+      65,    -1,    -1,    68,    69,    70,    71,    72,    73,    74,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
-      -1,    -1,    -1,    99,   100,    -1,   102,    10,   104,   105,
-      13,    -1,    -1,    16,    -1,   111,    19,    20,    21,    22,
+      -1,    -1,    -1,    98,    99,    -1,   101,    10,   103,   104,
+      13,    -1,    -1,    16,    -1,   110,    19,    20,    21,    -1,
       -1,    24,    25,    26,    27,    28,    29,    30,    -1,    32,
       33,    34,    35,    36,    37,    -1,    -1,    -1,    -1,    -1,
-      43,    44,    47,    48,    49,    50,    -1,    -1,    -1,    54,
-      -1,    56,    -1,    -1,    -1,    58,    -1,    -1,    61,    62,
-      63,    64,    65,    -1,    -1,    68,    69,    70,    71,    72,
-      73,    74,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
-      -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,     1,    -1,    -1,    -1,    -1,    99,   100,    -1,   102,
-      10,   104,   105,    13,    -1,    -1,    16,    -1,   111,    19,
-      20,    21,    -1,    -1,    24,    25,    26,    27,    28,    29,
-      30,    -1,    32,    33,    34,    35,    36,    37,    -1,    -1,
-      -1,    -1,    -1,    43,    44,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,
-      -1,    61,    62,    63,    64,    65,     0,    -1,    68,    69,
-      70,    71,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
-      14,    15,    -1,    -1,    84,    -1,    -1,    -1,    22,    23,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    99,
-     100,    -1,   102,    -1,   104,   105,    -1,    -1,    -1,    -1,
-     110,   111,    -1,    47,    48,    49,    50,    -1,    -1,    -1,
-      54,    -1,    56,    -1,    -1,    59,    -1,    -1,    -1,    -1,
-      -1,    -1,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    79,    -1,    81,    82,    83,
-      -1,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,   103,
-      -1,    -1,   106,   107,   108,   109,   110,    10,    11,    -1,
-      13,    -1,    -1,    16,    -1,    -1,    19,    20,    21,    -1,
-      -1,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    -1,    -1,    -1,    -1,    -1,
       43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    62,
-      63,    64,    65,    -1,    -1,    68,    69,    70,    71,    72,
-      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    99,   100,    -1,   102,
-      10,   104,   105,    13,    14,    -1,    16,    -1,   111,    19,
+      63,    64,    65,     0,    -1,    68,    69,    70,    71,    72,
+      73,    74,    -1,    -1,    11,    -1,    13,    14,    15,    -1,
+      83,    -1,    -1,    -1,    -1,    22,    23,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    98,    99,    -1,   101,    -1,
+     103,   104,    -1,    -1,    -1,    -1,   109,   110,    -1,    -1,
+      47,    48,    49,    50,    -1,    -1,    -1,    54,    -1,    56,
+      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    66,
+      67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    79,    -1,    81,    82,    -1,    84,    85,    86,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,    -1,    -1,    -1,    -1,   102,    -1,    -1,   105,   106,
+     107,   108,   109,    10,    11,    -1,    13,    -1,    -1,    16,
+      -1,    -1,    19,    20,    21,    -1,    -1,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    -1,    -1,    -1,    -1,    -1,    43,    44,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    58,    -1,    -1,    61,    62,    63,    64,    65,    -1,
+      -1,    68,    69,    70,    71,    72,    73,    74,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    98,    99,    -1,   101,    10,   103,   104,    13,    14,
+      -1,    16,    -1,   110,    19,    20,    21,    -1,    -1,    24,
+      25,    26,    27,    28,    29,    30,    -1,    32,    33,    34,
+      35,    36,    37,    -1,    -1,    -1,    -1,    -1,    43,    44,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    58,    -1,    -1,    61,    62,    63,    64,
+      65,    -1,    -1,    68,    69,    70,    71,    72,    73,    74,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    98,    99,    -1,   101,    -1,   103,   104,
+      10,    11,    -1,    13,    -1,   110,    16,    -1,    -1,    19,
       20,    21,    -1,    -1,    24,    25,    26,    27,    28,    29,
       30,    -1,    32,    33,    34,    35,    36,    37,    -1,    -1,
       -1,    -1,    -1,    43,    44,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,
       -1,    61,    62,    63,    64,    65,    -1,    -1,    68,    69,
       70,    71,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    99,
-     100,    -1,   102,    -1,   104,   105,    10,    11,    -1,    13,
-      -1,   111,    16,    -1,    -1,    19,    20,    21,    -1,    -1,
-      24,    25,    26,    27,    28,    29,    30,    -1,    32,    33,
-      34,    35,    36,    37,    -1,    -1,    -1,    -1,    -1,    43,
-      44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    62,    63,
-      64,    65,    -1,    -1,    68,    69,    70,    71,    72,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    99,   100,    -1,   102,    10,
-     104,   105,    13,    -1,    -1,    16,    -1,   111,    19,    20,
-      21,    22,    -1,    24,    25,    26,    27,    28,    29,    30,
-      -1,    32,    33,    34,    35,    36,    37,    -1,    -1,    -1,
-      -1,    -1,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,
-      61,    62,    63,    64,    65,    -1,    -1,    68,    69,    70,
-      71,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    99,   100,
-      -1,   102,    10,   104,   105,    13,    -1,    -1,    16,    -1,
-     111,    19,    20,    21,    -1,    -1,    24,    25,    26,    27,
+      -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,    99,
+      -1,   101,    10,   103,   104,    13,    -1,    -1,    16,    -1,
+     110,    19,    20,    21,    22,    -1,    24,    25,    26,    27,
       28,    29,    30,    -1,    32,    33,    34,    35,    36,    37,
       -1,    -1,    -1,    -1,    -1,    43,    44,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       58,    -1,    -1,    61,    62,    63,    64,    65,    -1,    -1,
       68,    69,    70,    71,    72,    73,    74,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    99,   100,    -1,   102,    10,   104,   105,    13,    -1,
-      -1,    16,   110,   111,    19,    20,    21,    -1,    -1,    24,
-      25,    26,    27,    28,    29,    30,    -1,    32,    33,    34,
-      35,    36,    37,    -1,    -1,    -1,    -1,    -1,    43,    44,
+      98,    99,    -1,   101,    10,   103,   104,    13,    -1,    -1,
+      16,    -1,   110,    19,    20,    21,    -1,    -1,    24,    25,
+      26,    27,    28,    29,    30,    -1,    32,    33,    34,    35,
+      36,    37,    -1,    -1,    -1,    -1,    -1,    43,    44,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    58,    -1,    -1,    61,    62,    63,    64,
-      65,    -1,    -1,    68,    69,    70,    71,    72,    73,    74,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
+      -1,    -1,    58,    -1,    -1,    61,    62,    63,    64,    65,
+      -1,    -1,    68,    69,    70,    71,    72,    73,    74,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    98,    99,    -1,   101,    10,   103,   104,    13,
+      -1,    -1,    16,   109,   110,    19,    20,    21,    -1,    -1,
+      24,    25,    26,    27,    28,    29,    30,    -1,    32,    33,
+      34,    35,    36,    37,    -1,    -1,    -1,    -1,    -1,    43,
+      44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    62,    63,
+      64,    65,    -1,    -1,    68,    69,    70,    71,    72,    73,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    99,   100,    -1,   102,    10,   104,
-     105,    13,    -1,    -1,    16,   110,   111,    19,    20,    21,
+      -1,    -1,    -1,    -1,    98,    99,    -1,   101,    10,   103,
+     104,    13,    -1,    -1,    16,   109,   110,    19,    20,    21,
       -1,    -1,    24,    25,    26,    27,    28,    29,    30,    -1,
       32,    33,    34,    35,    36,    37,    -1,    -1,    -1,    -1,
       -1,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,
       62,    63,    64,    65,    -1,    -1,    68,    69,    70,    71,
       72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    99,   100,    -1,
-     102,    10,   104,   105,    13,    -1,    -1,    16,   110,   111,
-      19,    20,    21,    -1,    -1,    24,    25,    26,    27,    28,
-      29,    30,    -1,    32,    33,    34,    35,    36,    37,    -1,
-      -1,    -1,    -1,    -1,    43,    44,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
-      -1,    -1,    61,    62,    63,    64,    65,    -1,    -1,    68,
-      69,    70,    71,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      99,   100,    -1,   102,    10,   104,   105,    13,    -1,    -1,
-      16,   110,   111,    19,    20,    21,    -1,    -1,    24,    25,
-      26,    27,    28,    29,    30,    -1,    32,    33,    34,    35,
-      36,    37,    -1,    -1,    -1,    -1,    -1,    43,    44,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    58,    -1,    -1,    61,    62,    63,    64,    65,
-      -1,    -1,    68,    69,    70,    71,    72,    73,    74,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    99,   100,    -1,   102,    10,   104,   105,
-      13,    -1,    -1,    16,   110,   111,    19,    20,    21,    -1,
-      -1,    24,    25,    26,    27,    28,    29,    30,    -1,    32,
-      33,    34,    35,    36,    37,    -1,    -1,    -1,    -1,    -1,
-      43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    62,
-      63,    64,    65,    -1,    -1,    68,    69,    70,    71,    72,
-      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    99,   100,    -1,   102,
-      10,   104,   105,    13,    -1,    -1,    16,   110,   111,    19,
+      -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    98,    99,    -1,   101,
+      10,   103,   104,    13,    -1,    -1,    16,   109,   110,    19,
       20,    21,    -1,    -1,    24,    25,    26,    27,    28,    29,
       30,    -1,    32,    33,    34,    35,    36,    37,    -1,    -1,
       -1,    -1,    -1,    43,    44,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,
       -1,    61,    62,    63,    64,    65,    -1,    -1,    68,    69,
       70,    71,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    99,
-     100,    -1,   102,    10,   104,   105,    13,    -1,    -1,    16,
-     110,   111,    19,    20,    21,    -1,    -1,    24,    25,    26,
-      27,    28,    29,    30,    -1,    32,    33,    34,    35,    36,
-      37,    -1,    -1,    -1,    -1,    -1,    43,    44,    -1,    -1,
+      -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,    99,
+      -1,   101,    10,   103,   104,    13,    -1,    -1,    16,   109,
+     110,    19,    20,    21,    -1,    -1,    24,    25,    26,    27,
+      28,    29,    30,    -1,    32,    33,    34,    35,    36,    37,
+      -1,    -1,    -1,    -1,    -1,    43,    44,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    58,    -1,    -1,    61,    62,    63,    64,    65,    -1,
-      -1,    68,    69,    70,    71,    72,    73,    74,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,    -1,
+      58,    -1,    -1,    61,    62,    63,    64,    65,    -1,    -1,
+      68,    69,    70,    71,    72,    73,    74,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      98,    99,    -1,   101,    10,   103,   104,    13,    -1,    -1,
+      16,   109,   110,    19,    20,    21,    -1,    -1,    24,    25,
+      26,    27,    28,    29,    30,    -1,    32,    33,    34,    35,
+      36,    37,    -1,    -1,    -1,    -1,    -1,    43,    44,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    58,    -1,    -1,    61,    62,    63,    64,    65,
+      -1,    -1,    68,    69,    70,    71,    72,    73,    74,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    99,   100,    -1,   102,    10,   104,   105,    13,
-      -1,    -1,    16,    -1,   111,    19,    20,    21,    -1,    -1,
+      -1,    -1,    98,    99,    -1,   101,    10,   103,   104,    13,
+      -1,    -1,    16,   109,   110,    19,    20,    21,    -1,    -1,
       24,    25,    26,    27,    28,    29,    30,    -1,    32,    33,
       34,    35,    36,    37,    -1,    -1,    -1,    -1,    -1,    43,
       44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    62,    63,
       64,    65,    -1,    -1,    68,    69,    70,    71,    72,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      84,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    66,
-      67,    -1,    -1,    -1,    -1,    99,   100,    -1,   102,    -1,
-     104,   105,    -1,    -1,    -1,    -1,    -1,   111,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    -1,    -1,    -1,    -1,   103,    59,    -1,   106,
-     107,   108,   109,    -1,    66,    67,    -1,    -1,    -1,    -1,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    85,    86,    -1,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,
-      -1,   103,    59,    -1,   106,   107,   108,   109,    -1,    66,
-      67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,
-      -1,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    -1,    -1,    -1,    -1,   103,    59,    -1,   106,
-     107,   108,   109,    -1,    66,    67,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    98,    99,    -1,   101,    10,   103,
+     104,    13,    -1,    -1,    16,   109,   110,    19,    20,    21,
+      -1,    -1,    24,    25,    26,    27,    28,    29,    30,    -1,
+      32,    33,    34,    35,    36,    37,    -1,    -1,    -1,    -1,
+      -1,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,
+      62,    63,    64,    65,    -1,    -1,    68,    69,    70,    71,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    98,    99,    -1,   101,
+      10,   103,   104,    13,    -1,    -1,    16,    -1,   110,    19,
+      20,    21,    -1,    -1,    24,    25,    26,    27,    28,    29,
+      30,    -1,    32,    33,    34,    35,    36,    37,    -1,    -1,
+      -1,    -1,    -1,    43,    44,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   475,    -1,    -1,   478,    -1,    -1,    58,   482,
+     483,    61,    62,    63,    64,    65,    -1,    -1,    68,    69,
+      70,    71,    72,    73,    74,    -1,    -1,   500,   501,    -1,
+      -1,    -1,    -1,    83,    -1,    -1,    -1,   510,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,    99,
+      -1,   101,   525,   103,   104,    -1,   529,   530,    -1,    -1,
+     110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,
+      -1,    -1,    -1,    -1,   547,    -1,    66,    67,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   561,    -1,
+      -1,    -1,    -1,    -1,    84,    85,   569,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    -1,    -1,
+      -1,    -1,   102,    59,    -1,   105,   106,   107,   108,    -1,
+      66,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,
+      -1,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    -1,    -1,    -1,    -1,   102,    59,    -1,   105,
+     106,   107,   108,    -1,    66,    67,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,
-      -1,   103,    -1,    -1,   106,   107,   108,   109
+      -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,
+      92,    93,    94,    95,    96,    97,    66,    67,    -1,    -1,
+     102,    -1,    -1,   105,   106,   107,   108,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    -1,    -1,
+      -1,    -1,   102,    -1,    -1,   105,   106,   107,   108
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     3,     4,     5,     6,     7,     8,     9,   113,   114,
-     115,   116,   117,   118,   119,   120,     0,   123,    10,    13,
+       0,     3,     4,     5,     6,     7,     8,     9,   112,   113,
+     114,   115,   116,   117,   118,   119,     0,   122,    10,    13,
       16,    19,    20,    21,    24,    25,    26,    27,    28,    29,
       30,    32,    33,    34,    35,    36,    37,    43,    44,    58,
       61,    62,    63,    64,    65,    68,    69,    70,    71,    72,
-      73,    74,    84,    99,   100,   102,   104,   105,   111,   174,
-     175,   176,   179,   180,   181,   182,   183,   184,   185,   186,
-     187,   188,   190,   193,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,    11,   121,     1,    22,    38,    40,    41,
+      73,    74,    83,    98,    99,   101,   103,   104,   110,   173,
+     174,   175,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   189,   192,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,    11,   120,     1,    22,    38,    40,    41,
       42,    45,    46,    47,    48,    49,    50,    54,    55,    56,
-      57,    60,   121,   130,   141,   174,    39,   128,   129,   130,
-     126,   168,   169,   126,    26,    31,   121,   200,   208,    14,
-     174,   208,   188,   208,   188,   208,   208,   208,   208,   189,
-      13,   111,   188,   152,   152,   152,   188,   111,   111,    78,
-     111,   121,   188,    26,   175,   192,   200,   208,   208,   121,
-     188,    22,   174,    26,    31,   154,   188,   102,   111,   191,
-     200,   201,   202,   188,   175,   188,   188,   188,   188,   188,
-     110,   174,    81,    82,    83,    15,    11,    13,   111,    95,
-      96,    95,    93,    94,    93,    59,    66,    67,    85,    86,
+      57,    60,   120,   129,   140,   173,    39,   127,   128,   129,
+     125,   167,   168,   125,    26,    31,   120,   199,   207,    14,
+     173,   207,   187,   207,   187,   207,   207,   207,   207,   188,
+      13,   110,   187,   151,   151,   151,   187,   110,   110,    78,
+     110,   120,   187,    26,   174,   191,   199,   207,   207,   120,
+     187,    22,   173,    26,    31,   153,   187,   101,   110,   190,
+     199,   200,   201,   187,   174,   187,   187,   187,   187,   187,
+     109,   173,    81,    82,    15,    11,    13,   110,    94,    95,
+      94,    92,    93,    92,    59,    66,    67,    84,    85,    87,
       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-      98,   103,   106,   107,   108,   109,   111,    11,    13,    11,
-      13,    11,    13,    11,   123,   153,   154,   154,    26,   151,
-     111,   111,   111,   111,    73,   102,   111,   198,   200,   111,
-     111,   121,    22,    53,   143,    22,    47,    48,    49,    50,
-      54,    56,   129,   130,   128,    16,    20,    24,   159,   160,
-     162,   163,   164,   165,    14,   192,   111,    78,   174,   110,
-     121,    29,   155,    75,   156,   110,   110,   174,   193,   193,
-     208,   175,    12,    22,   192,   111,   188,   191,   200,   201,
-     202,   110,   174,    75,   157,    13,   110,   174,   174,   174,
-     188,   174,   174,   110,   174,   188,   188,   188,   188,   188,
-     188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
-     188,   188,   188,   188,    10,    11,    13,    16,    20,    24,
-      25,    27,    68,   111,   178,   200,   110,   174,   174,   174,
-     174,   174,   174,   174,   174,   126,    26,   150,   151,   151,
-      26,   133,   123,   123,   123,   123,   102,   123,    73,   196,
-     197,   199,   200,   201,   202,   123,   123,   111,   123,   123,
-     121,   140,   174,   147,   174,   140,   140,   140,   140,    31,
-     158,   158,    15,   193,   175,    14,   177,   156,    29,   123,
-     173,   110,    79,   110,   174,    12,   110,   174,   157,   110,
-      29,   174,    13,    22,    14,   110,    87,    25,   174,   174,
-      25,    25,    25,    25,    25,   110,   174,   111,   110,    22,
-      14,    22,    14,    22,    14,    22,    12,    18,   122,   131,
-     132,    11,    22,    26,   146,   174,   147,   148,   174,   148,
-     195,   200,   111,   141,   145,   148,   149,   174,   196,   123,
-     148,   148,    85,   161,   161,   163,   110,    23,   194,   192,
-     123,   171,   111,   166,   167,   110,   110,    14,   174,    12,
-     188,    22,    14,   110,   193,    12,    12,    12,    12,   123,
-     155,   156,   123,    26,   110,   110,   110,   110,   111,   123,
-     110,    22,   136,   148,   110,   110,   188,   174,    79,    11,
-     168,    11,    14,    12,   110,    22,   156,    22,   172,   173,
-     137,   192,   144,   144,    11,   124,   124,   148,   148,   124,
-     134,   111,   110,   124,   124,   126,   110,   126,    77,    22,
-     170,   171,   126,    22,   124,   124,   125,    51,    52,   142,
-     142,   110,   110,   143,   146,   148,   124,    12,    12,   127,
-      12,   143,   143,   126,   124,   111,   124,   124,    22,   110,
-     143,    22,    29,   138,    12,   148,   143,   143,   135,   124,
-      17,    76,   139,   110,   144,   143,   126,   124,   149,    77,
-     142,   110,   124
+     102,   105,   106,   107,   108,   110,    11,    13,    11,    13,
+      11,    13,    11,   122,   152,   153,   153,    26,   150,   110,
+     110,   110,   110,    73,   101,   110,   197,   199,   110,   110,
+     120,    22,    53,   142,    22,    47,    48,    49,    50,    54,
+      56,   128,   129,   127,    16,    20,    24,   158,   159,   161,
+     162,   163,   164,    14,   191,   110,    78,   173,   109,   120,
+      29,   154,    75,   155,   109,   109,   173,   192,   192,   207,
+     174,    12,    22,   191,   110,   187,   190,   199,   200,   201,
+     109,   173,    75,   156,    13,   109,   173,   173,   187,   173,
+     173,   109,   173,   187,   187,   187,   187,   187,   187,   187,
+     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
+     187,   187,    10,    11,    13,    16,    20,    24,    25,    27,
+      68,   110,   177,   199,   109,   173,   173,   173,   173,   173,
+     173,   173,   173,   125,    26,   149,   150,   150,    26,   132,
+     122,   122,   122,   122,   101,   122,    73,   195,   196,   198,
+     199,   200,   201,   122,   122,   110,   122,   122,   120,   139,
+     173,   146,   173,   139,   139,   139,   139,    31,   157,   157,
+      15,   192,   174,    14,   176,   155,    29,   122,   172,   109,
+      79,   109,   173,    12,   109,   173,   156,   109,    29,   173,
+      13,    22,    14,   109,    86,    25,   173,   173,    25,    25,
+      25,    25,    25,   109,   173,   110,   109,    22,    14,    22,
+      14,    22,    14,    22,    12,    18,   121,   130,   131,    11,
+      22,    26,   145,   173,   146,   147,   173,   147,   194,   199,
+     110,   140,   144,   147,   148,   173,   195,   122,   147,   147,
+      84,   160,   160,   162,   109,    23,   193,   191,   122,   170,
+     110,   165,   166,   109,   109,    14,   173,    12,   187,    22,
+      14,   109,   192,    12,    12,    12,    12,   122,   154,   155,
+     122,    26,   109,   109,   109,   109,   110,   122,   109,    22,
+     135,   147,   109,   109,   187,   173,    79,    11,   167,    11,
+      14,    12,   109,    22,   155,    22,   171,   172,   136,   191,
+     143,   143,    11,   123,   123,   147,   147,   123,   133,   110,
+     109,   123,   123,   125,   109,   125,    77,    22,   169,   170,
+     125,    22,   123,   123,   124,    51,    52,   141,   141,   109,
+     109,   142,   145,   147,   123,    12,    12,   126,    12,   142,
+     142,   125,   123,   110,   123,   123,    22,   109,   142,    22,
+      29,   137,    12,   147,   142,   142,   134,   123,    17,    76,
+     138,   109,   143,   142,   125,   123,   148,    77,   141,   109,
+     123
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   112,   114,   113,   115,   113,   116,   113,   117,   113,
-     118,   113,   119,   113,   120,   113,   121,   122,   123,   124,
-     125,   126,   126,   127,   127,   128,   128,   129,   129,   130,
-     130,   131,   130,   132,   130,   130,   133,   130,   130,   130,
-     130,   130,   130,   130,   130,   134,   135,   130,   130,   130,
-     136,   130,   130,   130,   130,   137,   130,   130,   130,   130,
-     138,   139,   139,   140,   141,   141,   141,   141,   141,   141,
-     141,   141,   142,   142,   142,   143,   143,   144,   145,   145,
-     146,   146,   147,   148,   149,   150,   150,   151,   152,   153,
-     154,   154,   155,   155,   156,   156,   156,   157,   157,   158,
-     158,   159,   159,   160,   161,   161,   161,   162,   163,   163,
-     164,   164,   164,   165,   165,   166,   166,   167,   169,   168,
-     170,   170,   171,   172,   172,   173,   174,   174,   174,   174,
-     175,   175,   175,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   177,   176,   178,   178,   179,   179,   179,   179,
+       0,   111,   113,   112,   114,   112,   115,   112,   116,   112,
+     117,   112,   118,   112,   119,   112,   120,   121,   122,   123,
+     124,   125,   125,   126,   126,   127,   127,   128,   128,   129,
+     129,   130,   129,   131,   129,   129,   132,   129,   129,   129,
+     129,   129,   129,   129,   129,   133,   134,   129,   129,   129,
+     135,   129,   129,   129,   129,   136,   129,   129,   129,   129,
+     137,   138,   138,   139,   140,   140,   140,   140,   140,   140,
+     140,   140,   141,   141,   141,   142,   142,   143,   144,   144,
+     145,   145,   146,   147,   148,   149,   149,   150,   151,   152,
+     153,   153,   154,   154,   155,   155,   155,   156,   156,   157,
+     157,   158,   158,   159,   160,   160,   160,   161,   162,   162,
+     163,   163,   163,   164,   164,   165,   165,   166,   168,   167,
+     169,   169,   170,   171,   171,   172,   173,   173,   173,   174,
+     174,   174,   175,   175,   175,   175,   175,   175,   175,   175,
+     175,   176,   175,   177,   177,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   179,
      179,   179,   179,   179,   179,   179,   179,   179,   179,   179,
-     180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
-     180,   180,   180,   180,   181,   181,   181,   181,   182,   182,
-     183,   183,   183,   183,   184,   184,   185,   185,   185,   185,
-     185,   185,   185,   185,   185,   186,   186,   186,   186,   186,
-     186,   187,   187,   188,   188,   188,   188,   188,   188,   188,
-     188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
-     188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
-     188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
-     188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
-     188,   188,   189,   188,   188,   188,   188,   190,   190,   190,
-     191,   191,   191,   191,   191,   192,   192,   193,   193,   194,
-     194,   195,   196,   196,   196,   197,   197,   198,   198,   199,
-     200,   201,   202,   203,   203,   204,   205,   205,   206,   206,
-     207,   207,   208,   208,   208,   208
+     179,   179,   179,   180,   180,   180,   180,   181,   181,   182,
+     182,   182,   182,   183,   183,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   185,   185,   185,   185,   185,   185,
+     186,   186,   187,   187,   187,   187,   187,   187,   187,   187,
+     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
+     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
+     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
+     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
+     187,   188,   187,   187,   187,   187,   189,   189,   189,   190,
+     190,   190,   190,   190,   191,   191,   192,   192,   193,   193,
+     194,   195,   195,   195,   196,   196,   197,   197,   198,   199,
+     200,   201,   202,   202,   203,   204,   204,   205,   205,   206,
+     206,   207,   207,   207,   207
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1092,24 +1090,24 @@ static const yytype_int8 yyr2[] =
        1,     1,     0,     1,     0,     2,     1,     2,     1,     0,
        1,     1,     1,     3,     0,     1,     2,     3,     1,     1,
        2,     3,     1,     0,     1,     0,     1,     3,     0,     2,
-       1,     1,     4,     1,     1,     5,     3,     3,     3,     1,
-       2,     3,     1,     3,     5,     6,     3,     3,     5,     2,
-       4,     4,     0,     5,     1,     1,     5,     4,     5,     4,
-       5,     6,     5,     4,     5,     4,     3,     6,     4,     5,
-       3,     3,     3,     3,     3,     1,     1,     3,     3,     3,
-       3,     3,     3,     3,     1,     3,     2,     2,     3,     3,
-       1,     3,     2,     2,     3,     3,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     3,     2,     4,     3,     5,
-       4,     2,     2,     1,     1,     1,     1,     5,     2,     3,
-       1,     2,     3,     1,     2,     1,     1,     1,     1,     1,
-       1,     4,     4,     5,     5,     1,     1,     3,     4,     3,
-       4,     4,     4,     4,     4,     1,     2,     2,     1,     2,
-       2,     1,     2,     1,     2,     1,     3,     1,     3,     1,
-       3,     4,     0,     6,     1,     1,     1,     3,     2,     4,
-       3,     2,     1,     1,     1,     0,     1,     0,     1,     0,
-       2,     1,     1,     1,     1,     1,     1,     2,     2,     2,
-       2,     2,     2,     2,     4,     2,     1,     3,     1,     3,
-       1,     3,     1,     1,     1,     1
+       1,     1,     4,     1,     1,     5,     3,     3,     1,     2,
+       3,     1,     3,     5,     6,     3,     3,     5,     2,     4,
+       4,     0,     5,     1,     1,     5,     4,     5,     4,     5,
+       6,     5,     4,     5,     4,     3,     6,     4,     5,     3,
+       3,     3,     3,     3,     1,     1,     3,     3,     3,     3,
+       3,     3,     3,     1,     3,     2,     2,     3,     3,     1,
+       3,     2,     2,     3,     3,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     3,     2,     4,     3,     5,     4,
+       2,     2,     1,     1,     1,     1,     5,     2,     3,     1,
+       2,     3,     1,     2,     1,     1,     1,     1,     1,     1,
+       4,     4,     5,     5,     1,     1,     3,     4,     3,     4,
+       4,     4,     4,     4,     1,     2,     2,     1,     2,     2,
+       1,     2,     1,     2,     1,     3,     1,     3,     1,     3,
+       4,     0,     6,     1,     1,     1,     3,     2,     4,     3,
+       2,     1,     1,     1,     0,     1,     0,     1,     0,     2,
+       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
+       2,     2,     2,     4,     2,     1,     3,     1,     3,     1,
+       3,     1,     1,     1,     1
 };
 
 typedef enum {
@@ -1135,7 +1133,7 @@ static const toketypes yy_type_tab[] =
   toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
   toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
   toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
-  toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
+  toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
   toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
   toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
   toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
@@ -1158,6 +1156,6 @@ static const toketypes yy_type_tab[] =
 };
 
 /* Generated from:
- * 125e373e186e1cf8e055f2faf0d9fa51818b4e2b7b6bfda0b1688f3da43b8c35 perly.y
+ * 8501134166a6baa08c401894156c496a30dbabab6b166ea837cd490b6db2e410 perly.y
  * acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl
  * ex: set ro: */
diff --git a/perly.y b/perly.y
index 75a942e..bd65eb4 100644 (file)
--- a/perly.y
+++ b/perly.y
 %nonassoc <ival> PREC_LOW
 %nonassoc LOOPEX
 
-%left <ival> OROP DOROP
+%left <ival> OROP
 %left <ival> ANDOP
 %right <ival> NOTOP
 %nonassoc LSTOP LSTOPSUB
@@ -901,8 +901,6 @@ expr        :       expr[lhs] ANDOP expr[rhs]
                        { $$ = newLOGOP(OP_AND, 0, $lhs, $rhs); }
        |       expr[lhs] OROP[operator] expr[rhs]
                        { $$ = newLOGOP($operator, 0, $lhs, $rhs); }
-       |       expr[lhs] DOROP expr[rhs]
-                       { $$ = newLOGOP(OP_DOR, 0, $lhs, $rhs); }
        |       listexpr %prec PREC_LOW
        ;
 
diff --git a/toke.c b/toke.c
index 25fc46f..f4404bd 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -353,7 +353,6 @@ static struct debug_tokens {
     { DO,              TOKENTYPE_NONE,         "DO" },
     { DOLSHARP,                TOKENTYPE_NONE,         "DOLSHARP" },
     { DORDOR,          TOKENTYPE_NONE,         "DORDOR" },
-    { DOROP,           TOKENTYPE_OPNUM,        "DOROP" },
     { DOTDOT,          TOKENTYPE_IVAL,         "DOTDOT" },
     { ELSE,            TOKENTYPE_NONE,         "ELSE" },
     { ELSIF,           TOKENTYPE_IVAL,         "ELSIF" },