ignoring spaces within tags

diff --git a/libasn1parser/Makefile.in b/libasn1parser/Makefile.in
index 76a6ef2..ef80e29 100644
--- a/libasn1parser/Makefile.in
+++ b/libasn1parser/Makefile.in
@@ -447,9 +447,9 @@
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
-	-rm -f asn1p_l.c
-	-rm -f asn1p_y.h
 	-rm -f asn1p_y.c
+	-rm -f asn1p_y.h
+	-rm -f asn1p_l.c
 clean: clean-am
 
 clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
diff --git a/libasn1parser/asn1p_l.c b/libasn1parser/asn1p_l.c
index 93a12c3..8d4c7f6 100644
--- a/libasn1parser/asn1p_l.c
+++ b/libasn1parser/asn1p_l.c
@@ -312,231 +312,225 @@
 	*yy_cp = '\0'; \
 	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 131
-#define YY_END_OF_BUFFER 132
-static yyconst short int yy_acclist[1266] =
+#define YY_NUM_RULES 129
+#define YY_END_OF_BUFFER 130
+static yyconst short int yy_acclist[1259] =
     {   0,
-      132,  130,  131,  124,  130,  131,  124,  131,  123,  130,
-      131,   15,  130,  131,  123,  130,  131,  130,  131,  123,
-      130,  131,  130,  131,  123,  130,  131,  130,  131,   29,
-      130,  131,   28,  130,  131,  123,  130,  131,  130,  131,
-      118,  119,  130,  131,  118,  119,  130,  131,  118,  119,
-      130,  131,  118,  119,  130,  131,  118,  119,  130,  131,
-      118,  119,  130,  131,  118,  119,  130,  131,  118,  119,
-      130,  131,  118,  119,  130,  131,  118,  119,  130,  131,
-      118,  119,  130,  131,  118,  119,  130,  131,  118,  119,
-      130,  131,  118,  119,  130,  131,  118,  119,  130,  131,
+      130,  128,  129,  121,  128,  129,  121,  129,  122,  128,
+      129,   15,  128,  129,  122,  128,  129,  128,  129,  122,
+      128,  129,  128,  129,  122,  128,  129,  128,  129,   29,
+      128,  129,   28,  128,  129,  122,  128,  129,  128,  129,
+      116,  117,  128,  129,  116,  117,  128,  129,  116,  117,
+      128,  129,  116,  117,  128,  129,  116,  117,  128,  129,
+      116,  117,  128,  129,  116,  117,  128,  129,  116,  117,
+      128,  129,  116,  117,  128,  129,  116,  117,  128,  129,
+      116,  117,  128,  129,  116,  117,  128,  129,  116,  117,
+      128,  129,  116,  117,  128,  129,  116,  117,  128,  129,
 
-      118,  119,  130,  131,  118,  119,  130,  131,  118,  119,
-      130,  131,  118,  119,  130,  131,  123,  130,  131,  129,
-      130,  131,  117,  130,  131,  123,  129,  130,  131,    5,
-      130,  131,    2,  131,    2,  130,  131,    4,  130,  131,
-        7,    9,  130,  131,    7,  131,    9,  130,  131,    9,
-      130,  131,   17,  130,  131,   17,  131,   18,  130,  131,
-       12,  130,  131,   12,  131,   14,  130,  131,   14,  130,
-      131,   10,  130,  131,   11,  130,  131,   21,   23,  130,
-      131,   23,  130,  131,   24,  131,   21,   22,   23,  130,
-      131,   21,   22,   23,  130,  131,  126,  130,  131,  127,
+      116,  117,  128,  129,  116,  117,  128,  129,  116,  117,
+      128,  129,  116,  117,  128,  129,  127,  128,  129,  115,
+      128,  129,  122,  127,  128,  129,    5,  128,  129,    2,
+      129,    2,  128,  129,    4,  128,  129,    7,    9,  128,
+      129,    7,  129,    9,  128,  129,    9,  128,  129,   17,
+      128,  129,   17,  129,   18,  128,  129,   12,  128,  129,
+       12,  129,   14,  128,  129,   14,  128,  129,   10,  128,
+      129,   11,  128,  129,   21,   23,  128,  129,   23,  128,
+      129,   24,  129,   21,   22,   23,  128,  129,   21,   22,
+       23,  128,  129,  124,  128,  129,  125,  128,  129,  125,
 
-      130,  131,  127,  131,  130,  131,  128,  130,  131,  124,
-       15,   15,  115,  116,    1,   27,  122,    6,   28,  118,
-      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
-      119,  119,  118,  119,  118,  119,  118,  119,  118,  119,
-       41,  118,  119,  118,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
-      119,  119,  119,  118,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,  118,  119,  118,  119,  118,  119,  119,
-      118,  119,  118,  119,   86,  118,  119,  118,  119,  119,
-      118,  119,  118,  119,  118,  119,  118,  119,  119,  118,
+      129,  128,  129,  126,  128,  129,  121,   15,   15,  113,
+      114,    1,   27,  120,    6,   28,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,   39,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  117,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  117,  116,  117,  116,
+      117,   84,  116,  117,  116,  117,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  117,  116,  117,  116,  117,
 
-      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,  118,  119,  118,  119,  119,  118,  119,
-      118,  119,  119,  119,  118,  119,  117,    5,    3,    8,
-       17,   16,   12,   21,   21,   22,   21,   22,  126,  127,
-      125,  115,  116,   27,  121,  120,  118,  119,   33,  118,
-      119,   34,  118,  119,  118,  119,  118,  119,  118,  119,
-       38,  118,  119,  118,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,   55,  118,  119,  118,  119,  118,  119,
-      118,  119,  118,  119,  118,  119,  118,  119,  119,  119,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  117,  116,  117,  116,  117,  117,
+      117,  116,  117,  115,    5,    3,    8,   17,   16,   12,
+       21,   21,   22,   21,   22,  124,  125,  123,  113,  114,
+       27,  119,  118,  116,  117,   31,  116,  117,   32,  116,
+      117,  116,  117,  116,  117,  116,  117,   36,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+       53,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  117,  117,  116,  117,  116,
 
-      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
-      118,  119,  118,  119,   78,  118,  119,   79,  118,  119,
-      118,  119,  119,  118,  119,  118,  119,  118,  119,  119,
-      118,  119,   89,  118,  119,  118,  119,  118,  119,  118,
-      119,  119,  118,  119,  118,  119,  118,  119,   97,  118,
-      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,  118,  119,  119,  118,  119,  118,  119,
-      118,  119,  119,  119,  119,  118,  119,   30,   13,   21,
-       22,   20,   21,   22,   26,   25,  118,  119,  118,  119,
-      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,   76,  116,  117,   77,  116,  117,  116,  117,  117,
+      116,  117,  116,  117,  116,  117,  117,  116,  117,   87,
+      116,  117,  116,  117,  116,  117,  116,  117,  117,  116,
+      117,  116,  117,  116,  117,   95,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  117,  116,  117,  116,  117,  116,  117,  117,
+      117,  117,  116,  117,   13,   21,   22,   20,   21,   22,
+       26,   25,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
 
-      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
-      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
-      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
-       63,  118,  119,  119,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,   81,  118,  119,  119,  118,  119,  118,
-      119,  118,  119,  119,  118,  119,  118,  119,  118,  119,
-      118,  119,  119,   94,  118,  119,  118,  119,  118,  119,
-       98,  118,  119,  118,  119,  118,  119,  118,  119,  102,
-      118,  119,  104,  118,  119,  118,  119,  119,  118,  119,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,   61,  116,  117,  117,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,   79,
+      116,  117,  117,  116,  117,  116,  117,  116,  117,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  117,   92,
+      116,  117,  116,  117,  116,  117,   96,  116,  117,  116,
+      117,  116,  117,  116,  117,  100,  116,  117,  102,  116,
+      117,  116,  117,  117,  116,  117,  116,  117,  116,  117,
 
-      118,  119,  118,  119,  118,  119,  118,  119,  119,  119,
-      119,  114,  118,  119,   21,   22,  118,  119,  118,  119,
-      118,  119,   37,  118,  119,  119,  118,  119,  118,  119,
-      118,  119,   44,  118,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
-      119,   62,  118,  119,  119,  119,  119,  118,  119,  118,
-      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,  118,  119,  118,  119,  119,  118,  119,
-       85,  118,  119,  118,  119,  119,  118,  119,  118,  119,
+      116,  117,  116,  117,  117,  117,  117,  112,  116,  117,
+       21,   22,  116,  117,  116,  117,  116,  117,   35,  116,
+      117,  117,  116,  117,  116,  117,  116,  117,   42,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,   60,  116,  117,
+      117,  117,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,  117,  116,  117,   83,  116,  117,  116,
+      117,  117,  116,  117,  116,  117,  116,  117,  116,  117,
 
-      118,  119,  118,  119,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,  119,  118,  119,  119,  106,  118,  119,
-      118,  119,  118,  119,  119,  118,  119,  119,  119,  119,
-       31,   21,   22,   32,  118,  119,  118,  119,  118,  119,
-      119,  118,  119,  118,  119,   43,  118,  119,  118,  119,
-      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
-      118,  119,  118,  119,  118,  119,  118,  119,   57,  118,
-      119,  118,  119,  118,  119,  118,  119,  118,  119,  119,
-      119,  119,  118,  119,  118,  119,  118,  119,  118,  119,
-      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  117,
+      116,  117,  117,  104,  116,  117,  116,  117,  116,  117,
+      117,  116,  117,  117,  117,  117,   21,   22,   30,  116,
+      117,  116,  117,  116,  117,  117,  116,  117,  116,  117,
+       41,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,   55,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  117,  117,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  117,
 
-      118,  119,  118,  119,  119,   83,  118,  119,  118,  119,
-      119,  118,  119,  118,  119,  118,  119,  118,  119,  119,
-      118,  119,  118,  119,   99,  118,  119,  100,  118,  119,
-      119,  118,  119,  119,  107,  118,  119,  118,  119,  119,
-      119,  119,  119,  119,   21,   22,  118,  119,  118,  119,
-      119,   40,  118,  119,  118,  119,  118,  119,  118,  119,
-      118,  119,   49,  118,  119,   50,  118,  119,  118,  119,
-      118,  119,   53,  118,  119,  118,  119,  118,  119,  118,
-      119,   59,  118,  119,  118,  119,  118,  119,  119,  119,
-      119,  118,  119,  118,  119,   70,  118,  119,   71,  118,
+       81,  116,  117,  116,  117,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  117,  116,  117,  116,  117,   97,
+      116,  117,   98,  116,  117,  117,  116,  117,  117,  105,
+      116,  117,  116,  117,  117,  117,  117,  117,  117,   21,
+       22,  116,  117,  116,  117,  117,   38,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,   47,  116,  117,
+       48,  116,  117,  116,  117,  116,  117,   51,  116,  117,
+      116,  117,  116,  117,  116,  117,   57,  116,  117,  116,
+      117,  116,  117,  117,  117,  117,  116,  117,  116,  117,
+       68,  116,  117,   69,  116,  117,  116,  117,  116,  117,
 
-      119,  118,  119,  118,  119,  118,  119,   75,  118,  119,
-      118,  119,  118,  119,  118,  119,  119,  118,  119,  119,
-       88,  118,  119,  118,  119,   91,  118,  119,   93,  118,
-      119,  119,  118,  119,  118,  119,  119,  118,  119,  119,
-      118,  119,  110,  119,  119,  119,  119,  119,   21,   22,
-      118,  119,  118,  119,  119,  118,  119,  118,  119,  118,
-      119,  118,  119,  118,  119,   52,  118,  119,  118,  119,
-      118,  119,   58,  118,  119,  118,  119,   61,  118,  119,
-      119,  119,  119,  119,  118,  119,   69,  118,  119,   72,
-      118,  119,   73,  118,  119,  118,  119,  118,  119,  119,
+      116,  117,   73,  116,  117,  116,  117,  116,  117,  116,
+      117,  117,  116,  117,  117,   86,  116,  117,  116,  117,
+       89,  116,  117,   91,  116,  117,  117,  116,  117,  116,
+      117,  117,  116,  117,  117,  116,  117,  108,  117,  117,
+      117,  117,  117,   21,   22,  116,  117,  116,  117,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+       50,  116,  117,  116,  117,  116,  117,   56,  116,  117,
+      116,  117,   59,  116,  117,  117,  117,  117,  117,  116,
+      117,   67,  116,  117,   70,  116,  117,   71,  116,  117,
+      116,  117,  116,  117,  117,  116,  117,  117,   85,  116,
 
-      118,  119,  119,   87,  118,  119,  119,  118,  119,  119,
-      118,  119,   96,  118,  119,  119,  118,  119,  119,  118,
-      119,  119,  119,  119,  119,   21,   22,  118,  119,   36,
-      118,  119,   39,  119,   42,  118,  119,   45,  118,  119,
-      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
-      118,  119,  119,  119,  119,   67,  119,  118,  119,  118,
-      119,  118,  119,  119,  118,  119,  119,  119,  118,  119,
-      119,  118,  119,  101,  119,  118,  119,  119,  108,  118,
-      119,  119,  119,  119,  119,   21,  118,  119,   46,  118,
-      119,   47,  118,  119,   48,  118,  119,  118,  119,  118,
+      117,  117,  116,  117,  117,  116,  117,   94,  116,  117,
+      117,  116,  117,  117,  116,  117,  117,  117,  117,  117,
+       21,   22,  116,  117,   34,  116,  117,   37,  117,   40,
+      116,  117,   43,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  117,  117,  117,
+       65,  117,  116,  117,  116,  117,  116,  117,  117,  116,
+      117,  117,  117,  116,  117,  117,  116,  117,   99,  117,
+      116,  117,  117,  106,  116,  117,  117,  117,  117,  117,
+       21,  116,  117,   44,  116,  117,   45,  116,  117,   46,
+      116,  117,  116,  117,  116,  117,   54,  116,  117,  116,
 
-      119,   56,  118,  119,  118,  119,  119,  119,  119,   68,
-      118,  119,  118,  119,  118,  119,  119,  118,  119,  119,
-      119,  118,  119,  119,  118,  119,  118,  119,  119,  111,
-      119,  119,  119,  119,   21,   35,  118,  119,   51,  118,
-      119,  118,  119,  118,  119,  119,  119,  119,  118,  119,
-      118,  119,  119,  118,  119,  119,  119,  118,  119,  119,
-      118,  119,  118,  119,  119,  119,  119,  119,   30,   31,
-       21,  118,  119,  118,  119,  119,  119,  119,   74,  118,
-      119,   76,  118,  119,   77,  119,  118,  119,  119,  119,
-      118,  119,  119,   95,  118,  119,  118,  119,  119,  119,
+      117,  117,  117,  117,   66,  116,  117,  116,  117,  116,
+      117,  117,  116,  117,  117,  117,  116,  117,  117,  116,
+      117,  116,  117,  117,  109,  117,  117,  117,  117,   21,
+       33,  116,  117,   49,  116,  117,  116,  117,  116,  117,
+      117,  117,  117,  116,  117,  116,  117,  117,  116,  117,
+      117,  117,  116,  117,  117,  116,  117,  116,  117,  117,
+      117,  117,  117,   21,  116,  117,  116,  117,  117,  117,
+      117,   72,  116,  117,   74,  116,  117,   75,  117,  116,
+      117,  117,  117,  116,  117,  117,   93,  116,  117,  116,
+      117,  117,  117,  117,  117,   21,  116,  117,   58,  116,
 
-      119,  119,   21,  118,  119,   60,  118,  119,   65,  119,
-      119,   66,  119,  118,  119,   82,  119,  119,   90,  118,
-      119,  119,  118,  119,  103,  119,  119,  119,  113,  119,
-       21,  118,  119,  119,   80,  118,  119,  119,  119,  118,
-      119,  119,  112,  119,   21,  118,  119,   64,  119,  119,
-       92,  119,  105,  118,  119,  109,  119,   21,   54,  118,
-      119,   84,  119,   19,   21
+      117,   63,  117,  117,   64,  117,  116,  117,   80,  117,
+      117,   88,  116,  117,  117,  116,  117,  101,  117,  117,
+      117,  111,  117,   21,  116,  117,  117,   78,  116,  117,
+      117,  117,  116,  117,  117,  110,  117,   21,  116,  117,
+       62,  117,  117,   90,  117,  103,  116,  117,  107,  117,
+       21,   52,  116,  117,   82,  117,   19,   21
     } ;
 
-static yyconst short int yy_accept[710] =
+static yyconst short int yy_accept[671] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    2,    4,    7,    9,   12,
        15,   18,   20,   23,   25,   28,   30,   33,   36,   39,
        41,   45,   49,   53,   57,   61,   65,   69,   73,   77,
        81,   85,   89,   93,   97,  101,  105,  109,  113,  117,
-      120,  123,  126,  130,  133,  135,  138,  141,  145,  147,
-      150,  153,  156,  158,  161,  164,  166,  169,  172,  175,
-      178,  182,  185,  187,  192,  197,  200,  203,  205,  207,
-      210,  210,  211,  212,  213,  213,  214,  214,  215,  215,
-      215,  216,  217,  218,  219,  220,  220,  222,  224,  226,
+      120,  123,  127,  130,  132,  135,  138,  142,  144,  147,
+      150,  153,  155,  158,  161,  163,  166,  169,  172,  175,
+      179,  182,  184,  189,  194,  197,  200,  202,  204,  207,
+      207,  208,  209,  210,  210,  211,  211,  212,  212,  212,
+      213,  214,  215,  216,  217,  217,  219,  221,  223,  225,
 
-      228,  230,  232,  233,  235,  237,  239,  241,  244,  246,
-      248,  250,  252,  254,  256,  258,  260,  262,  263,  264,
-      266,  268,  270,  272,  274,  276,  278,  280,  281,  283,
-      285,  288,  290,  291,  293,  295,  297,  299,  300,  302,
-      304,  306,  308,  310,  312,  314,  316,  318,  319,  321,
-      323,  324,  325,  327,  327,  327,  327,  327,  327,  328,
-      329,  330,  331,  332,  333,  334,  334,  335,  337,  339,
-      340,  341,  342,  342,  343,  344,  344,  344,  345,  346,
-      347,  349,  352,  355,  357,  359,  361,  364,  366,  368,
-      370,  372,  374,  376,  378,  380,  382,  384,  387,  389,
+      227,  229,  230,  232,  234,  236,  238,  241,  243,  245,
+      247,  249,  251,  253,  255,  257,  259,  260,  261,  263,
+      265,  267,  269,  271,  273,  275,  277,  278,  280,  282,
+      285,  287,  288,  290,  292,  294,  296,  297,  299,  301,
+      303,  305,  307,  309,  311,  313,  315,  316,  318,  320,
+      321,  322,  324,  325,  326,  327,  328,  329,  330,  331,
+      331,  332,  334,  336,  337,  338,  339,  339,  340,  341,
+      341,  341,  342,  343,  344,  346,  349,  352,  354,  356,
+      358,  361,  363,  365,  367,  369,  371,  373,  375,  377,
+      379,  381,  384,  386,  388,  390,  392,  394,  396,  397,
 
-      391,  393,  395,  397,  399,  400,  401,  403,  405,  407,
-      409,  411,  413,  415,  418,  421,  423,  424,  426,  428,
-      430,  431,  433,  436,  438,  440,  442,  443,  445,  447,
-      449,  452,  454,  456,  458,  460,  462,  464,  466,  467,
-      469,  471,  473,  474,  475,  476,  478,  479,  479,  479,
-      479,  479,  480,  482,  485,  485,  486,  487,  489,  491,
-      493,  495,  497,  499,  501,  503,  505,  507,  509,  511,
-      513,  515,  517,  519,  521,  523,  525,  527,  529,  531,
-      534,  535,  536,  538,  540,  542,  544,  546,  548,  550,
-      552,  554,  557,  558,  560,  562,  564,  565,  567,  569,
+      398,  400,  402,  404,  406,  408,  410,  412,  415,  418,
+      420,  421,  423,  425,  427,  428,  430,  433,  435,  437,
+      439,  440,  442,  444,  446,  449,  451,  453,  455,  457,
+      459,  461,  463,  464,  466,  468,  470,  471,  472,  473,
+      475,  476,  478,  481,  481,  482,  483,  485,  487,  489,
+      491,  493,  495,  497,  499,  501,  503,  505,  507,  509,
+      511,  513,  515,  517,  519,  521,  523,  525,  527,  530,
+      531,  532,  534,  536,  538,  540,  542,  544,  546,  548,
+      550,  553,  554,  556,  558,  560,  561,  563,  565,  567,
+      569,  570,  573,  575,  577,  580,  582,  584,  586,  589,
 
-      571,  573,  574,  577,  579,  581,  584,  586,  588,  590,
-      593,  596,  598,  599,  601,  603,  605,  607,  609,  610,
-      611,  612,  615,  615,  615,  615,  615,  617,  619,  621,
-      623,  626,  627,  629,  631,  633,  636,  638,  640,  642,
-      644,  646,  648,  650,  652,  654,  656,  658,  660,  662,
-      665,  666,  667,  668,  670,  672,  674,  676,  678,  680,
-      682,  684,  686,  688,  689,  691,  694,  696,  697,  699,
-      701,  703,  705,  706,  708,  710,  712,  714,  715,  717,
-      718,  721,  723,  725,  726,  728,  729,  730,  731,  732,
-      732,  732,  732,  734,  737,  739,  741,  742,  744,  746,
+      592,  594,  595,  597,  599,  601,  603,  605,  606,  607,
+      608,  611,  613,  615,  617,  619,  622,  623,  625,  627,
+      629,  632,  634,  636,  638,  640,  642,  644,  646,  648,
+      650,  652,  654,  656,  658,  661,  662,  663,  664,  666,
+      668,  670,  672,  674,  676,  678,  680,  682,  684,  685,
+      687,  690,  692,  693,  695,  697,  699,  701,  702,  704,
+      706,  708,  710,  711,  713,  714,  717,  719,  721,  722,
+      724,  725,  726,  727,  729,  732,  734,  736,  737,  739,
+      741,  744,  746,  748,  750,  752,  754,  756,  758,  760,
+      762,  764,  767,  769,  771,  773,  775,  776,  777,  778,
 
-      749,  751,  753,  755,  757,  759,  761,  763,  765,  767,
-      769,  772,  774,  776,  778,  780,  781,  782,  783,  785,
-      787,  789,  791,  793,  795,  797,  799,  801,  803,  805,
-      806,  809,  811,  812,  814,  816,  818,  820,  821,  823,
-      825,  828,  831,  832,  834,  835,  838,  840,  841,  842,
-      843,  844,  845,  845,  845,  845,  847,  849,  851,  852,
-      855,  857,  859,  861,  863,  866,  869,  871,  873,  876,
-      878,  880,  882,  885,  887,  889,  890,  891,  892,  894,
-      896,  899,  902,  904,  906,  908,  911,  913,  915,  917,
-      918,  920,  921,  924,  926,  929,  932,  933,  935,  937,
+      780,  782,  784,  786,  788,  790,  792,  794,  796,  798,
+      800,  801,  804,  806,  807,  809,  811,  813,  815,  816,
+      818,  820,  823,  826,  827,  829,  830,  833,  835,  836,
+      837,  838,  839,  840,  842,  844,  846,  847,  850,  852,
+      854,  856,  858,  861,  864,  866,  868,  871,  873,  875,
+      877,  880,  882,  884,  885,  886,  887,  889,  891,  894,
+      897,  899,  901,  903,  906,  908,  910,  912,  913,  915,
+      916,  919,  921,  924,  927,  928,  930,  932,  933,  935,
+      936,  938,  940,  941,  942,  943,  944,  946,  948,  950,
+      951,  953,  955,  957,  959,  961,  964,  966,  968,  971,
 
-      938,  940,  941,  943,  945,  946,  947,  948,  949,  949,
-      949,  949,  951,  953,  955,  956,  958,  960,  962,  964,
-      966,  969,  971,  973,  976,  978,  981,  982,  983,  984,
-      985,  987,  990,  993,  996,  998, 1000, 1001, 1003, 1004,
-     1007, 1008, 1010, 1011, 1013, 1016, 1017, 1019, 1020, 1022,
-     1023, 1024, 1025, 1026, 1026, 1026, 1026, 1028, 1030, 1033,
-     1035, 1038, 1041, 1043, 1045, 1047, 1049, 1051, 1053, 1054,
-     1055, 1056, 1058, 1060, 1062, 1064, 1065, 1067, 1068, 1069,
-     1071, 1072, 1074, 1076, 1078, 1079, 1082, 1083, 1084, 1085,
-     1086, 1086, 1086, 1086, 1087, 1089, 1092, 1095, 1098, 1100,
+      973,  976,  977,  978,  979,  980,  982,  985,  988,  991,
+      993,  995,  996,  998,  999, 1002, 1003, 1005, 1006, 1008,
+     1011, 1012, 1014, 1015, 1017, 1018, 1019, 1020, 1021, 1023,
+     1025, 1028, 1030, 1033, 1036, 1038, 1040, 1042, 1044, 1046,
+     1048, 1049, 1050, 1051, 1053, 1055, 1057, 1059, 1060, 1062,
+     1063, 1064, 1066, 1067, 1069, 1071, 1073, 1074, 1077, 1078,
+     1079, 1080, 1081, 1082, 1084, 1087, 1090, 1093, 1095, 1097,
+     1100, 1102, 1103, 1104, 1105, 1108, 1110, 1112, 1113, 1115,
+     1116, 1117, 1119, 1120, 1122, 1124, 1125, 1127, 1128, 1129,
+     1130, 1131, 1134, 1137, 1139, 1141, 1142, 1143, 1144, 1146,
 
-     1102, 1105, 1107, 1108, 1109, 1110, 1113, 1115, 1117, 1118,
-     1120, 1121, 1122, 1124, 1125, 1127, 1129, 1130, 1132, 1133,
-     1134, 1135, 1135, 1135, 1135, 1136, 1139, 1142, 1144, 1146,
-     1147, 1148, 1149, 1151, 1153, 1154, 1156, 1157, 1158, 1160,
-     1161, 1163, 1165, 1166, 1167, 1168, 1169, 1169, 1171, 1171,
-     1172, 1174, 1176, 1177, 1178, 1179, 1182, 1185, 1187, 1189,
-     1190, 1191, 1193, 1194, 1197, 1199, 1200, 1201, 1202, 1203,
-     1203, 1204, 1206, 1209, 1211, 1212, 1214, 1216, 1218, 1219,
-     1222, 1223, 1225, 1227, 1228, 1229, 1231, 1231, 1232, 1234,
-     1235, 1238, 1239, 1240, 1242, 1243, 1245, 1246, 1248, 1250,
-
-     1251, 1253, 1256, 1258, 1259, 1262, 1264, 1266, 1266
+     1148, 1149, 1151, 1152, 1153, 1155, 1156, 1158, 1160, 1161,
+     1162, 1163, 1164, 1165, 1167, 1169, 1170, 1171, 1172, 1175,
+     1178, 1180, 1182, 1183, 1184, 1186, 1187, 1190, 1192, 1193,
+     1194, 1195, 1196, 1197, 1199, 1202, 1204, 1205, 1207, 1209,
+     1211, 1212, 1215, 1216, 1218, 1220, 1221, 1222, 1224, 1225,
+     1227, 1228, 1231, 1232, 1233, 1235, 1236, 1238, 1239, 1241,
+     1243, 1244, 1246, 1249, 1251, 1252, 1255, 1257, 1259, 1259
     } ;
 
 static yyconst int yy_ec[256] =
@@ -550,11 +544,11 @@
        24,    1,    1,    9,   25,   26,   27,   28,   29,   30,
        31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
        41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
-       51,    1,   52,   53,    1,    1,   54,   55,   56,   57,
+        9,    1,   51,   52,    1,    1,   53,   54,   55,   56,
 
-       58,   59,   60,   61,   62,   63,   59,   64,   65,   66,
-       67,   68,   59,   69,   70,   71,   72,   73,   59,   74,
-       59,   75,   76,   77,   78,    1,    1,    1,    1,    1,
+       57,   58,   59,   60,   61,   62,   58,   63,   64,   65,
+       66,   67,   58,   68,   69,   70,   71,   72,   58,   73,
+       58,   74,   75,   76,   77,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -571,684 +565,657 @@
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[79] =
+static yyconst int yy_meta[78] =
     {   0,
         1,    2,    3,    3,    1,    4,    5,    6,    1,    1,
         7,    1,    1,    8,    8,    8,    8,    8,    8,    8,
         9,    1,    1,    9,    8,    8,    8,    8,    8,    8,
        10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
        10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-        1,    1,    1,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   12,    1,   12
+        1,    1,   10,   10,   10,   10,   10,   10,   10,   10,
+       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
+       10,   10,   10,   10,   11,    1,   11
     } ;
 
-static yyconst short int yy_base[728] =
+static yyconst short int yy_base[688] =
     {   0,
-        0,    0,   76,   78,   80,   81,   82,   89,   83,   93,
-      171,  249,  109,  120,  961,  952,   95,   98,  951,  948,
-      320,  117, 4405,  118,  933,  100, 4405,  125,  923, 4405,
-      385,  176,  194,  120,  239,  267,  435,  163,  293,  441,
-      191,  259,  463,  471,  484,  500,  508,  270,  521,  553,
-      935,    0,  933,    0, 4405, 4405,  926, 4405, 4405,  922,
-      922,    0,    0,  924,    0,    0,  902, 4405, 4405, 4405,
-        0, 4405, 4405,  598,  675,    0,  148,  151,  182, 4405,
-      915,  160,    0,  913,  912,    0,  135,    0,  573,  908,
-     4405,  226,  902, 4405,  598,  886,  556,  597,  598,  618,
+        0,    0,   75,   77,   79,   80,   81,   88,   82,   92,
+      169,  246,  108,  119,  797,  777,   94,   97,  775,  774,
+      316,  116, 4249,  117,  767,   99, 4249,  124,  751, 4249,
+      380,  173,  191,  120,  236,  254,  269,  188,  275,  430,
+      431,  447,  453,  468,  474,  490,  498,  514,  515,  762,
+        0,  760,    0, 4249, 4249,  756, 4249, 4249,  753,  754,
+        0,    0,  757,    0,    0,  740, 4249, 4249, 4249,    0,
+     4249, 4249,  575,  651,    0,  148,  151,  256, 4249,  746,
+      159,    0,  745,  743,    0,   95,    0,  325,  739, 4249,
+      223,  733, 4249,  550,  715,  564,  565,  580,  593,  596,
 
-      619,  634,    0,  664,  667,  680,  693,  704,  720,  728,
-      741,  744,  757,  772,  778,  775,  793,  842,  852,  808,
-      811,  819,  834,  845,  856,  862,  873,  840,  886,  889,
-      902,  910,  840,  913,  926,  937,  950,  835,  966,  972,
-      983,  989, 1000, 1015, 1016, 1031, 1032,  831, 1047, 1048,
-      831,   48, 1063, 1095, 1102,  851,   88,  128,    0,    0,
-     4405, 4405,    0, 4405,    0,  865,    0,  849,  253,    0,
-      264, 4405,  875,    0,    0,   83,  848,  611, 4405, 4405,
-     1098, 1099, 1114, 1115, 1130, 1138, 1141, 1154, 1162, 1170,
-     1178, 1191, 1199, 1202, 1223, 1224, 1239, 1245, 1256, 1262,
+      609,    0,  640,  643,  656,  669,  680,  696,  704,  717,
+      720,  733,  748,  754,  751,  769,  673,  684,  784,  787,
+      795,  810,  821,  832,  838,  849,  669,  862,  865,  878,
+      886,  669,  889,  902,  913,  926,  667,  942,  948,  959,
+      965,  976,  991,  992, 1007, 1008,  663, 1023, 1024,  663,
+       58, 1039,    0,    0, 4249, 4249,    0, 4249,    0,  699,
+        0,  681,  159,    0,  201, 4249,  706,    0,    0,  163,
+      683, 1071, 4249, 4249, 1066, 1067, 1082, 1083, 1098, 1106,
+     1109, 1122, 1130, 1138, 1146, 1159, 1167, 1170, 1191, 1192,
+     1207, 1213, 1224, 1230, 1241, 1247, 1258, 1269,  656,  645,
 
-     1273, 1279, 1290, 1301,  818,  807, 1314, 1322, 1325, 1340,
-     1343, 1346, 1370, 1364, 1367, 1385,  815, 1388, 1403, 1409,
-      811, 1420, 1431, 1437, 1448, 1459,  802, 1470, 1476, 1487,
-     1493, 1508, 1509, 1524, 1535, 1541, 1556, 1562,  809, 1573,
-     1584, 1595,  793,  807,  801, 1606, 4405, 1645,  822,  178,
-      250, 4405,  109,  820,  802, 4405, 4405, 1630, 1641, 1647,
-     1662, 1663, 1680, 1679, 1695, 1701, 1712, 1723, 1741, 1738,
-     1744, 1759, 1762, 1765, 1780, 1786, 1797, 1808, 1823, 1829,
-      783,  789, 1840, 1846, 1861, 1862, 1877, 1883, 1898, 1901,
-     1909, 1922,  774, 1930, 1933, 1946,  786, 1954, 1970, 1969,
+     1282, 1290, 1293, 1308, 1311, 1314, 1338, 1332, 1335, 1353,
+      654, 1356, 1371, 1377,  653, 1388, 1399, 1405, 1416, 1427,
+      639, 1438, 1444, 1455, 1461, 1476, 1477, 1492, 1503, 1509,
+     1524, 1530,  643, 1541, 1552, 1563,  627,  641,  636, 1574,
+     4249,  162,  655,  640, 4249, 4249, 1585, 1591, 1602, 1608,
+     1619, 1625, 1641, 1642, 1657, 1665, 1673, 1681, 1694, 1697,
+     1710, 1721, 1727, 1738, 1744, 1755, 1766, 1781, 1787,  622,
+      626, 1798, 1804, 1819, 1820, 1835, 1841, 1856, 1859, 1867,
+     1880,  616, 1888, 1891, 1904,  622, 1912, 1928, 1927, 1944,
+      600, 1945, 1960, 1973, 1981, 1984, 2002, 1999, 2005, 2020,
 
-     1986,  770, 1987, 2002, 2015, 2023, 2026, 2044, 2041, 2047,
-     2062, 2065,  768, 2068, 2083, 2089, 2100, 2106,  778,  768,
-      775, 2121, 2153,  170,  151,  242,  200, 2138, 2153, 2159,
-     2170,  759, 2176, 2191, 2194, 2202, 2215, 2218, 2226, 2239,
-     2247, 2260, 2268, 2276, 2284, 2299, 2305, 2316, 2322, 2337,
-      773,  763,  755, 2338, 2358, 2355, 2376, 2375, 2391, 2397,
-     2408, 2419, 2430,  759, 2436, 2447, 2453,  738, 2464, 2475,
-     2481, 2492,  753, 2505, 2508, 2516, 2529,  737, 2540,  745,
-     2546, 2561, 2562,  731, 2577,  725,  721,  727, 4405,  280,
-      297,  294,  231, 2583, 2599, 2605,  728, 2616, 2627, 2638,
+     2023,  598, 2026, 2041, 2044, 2052, 2065,  610,  599,  601,
+     2076,  187, 2089, 2092, 2110, 2113,  582, 2116, 2133, 2136,
+     2144, 2157, 2160, 2168, 2181, 2189, 2202, 2210, 2218, 2226,
+     2241, 2247, 2258, 2264, 2279,  595,  585,  576, 2280, 2300,
+     2297, 2318, 2317, 2333, 2339, 2350, 2361, 2372,  582, 2378,
+     2389, 2395,  570, 2406, 2417, 2423, 2434,  586, 2447, 2450,
+     2458, 2471,  569, 2482,  573, 2488, 2503, 2504,  564, 2519,
+      556,  553,  558,  227, 2525, 2541, 2547,  556, 2558, 2564,
+     2575, 2581, 2592, 2598, 2609, 2620, 2626, 2643, 2649, 2660,
+     2666, 2677, 2683, 2694, 2700, 2716,  552,  559,  552, 2717,
 
-     2644, 2655, 2661, 2672, 2683, 2689, 2706, 2712, 2723, 2729,
-     2740, 2746, 2757, 2763, 2779,  724,  731,  723, 2780, 2795,
-     2801, 2812, 2818, 2833, 2839, 2850, 2865, 2871, 2882,  720,
-     2893, 2899,  747, 2910, 2916, 2927, 2940,  716, 2948, 2963,
-     2966, 2969,  707, 2984,  689, 2987, 2990,  704,  692,  687,
-      697,  693,  271,  295,  301,  712, 3005, 3018,  682, 3021,
-     3036, 3042, 3053, 3059, 3070, 3076, 3087, 3098, 3104, 3115,
-     3121, 3132, 3143, 3149, 3160,  124,  704,  677, 3166, 3177,
-     3188, 3194, 3205, 3211, 3226, 3227, 3242, 3248, 3259,  698,
-     3265,  681, 3276, 3287, 3298, 3304,  673, 3319, 3325,  658,
+     2732, 2738, 2749, 2755, 2770, 2776, 2787, 2802, 2808, 2819,
+      557, 2830, 2836,  583, 2847, 2853, 2864, 2877,  553, 2885,
+     2900, 2903, 2906,  534, 2921,  521, 2924, 2927,  536,  524,
+      520,  522,  521,  539, 2942, 2955,  509, 2958, 2973, 2979,
+     2990, 2996, 3007, 3013, 3024, 3035, 3041, 3052, 3058, 3069,
+     3080, 3086, 3097,  105,  530,  507, 3103, 3114, 3125, 3131,
+     3142, 3148, 3163, 3164, 3179, 3185, 3196,  528, 3202,  505,
+     3213, 3224, 3230, 3241,  498, 3247, 3262,  493, 3268,  514,
+     3284,    0,  495,  496,  473,  502,  251, 3285, 3300,  485,
+     3306, 3317, 3330, 3338, 3341, 3356, 3362, 3377, 3359, 3383,
 
-     3340,  680, 3346,    0,  660,  667,  643,  672,  438,  368,
-      366,  286, 3357, 3372,  654, 3378, 3389, 3402, 3410, 3413,
-     3428, 3434, 3449, 3431, 3455, 3466,  639,  633,  630,  634,
-     3472, 3483, 3489, 3500, 3506, 3517,  623, 3528,  620, 3534,
-      619, 3545,  619, 3556, 3562,  613, 3573,  600, 3579,  603,
-      604,  623,  594,  300,  466,  447,  360, 3590, 3596,    0,
-     3607, 3613, 3629, 3628, 3644, 3645, 3660, 3661,  593,  603,
-      584,    0, 3676, 3684, 3699,  590, 3700,  579,  591, 3715,
-      603, 3723,    0, 3731,  572, 3744,  579,  589,  531,  528,
-      443, 3783,  454,  568, 3768, 3769, 3784, 3785, 3800, 3808,
+     3394,  467,  459,  461,  470, 3400, 3411, 3417, 3428, 3434,
+     3445,  459, 3456,  455, 3462,  453, 3473,  463, 3484, 3490,
+      458, 3501,  441, 3507,  440,  436,  453,  420,  196, 3518,
+     3524,    0, 3535, 3541, 3557, 3556, 3572, 3573, 3588, 3589,
+      420,  429,  416,    0, 3604, 3612, 3627,  421, 3628,  412,
+      417, 3643,  422, 3651,    0, 3659,  396, 3672,  403,  418,
+      390,  391,  431, 3675, 3683, 3696, 3699, 3707, 3720, 3728,
+     3736,  371,  375,  343, 3744, 3752, 3760,  338, 3768,  341,
+      333, 3776,  323, 3784, 3792,  331,    0,  297,  268,  274,
+      295, 3800, 3808, 3816, 3824,  267,  287,  265, 3837, 3845,
 
-     3816, 3824,  529,  533,  527, 3832, 3840, 3848,  520, 3856,
-      523,  515, 3864,  512, 3872, 3880,  518,    0,  508,  496,
-      498,  397, 3912,  560,  517, 3897, 3898, 3913, 3921,  489,
-      507,  484, 3934, 3942,  483, 3950,  475,  477, 3958,  468,
-     3971, 3974,  469,  462,  468,  461,  424, 4405, 4018,  485,
-     4003, 4004,  461,  456,  455, 4019, 4020,    0, 4035,  454,
-      444, 4036,  440, 4051, 4057,  438,  434,  429,  432,  732,
-      441, 4068, 4079,    0,  419,    0, 4085,    0,  411, 4100,
-      399, 4103,    0,  372,  347,    0, 4147,  330, 4132,  258,
-     4143,  227,  214, 4149,  177,    0,  180, 4160,    0,  138,
-
-        0, 4166,    0,  134, 4177,    0,    0, 4405, 4222, 4234,
-     4246, 4258, 4270, 4282, 4294, 4305, 4306, 4310, 4321, 4333,
-     4345, 4356, 4367, 4378, 4383, 4388, 4393
+      266, 3853,  254,  256, 3861,  248, 3874, 3877,  245,  238,
+      243,  237,  255, 3885, 3898,  232,  227,  228, 3901, 3914,
+        0, 3922,  227,  218, 3925,  222, 3942, 3943,  218,  210,
+      201,  204,  217, 3958, 3959,    0,  171,    0, 3975,    0,
+      162, 3976,  154, 3993,    0,  151,  149,    0,  146, 4001,
+      127, 4009,  102,  105, 4017,   86,    0,   90, 4025,    0,
+       40,    0, 4038,    0,   68, 4041,    0,    0, 4249, 4086,
+     4097, 4108, 4119, 4130, 4141, 4152, 4162, 4164, 4174, 4185,
+     4196, 4206, 4216, 4226, 4230, 4234, 4238
     } ;
 
-static yyconst short int yy_def[728] =
+static yyconst short int yy_def[688] =
     {   0,
-      708,    1,  709,  709,  710,  710,  711,  711,  712,  712,
-      713,  713,  714,  714,  708,  708,  708,  708,  708,  715,
-      708,  716,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,  717,
-      708,  718,  708,  719,  708,  708,  708,  708,  708,  708,
-      708,  720,  720,  708,  721,  721,  708,  708,  708,  708,
-      722,  708,  708,  723,  723,  724,  708,  708,   21,  708,
-      708,  708,  715,  715,  708,  725,  708,  726,  716,  716,
-      708,  708,  708,  708,  708,  708,   31,   31,   31,   31,
+      669,    1,  670,  670,  671,  671,  672,  672,  673,  673,
+      674,  674,  675,  675,  669,  669,  669,  669,  669,  676,
+      669,  677,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,  669,
+      678,  669,  679,  669,  669,  669,  669,  669,  669,  669,
+      680,  680,  669,  681,  681,  669,  669,  669,  669,  682,
+      669,  669,  683,  683,  684,  669,  669,   21,  669,  669,
+      669,  676,  676,  669,  685,  669,  686,  677,  677,  669,
+      669,  669,  669,  669,  669,   31,   31,   31,   31,   31,
 
-       31,   31,  727,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,  727,  727,   31,
-       31,   31,   31,   31,   31,   31,   31,  727,   31,   31,
-       31,   31,  727,   31,   31,   31,   31,  727,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,  727,   31,   31,
-      727,  727,   31,  708,  717,  155,  155,  155,  718,  719,
-      708,  708,  720,  708,  721,  708,  722,   75,   75,  724,
-      708,  708,  708,  725,  726,  708,  708,  708,  708,  708,
+       31,  687,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,  687,  687,   31,   31,
+       31,   31,   31,   31,   31,   31,  687,   31,   31,   31,
+       31,  687,   31,   31,   31,   31,  687,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,  687,   31,   31,  687,
+      687,   31,  678,  679,  669,  669,  680,  669,  681,  669,
+      682,   74,   74,  684,  669,  669,  669,  685,  686,  669,
+      669,  669,  669,  669,   31,   31,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-
-       31,   31,   31,   31,  727,  727,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,  727,   31,   31,   31,
-      727,   31,   31,   31,   31,   31,  727,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,  727,   31,
-       31,   31,  727,  727,  727,   31,  708,  708,  155,  155,
-      155,  708,   75,   75,  708,  708,  708,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-      727,  727,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,  727,   31,   31,   31,  727,   31,   31,   31,
-
-       31,  727,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,  727,   31,   31,   31,   31,   31,  727,  727,
-      727,   31,  708,  155,  155,  155,   75,   31,   31,   31,
-       31,  727,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-      727,  727,  727,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,  727,   31,   31,   31,  727,   31,   31,
-       31,   31,  727,   31,   31,   31,   31,  727,   31,  727,
-       31,   31,   31,  727,   31,  727,  727,  727,  708,  155,
-      155,  155,   75,   31,   31,   31,  727,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,  687,  687,
 
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,  727,  727,  727,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,  727,
-       31,   31,  727,   31,   31,   31,   31,  727,   31,   31,
-       31,   31,  727,   31,  727,   31,   31,  727,  727,  727,
-      727,  727,  155,  155,  155,   75,   31,   31,  727,   31,
+      687,   31,   31,   31,  687,   31,   31,   31,   31,   31,
+      687,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,  687,   31,   31,   31,  687,  687,  687,   31,
+      669,   74,   74,  669,  669,  669,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,  727,  727,  727,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,  727,
-       31,  727,   31,   31,   31,   31,  727,   31,   31,  727,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,  687,
+      687,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,  687,   31,   31,   31,  687,   31,   31,   31,   31,
+      687,   31,   31,   31,   31,   31,   31,   31,   31,   31,
 
-       31,  727,   31,  727,  727,  727,  727,  727,  155,  155,
-      155,   75,   31,   31,  727,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,  727,  727,  727,  727,
-       31,   31,   31,   31,   31,   31,  727,   31,  727,   31,
-      727,   31,  727,   31,   31,  727,   31,  727,   31,  727,
-      727,  727,  727,  155,  155,  155,   75,   31,   31,  727,
-       31,   31,   31,   31,   31,   31,   31,   31,  727,  727,
-      727,  727,   31,   31,   31,  727,   31,  727,  727,   31,
-      727,   31,  727,   31,  727,   31,  727,  727,  727,  727,
-      155,  708,  155,  722,   31,   31,   31,   31,   31,   31,
+       31,  687,   31,   31,   31,   31,   31,  687,  687,  687,
+       31,   74,   31,   31,   31,   31,  687,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,  687,  687,  687,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,  687,   31,
+       31,   31,  687,   31,   31,   31,   31,  687,   31,   31,
+       31,   31,  687,   31,  687,   31,   31,   31,  687,   31,
+      687,  687,  687,   74,   31,   31,   31,  687,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,  687,  687,  687,   31,
 
-       31,   31,  727,  727,  727,   31,   31,   31,  727,   31,
-      727,  727,   31,  727,   31,   31,  727,  727,  727,  727,
-      727,  155,  708,  155,  722,   31,   31,   31,   31,  727,
-      727,  727,   31,   31,  727,   31,  727,  727,   31,  727,
-       31,   31,  727,  727,  727,  727,  155,  708,  708,  722,
-       31,   31,  727,  727,  727,   31,   31,  727,   31,  727,
-      727,   31,  727,   31,   31,  727,  727,  727,  727,  155,
-      722,   31,   31,  727,  727,  727,   31,  727,  727,   31,
-      727,   31,  727,  727,  727,  727,  708,  722,   31,  727,
-       31,  727,  727,   31,  727,  727,  722,   31,  727,  727,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+      687,   31,   31,  687,   31,   31,   31,   31,  687,   31,
+       31,   31,   31,  687,   31,  687,   31,   31,  687,  687,
+      687,  687,  687,   74,   31,   31,  687,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,  687,  687,  687,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,  687,   31,  687,
+       31,   31,   31,   31,  687,   31,   31,  687,   31,  687,
+       31,  687,  687,  687,  687,  687,   74,   31,   31,  687,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
 
-      727,   31,  727,  722,   31,  727,  722,    0,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708
+       31,  687,  687,  687,  687,   31,   31,   31,   31,   31,
+       31,  687,   31,  687,   31,  687,   31,  687,   31,   31,
+      687,   31,  687,   31,  687,  687,  687,  687,   74,   31,
+       31,  687,   31,   31,   31,   31,   31,   31,   31,   31,
+      687,  687,  687,  687,   31,   31,   31,  687,   31,  687,
+      687,   31,  687,   31,  687,   31,  687,   31,  687,  687,
+      687,  687,  682,   31,   31,   31,   31,   31,   31,   31,
+       31,  687,  687,  687,   31,   31,   31,  687,   31,  687,
+      687,   31,  687,   31,   31,  687,  687,  687,  687,  687,
+      682,   31,   31,   31,   31,  687,  687,  687,   31,   31,
+
+      687,   31,  687,  687,   31,  687,   31,   31,  687,  687,
+      687,  687,  682,   31,   31,  687,  687,  687,   31,   31,
+      687,   31,  687,  687,   31,  687,   31,   31,  687,  687,
+      687,  687,  682,   31,   31,  687,  687,  687,   31,  687,
+      687,   31,  687,   31,  687,  687,  687,  687,  682,   31,
+      687,   31,  687,  687,   31,  687,  687,  682,   31,  687,
+      687,  687,   31,  687,  682,   31,  687,  682,    0,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669
     } ;
 
-static yyconst short int yy_nxt[4484] =
+static yyconst short int yy_nxt[4327] =
     {   0,
        16,   17,   18,   17,   19,   20,   21,   22,   23,   16,
        24,   25,   26,   27,   28,   28,   28,   28,   28,   28,
        29,   19,   30,   30,   31,   32,   33,   34,   35,   36,
        37,   38,   39,   38,   38,   38,   40,   41,   42,   43,
        38,   44,   45,   46,   47,   48,   49,   38,   38,   38,
-       50,   19,   51,   52,   52,   52,   52,   52,   52,   52,
-       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
-       52,   52,   52,   52,   52,   23,   53,   23,   55,   56,
-       55,   56,   59,   59,   63,   66,   57,   64,   57,   60,
-       60,   63,   61,   61,   64,   66,   82,   82,   82,   82,
+       19,   50,   51,   51,   51,   51,   51,   51,   51,   51,
+       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
+       51,   51,   51,   51,   23,   52,   23,   54,   55,   54,
+       55,   58,   58,   62,   65,   56,   63,   56,   59,   59,
+       62,   60,   60,   63,   65,   81,   81,   81,   81,   81,
 
-       82,   82,   81,   67,  244,   81,   68,   81,  256,   94,
-       77,   78,   77,   67,  257,   79,   68,  245,   89,   89,
-       89,   77,   78,   77,   81,   81,   79,  156,   91,  250,
-       89,   89,   92,   92,   92,   92,   92,   92,   95,   95,
-       95,   95,   95,   95,   95,   97,  168,  327,  112,  171,
-      171,  171,  171,  171,  171,   97,   85,   97,   69,   97,
-       70,   82,   82,   82,   97,  251,  527,  156,   69,  707,
-       70,   71,   72,   73,   72,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   30,  528,   80,   87,   97,  708,
-      156,   71,   71,   71,   71,   30,  391,   80,   97,   75,
+       81,   80,   66,  668,   80,   67,   80,  667,   93,   76,
+       77,   76,   66,  238,   78,   67,   84,   88,   88,   88,
+       76,   77,   76,   80,   80,   78,  239,   90,  665,   88,
+       88,   91,   91,   91,   91,   91,   91,   94,   94,   94,
+       94,   94,   94,   94,  664,   96,   86,  502,  111,  165,
+      165,  165,  165,  165,  165,   96,   68,   96,   69,   96,
+       81,   81,   81,  662,   96,  503,   68,  661,   69,   70,
+       71,   72,   71,   70,   70,   70,   70,   70,   70,   70,
+       70,   70,   30,  660,   79,  242,  243,  658,  245,   70,
+       70,   70,   70,   30,  246,   79,  162,   74,   96,  162,
 
-       97,   97,   97,  708,  104,  390,  706,   97,  105,  156,
-      325,   97,  106,   97,  107,   97,   97,  156,  704,   97,
-       97,   71,   71,   71,  108,  109,   97,  393,   97,  110,
-       97,   97,  111,   97,  708,  127,  703,  168,   97,  178,
-      178,  178,  178,  178,  178,  178,   72,   71,   72,   71,
-       72,   73,   72,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,  128,  456,   97,  171,  171,  171,  168,   71,
-       71,   71,   71,  701,   97,  113,  114,   75,   97,  253,
-      254,  156,  326,   97,  129,  130,  115,  392,  131,  156,
-      168,  116,   97,  700,   97,   97,   97,  509,  132,   71,
+      312,  103,  165,  165,  165,  104,  563,  657,   96,  105,
+       96,  106,   96,   96,  374,  656,   96,   96,  654,   70,
+       70,  107,  108,   96,  162,   96,  109,   96,   96,  110,
+       96,  653,   96,  162,  651,   96,  172,  172,  172,  172,
+      172,  172,  172,   71,   70,   71,   70,   71,   72,   71,
+       70,   70,   70,   70,   70,   70,   70,   70,   70,  434,
+      649,   96,  648,  669,  162,  647,   70,   70,   70,   70,
+      646,   96,  112,  113,   74,   96,  645,  669,  115,   96,
+       96,  529,  643,  114,  641,  640,  638,  637,  162,   96,
+      636,   96,  633,   96,   96,  116,   70,   70,   96,  119,
 
-       71,   71,   97,   97,   97,   97,   97,   97,  117,   97,
-      156,   97,  453,  133,   97,  699,  557,  120,   97,  156,
-      121,  454,  455,  168,   72,   71,   72,   81,   97,  122,
-      123,  152,   97,  156,  156,  124,  156,   97,  510,  156,
-      156,   85,  511,  591,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-      594,  697,   87,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   97,  555,  168,   97,   97,
+       96,  632,  120,  631,   96,  630,   96,  669,   96,  629,
+       96,  121,  122,   96,   96,  626,  624,  123,  623,   96,
+       71,   70,   71,   80,  621,  117,   88,   88,   88,  618,
+      617,  616,  170,  613,  612,  611,  118,   84,   88,   88,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,  610,   86,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       96,  609,  606,   96,   96,   96,   96,   96,   96,   96,
 
-       97,   97,   97,   97,   97,  156,  696,  156,  556,   97,
-       98,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       99,   97,  100,   97,  101,   97,   97,   97,   97,  102,
-       97,   97,   97,   97,   97,  647,  156,  695,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-       97,  670,  554,  156,  693,  125,   97,  592,  592,  592,
-       97,  593,   97,  126,   97,  622,   97,  156,   97,   97,
-       97,  692,  156,  690,  688,   97,  156,  134,   97,  624,
-      135,  686,  118,  156,  685,  684,   97,  683,  136,  139,
+      604,  603,  601,  598,   96,   97,   96,   96,   96,   96,
+       96,   96,   96,   96,   96,   98,   96,   99,   96,  100,
+       96,   96,   96,   96,  101,   96,   96,   96,   96,   96,
+      597,  596,  102,  102,  102,  102,  102,  102,  102,  102,
+      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
+      102,  102,  102,  102,  124,   96,   96,  591,  590,  589,
+      588,  587,  125,  586,  583,   96,   96,   96,   96,   96,
+       96,  581,  128,  129,   96,  126,  130,  133,   96,  580,
+      134,  578,   96,  574,   96,  573,  131,  572,  135,  562,
+       96,   96,   96,   96,  136,  561,  138,   96,  560,   96,
 
-       97,  681,   97,  119,  137,  156,   97,   97,   97,   97,
-       97,  679,  140,  678,  676,   97,  141,  675,  144,   97,
-      674,   97,  671,   97,  145,   97,  669,  142,   97,  668,
-      667,  138,  143,   97,  666,   97,  663,   97,  661,   97,
-      660,  146,  658,   97,   97,  149,   97,   97,  147,  655,
-      654,  150,   97,  153,  653,  650,   97,  148,   97,  646,
-       97,  649,  649,  649,  645,   97,  154,  154,  154,  154,
-      154,  154,  154,  151,   89,   89,   89,  155,  644,  643,
-      176,   97,  640,  638,  637,  635,   89,   89,  632,  631,
-      630,   97,  157,   97,  625,   97,  621,  158,  167,  156,
+      132,  127,  139,   96,  559,   96,  140,   96,  143,   96,
+      557,   96,   96,   96,  144,   96,  555,  141,   96,  553,
+      137,  551,  142,   96,  550,   96,  548,   96,  544,   96,
+      543,  145,  542,   96,   96,  148,  541,   96,  146,   96,
+       96,  149,   96,  532,  528,  527,  147,  152,  526,   96,
+       96,   96,   96,   96,   96,  525,  523,  521,   96,   96,
+      518,  516,  150,   94,   94,   94,   94,   94,   94,   94,
+      514,  505,  504,  490,  151,  161,  487,  486,  485,  161,
+      161,  161,  161,  161,  161,  161,  161,  161,  484,   96,
+       96,  483,  482,  480,  478,  161,  161,  161,  161,   96,
 
-       97,  620,  167,  167,  167,  167,  167,  167,  167,  167,
-      167,   95,   95,   95,   95,   95,   95,   95,  167,  167,
-      167,  167,   97,   97,  178,  178,  178,  178,  178,  178,
-      178,  619,   97,  182,   97,   97,   97,   97,  618,  181,
-      617,   97,   97,   97,   97,  614,  612,  611,  167,  167,
-      167,  609,  605,   97,   97,   97,   97,   97,  184,   97,
-      604,  603,   97,   97,  590,  589,  183,  588,  587,   97,
-      585,   97,  583,   97,  167,  167,  581,  185,   97,  167,
-      167,  167,  167,  167,  167,  167,  167,  167,  579,   97,
-      578,  576,   97,  572,  186,  167,  167,  167,  167,   97,
+       96,   96,   96,   96,   96,   96,  475,  175,   96,   96,
+      470,  468,  456,  455,  454,  176,  437,   96,   96,   96,
+      433,   96,  432,  431,   96,  161,  161,  429,   96,  426,
+       96,   96,   96,   96,   96,  178,  424,   96,  419,  414,
+       96,  177,  411,  399,   96,  398,   96,  397,   96,  378,
+      161,  161,  179,   96,  373,  161,  161,  161,  161,  161,
+      161,  161,  161,  161,  372,   96,  371,  365,   96,  358,
+      180,  161,  161,  161,  161,   96,  353,   96,   96,   96,
+       96,   96,   96,  349,   96,  337,  181,   96,  163,  336,
+      166,   96,  162,   96,   96,  182,  310,  309,  308,  302,
 
-      571,   97,   97,   97,   97,   97,   97,  570,   97,  569,
-      187,   97,  169,  560,  553,   97,  552,   97,   97,  188,
-      551,  550,  548,  546,   97,  167,  167,  167,   97,   97,
-       97,  189,   97,  687,  687,  687,  543,   97,  541,   97,
-      539,   97,  530,   97,  190,   97,  529,  515,   97,  512,
-      508,  167,  192,   97,  507,   97,  506,   97,  191,   97,
-      505,  504,  502,   97,   97,   97,   97,   97,  500,   97,
-      497,  156,   97,  195,  492,  490,   97,  193,  194,   97,
-       97,   97,  196,   97,  478,   97,  477,  476,   97,  459,
-      452,  451,   97,  450,   97,  448,   97,   97,  197,  198,
+       96,  161,  161,  291,   96,   96,   96,  183,   96,  286,
+      282,  271,  270,   96,  246,   96,  244,   96,  162,   96,
+      184,   96,  241,  237,   96,  233,  161,  221,  186,   96,
+      215,   96,  211,   96,  185,   96,  200,  199,  174,   96,
+       96,   96,   96,   96,  173,   96,  171,  167,   96,  189,
+      166,  166,   96,  187,  188,   96,   96,   96,  190,   96,
+      160,   96,  158,   93,   96,  156,  155,   80,   96,   80,
+       96,   95,   96,   96,  191,  192,   96,   96,   92,   96,
+      194,   83,   80,   96,   80,   96,  197,   96,   96,   96,
+       96,   96,  193,  195,   96,   96,  669,  196,   96,  669,
 
-       97,   97,  445,   97,  200,  443,  438,   97,  433,   97,
-      203,   97,   97,   97,   97,   97,  199,  201,   97,   97,
-      430,  202,   97,  418,  417,  207,  416,  397,   97,  388,
-       97,  204,   97,   97,  387,  386,   97,   97,  380,  208,
-      373,  368,  364,   97,   97,   97,   97,   97,   97,  352,
-       97,  351,   97,  172,   97,   97,   97,  168,  209,   97,
-      210,  324,  321,   97,  320,  319,  313,  302,  297,   97,
-       97,   97,  293,   97,  282,  281,  211,  212,   97,  257,
-       97,   97,   97,  213,   97,  255,  168,   97,  252,   97,
-      156,   97,  243,   97,  239,   97,  227,   97,   97,  215,
+      669,  201,  669,  669,   96,  669,   96,  198,   96,   96,
+      669,  669,   96,   96,  669,  202,  669,  669,  669,   96,
+       96,   96,   96,   96,   96,  669,   96,  669,   96,  669,
+       96,   96,   96,  669,  203,   96,  204,  669,  669,   96,
+      669,  669,  669,  669,  669,   96,   96,   96,  669,   96,
+      669,  669,  205,  206,   96,  669,   96,   96,   96,  207,
+       96,  669,  669,   96,  669,   96,  669,   96,  669,   96,
+      669,   96,  669,   96,   96,  209,   96,   96,  669,  208,
+      669,  669,   96,  669,  210,  669,   96,   96,   96,  669,
+       96,  669,  669,   96,  669,  212,  669,   96,  669,   96,
 
-       97,   97,  221,  214,  217,  206,   97,  205,  216,  180,
-       97,   97,   97,  179,   97,  177,  173,   97,  172,  218,
-      172,   97,  166,   97,   97,   97,   97,   97,   97,  164,
-       97,   94,  219,   97,  162,   97,  161,   97,   97,   97,
-       81,   97,   81,   96,   93,   97,   97,   97,   97,   97,
-       97,   97,   97,  220,   97,   84,  222,   97,   81,   81,
-      708,   97,   97,   97,  708,   97,  708,  708,  708,  708,
-       97,  223,   97,  708,   97,   97,   97,  708,  225,  708,
-      708,  224,  226,  708,  708,   97,  708,   97,  708,   97,
-      228,   97,  708,  708,   97,  708,  708,   97,  708,  708,
+       96,   96,   96,   96,   96,  669,   96,  669,  213,   96,
+      669,   96,  669,   96,   96,   96,  669,   96,  669,  669,
+      669,   96,   96,   96,   96,   96,   96,   96,   96,  214,
+       96,  669,  216,   96,  669,  669,  669,   96,   96,   96,
+      669,   96,  669,  669,  669,  669,   96,  217,   96,  669,
+       96,   96,   96,  669,  219,  669,  669,  218,  220,  669,
+      669,   96,  669,   96,  669,   96,  222,   96,  669,  669,
+       96,  669,  669,   96,  669,  669,  669,  223,  669,   96,
+      669,   96,  669,   96,   96,   96,   96,   96,  224,  669,
+       96,  225,   96,  669,   96,  669,   96,  669,   96,  669,
 
-      708,  229,  708,   97,  708,   97,  708,   97,   97,   97,
-       97,   97,  230,  708,   97,  231,   97,  708,   97,  708,
-       97,  708,   97,  708,   97,   97,   97,   97,   97,  235,
-      233,  708,  232,   97,  708,   97,  708,  234,  708,   97,
-       97,   97,  708,  708,   97,  708,  236,  708,  708,  708,
-       97,   97,   97,   97,   97,   97,   97,   97,  708,   97,
-       97,  708,  708,  708,  708,  708,   97,   97,   97,   97,
-       97,  238,   97,   97,  241,  237,   97,  242,  708,  240,
-      708,  708,   97,   97,   97,   97,   97,   97,   97,  708,
-      708,   97,   97,  708,  708,  708,  708,  708,   97,  708,
+       96,   96,   96,   96,   96,  229,  227,  669,  226,   96,
+      669,   96,  669,  228,  669,   96,   96,   96,  669,  669,
+       96,  669,  230,  669,  669,  669,   96,   96,   96,   96,
+       96,   96,   96,   96,  669,   96,   96,  669,  669,  669,
+      669,  669,   96,   96,   96,   96,   96,  232,   96,   96,
+      235,  231,   96,  236,  669,  234,  669,  669,   96,   96,
+       96,   96,   96,   96,   96,  669,  669,   96,   96,  669,
+      669,  669,  669,  669,   96,  669,   96,  669,   96,  669,
+      669,  669,  240,   96,  172,  172,  172,  172,  172,  172,
+      172,   96,   96,  669,  247,  669,  669,  669,  669,  669,
 
-       97,  708,   97,  248,  248,  248,  246,   97,  154,  154,
-      154,  154,  154,  154,  154,  708,  708,  708,  708,  708,
-      708,  708,  708,   97,   97,  708,  258,  708,  708,  708,
-      708,  708,  708,   97,   97,   97,   97,   97,   97,   97,
-       97,  249,   97,   97,  708,  708,  247,  708,  708,   97,
-      259,   97,   97,   97,   97,   97,  708,  708,   97,   97,
-      708,  708,  708,   97,  708,   97,   97,   97,  260,   97,
-      261,  708,  708,   97,   97,   97,   97,   97,   97,   97,
-       97,  708,   97,  708,  708,   97,  708,   97,  708,   97,
-      708,   97,  708,   97,  708,   97,  262,  263,   97,   97,
+      669,   96,   96,   96,   96,   96,   96,   96,   96,  669,
+       96,   96,  669,  669,  669,  669,  669,   96,  248,   96,
+       96,   96,   96,   96,  669,  669,   96,   96,  669,  669,
+      669,   96,  669,   96,   96,   96,  249,   96,  250,  669,
+      669,   96,   96,   96,   96,   96,   96,   96,   96,  669,
+       96,  669,  669,   96,  669,   96,  669,   96,  669,   96,
+      669,   96,  669,   96,  251,  252,   96,   96,  669,   96,
+      669,   96,  669,   96,   96,   96,  669,   96,  254,  253,
+      669,   96,   96,   96,   96,   96,  669,  669,  669,  669,
+       96,  669,   96,  669,   96,   96,   96,  669,   96,  669,
 
-      708,   97,  708,   97,  708,   97,   97,   97,  708,   97,
-      265,  264,  708,   97,   97,   97,   97,   97,  708,  708,
-      708,  708,   97,  708,   97,  708,   97,   97,   97,  708,
-       97,  708,  708,  266,   97,   97,   97,   97,  267,   97,
-      708,   97,  708,   97,  268,  269,   97,  270,   97,   97,
-      708,  708,  272,  708,  708,  271,  708,  708,   97,   97,
-       97,   97,   97,   97,   97,  708,  708,   97,   97,  708,
-       97,  708,  708,  708,   97,  708,   97,  273,   97,  708,
-       97,   97,   97,   97,   97,  708,  708,   97,  708,   97,
-      275,   97,  274,   97,  708,   97,  708,   97,   97,   97,
+      669,  255,   96,   96,   96,   96,  256,   96,  669,   96,
+      669,   96,  257,  258,   96,  259,   96,   96,  669,  669,
+      261,  669,  669,  260,  669,  669,   96,   96,   96,   96,
+       96,   96,   96,  669,  669,   96,   96,  669,   96,  669,
+      669,  669,   96,  669,   96,  262,   96,  669,   96,   96,
+       96,   96,   96,  669,  669,   96,  669,   96,  264,   96,
+      263,   96,  669,   96,  669,   96,   96,   96,   96,   96,
+      669,  669,   96,  669,   96,  267,  265,  669,   96,  266,
+       96,  669,   96,   96,   96,   96,   96,  669,  669,  669,
+      669,   96,  669,   96,   96,   96,  669,   96,  669,  669,
 
-       97,   97,  708,  708,   97,  708,   97,  278,  276,  708,
-       97,  277,   97,  708,   97,   97,   97,   97,   97,  708,
-      708,  708,  708,   97,  708,   97,   97,   97,  708,   97,
-      708,  708,  279,  708,   97,  708,   97,  280,   97,   97,
-       97,  708,  708,  708,  708,   97,  708,   97,  708,   97,
-       97,   97,  708,   97,  708,  708,  283,   97,   97,  284,
-      285,   97,   97,  286,   97,   97,   97,  708,   97,   97,
-      708,   97,  708,  708,  289,  287,  708,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,  288,   97,  290,   97,
-       97,  708,   97,  708,  708,   97,  708,  708,  708,   97,
+      268,  669,   96,  669,   96,  269,   96,   96,   96,  669,
+      669,  669,  669,   96,  669,   96,  669,   96,   96,   96,
+      669,   96,  669,  669,  272,   96,   96,  273,  274,   96,
+       96,  275,   96,   96,   96,  669,   96,   96,  669,   96,
+      669,  669,  278,  276,  669,   96,   96,   96,   96,   96,
+       96,   96,   96,   96,  277,   96,  279,   96,   96,  669,
+       96,  669,  669,   96,  669,  669,  669,   96,  669,   96,
+       96,   96,   96,   96,   96,   96,   96,   96,   96,  280,
+      669,   96,   96,  669,  283,  669,  669,  669,  281,  669,
+       96,   96,   96,   96,  669,   96,   96,   96,  669,  284,
 
-      708,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,  291,  708,   97,   97,  708,  294,  708,  708,  708,
-      292,  708,   97,   97,   97,   97,  708,   97,   97,   97,
-      708,  295,   97,  708,   97,  708,  708,  708,   97,  708,
-       97,  296,   97,  708,   97,   97,   97,   97,   97,  708,
-      708,  708,  708,   97,  708,   97,   97,   97,  708,   97,
-      708,  708,   97,  298,   97,  708,   97,  708,   97,  708,
-       97,  708,   97,   97,   97,   97,   97,  708,  708,  299,
-      708,   97,  708,   97,   97,   97,  708,   97,  708,  708,
-      300,  708,   97,  708,   97,   97,   97,  708,   97,  708,
+       96,  669,   96,  669,  669,  669,   96,  669,   96,  285,
+       96,  669,   96,   96,   96,   96,   96,  669,  669,  669,
+      669,   96,  669,   96,   96,   96,  669,   96,  669,  669,
+       96,  287,   96,  669,   96,  669,   96,  669,   96,  669,
+       96,   96,   96,   96,   96,  669,  669,  288,  669,   96,
+      669,   96,   96,   96,  669,   96,  669,  669,  289,  669,
+       96,  669,   96,   96,   96,  669,   96,  669,  293,   96,
+      669,   96,  290,  292,  669,   96,  669,   96,  669,   96,
+       96,   96,   96,   96,  669,  669,   96,  669,   96,  669,
+       96,  669,   96,  669,   96,  669,   96,  669,   96,  294,
 
-      304,   97,  708,   97,  301,  303,  708,   97,  708,   97,
-      708,   97,   97,   97,   97,   97,  708,  708,   97,  708,
-       97,  708,   97,  708,   97,  708,   97,  708,   97,  708,
-       97,  305,   97,   97,   97,  708,  306,   97,  708,  708,
-      708,  307,  708,   97,   97,   97,   97,   97,   97,   97,
-      708,  708,   97,   97,  708,  708,  708,  708,  708,   97,
-       97,   97,  708,   97,  708,  708,   97,  308,   97,  708,
-       97,  708,   97,  708,   97,  708,   97,  309,   97,   97,
-       97,   97,  708,  310,  311,   97,  708,   97,  708,  708,
-      312,   97,  708,   97,  708,   97,  708,   97,   97,   97,
+       96,   96,   96,  669,  295,   96,  669,  669,  669,  296,
+      669,   96,   96,   96,   96,   96,   96,   96,  669,  669,
+       96,   96,  669,  669,  669,  669,  669,   96,   96,   96,
+      669,   96,  669,  669,   96,  297,   96,  669,   96,  669,
+       96,  669,   96,  669,   96,  298,   96,   96,   96,   96,
+      669,  299,  300,   96,  669,   96,  669,  669,  301,   96,
+      669,   96,  669,   96,  669,   96,   96,   96,   96,   96,
+      669,  669,  669,  669,   96,  669,   96,   96,   96,  303,
+       96,  304,  307,  669,  669,   96,  305,   96,   96,   96,
+      669,   96,  669,  669,  669,  306,   96,  669,   96,   96,
 
-       97,   97,  708,  708,  708,  708,   97,  708,   97,   97,
-       97,  314,   97,  315,  318,  708,  708,   97,  316,   97,
-       97,   97,  708,   97,  708,  708,  708,  317,   97,  708,
-       97,   97,   97,  708,   97,  708,  708,  322,  708,   97,
-      708,   97,  708,   97,  708,   97,  248,  248,  248,  708,
-       97,  708,  708,  708,  708,   97,  708,  708,  323,  323,
-      323,  323,  323,  323,  323,   97,   97,  328,  708,   97,
-      708,  708,   97,  329,   97,  708,   97,  708,   97,  708,
-       97,  708,   97,  330,   97,   97,   97,   97,   97,  708,
-      708,   97,  708,  708,  708,  708,  708,   97,   97,  331,
+       96,  669,   96,  669,  669,  311,  669,   96,  669,   96,
+       96,   96,  669,   96,  669,  669,   96,  669,   96,  669,
+       96,  669,  313,  314,   96,  669,   96,   96,   96,   96,
+       96,  669,  669,   96,  669,   96,  669,   96,  315,   96,
+      669,   96,  669,   96,   96,  316,   96,   96,  669,  669,
+       96,  669,   96,  318,   96,  669,   96,  669,   96,  669,
+       96,  669,   96,   96,   96,  319,   96,   96,  320,   96,
+      669,  669,  669,  669,  669,  669,   96,   96,   96,   96,
+       96,   96,   96,  669,  669,   96,   96,  669,  317,  669,
+       96,  669,   96,  669,   96,  669,   96,  669,   96,  321,
 
-       97,   97,   97,  334,   97,   97,   97,   97,  333,  708,
-      708,  708,  708,  708,   97,   97,   97,   97,   97,   97,
-       97,  335,  708,   97,   97,  708,   97,  708,  708,  708,
-       97,  708,   97,  332,   97,  708,   97,   97,   97,   97,
-       97,  708,  708,  336,  708,   97,  708,   97,   97,   97,
-      337,   97,  708,  708,  708,  708,   97,  708,   97,  708,
-       97,  708,   97,   97,  338,  339,   97,   97,  708,   97,
-      708,  708,  708,   97,  708,   97,   97,   97,   97,   97,
-       97,  341,  340,   97,   97,   97,  342,   97,   97,  343,
-       97,  708,  708,  344,   97,  708,   97,   97,   97,   97,
+       96,   96,   96,  322,   96,  324,   96,  669,   96,   96,
+       96,  669,   96,  669,  323,  669,   96,   96,   96,   96,
+       96,  669,   96,  669,  669,   96,  669,  669,  669,   96,
+      669,   96,   96,   96,  326,   96,   96,  327,  325,  669,
+      669,   96,  669,  669,  669,   96,   96,   96,  328,   96,
+      669,  669,   96,  669,   96,  329,   96,  669,   96,  669,
+       96,  669,   96,   96,   96,   96,   96,  669,  669,   96,
+      669,   96,  669,   96,  669,   96,  331,  330,  669,   96,
+       96,   96,   96,   96,  669,  669,  669,  669,   96,  669,
+       96,   96,   96,  669,   96,  669,  332,  669,  669,   96,
 
-       97,   97,   97,   97,   97,   97,   97,  708,  708,   97,
-      708,   97,  708,  708,  708,   97,  708,   97,  346,  345,
-      708,   97,   97,   97,   97,   97,  708,  708,  708,  708,
-       97,  708,   97,   97,   97,  708,   97,  708,  347,  708,
-      708,   97,  708,   97,  708,  348,  708,   97,   97,  349,
-      708,  350,   97,  708,   97,  708,  708,  708,   97,  708,
-       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
-      708,   97,  708,   97,  708,   97,  708,   97,  708,   97,
-      708,   97,  708,   97,   97,   97,   97,   97,  708,  354,
-       97,  708,  708,  355,  708,  708,   97,   97,   97,   97,
+      669,   96,  669,  333,  669,   96,   96,  334,  669,  335,
+       96,  669,   96,  669,  669,  669,   96,  669,   96,  669,
+       96,  669,   96,   96,   96,   96,   96,  669,  669,   96,
+      669,   96,  669,   96,  669,   96,  669,   96,  669,   96,
+      669,   96,   96,   96,   96,   96,  669,  339,   96,  669,
+      669,  340,  669,  669,   96,   96,   96,   96,   96,   96,
+       96,  341,  669,   96,   96,  343,   96,  338,  669,  669,
+       96,  669,   96,  669,   96,  347,   96,  669,   96,  342,
+       96,   96,  344,  669,   96,   96,  345,  669,  669,  669,
+      669,   96,   96,   96,   96,   96,   96,  346,   96,  669,
 
-       97,   97,   97,  356,  708,   97,   97,  358,   97,  708,
-      353,  708,   97,  708,   97,  708,   97,  362,   97,  708,
-       97,  357,   97,   97,  359,  708,   97,   97,  360,  708,
-      708,  708,  708,   97,   97,   97,   97,   97,   97,  361,
-       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
-      708,  363,  708,   97,  708,   97,  365,   97,   97,   97,
-      708,   97,  708,  708,  708,   97,   97,   97,   97,   97,
-       97,   97,   97,  708,   97,  708,  366,   97,  708,   97,
-      370,   97,  369,   97,  367,   97,  708,  708,  708,   97,
-       97,   97,  708,   97,   97,   97,  708,  371,   97,  708,
+       96,  669,   96,   96,   96,   96,   96,  669,  669,  348,
+      669,   96,  669,   96,  350,   96,   96,   96,  669,   96,
+      669,  669,  669,   96,   96,   96,   96,   96,   96,   96,
+       96,  669,   96,  669,  351,   96,  669,   96,  355,   96,
+      354,   96,  352,   96,  669,  669,  669,   96,   96,   96,
+      669,   96,   96,   96,  669,  356,   96,  669,  669,  669,
+      669,  669,   96,   96,   96,   96,   96,   96,  357,   96,
+       96,   96,   96,  669,  669,  669,  669,  669,  669,   96,
+       96,   96,   96,   96,   96,   96,  669,  669,   96,   96,
+      669,  669,  669,  669,  669,   96,  669,   96,   96,   96,
 
-      708,  708,  708,  708,   97,   97,   97,   97,   97,   97,
-      372,   97,   97,   97,   97,  708,  708,  708,  708,  708,
-      708,   97,   97,   97,   97,   97,   97,   97,  708,  708,
-       97,   97,  708,  708,  708,  708,  708,   97,  708,   97,
-       97,   97,  708,  375,  708,  374,   97,  708,   97,  708,
-       97,   97,   97,  708,   97,  708,  708,  708,   97,   97,
-       97,   97,   97,  376,  708,   97,   97,   97,  377,   97,
-       97,  708,   97,  708,  708,  379,   97,  708,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,  708,
-       97,   97,  708,   97,  708,  708,  708,   97,  708,   97,
+      669,  360,  669,  359,   96,  669,   96,  669,   96,   96,
+       96,  669,   96,  669,  669,  669,   96,   96,   96,   96,
+       96,  361,  669,   96,   96,   96,  362,   96,   96,  669,
+       96,  669,  669,  364,   96,  669,   96,   96,   96,   96,
+       96,   96,   96,   96,   96,   96,   96,  669,   96,   96,
+      669,   96,  669,  669,  669,   96,  669,   96,   96,   96,
+       96,   96,   96,  366,   96,   96,   96,   96,  363,   96,
+       96,  669,  368,  669,  669,  669,   96,   96,   96,   96,
+       96,   96,  669,   96,  669,  367,  669,   96,   96,   96,
+       96,   96,  669,  669,  669,  669,   96,  669,  669,  669,
 
-       97,   97,   97,   97,   97,  381,   97,   97,   97,   97,
-      708,  378,   97,  708,   97,  708,  708,  383,   97,  708,
-       97,  708,   97,  708,   97,   97,   97,  382,   97,  708,
-      708,   97,  708,   97,  708,   97,  708,   97,  708,   97,
-      708,   97,  708,   97,   97,   97,   97,  708,  385,  708,
-       97,  708,  708,  708,  708,  708,   97,  708,   97,  708,
-       97,  384,  708,   97,  708,   97,  323,  323,  323,  323,
-      323,  323,  323,   97,  708,   97,  708,   97,   97,  395,
-      708,  394,   97,  396,   97,  708,  708,  708,   97,  708,
-       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
+       96,   96,   96,  669,   96,  669,  669,  370,  669,   96,
+      669,   96,  369,   96,   96,   96,  669,   96,  376,  669,
+       96,  669,  669,  669,   96,  669,   96,   96,   96,   96,
+      669,   96,  375,   96,  377,   96,   96,  669,   96,  669,
+      379,   96,  669,  669,  669,   96,  669,   96,   96,   96,
+       96,   96,   96,   96,   96,   96,  669,   96,   96,  380,
+       96,   96,  669,  669,  381,  669,  669,  669,   96,   96,
+       96,   96,   96,   96,  669,   96,  669,   96,  669,   96,
+       96,   96,   96,   96,  383,   96,  669,  669,   96,  669,
+      669,  669,   96,   96,  382,   96,   96,   96,  669,   96,
 
-      398,   97,  708,   97,  389,   97,  708,   97,  708,   97,
-      708,   97,  708,   97,   97,   97,   97,  399,  708,   97,
-       97,  708,  400,  708,  708,  708,   97,   97,   97,   97,
-       97,   97,  708,   97,  708,   97,  708,   97,   97,   97,
-       97,   97,  402,   97,  708,  708,   97,  708,  708,  708,
-       97,   97,  401,   97,   97,   97,  708,   97,  403,   97,
-      708,   97,   97,   97,   97,   97,  708,  708,  708,  708,
-       97,  708,   97,  708,  404,  405,   97,  708,   97,  406,
-      708,  708,   97,   97,   97,   97,   97,  407,  708,  708,
-      708,   97,  708,   97,  708,   97,  408,   97,  708,   97,
+      384,   96,  669,   96,   96,   96,   96,   96,  669,  669,
+      669,  669,   96,  669,   96,  669,  385,  386,   96,  669,
+       96,  387,  669,  669,   96,   96,   96,   96,   96,  388,
+      669,  669,  669,   96,  669,   96,  669,   96,  389,   96,
+      669,   96,  390,   96,  669,   96,   96,   96,  669,   96,
+      669,   96,  669,   96,   96,   96,  669,   96,  669,  391,
+      669,   96,   96,   96,  669,   96,   96,  393,  669,  392,
+       96,  669,   96,  669,  669,  669,   96,  669,   96,  669,
+       96,  669,   96,   96,   96,   96,   96,  669,  669,   96,
+      394,   96,  669,   96,  669,   96,  669,   96,  669,   96,
 
-      409,   97,  708,   97,   97,   97,  708,   97,  708,   97,
-      708,   97,   97,   97,  708,   97,  708,  410,  708,   97,
-       97,   97,  708,   97,   97,  412,  708,  411,   97,  708,
-       97,  708,  708,  708,   97,  708,   97,  708,   97,  708,
-       97,   97,   97,   97,   97,  708,  708,   97,  413,   97,
-      708,   97,  708,   97,  708,   97,  708,   97,  414,  415,
-       97,   97,   97,   97,  708,  708,   97,  708,  708,  708,
-      419,  708,   97,   97,   97,   97,   97,   97,  708,  708,
-       97,   97,   97,   97,  420,  708,  421,  708,  708,  708,
-       97,  708,   97,   97,   97,   97,  708,   97,  422,   97,
+      395,  396,   96,   96,   96,   96,  669,  669,   96,  669,
+      669,  669,  400,  669,   96,   96,   96,   96,   96,   96,
+      669,  669,   96,   96,   96,   96,  401,  669,  402,  669,
+      669,  669,   96,  669,   96,   96,   96,   96,  669,   96,
+      403,   96,   96,   96,   96,  404,  669,  669,  669,  669,
+      669,  669,   96,   96,  405,   96,   96,   96,   96,  669,
+      669,   96,   96,  669,   96,  669,  669,  407,   96,  669,
+       96,  669,   96,  669,   96,   96,   96,  406,   96,  409,
+      669,  669,  410,   96,  669,   96,   96,   96,  669,   96,
+      669,  669,  408,  669,   96,  669,   96,   96,   96,  669,
 
-       97,   97,   97,  423,  708,  708,  708,  708,  708,  708,
-       97,   97,  424,   97,   97,   97,   97,  708,  708,   97,
-       97,  708,   97,  708,  708,  426,   97,  708,   97,  708,
-       97,  708,   97,   97,   97,  425,   97,  428,  708,  708,
-      429,   97,  708,   97,   97,   97,  708,   97,  708,  708,
-      427,  708,   97,  708,   97,   97,   97,  708,   97,  708,
-      708,   97,  708,   97,  708,   97,  708,   97,  708,   97,
-      708,   97,   97,   97,   97,   97,  708,  708,   97,  431,
-       97,  708,   97,  708,   97,  708,   97,  708,   97,   97,
-      432,   97,   97,  708,  708,  708,  708,   97,  708,   97,
+       96,  669,  669,   96,  669,   96,  669,   96,  669,   96,
+      669,   96,  669,   96,   96,   96,   96,   96,  669,  669,
+       96,  412,   96,  669,   96,  669,   96,  669,   96,  669,
+       96,   96,  413,   96,   96,  669,  669,  669,  669,   96,
+      669,   96,   96,   96,  669,   96,  669,  415,   96,  416,
+       96,  669,   96,  669,   96,  669,   96,  669,   96,   96,
+      417,   96,   96,  669,  669,  669,  669,   96,  669,   96,
+      669,   96,   96,   96,  669,   96,  669,  418,   96,  420,
+      669,  669,   96,   96,   96,   96,   96,  421,  422,   96,
+      669,   96,  669,   96,   96,   96,   96,   96,  669,  669,
 
-       97,   97,  708,   97,  708,  434,   97,  435,   97,  708,
-       97,  708,   97,  708,   97,  708,   97,   97,  436,   97,
-       97,  708,  708,  708,  708,   97,  708,   97,  708,   97,
-       97,   97,  708,   97,  708,  437,   97,  439,  708,  708,
-       97,   97,   97,   97,   97,  440,  441,   97,  708,   97,
-      708,   97,   97,   97,   97,   97,  708,  708,  708,  708,
-       97,  708,  708,  708,   97,   97,   97,  708,   97,  708,
-      708,   97,  444,   97,  708,   97,  442,   97,  708,   97,
-      708,   97,  708,   97,   97,   97,   97,   97,  708,  446,
-       97,  708,  708,  708,  708,  708,   97,   97,   97,   97,
+      669,  669,   96,  669,  669,  669,   96,   96,   96,  669,
+       96,  669,  669,   96,  425,   96,  669,   96,  423,   96,
+      669,   96,  669,   96,  669,   96,   96,   96,   96,   96,
+      669,  427,   96,  669,  669,  669,  669,  669,   96,   96,
+       96,   96,   96,   96,   96,  428,  669,   96,   96,  669,
+       96,  669,  669,  669,   96,  669,   96,  669,   96,  669,
+       96,  669,   96,   96,   96,  435,   96,  669,  669,   96,
+      669,  669,   96,  669,  669,  669,   96,  669,   96,  669,
+       96,  669,   96,   96,   96,   96,   96,  669,  430,   96,
+      436,   96,  669,   96,  669,  438,  669,   96,  669,   96,
 
-       97,   97,   97,  447,  708,   97,   97,  708,   97,  708,
-      708,  708,   97,  708,   97,  708,   97,  708,   97,  708,
-       97,   97,   97,  457,   97,  708,  708,   97,  708,  708,
-       97,  708,  708,  708,   97,  708,   97,  708,   97,  708,
-       97,   97,   97,   97,   97,  708,  708,  449,  458,   97,
-      708,   97,   97,  460,  708,   97,  708,  708,  708,  708,
-       97,  708,   97,   97,   97,  708,   97,  708,  708,   97,
-      461,   97,  462,   97,  708,   97,  708,   97,  708,   97,
-       97,   97,   97,   97,  708,  708,   97,  463,   97,  708,
-       97,  708,   97,  708,   97,  708,   97,   97,  464,   97,
+       96,   96,   96,   96,  669,  669,   96,  439,   96,  440,
+       96,  669,   96,  669,   96,  669,   96,   96,   96,   96,
+       96,  669,  669,   96,  441,   96,  669,   96,  669,   96,
+      669,   96,  669,   96,   96,  442,   96,   96,  669,  669,
+      669,  669,   96,  669,   96,   96,   96,  444,   96,  669,
+      669,   96,  443,   96,  669,   96,  669,   96,  669,   96,
+      669,   96,  669,   96,   96,   96,  669,  669,   96,  445,
+       96,  446,  669,  669,   96,  669,  447,  669,   96,  669,
+       96,  669,   96,  669,   96,   96,   96,   96,   96,  669,
+      449,   96,  669,   96,  669,   96,  669,  448,  669,   96,
 
-       97,  708,  708,  708,  708,   97,  708,   97,   97,   97,
-      466,   97,  708,  708,   97,  465,   97,  708,   97,  708,
-       97,  708,   97,  708,   97,  708,   97,   97,   97,  708,
-      708,   97,  467,   97,  468,  708,  708,   97,  708,  469,
-      708,   97,  708,   97,  708,   97,  708,   97,   97,   97,
-       97,   97,  708,  471,   97,  708,   97,  708,   97,  708,
-      470,  708,   97,  708,   97,   97,   97,   97,   97,  708,
-      708,   97,  708,   97,  708,   97,  708,   97,  472,   97,
-      708,   97,   97,   97,   97,   97,  708,  708,   97,  708,
-       97,  708,   97,  708,   97,  474,   97,  708,   97,  473,
+      669,   96,   96,   96,   96,   96,  669,  669,   96,  669,
+       96,  669,   96,  669,   96,  450,   96,  669,   96,   96,
+       96,   96,   96,  669,  669,   96,  669,   96,  669,   96,
+      669,   96,  452,   96,  669,   96,  451,   96,   96,   96,
+      453,   96,   96,  669,   96,  669,  457,  669,  669,  669,
+      669,   96,   96,   96,   96,   96,   96,   96,  669,  669,
+       96,   96,  669,   96,  458,  459,  669,   96,  669,   96,
+      669,   96,  669,   96,   96,   96,   96,   96,  669,  669,
+       96,  669,   96,  461,   96,  669,   96,  669,   96,  669,
+       96,  460,   96,   96,   96,   96,  462,  669,  669,   96,
 
-       97,   97,   97,  475,   97,   97,  708,   97,  708,  479,
-      708,  708,  708,  708,   97,   97,   97,   97,   97,   97,
-       97,  708,  708,   97,   97,  708,   97,  480,  481,  708,
-       97,  708,   97,  708,   97,  708,   97,   97,   97,   97,
-       97,  708,  708,   97,  708,   97,  483,   97,  708,   97,
-      708,   97,  708,   97,  482,   97,   97,   97,   97,  484,
-      708,  708,   97,  708,   97,  485,  708,  708,   97,  708,
-       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
-      708,  708,  708,   97,  708,   97,  708,   97,  708,   97,
-       97,  486,  708,  487,   97,  708,   97,  708,  708,  708,
+      669,   96,  463,  669,  669,   96,  669,   96,  669,   96,
+      669,   96,   96,   96,   96,   96,  669,  669,  669,  669,
+       96,  669,   96,  669,   96,  669,   96,   96,  464,  669,
+      465,   96,  669,   96,  669,  669,  669,   96,  669,   96,
+      669,   96,  669,   96,   96,   96,   96,   96,  669,  669,
+      466,  467,   96,  669,   96,   96,   96,  669,   96,  669,
+      469,   96,  669,   96,  669,   96,  669,   96,  669,   96,
+      669,   96,   96,   96,   96,   96,  669,  669,   96,  669,
+       96,  669,   96,  669,  471,  669,   96,  669,   96,   96,
+      472,   96,   96,  669,  669,  669,  669,   96,  669,   96,
 
-       97,  708,   97,  708,   97,  708,   97,   97,   97,   97,
-       97,  708,  708,  488,  489,   97,  708,   97,   97,   97,
-      708,   97,  708,  491,   97,  708,   97,  708,   97,  708,
-       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
-      708,   97,  708,   97,  708,   97,  708,  493,  708,   97,
-      708,   97,   97,  494,   97,   97,  708,  708,  708,  708,
-       97,  708,   97,  708,   97,   97,   97,  708,  496,  708,
-      495,   97,  708,   97,  708,   97,  708,   97,  708,   97,
-      708,  708,  708,   97,   97,   97,  708,   97,   97,  499,
-      708,   97,   97,  498,   97,  708,  708,  708,   97,  708,
+      669,   96,   96,   96,  669,  474,  669,  473,   96,  669,
+       96,  669,   96,  669,   96,  669,   96,  669,  669,  669,
+       96,   96,   96,  669,   96,   96,  477,  669,   96,   96,
+      476,   96,  669,  669,  669,   96,  669,   96,   96,   96,
+       96,   96,   96,   96,   96,   96,   96,   96,  479,   96,
+       96,  669,   96,  669,  669,  669,   96,  669,   96,   96,
+       96,   96,   96,   96,   96,   96,   96,   96,   96,  481,
+      669,   96,  669,  669,  669,  669,  669,   96,  669,   96,
+       96,   96,  669,   96,  669,  488,   96,  489,  669,  669,
+       96,  669,   96,   96,   96,   96,  669,   96,   96,   96,
 
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,  501,   97,   97,  708,   97,  708,  708,  708,   97,
-      708,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,  503,  708,   97,  708,  708,  708,  708,  708,
-       97,  708,   97,   97,   97,  708,   97,  708,  513,   97,
-      514,  708,  708,   97,  708,   97,   97,   97,   97,  708,
-       97,   97,   97,  708,  516,   97,  708,   97,  708,  708,
-      708,   97,  708,   97,  708,   97,  708,   97,   97,  517,
-       97,   97,  708,  708,   97,  708,   97,  708,   97,  708,
-      518,  519,   97,  708,   97,   97,   97,   97,   97,  708,
+      669,  491,   96,  669,   96,  669,  669,  669,   96,  669,
+       96,  669,   96,  669,   96,   96,  492,   96,   96,  669,
+      669,   96,  669,   96,  669,   96,  669,  493,  494,   96,
+      669,   96,   96,   96,   96,   96,  669,  669,   96,  669,
+       96,  669,   96,  669,   96,  669,   96,  669,   96,   96,
+       96,   96,   96,  669,  669,  669,  495,   96,  669,   96,
+       96,   96,  496,   96,  669,  669,   96,  669,   96,  669,
+       96,  669,   96,  669,   96,  669,   96,   96,   96,   96,
+       96,  669,  497,   96,  669,   96,  669,   96,  669,   96,
+      669,   96,  669,   96,   96,   96,   96,   96,  669,  669,
 
-      708,   97,  708,   97,  708,   97,  708,   97,  708,   97,
-      708,   97,   97,   97,   97,   97,  708,  708,  708,  520,
-       97,  708,   97,   97,   97,  521,   97,  708,  708,   97,
-      708,   97,  708,   97,  708,   97,  708,   97,  708,   97,
-       97,   97,   97,   97,  708,  522,   97,  708,   97,  708,
-       97,  708,   97,  708,   97,  708,   97,   97,   97,   97,
-       97,  708,  708,  708,  523,   97,  708,   97,   97,   97,
-      708,   97,  708,  708,  525,  524,   97,  708,   97,  708,
-       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
-      708,   97,  708,   97,  708,  526,  708,   97,  531,   97,
+      669,  498,   96,  669,   96,   96,   96,  669,   96,  669,
+      669,  500,  499,   96,  669,   96,  669,   96,  669,   96,
+      669,   96,   96,   96,   96,   96,  669,  669,   96,  669,
+       96,  669,  501,  669,   96,  506,   96,  669,   96,   96,
+       96,   96,   96,  669,  669,  669,  669,   96,  669,   96,
+       96,   96,  669,   96,  669,  669,   96,  507,   96,  669,
+       96,  669,   96,  669,   96,  669,   96,   96,   96,   96,
+       96,  669,  669,   96,  669,   96,  509,   96,  669,   96,
+      669,   96,  669,   96,  508,   96,   96,   96,   96,   96,
+      669,  669,   96,  669,  669,  669,  669,  669,   96,   96,
 
-      708,   97,   97,   97,   97,   97,  708,  708,  708,  708,
-       97,  708,   97,   97,   97,  708,   97,  708,  708,   97,
-      532,   97,  708,   97,  708,   97,  708,   97,  708,   97,
-       97,   97,   97,   97,  708,  708,   97,  708,   97,  534,
-       97,  708,   97,  708,   97,  708,   97,  533,   97,   97,
-       97,   97,   97,  708,  708,   97,  708,  708,  708,  708,
-      708,   97,   97,   97,   97,   97,   97,   97,  536,  535,
-       97,   97,  708,   97,  708,  708,  708,   97,  708,   97,
-      708,   97,  708,   97,   97,   97,   97,   97,  708,  708,
-       97,  708,   97,  708,   97,  708,  538,  708,   97,  708,
+       96,   96,   96,   96,   96,  511,  510,   96,   96,  669,
+       96,  669,  669,  669,   96,  669,   96,  669,   96,  669,
+       96,   96,   96,   96,   96,  669,  669,   96,  669,   96,
+      669,   96,  669,  513,  669,   96,  669,  515,   96,   96,
+       96,   96,  669,  669,  669,  669,   96,  669,   96,   96,
+       96,  669,   96,  517,  512,   96,  669,   96,  669,   96,
+      669,   96,  669,   96,  669,   96,   96,   96,   96,   96,
+      669,  669,   96,  669,   96,  519,   96,  669,   96,  669,
+       96,  669,   96,  669,   96,   96,   96,   96,  669,  669,
+      520,   96,  669,   96,  669,  669,  522,   96,  669,   96,
 
-      540,   97,   97,   97,   97,  708,  708,  708,  708,   97,
-      708,   97,   97,   97,  708,   97,  542,  708,  537,  708,
-       97,  708,   97,   97,   97,  708,   97,  708,  708,   97,
-      708,   97,  708,   97,  708,   97,  708,   97,  708,   97,
-      708,   97,   97,   97,   97,  708,  708,  544,   97,  708,
-       97,  708,  708,  545,   97,  708,   97,  708,   97,  708,
-       97,  708,   97,   97,   97,   97,  708,  708,  547,   97,
-      549,   97,  708,  708,  708,   97,  708,   97,  708,   97,
-      708,   97,   97,   97,   97,   97,  708,  708,  708,  558,
-       97,  708,   97,  708,   97,  708,   97,   97,  559,  708,
+      669,   96,  669,   96,  669,   96,   96,   96,  524,   96,
+       96,  669,   96,  669,  669,  669,  669,  530,  669,   96,
+       96,   96,   96,   96,   96,   96,  531,  669,   96,   96,
+      669,   96,  669,  669,  669,   96,  669,   96,  669,   96,
+      669,   96,   96,   96,   96,   96,  669,  533,  669,  669,
+       96,  669,   96,  669,   96,   96,   96,  669,  535,  669,
+      534,   96,  669,   96,  669,   96,   96,   96,  669,   96,
+      669,  669,  538,   96,   96,  536,   96,   96,   96,  537,
+       96,   96,   96,  669,   96,   96,  669,   96,  669,  669,
+      669,   96,  669,   96,   96,   96,   96,   96,   96,   96,
 
-      708,   97,  708,   97,  708,  708,  708,   97,  708,   97,
-      708,   97,  708,   97,   97,   97,   97,   97,  708,  561,
-      708,  708,   97,  708,   97,  708,   97,   97,   97,  708,
-      563,  708,  562,   97,  708,   97,  708,   97,   97,   97,
-      708,   97,  708,  708,  566,   97,   97,  564,   97,   97,
-       97,  565,   97,   97,   97,  708,   97,   97,  708,   97,
-      708,  708,  708,   97,  708,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,  708,  567,   97,  708,
-       97,  708,  708,  708,   97,  708,   97,  568,   97,  708,
-       97,   97,   97,   97,   97,  708,  708,   97,  708,   97,
+       96,   96,   96,   96,  669,  539,   96,  669,   96,  669,
+      669,  669,   96,  669,   96,  540,   96,  669,   96,   96,
+       96,   96,   96,  669,  669,   96,  669,   96,  545,   96,
+      669,   96,  669,   96,  669,   96,   96,   96,   96,   96,
+      669,  669,   96,  669,   96,  669,   96,  669,   96,  669,
+       96,  669,   96,   96,   96,   96,   96,  669,  669,   96,
+      669,   96,  669,   96,  669,   96,  546,   96,  669,   96,
+       96,   96,   96,   96,  669,  669,  669,  669,   96,  669,
+       96,   96,   96,  669,   96,  549,  669,   96,  547,   96,
+      669,   96,  669,   96,  554,   96,  669,   96,   96,   96,
 
-      573,   97,  708,   97,  708,   97,  708,   97,   97,   97,
-       97,   97,  708,  708,   97,  708,   97,  708,   97,  708,
-       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
-      708,   97,  708,   97,  708,   97,  708,   97,  574,   97,
-      708,   97,   97,   97,   97,   97,  708,  708,  708,  708,
-       97,  708,   97,   97,   97,  708,   97,  577,  708,   97,
-      575,   97,  708,   97,  708,   97,  582,   97,  708,   97,
-       97,   97,   97,   97,  708,  708,  708,  580,   97,  708,
-       97,   97,   97,  708,   97,  708,  708,   97,  708,   97,
-      708,   97,  708,   97,  708,   97,  708,   97,   97,   97,
+       96,   96,  669,  669,  669,  552,   96,  669,   96,   96,
+       96,  669,   96,  669,  669,   96,  669,   96,  669,   96,
+      669,   96,  669,   96,  669,   96,   96,   96,   96,   96,
+      669,  669,   96,  669,   96,  669,   96,  669,  556,  669,
+       96,  669,  558,   96,   96,   96,   96,  669,  669,   96,
+      669,   96,  669,   96,  669,   96,  564,   96,  669,   96,
+       96,   96,   96,   96,  669,  669,   96,  669,   96,  669,
+       96,  669,   96,  669,   96,  669,   96,  669,   96,   96,
+       96,   96,   96,  565,  566,   96,  567,  669,  669,  669,
+      669,   96,   96,   96,   96,   96,   96,   96,   96,  569,
 
-       97,   97,  708,  708,   97,  708,   97,  708,   97,  708,
-      584,  708,   97,  708,  586,   97,   97,   97,   97,  708,
-      708,   97,  708,   97,  708,   97,  708,   97,  595,   97,
-      708,   97,   97,   97,   97,   97,  708,  708,   97,  708,
-       97,  708,   97,  708,   97,  708,   97,  708,   97,  708,
-       97,   97,   97,   97,   97,  596,  597,   97,  598,  708,
-      708,  708,  708,   97,   97,   97,   97,   97,   97,   97,
-       97,  600,   97,   97,  708,  708,  708,  708,  708,   97,
-       97,  599,   97,   97,   97,   97,   97,  601,   97,   97,
-      708,  708,  708,  708,  708,   97,  602,   97,   97,   97,
+       96,   96,  669,  669,  669,  669,  669,   96,   96,  568,
+       96,   96,   96,   96,   96,  570,   96,   96,  669,  669,
+      669,  669,  669,   96,  571,   96,   96,   96,   96,   96,
+      669,  669,   96,   96,  669,  669,  669,   96,  669,   96,
+      669,   96,  669,   96,  669,  575,  669,   96,   96,   96,
+      576,   96,   96,   96,  669,  669,   96,  669,  669,  577,
+      579,  669,   96,   96,   96,   96,   96,   96,   96,  669,
+      669,   96,   96,  669,  669,  669,   96,  669,   96,  669,
+      582,  669,   96,  669,   96,  669,   96,   96,   96,  584,
+       96,  669,  669,  669,   96,   96,   96,   96,   96,  669,
 
-       97,   97,  708,  708,   97,   97,  708,  708,  708,   97,
-      708,   97,  708,   97,  708,   97,  708,  606,  708,   97,
-       97,   97,  607,   97,   97,   97,  708,  708,   97,  708,
-      708,  608,  610,  708,   97,   97,   97,   97,   97,   97,
-       97,  708,  708,   97,   97,  708,  708,  708,   97,  708,
-       97,  708,  613,  708,   97,  708,   97,  708,   97,   97,
-       97,  615,   97,  708,  708,  708,   97,   97,   97,   97,
-       97,  708,  708,  708,  616,   97,  708,  708,  708,   97,
-      708,   97,  708,   97,  592,  592,  592,  708,   97,  708,
-      708,  708,  708,   97,   97,  708,  623,  623,  623,  623,
+       96,  669,  585,   96,  669,  669,  669,   96,   96,   96,
+       96,   96,  592,  669,   96,  669,   96,  669,   96,   96,
+       96,   96,   96,  669,   96,  669,  669,   96,  669,  669,
+      669,   96,   96,   96,   96,   96,   96,  669,   96,  669,
+       96,  669,   96,   96,   96,   96,   96,  669,  669,  593,
+      669,   96,  669,   96,  669,   96,  669,   96,  594,   96,
+      669,   96,  669,   96,   96,   96,  669,   96,  595,   96,
+      669,   96,   96,   96,  669,   96,  669,   96,  669,   96,
+       96,   96,  669,   96,  669,   96,  669,   96,   96,  599,
+      669,   96,  669,   96,  669,   96,   96,   96,  600,   96,
 
-      623,  623,  623,   97,   97,  626,   97,   97,   97,   97,
-       97,  708,   97,   97,  708,  708,  708,  708,  708,   97,
-       97,   97,   97,   97,   97,   97,  708,  708,   97,   97,
-      708,  708,  708,   97,  708,   97,  708,   97,  708,   97,
-      708,   97,  627,   97,   97,   97,  628,   97,  708,   97,
-      708,   97,   97,   97,  708,   97,  629,   97,  708,   97,
-       97,   97,  708,   97,  708,   97,  708,   97,   97,   97,
-      708,   97,  708,   97,  708,   97,   97,  633,  708,   97,
-      708,   97,  708,   97,   97,   97,  634,   97,  708,   97,
-      708,   97,   97,  636,  708,   97,  639,   97,  708,   97,
+      669,   96,  669,   96,   96,  602,  669,   96,  605,   96,
+      669,   96,   96,   96,  669,   96,  607,   96,  669,   96,
+       96,   96,  669,   96,  608,   96,  669,   96,   96,   96,
+      669,   96,  669,   96,  669,   96,   96,   96,  669,   96,
+      669,   96,  669,   96,   96,   96,  669,   96,  669,   96,
+      669,   96,   96,  614,  669,   96,  669,  669,  669,   96,
+       96,   96,   96,   96,  669,  669,  669,  615,   96,  669,
+       96,  669,   96,  669,   96,  669,   96,  669,   96,  619,
+       96,   96,  620,  669,   96,  622,   96,  669,   96,   96,
+       96,  669,   96,  669,  669,  669,   96,   96,   96,   96,
 
-       97,   97,  708,   97,  641,   97,  708,   97,   97,   97,
-      708,   97,  642,  708,  708,   97,   97,   97,  708,   97,
-      708,  708,   97,   97,   97,  623,  623,  623,  623,  623,
-      623,  623,   97,   97,   97,   97,   97,   97,   97,  708,
-      708,   97,   97,  708,  708,  708,   97,  708,   97,  708,
-      651,  708,   97,  708,  708,  708,   97,   97,   97,   97,
-       97,  708,  708,  648,  652,   97,  708,   97,  708,   97,
-      708,   97,  708,   97,  708,   97,  656,   97,   97,  657,
-      708,   97,  659,   97,  708,   97,   97,   97,  708,   97,
-      708,  708,  708,   97,   97,   97,   97,   97,  664,   97,
+       96,  627,   96,  669,  625,   96,  628,  669,  669,   96,
+       96,   96,   96,   96,   96,  669,   96,  669,   96,  669,
+       96,   96,   96,   96,   96,  669,   96,  669,  634,   96,
+      669,  669,  669,   96,  669,   96,   96,   96,   96,   96,
+       96,  669,   96,  669,  669,   96,  635,   96,  669,   96,
+       96,   96,  669,   96,  669,  669,  669,   96,   96,   96,
+       96,   96,   96,  669,   96,  639,   96,   96,   96,   96,
+      669,  669,  669,  642,  669,  644,  669,   96,   96,   96,
+       96,   96,   96,   96,   96,  669,   96,   96,  669,  669,
+      669,  669,  669,   96,   96,   96,   96,   96,   96,  650,
 
-      708,  662,   97,  665,  708,  708,   97,  708,   97,   97,
-       97,   97,  708,   97,  708,   97,  708,  708,   97,  649,
-      649,  649,  708,  708,  708,  708,  708,  708,   97,   97,
-      708,  623,  623,  623,  623,  623,  623,  623,   97,   97,
-       97,   97,   97,   97,   97,   97,  672,   97,   97,  708,
-      708,  708,  673,  708,   97,   97,   97,   97,   97,   97,
-       97,   97,  708,   97,   97,  708,  708,  708,  708,  708,
-       97,   97,   97,   97,   97,   97,   97,  708,  677,   97,
-       97,  708,   97,  708,  680,  708,   97,  708,   97,  682,
-       97,  708,   97,   97,   97,   97,   97,  708,  708,  708,
+       96,   96,   96,   96,  669,  669,  669,  669,  669,  669,
+       96,   96,   96,   96,   96,   96,  669,  669,   96,   96,
+       96,  655,  669,  652,  669,  669,   96,  669,   96,  669,
+       96,  669,   96,  669,   96,  669,   96,   96,   96,  659,
+       96,  669,   96,  669,   96,   96,   96,  669,   96,  669,
+       96,  669,   96,   96,   96,  669,   96,  669,  663,  669,
+      666,   96,   96,   96,   96,  669,   96,  669,  669,   96,
+      669,  669,  669,   96,  669,   96,   96,   96,   96,  669,
+       96,  669,   96,  669,  669,   96,   53,   53,   53,   53,
+       53,   53,   53,   53,   53,   53,   53,   57,   57,   57,
 
-      708,   97,  708,   97,   97,   97,  708,   97,  708,  689,
-       97,  708,   97,  708,   97,  708,   97,  708,   97,  708,
-       97,  708,   97,   97,   97,   97,  708,  708,   97,   97,
-      708,  694,  708,  691,  708,   97,  708,   97,   97,   97,
-       97,  708,   97,  708,   97,  708,  708,   97,  687,  687,
-      687,  708,  708,  708,  708,  708,  708,   97,  708,  708,
-      623,  623,  623,  623,  623,  623,  623,   97,   97,   97,
-      698,   97,  708,  708,   97,  708,   97,  708,   97,  708,
-       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
-      702,   97,  708,   97,  708,  705,  708,   97,  708,   97,
+       57,   57,   57,   57,   57,   57,   57,   57,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   64,
+       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
+       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
+       73,   75,   75,   75,   75,   75,   75,   75,   75,   75,
+       75,   75,   82,   82,   82,  669,   82,   82,   82,   82,
+       82,   82,   82,   89,   89,  669,  669,   89,  669,   89,
+      153,  153,  669,  153,  154,  154,  669,  154,  154,  154,
+      669,  154,  154,  154,  154,  157,  157,  157,  669,  157,
+      157,  157,  157,  157,  157,  157,  159,  159,  159,  159,
 
-      708,   97,   97,   97,   97,   97,  708,  708,  708,  708,
-       97,  708,   97,  708,   97,  708,   97,  708,  708,  708,
-      708,   97,   54,   54,   54,   54,   54,   54,   54,   54,
-       54,   54,   54,   54,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   65,   65,
-       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
-       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
-       74,   74,   76,   76,   76,   76,   76,   76,   76,   76,
-       76,   76,   76,   76,   83,   83,   83,  708,   83,   83,
+      159,  159,  159,  159,  669,  159,  161,  669,  669,  161,
+      161,  161,  161,  161,  161,  161,  162,  669,  669,  162,
+      162,  162,  162,  162,  162,  162,  164,  669,  669,  164,
+      669,  164,  164,  164,  164,  164,  168,  168,  669,  168,
+      169,  169,  669,  169,  102,  102,  669,  102,   15,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
 
-       83,   83,   83,   83,   83,   83,   90,   90,  708,  708,
-       90,  708,   90,  156,  708,  156,  159,  159,  708,  159,
-      159,  160,  160,  708,  160,  160,  160,  708,  160,  160,
-      160,  160,  160,  163,  163,  163,  708,  163,  163,  163,
-      163,  163,  163,  163,  163,  165,  165,  165,  165,  165,
-      165,  165,  165,  708,  165,  165,  167,  708,  708,  167,
-      167,  167,  167,  167,  167,  167,  167,  168,  708,  708,
-      168,  168,  168,  168,  168,  168,  168,  168,  170,  708,
-      708,  170,  708,  170,  170,  170,  170,  170,  170,  174,
-      174,  708,  174,  174,  175,  175,  708,  175,  175,  103,
-
-      103,  708,  103,  103,   15,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669
     } ;
 
-static yyconst short int yy_chk[4484] =
+static yyconst short int yy_chk[4327] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1257,513 +1224,496 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    3,    3,
-        4,    4,    5,    6,    7,    9,    3,    7,    4,    5,
-        6,    8,    5,    6,    8,   10,   17,   17,   17,   18,
+        1,    1,    1,    1,    1,    1,    1,    3,    3,    4,
+        4,    5,    6,    7,    9,    3,    7,    4,    5,    6,
+        8,    5,    6,    8,   10,   17,   17,   17,   18,   18,
 
-       18,   18,   17,    9,  152,   18,    9,   26,  176,   26,
-       13,   13,   13,   10,  176,   13,   10,  152,   22,   22,
-       22,   14,   14,   14,   22,   24,   14,  157,   24,  157,
-       22,   22,   24,   24,   24,   24,   24,   24,   28,   28,
-       28,   28,   28,   28,   28,   34,  253,  253,   34,   77,
-       77,   77,   78,   78,   78,   34,   87,   34,    9,   34,
-        9,   82,   82,   82,   34,  158,  476,  158,   10,  704,
-       10,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   13,  476,   13,   87,   38,   79,
-      325,   11,   11,   11,   11,   14,  325,   14,   38,   11,
+       18,   17,    9,  665,   18,    9,   26,  661,   26,   13,
+       13,   13,   10,  151,   13,   10,   86,   22,   22,   22,
+       14,   14,   14,   22,   24,   14,  151,   24,  658,   22,
+       22,   24,   24,   24,   24,   24,   24,   28,   28,   28,
+       28,   28,   28,   28,  656,   34,   86,  454,   34,   76,
+       76,   76,   77,   77,   77,   34,    9,   34,    9,   34,
+       81,   81,   81,  654,   34,  454,   10,  653,   10,   11,
+       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
+       11,   11,   13,  651,   13,  163,  163,  649,  170,   11,
+       11,   11,   11,   14,  170,   14,  163,   11,   32,  242,
 
-       38,   32,   38,   79,   32,  324,  700,   38,   32,  324,
-      250,   32,   32,   32,   32,   32,   41,  250,  697,   33,
-       32,   11,   11,   11,   32,   33,   41,  327,   41,   33,
-       41,   33,   33,   33,   79,   41,  695,  327,   33,   92,
-       92,   92,   92,   92,   92,   92,   11,   11,   11,   12,
-       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   41,  393,   35,  171,  171,  171,  393,   12,
-       12,   12,   12,  693,   35,   35,   35,   12,   35,  169,
-      169,  326,  251,   35,   42,   42,   35,  326,   42,  251,
-      169,   36,   36,  692,   42,   48,   42,  453,   42,   12,
+      242,   32,  165,  165,  165,   32,  529,  647,   32,   32,
+       32,   32,   32,   38,  312,  646,   33,   32,  643,   11,
+       11,   32,   33,   38,  312,   38,   33,   38,   33,   33,
+       33,  641,   38,  529,  637,   33,   91,   91,   91,   91,
+       91,   91,   91,   11,   11,   11,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,  374,
+      633,   35,  632,   78,  374,  631,   12,   12,   12,   12,
+      630,   35,   35,   35,   12,   35,  629,   78,   36,   36,
+       35,  487,  626,   35,  624,  623,  618,  617,  487,   36,
+      616,   36,  613,   36,   37,   36,   12,   12,   36,   39,
 
-       12,   12,   36,   42,   36,   48,   36,   48,   36,   48,
-      453,   36,  390,   42,   48,  690,  512,   39,   39,  390,
-       39,  391,  392,  512,   12,   12,   12,   21,   39,   39,
-       39,   48,   39,  392,  454,   39,  391,   39,  454,  554,
-      455,   21,  455,  554,   21,   21,   21,   21,   21,   21,
+       39,  612,   39,  611,   37,  610,   37,   78,   37,  609,
+       39,   39,   39,   37,   39,  606,  604,   39,  603,   39,
+       12,   12,   12,   21,  601,   37,   88,   88,   88,  598,
+      597,  596,   88,  591,  590,  589,   37,   21,   88,   88,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-      557,  688,   21,   21,   21,   21,   21,   21,   21,   21,
+       21,   21,   21,   21,   21,   21,  588,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   31,  510,  557,   31,   31,
+       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
+       31,  586,  583,   31,   31,   31,   31,   31,   31,   31,
 
-       31,   31,   31,   31,   31,  511,  685,  510,  511,   31,
+      581,  580,  578,  574,   31,   31,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,  622,  622,  684,   31,   31,
+      573,  572,   31,   31,   31,   31,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       37,  647,  509,  647,  681,   40,   40,  555,  555,  555,
-       37,  556,   37,   40,   37,  591,   40,  509,   40,   37,
-       40,  679,  591,  675,  671,   40,  556,   43,   43,  593,
-       43,  669,   37,  593,  668,  667,   44,  666,   43,   44,
+       31,   31,   31,   31,   40,   40,   41,  563,  562,  561,
+      560,  559,   40,  557,  553,   40,   41,   40,   41,   40,
+       41,  551,   42,   42,   40,   41,   42,   43,   43,  550,
+       43,  548,   42,  543,   42,  542,   42,  541,   43,  528,
+       43,   42,   43,   44,   43,  527,   44,   43,  526,   45,
 
-       43,  663,   43,   37,   43,  555,   44,   43,   44,   45,
-       44,  661,   45,  660,  655,   44,   45,  654,   46,   45,
-      653,   45,  650,   45,   46,   46,  646,   45,   45,  645,
-      644,   43,   45,   47,  643,   46,  640,   46,  638,   46,
-      637,   46,  635,   47,   46,   47,   49,   47,   46,  632,
-      631,   47,   47,   49,  630,  625,   49,   46,   49,  621,
-       49,  624,  624,  624,  620,   49,   50,   50,   50,   50,
-       50,   50,   50,   47,   89,   89,   89,   50,  619,  617,
-       89,   97,  614,  612,  611,  609,   89,   89,  605,  604,
-      603,   97,   50,   97,  594,   97,  590,   50,   74,  624,
+       42,   41,   45,   44,  525,   44,   45,   44,   46,   45,
+      523,   45,   44,   45,   46,   46,  521,   45,   45,  518,
+       43,  516,   45,   47,  514,   46,  512,   46,  505,   46,
+      504,   46,  503,   47,   46,   47,  502,   47,   46,   48,
+       49,   47,   47,  490,  486,  485,   46,   49,  484,   48,
+       49,   48,   49,   48,   49,  483,  480,  478,   48,   49,
+      475,  470,   47,   94,   94,   94,   94,   94,   94,   94,
+      468,  456,  455,  437,   48,   73,  434,  433,  432,   73,
+       73,   73,   73,   73,   73,   73,   73,   73,  431,   96,
+       97,  430,  429,  426,  424,   73,   73,   73,   73,   96,
 
-       97,  589,   74,   74,   74,   74,   74,   74,   74,   74,
-       74,   95,   95,   95,   95,   95,   95,   95,   74,   74,
-       74,   74,   98,   99,  178,  178,  178,  178,  178,  178,
-      178,  588,   98,   99,   98,   99,   98,   99,  587,   98,
-      585,   98,   99,  100,  101,  581,  579,  578,   74,   74,
-       74,  576,  571,  100,  101,  100,  101,  100,  101,  102,
-      570,  569,  100,  101,  553,  552,  100,  551,  550,  102,
-      548,  102,  546,  102,   74,   75,  543,  102,  102,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,  541,  104,
-      539,  537,  105,  530,  104,   75,   75,   75,   75,  104,
+       97,   96,   97,   96,   97,   98,  419,   97,   96,   97,
+      414,  411,  399,  398,  397,   98,  378,   98,   99,   98,
+      373,  100,  372,  371,   98,   73,   73,  369,   99,  365,
+       99,  100,   99,  100,  101,  100,  363,   99,  358,  353,
+      100,   99,  349,  338,  101,  337,  101,  336,  101,  317,
+       73,   74,  101,  101,  310,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,  309,  103,  308,  302,  104,  291,
+      103,   74,   74,   74,   74,  103,  286,  103,  104,  103,
+      104,  105,  104,  282,  103,  271,  104,  104,   74,  270,
+      244,  105,  243,  105,  106,  105,  239,  238,  237,  233,
 
-      529,  104,  105,  104,  105,  106,  105,  528,  104,  527,
-      105,  105,   75,  515,  508,  106,  507,  106,  107,  106,
-      506,  505,  502,  500,  106,   75,   75,   75,  107,  108,
-      107,  107,  107,  670,  670,  670,  497,  107,  492,  108,
-      490,  108,  478,  108,  109,  109,  477,  459,  108,  456,
-      452,   75,  110,  110,  451,  109,  450,  109,  109,  109,
-      449,  448,  445,  110,  109,  110,  111,  110,  443,  112,
-      438,  670,  110,  112,  433,  430,  111,  111,  111,  112,
-      111,  112,  113,  112,  418,  111,  417,  416,  112,  397,
-      388,  387,  113,  386,  113,  384,  113,  114,  114,  114,
+      105,   74,   74,  221,  106,  107,  106,  106,  106,  215,
+      211,  200,  199,  106,  171,  107,  167,  107,  162,  107,
+      108,  108,  160,  150,  107,  147,   74,  137,  109,  109,
+      132,  108,  127,  108,  108,  108,  118,  117,   95,  109,
+      108,  109,  110,  109,   92,  111,   89,   84,  109,  111,
+       83,   80,  110,  110,  110,  111,  110,  111,  112,  111,
+       66,  110,   63,   60,  111,   59,   56,   52,  112,   50,
+      112,   29,  112,  113,  113,  113,  115,  112,   25,  114,
+      114,   20,   19,  113,   16,  113,  115,  113,  115,  114,
+      115,  114,  113,  114,  116,  115,   15,  114,  114,    0,
 
-      116,  113,  380,  115,  115,  378,  373,  114,  368,  114,
-      116,  114,  116,  115,  116,  115,  114,  115,  117,  116,
-      364,  115,  115,  353,  352,  120,  351,  332,  117,  321,
-      117,  117,  117,  120,  320,  319,  121,  117,  313,  121,
-      302,  297,  293,  120,  122,  120,  121,  120,  121,  282,
-      121,  281,  120,  255,  122,  121,  122,  254,  122,  123,
-      123,  249,  245,  122,  244,  243,  239,  227,  221,  123,
-      124,  123,  217,  123,  206,  205,  123,  123,  123,  177,
-      124,  125,  124,  124,  124,  173,  168,  126,  166,  124,
-      156,  125,  151,  125,  148,  125,  138,  126,  127,  126,
+        0,  119,    0,    0,  116,    0,  116,  116,  116,  119,
+        0,    0,  120,  116,    0,  120,    0,    0,    0,  119,
+      121,  119,  120,  119,  120,    0,  120,    0,  119,    0,
+      121,  120,  121,    0,  121,  122,  122,    0,    0,  121,
+        0,    0,    0,    0,    0,  122,  123,  122,    0,  122,
+        0,    0,  122,  122,  122,    0,  123,  124,  123,  123,
+      123,    0,    0,  125,    0,  123,    0,  124,    0,  124,
+        0,  124,    0,  125,  126,  125,  124,  125,    0,  124,
+        0,    0,  125,    0,  126,    0,  126,  128,  126,    0,
+      129,    0,    0,  126,    0,  128,    0,  128,    0,  128,
 
-      125,  126,  133,  125,  128,  119,  126,  118,  127,   96,
-      127,  129,  127,   93,  130,   90,   85,  127,   84,  129,
-       81,  129,   67,  129,  130,  129,  130,  131,  130,   64,
-      129,   61,  130,  130,   60,  132,   57,  131,  134,  131,
-       53,  131,   51,   29,   25,  132,  131,  132,  134,  132,
-      134,  135,  134,  132,  132,   20,  134,  134,   19,   16,
-       15,  135,  136,  135,    0,  135,    0,    0,    0,    0,
-      135,  135,  136,    0,  136,  137,  136,    0,  137,    0,
-        0,  136,  137,    0,    0,  137,    0,  137,    0,  137,
-      139,  139,    0,    0,  137,    0,    0,  140,    0,    0,
+      129,  128,  129,  130,  129,    0,  128,    0,  129,  129,
+        0,  131,    0,  130,  133,  130,    0,  130,    0,    0,
+        0,  131,  130,  131,  133,  131,  133,  134,  133,  131,
+      131,    0,  133,  133,    0,    0,    0,  134,  135,  134,
+        0,  134,    0,    0,    0,    0,  134,  134,  135,    0,
+      135,  136,  135,    0,  136,    0,    0,  135,  136,    0,
+        0,  136,    0,  136,    0,  136,  138,  138,    0,    0,
+      136,    0,    0,  139,    0,    0,    0,  138,    0,  138,
+        0,  138,    0,  139,  140,  139,  138,  139,  139,    0,
+      141,  139,  139,    0,  140,    0,  140,    0,  140,    0,
 
-        0,  139,    0,  139,    0,  139,    0,  140,  141,  140,
-      139,  140,  140,    0,  142,  140,  140,    0,  141,    0,
-      141,    0,  141,    0,  142,  143,  142,  141,  142,  144,
-      142,    0,  141,  142,    0,  143,    0,  143,    0,  143,
-      144,  145,    0,    0,  143,    0,  145,    0,    0,    0,
-      144,  145,  144,  145,  144,  145,  146,  147,    0,  144,
-      145,    0,    0,    0,    0,    0,  146,  147,  146,  147,
-      146,  147,  149,  150,  150,  146,  147,  150,    0,  149,
-        0,    0,  149,  150,  149,  150,  149,  150,  153,    0,
-        0,  149,  150,    0,    0,    0,    0,    0,  153,    0,
+      141,  142,  141,  140,  141,  143,  141,    0,  140,  141,
+        0,  142,    0,  142,    0,  142,  143,  144,    0,    0,
+      142,    0,  144,    0,    0,    0,  143,  144,  143,  144,
+      143,  144,  145,  146,    0,  143,  144,    0,    0,    0,
+        0,    0,  145,  146,  145,  146,  145,  146,  148,  149,
+      149,  145,  146,  149,    0,  148,    0,    0,  148,  149,
+      148,  149,  148,  149,  152,    0,    0,  148,  149,    0,
+        0,    0,    0,    0,  152,    0,  152,    0,  152,    0,
+        0,    0,  152,  152,  172,  172,  172,  172,  172,  172,
+      172,  175,  176,    0,  175,    0,    0,    0,    0,    0,
 
-      153,    0,  153,  155,  155,  155,  153,  153,  154,  154,
-      154,  154,  154,  154,  154,  155,  155,  155,  155,  155,
-      155,  155,    0,  181,  182,    0,  181,    0,    0,    0,
-        0,    0,    0,  181,  182,  181,  182,  181,  182,  183,
-      184,  155,  181,  182,    0,    0,  154,    0,    0,  183,
-      184,  183,  184,  183,  184,  185,    0,    0,  183,  184,
-        0,    0,    0,  186,    0,  185,  187,  185,  185,  185,
-      186,    0,    0,  186,  185,  186,  187,  186,  187,  188,
-      187,    0,  186,    0,    0,  187,    0,  189,    0,  188,
-        0,  188,    0,  188,    0,  190,  188,  189,  188,  189,
+        0,  175,  176,  175,  176,  175,  176,  177,  178,    0,
+      175,  176,    0,    0,    0,    0,    0,  177,  178,  177,
+      178,  177,  178,  179,    0,    0,  177,  178,    0,    0,
+        0,  180,    0,  179,  181,  179,  179,  179,  180,    0,
+        0,  180,  179,  180,  181,  180,  181,  182,  181,    0,
+      180,    0,    0,  181,    0,  183,    0,  182,    0,  182,
+        0,  182,    0,  184,  182,  183,  182,  183,    0,  183,
+        0,  185,    0,  184,  183,  184,    0,  184,  185,  184,
+        0,  185,  184,  185,  186,  185,    0,    0,    0,    0,
+      185,    0,  187,    0,  186,  188,  186,    0,  186,    0,
 
-        0,  189,    0,  191,    0,  190,  189,  190,    0,  190,
-      191,  190,    0,  191,  190,  191,  192,  191,    0,    0,
-        0,    0,  191,    0,  193,    0,  192,  194,  192,    0,
-      192,    0,    0,  192,  193,  192,  193,  194,  193,  194,
-        0,  194,    0,  193,  194,  194,  194,  195,  195,  196,
-        0,    0,  196,    0,    0,  195,    0,    0,  195,  196,
-      195,  196,  195,  196,  197,    0,    0,  195,  196,    0,
-      198,    0,    0,    0,  197,    0,  197,  197,  197,    0,
-      198,  199,  198,  197,  198,    0,    0,  200,    0,  198,
-      200,  199,  199,  199,    0,  199,    0,  200,  201,  200,
+        0,  186,  187,  186,  187,  188,  187,  188,    0,  188,
+        0,  187,  188,  188,  188,  189,  189,  190,    0,    0,
+      190,    0,    0,  189,    0,    0,  189,  190,  189,  190,
+      189,  190,  191,    0,    0,  189,  190,    0,  192,    0,
+        0,    0,  191,    0,  191,  191,  191,    0,  192,  193,
+      192,  191,  192,    0,    0,  194,    0,  192,  194,  193,
+      193,  193,    0,  193,    0,  194,  195,  194,  193,  194,
+        0,    0,  196,    0,  194,  196,  195,    0,  195,  195,
+      195,    0,  196,  197,  196,  195,  196,    0,    0,    0,
+        0,  196,    0,  197,  198,  197,    0,  197,    0,    0,
 
-      199,  200,    0,    0,  202,    0,  200,  202,  201,    0,
-      201,  201,  201,    0,  202,  203,  202,  201,  202,    0,
-        0,    0,    0,  202,    0,  203,  204,  203,    0,  203,
-        0,    0,  203,    0,  203,    0,  204,  204,  204,  207,
-      204,    0,    0,    0,    0,  204,    0,  208,    0,  207,
-      209,  207,    0,  207,    0,    0,  207,  208,  207,  208,
-      209,  208,  209,  209,  209,  210,  208,    0,  211,  209,
-        0,  212,    0,    0,  212,  210,    0,  210,  211,  210,
-      211,  212,  211,  212,  210,  212,  211,  211,  213,  214,
-      212,    0,  215,    0,    0,  213,    0,    0,    0,  214,
+      197,    0,  197,    0,  198,  198,  198,  201,  198,    0,
+        0,    0,    0,  198,    0,  202,    0,  201,  203,  201,
+        0,  201,    0,    0,  201,  202,  201,  202,  203,  202,
+      203,  203,  203,  204,  202,    0,  205,  203,    0,  206,
+        0,    0,  206,  204,    0,  204,  205,  204,  205,  206,
+      205,  206,  204,  206,  205,  205,  207,  208,  206,    0,
+      209,    0,    0,  207,    0,    0,    0,  208,    0,  208,
+      209,  208,  209,  207,  209,  207,  208,  207,  210,  209,
+        0,  212,  207,    0,  212,    0,    0,    0,  210,    0,
+      210,  212,  210,  212,    0,  212,  213,  210,    0,  213,
 
-        0,  214,  215,  214,  215,  213,  215,  213,  214,  213,
-      216,  215,    0,  218,  213,    0,  218,    0,    0,    0,
-      216,    0,  216,  218,  216,  218,    0,  218,  219,  216,
-        0,  219,  218,    0,  220,    0,    0,    0,  219,    0,
-      219,  220,  219,    0,  220,  222,  220,  219,  220,    0,
-        0,    0,    0,  220,    0,  222,  223,  222,    0,  222,
-        0,    0,  224,  222,  222,    0,  223,    0,  223,    0,
-      223,    0,  224,  225,  224,  223,  224,    0,    0,  224,
-        0,  224,    0,  225,  226,  225,    0,  225,    0,    0,
-      225,    0,  225,    0,  226,  228,  226,    0,  226,    0,
+      212,    0,  214,    0,    0,    0,  213,    0,  213,  214,
+      213,    0,  214,  216,  214,  213,  214,    0,    0,    0,
+        0,  214,    0,  216,  217,  216,    0,  216,    0,    0,
+      218,  216,  216,    0,  217,    0,  217,    0,  217,    0,
+      218,  219,  218,  217,  218,    0,    0,  218,    0,  218,
+        0,  219,  220,  219,    0,  219,    0,    0,  219,    0,
+      219,    0,  220,  222,  220,    0,  220,    0,  223,  223,
+        0,  220,  220,  222,    0,  222,    0,  222,    0,  223,
+      224,  223,  222,  223,    0,    0,  225,    0,  223,    0,
+      224,    0,  224,    0,  224,    0,  225,    0,  225,  224,
 
-      229,  229,    0,  226,  226,  228,    0,  228,    0,  228,
-        0,  229,  230,  229,  228,  229,    0,    0,  231,    0,
-      229,    0,  230,    0,  230,    0,  230,    0,  231,    0,
-      231,  230,  231,  232,  233,    0,  232,  231,    0,    0,
-        0,  233,    0,  232,  233,  232,  233,  232,  233,  234,
-        0,    0,  232,  233,    0,    0,    0,    0,    0,  234,
-      235,  234,    0,  234,    0,    0,  236,  234,  234,    0,
-      235,    0,  235,    0,  235,    0,  236,  235,  236,  235,
-      236,  237,    0,  236,  237,  236,    0,  238,    0,    0,
-      238,  237,    0,  237,    0,  237,    0,  238,  240,  238,
+      225,  226,  227,    0,  226,  225,    0,    0,    0,  227,
+        0,  226,  227,  226,  227,  226,  227,  228,    0,    0,
+      226,  227,    0,    0,    0,    0,    0,  228,  229,  228,
+        0,  228,    0,    0,  230,  228,  228,    0,  229,    0,
+      229,    0,  229,    0,  230,  229,  230,  229,  230,  231,
+        0,  230,  231,  230,    0,  232,    0,    0,  232,  231,
+        0,  231,    0,  231,    0,  232,  234,  232,  231,  232,
+        0,    0,    0,    0,  232,    0,  234,  235,  234,  234,
+      234,  234,  236,    0,    0,  234,  234,  235,  236,  235,
+        0,  235,    0,    0,    0,  235,  235,    0,  236,  240,
 
-      237,  238,    0,    0,    0,    0,  238,    0,  240,  241,
-      240,  240,  240,  240,  242,    0,    0,  240,  240,  241,
-      242,  241,    0,  241,    0,    0,    0,  241,  241,    0,
-      242,  246,  242,    0,  242,    0,    0,  246,    0,  242,
-        0,  246,    0,  246,    0,  246,  248,  248,  248,    0,
-      246,    0,    0,    0,    0,  258,    0,    0,  248,  248,
-      248,  248,  248,  248,  248,  258,  259,  258,    0,  258,
-        0,    0,  260,  259,  258,    0,  259,    0,  259,    0,
-      259,    0,  260,  260,  260,  259,  260,  261,  262,    0,
-        0,  260,    0,    0,    0,    0,    0,  261,  262,  261,
+      236,    0,  236,    0,    0,  240,    0,  236,    0,  240,
+      247,  240,    0,  240,    0,    0,  248,    0,  240,    0,
+      247,    0,  247,  248,  247,    0,  248,  249,  248,  247,
+      248,    0,    0,  250,    0,  248,    0,  249,  249,  249,
+        0,  249,    0,  250,  251,  250,  249,  250,    0,    0,
+      252,    0,  250,  252,  251,    0,  251,    0,  251,    0,
+      252,    0,  252,  251,  252,  253,  253,  254,  254,  252,
+        0,    0,    0,    0,    0,    0,  253,  254,  253,  254,
+      253,  254,  255,    0,    0,  253,  254,    0,  251,    0,
+      256,    0,  255,    0,  255,    0,  255,    0,  257,  255,
 
-      262,  261,  262,  264,  264,  263,  261,  262,  263,    0,
-        0,    0,    0,    0,  264,  263,  264,  263,  264,  263,
-      265,  265,    0,  264,  263,    0,  266,    0,    0,    0,
-      265,    0,  265,  262,  265,    0,  266,  267,  266,  265,
-      266,    0,    0,  266,    0,  266,    0,  267,  268,  267,
-      267,  267,    0,    0,    0,    0,  267,    0,  268,    0,
-      268,    0,  268,  270,  268,  269,  269,  268,    0,  271,
-        0,    0,    0,  270,    0,  270,  269,  270,  269,  271,
-      269,  271,  270,  271,  272,  269,  272,  273,  271,  273,
-      274,    0,    0,  274,  272,    0,  272,  273,  272,  273,
+      256,  255,  256,  256,  256,  258,  258,    0,  257,  256,
+      257,    0,  257,    0,  257,    0,  258,  257,  258,  259,
+      258,    0,  260,    0,    0,  258,    0,    0,    0,  259,
+        0,  259,  260,  259,  260,  261,  260,  261,  259,    0,
+        0,  260,    0,    0,    0,  261,  262,  261,  262,  261,
+        0,    0,  263,    0,  261,  263,  262,    0,  262,    0,
+      262,    0,  263,  264,  263,  262,  263,    0,    0,  265,
+        0,  263,    0,  264,    0,  264,  265,  264,    0,  265,
+      266,  265,  264,  265,    0,    0,    0,    0,  265,    0,
+      266,  267,  266,    0,  266,    0,  266,    0,    0,  266,
 
-      274,  273,  274,  272,  274,  275,  273,    0,    0,  274,
-        0,  276,    0,    0,    0,  275,    0,  275,  276,  275,
-        0,  276,  277,  276,  275,  276,    0,    0,    0,    0,
-      276,    0,  277,  278,  277,    0,  277,    0,  277,    0,
-        0,  277,    0,  278,    0,  278,    0,  278,  279,  278,
-        0,  279,  278,    0,  280,    0,    0,    0,  279,    0,
-      279,    0,  279,    0,  280,  283,  280,  279,  280,    0,
-        0,  284,    0,  280,    0,  283,    0,  283,    0,  283,
-        0,  284,    0,  284,  283,  284,  285,  286,    0,  284,
-      284,    0,    0,  285,    0,    0,  285,  286,  285,  286,
+        0,  267,    0,  267,    0,  267,  268,  267,    0,  268,
+      267,    0,  269,    0,    0,    0,  268,    0,  268,    0,
+      268,    0,  269,  272,  269,  268,  269,    0,    0,  273,
+        0,  269,    0,  272,    0,  272,    0,  272,    0,  273,
+        0,  273,  272,  273,  274,  275,    0,  273,  273,    0,
+        0,  274,    0,    0,  274,  275,  274,  275,  274,  275,
+      276,  275,    0,  274,  275,  277,  277,  272,    0,    0,
+      276,    0,  276,    0,  276,  279,  277,    0,  277,  276,
+      277,  278,  277,    0,  279,  277,  278,    0,    0,    0,
+        0,  278,  280,  278,  279,  278,  279,  278,  279,    0,
 
-      285,  286,  287,  286,    0,  285,  286,  288,  288,    0,
-      283,    0,  287,    0,  287,    0,  287,  290,  288,    0,
-      288,  287,  288,  289,  288,    0,  290,  288,  289,    0,
-        0,    0,    0,  289,  291,  289,  290,  289,  290,  289,
-      290,    0,  289,    0,  291,  290,  291,  292,  291,    0,
-        0,  291,    0,  291,    0,  294,  294,  292,  295,  292,
-        0,  292,    0,    0,    0,  294,  292,  294,  295,  294,
-      295,  296,  295,    0,  294,    0,  295,  295,    0,  298,
-      299,  296,  298,  296,  296,  296,    0,    0,    0,  298,
-      296,  298,    0,  298,  300,  299,    0,  300,  298,    0,
+      278,    0,  280,  279,  280,  281,  280,    0,    0,  280,
+        0,  280,    0,  283,  283,  281,  284,  281,    0,  281,
+        0,    0,    0,  283,  281,  283,  284,  283,  284,  285,
+      284,    0,  283,    0,  284,  284,    0,  287,  288,  285,
+      287,  285,  285,  285,    0,    0,    0,  287,  285,  287,
+        0,  287,  289,  288,    0,  289,  287,    0,    0,    0,
+        0,    0,  289,  288,  289,  288,  289,  288,  290,  290,
+      292,  289,  288,    0,    0,    0,    0,    0,    0,  290,
+      292,  290,  292,  290,  292,  293,    0,    0,  290,  292,
+        0,    0,    0,    0,    0,  293,    0,  293,  294,  293,
 
-        0,    0,    0,    0,  300,  299,  300,  299,  300,  299,
-      301,  301,  303,  300,  299,    0,    0,    0,    0,    0,
-        0,  301,  303,  301,  303,  301,  303,  304,    0,    0,
-      301,  303,    0,    0,    0,    0,    0,  304,    0,  304,
-      305,  304,    0,  305,    0,  304,  304,    0,  306,    0,
-      305,  307,  305,    0,  305,    0,    0,    0,  306,  305,
-      306,  307,  306,  307,    0,  307,  309,  306,  308,  308,
-      307,    0,  310,    0,    0,  312,  309,    0,  309,  308,
-      309,  308,  310,  308,  310,  309,  310,  311,  308,    0,
-      312,  310,    0,  314,    0,    0,    0,  311,    0,  311,
+        0,  294,    0,  293,  293,    0,  295,    0,  294,  296,
+      294,    0,  294,    0,    0,    0,  295,  294,  295,  296,
+      295,  296,    0,  296,  298,  295,  297,  297,  296,    0,
+      299,    0,    0,  301,  298,    0,  298,  297,  298,  297,
+      299,  297,  299,  298,  299,  300,  297,    0,  301,  299,
+        0,  303,    0,    0,    0,  300,    0,  300,  301,  300,
+      301,  303,  301,  303,  300,  303,  304,  301,  298,  305,
+      303,    0,  305,    0,    0,    0,  304,  306,  304,  305,
+      304,  305,    0,  305,    0,  304,    0,  306,  305,  306,
+      307,  306,    0,    0,    0,    0,  306,    0,    0,    0,
 
-      312,  311,  312,  314,  312,  314,  311,  314,  315,  312,
-        0,  309,  314,    0,  316,    0,    0,  316,  315,    0,
-      315,    0,  315,    0,  316,  317,  316,  315,  316,    0,
-        0,  318,    0,  316,    0,  317,    0,  317,    0,  317,
-        0,  318,    0,  318,  317,  318,  322,    0,  318,    0,
-      318,    0,    0,    0,    0,    0,  322,    0,  322,    0,
-      322,  317,    0,  328,    0,  322,  323,  323,  323,  323,
-      323,  323,  323,  328,    0,  328,    0,  328,  329,  329,
-        0,  328,  328,  330,  330,    0,    0,    0,  329,    0,
-      329,    0,  329,    0,  330,  331,  330,  329,  330,    0,
+      307,  311,  307,    0,  307,    0,    0,  307,    0,  307,
+        0,  311,  306,  311,  313,  311,    0,  314,  314,    0,
+      311,    0,    0,    0,  313,    0,  313,  314,  313,  314,
+        0,  314,  313,  313,  315,  315,  314,    0,  316,    0,
+      318,  318,    0,    0,    0,  315,    0,  315,  316,  315,
+      316,  318,  316,  318,  315,  318,    0,  316,  319,  319,
+      318,  320,    0,    0,  320,    0,    0,    0,  319,  321,
+      319,  320,  319,  320,    0,  320,    0,  319,    0,  321,
+      320,  321,  322,  321,  323,  323,    0,    0,  321,    0,
+        0,    0,  322,  324,  322,  323,  322,  323,    0,  323,
 
-      333,  333,    0,  330,  323,  331,    0,  331,    0,  331,
-        0,  333,    0,  333,  331,  333,  334,  334,    0,  335,
-      333,    0,  335,    0,    0,    0,  334,  336,  334,  335,
-      334,  335,    0,  335,    0,  334,    0,  336,  335,  336,
-      337,  336,  338,  338,    0,    0,  336,    0,    0,    0,
-      337,  339,  337,  338,  337,  338,    0,  338,  339,  337,
-        0,  339,  338,  339,  340,  339,    0,    0,    0,    0,
-      339,    0,  341,    0,  340,  341,  340,    0,  340,  341,
-        0,    0,  341,  340,  341,  342,  341,  342,    0,    0,
-        0,  341,    0,  343,    0,  342,  343,  342,    0,  342,
+      324,  322,    0,  324,  323,  324,  325,  324,    0,    0,
+        0,    0,  324,    0,  326,    0,  325,  326,  325,    0,
+      325,  326,    0,    0,  326,  325,  326,  327,  326,  327,
+        0,    0,    0,  326,    0,  328,    0,  327,  328,  327,
+        0,  327,  328,  329,    0,  328,  327,  328,    0,  328,
+        0,  330,    0,  329,  328,  329,    0,  329,    0,  329,
+        0,  330,  329,  330,    0,  330,  331,  331,    0,  330,
+      330,    0,  332,    0,    0,    0,  331,    0,  331,    0,
+      331,    0,  332,  333,  332,  331,  332,    0,    0,  334,
+      332,  332,    0,  333,    0,  333,    0,  333,    0,  334,
 
-      343,  344,    0,  343,  342,  343,    0,  343,    0,  345,
-        0,  344,  343,  344,    0,  344,    0,  344,    0,  345,
-      344,  345,    0,  345,  346,  346,    0,  345,  345,    0,
-      347,    0,    0,    0,  346,    0,  346,    0,  346,    0,
-      347,  348,  347,  346,  347,    0,    0,  349,  347,  347,
-        0,  348,    0,  348,    0,  348,    0,  349,  348,  349,
-      348,  349,  350,  354,    0,    0,  349,    0,    0,    0,
-      354,    0,  350,  354,  350,  354,  350,  354,    0,    0,
-      356,  350,  354,  355,  355,    0,  355,    0,    0,    0,
-      356,    0,  356,  355,  356,  355,    0,  355,  356,  356,
+      333,  334,  333,  334,  335,  339,    0,    0,  334,    0,
+        0,    0,  339,    0,  335,  339,  335,  339,  335,  339,
+        0,    0,  341,  335,  339,  340,  340,    0,  340,    0,
+        0,    0,  341,    0,  341,  340,  341,  340,    0,  340,
+      341,  341,  343,  342,  340,  342,    0,    0,    0,    0,
+        0,    0,  343,  342,  343,  342,  343,  342,  344,    0,
+        0,  343,  342,    0,  345,    0,    0,  345,  344,    0,
+      344,    0,  344,    0,  345,  346,  345,  344,  345,  347,
+        0,    0,  348,  345,    0,  346,  347,  346,    0,  346,
+        0,    0,  346,    0,  346,    0,  347,  348,  347,    0,
 
-      358,  357,  355,  357,    0,    0,    0,    0,    0,    0,
-      358,  357,  358,  357,  358,  357,  359,    0,    0,  358,
-      357,    0,  360,    0,    0,  360,  359,    0,  359,    0,
-      359,    0,  360,  361,  360,  359,  360,  362,    0,    0,
-      363,  360,    0,  361,  362,  361,    0,  361,    0,    0,
-      361,    0,  361,    0,  362,  363,  362,    0,  362,    0,
-        0,  365,    0,  362,    0,  363,    0,  363,    0,  363,
-        0,  365,  366,  365,  363,  365,    0,    0,  367,  365,
-      365,    0,  366,    0,  366,    0,  366,    0,  367,  369,
-      367,  366,  367,    0,    0,    0,    0,  367,    0,  369,
+      347,    0,    0,  350,    0,  347,    0,  348,    0,  348,
+        0,  348,    0,  350,  351,  350,  348,  350,    0,    0,
+      352,  350,  350,    0,  351,    0,  351,    0,  351,    0,
+      352,  354,  352,  351,  352,    0,    0,    0,    0,  352,
+        0,  354,  355,  354,    0,  354,    0,  354,  356,  355,
+      354,    0,  355,    0,  355,    0,  355,    0,  356,  357,
+      356,  355,  356,    0,    0,    0,    0,  356,    0,  357,
+        0,  357,  359,  357,    0,  360,    0,  357,  357,  359,
+        0,    0,  359,  361,  359,  360,  359,  360,  361,  360,
+        0,  359,    0,  361,  360,  361,  362,  361,    0,    0,
 
-      370,  369,    0,  369,    0,  369,  371,  370,  369,    0,
-      370,    0,  370,    0,  370,    0,  371,  372,  371,  370,
-      371,    0,    0,    0,    0,  371,    0,  372,    0,  372,
-      374,  372,    0,  375,    0,  372,  372,  374,    0,    0,
-      374,  376,  374,  375,  374,  375,  376,  375,    0,  374,
-        0,  376,  375,  376,  377,  376,    0,    0,    0,    0,
-      376,    0,    0,    0,  377,  379,  377,    0,  377,    0,
-        0,  381,  379,  377,    0,  379,  377,  379,    0,  379,
-        0,  381,    0,  381,  379,  381,  382,  383,    0,  382,
-      381,    0,    0,    0,    0,    0,  382,  383,  382,  383,
+        0,    0,  361,    0,    0,    0,  362,  364,  362,    0,
+      362,    0,    0,  366,  364,  362,    0,  364,  362,  364,
+        0,  364,    0,  366,    0,  366,  364,  366,  367,  368,
+        0,  367,  366,    0,    0,    0,    0,    0,  367,  368,
+      367,  368,  367,  368,  370,  368,    0,  367,  368,    0,
+      375,    0,    0,    0,  370,    0,  370,    0,  370,    0,
+      375,    0,  375,  370,  375,  376,  376,    0,    0,  375,
+        0,    0,  377,    0,    0,    0,  376,    0,  376,    0,
+      376,    0,  377,  379,  377,  376,  377,    0,  370,  380,
+      377,  377,    0,  379,    0,  379,    0,  379,    0,  380,
 
-      382,  383,  385,  383,    0,  382,  383,    0,  394,    0,
-        0,    0,  385,    0,  385,    0,  385,    0,  394,    0,
-      394,  385,  394,  395,  395,    0,    0,  394,    0,    0,
-      396,    0,    0,    0,  395,    0,  395,    0,  395,    0,
-      396,  398,  396,  395,  396,    0,    0,  385,  396,  396,
-        0,  398,  399,  398,    0,  398,    0,    0,    0,    0,
-      398,    0,  399,  400,  399,    0,  399,    0,    0,  401,
-      399,  399,  401,  400,    0,  400,    0,  400,    0,  401,
-      402,  401,  400,  401,    0,    0,  403,  402,  401,    0,
-      402,    0,  402,    0,  402,    0,  403,  404,  403,  402,
+      381,  380,  379,  380,    0,    0,  382,  380,  380,  382,
+      381,    0,  381,    0,  381,    0,  382,  383,  382,  381,
+      382,    0,    0,  384,  383,  382,    0,  383,    0,  383,
+        0,  383,    0,  384,  385,  384,  383,  384,    0,    0,
+        0,    0,  384,    0,  385,  386,  385,  386,  385,    0,
+        0,  387,  385,  385,    0,  386,    0,  386,    0,  386,
+        0,  387,    0,  387,  386,  387,    0,    0,  388,  387,
+      387,  388,    0,    0,  389,    0,  389,    0,  388,    0,
+      388,    0,  388,    0,  389,  390,  389,  388,  389,    0,
+      391,  391,    0,  389,    0,  390,    0,  390,    0,  390,
 
-      403,    0,    0,    0,    0,  403,    0,  404,  405,  404,
-      405,  404,    0,    0,  406,  404,  404,    0,  405,    0,
-      405,    0,  405,    0,  406,    0,  406,  405,  406,    0,
-        0,  407,  406,  406,  407,    0,    0,  408,    0,  408,
-        0,  407,    0,  407,    0,  407,    0,  408,  409,  408,
-      407,  408,    0,  410,  410,    0,  408,    0,  409,    0,
-      409,    0,  409,    0,  410,  411,  410,  409,  410,    0,
-        0,  412,    0,  410,    0,  411,    0,  411,  412,  411,
-        0,  412,  413,  412,  411,  412,    0,    0,  414,    0,
-      412,    0,  413,    0,  413,  414,  413,    0,  414,  413,
+        0,  391,  392,  391,  390,  391,    0,    0,  393,    0,
+      391,    0,  392,    0,  392,  393,  392,    0,  393,  394,
+      393,  392,  393,    0,    0,  395,    0,  393,    0,  394,
+        0,  394,  395,  394,    0,  395,  394,  395,  394,  395,
+      396,  396,  400,    0,  395,    0,  400,    0,    0,    0,
+        0,  396,  400,  396,  400,  396,  400,  401,    0,    0,
+      396,  400,    0,  402,  401,  402,    0,  401,    0,  401,
+        0,  401,    0,  402,  403,  402,  401,  402,    0,    0,
+      404,    0,  402,  404,  403,    0,  403,    0,  403,    0,
+      404,  403,  404,  403,  404,  405,  405,    0,    0,  404,
 
-      414,  413,  414,  415,  415,  419,    0,  414,    0,  419,
-        0,    0,    0,    0,  415,  419,  415,  419,  415,  419,
-      420,    0,    0,  415,  419,    0,  421,  420,  421,    0,
-      420,    0,  420,    0,  420,    0,  421,  422,  421,  420,
-      421,    0,    0,  423,    0,  421,  423,  422,    0,  422,
-        0,  422,    0,  423,  422,  423,  422,  423,  424,  424,
-        0,    0,  423,    0,  425,  425,    0,    0,  424,    0,
-      424,    0,  424,    0,  425,  426,  425,  424,  425,    0,
-        0,    0,    0,  425,    0,  426,    0,  426,    0,  426,
-      427,  426,    0,  427,  426,    0,  428,    0,    0,    0,
+        0,  406,  406,    0,    0,  405,    0,  405,    0,  405,
+        0,  406,  407,  406,  405,  406,    0,    0,    0,    0,
+      406,    0,  407,    0,  407,    0,  407,  408,  407,    0,
+      408,  407,    0,  409,    0,    0,    0,  408,    0,  408,
+        0,  408,    0,  409,  410,  409,  408,  409,    0,    0,
+      409,  410,  409,    0,  410,  412,  410,    0,  410,    0,
+      413,  413,    0,  410,    0,  412,    0,  412,    0,  412,
+        0,  413,  415,  413,  412,  413,    0,    0,  416,    0,
+      413,    0,  415,    0,  415,    0,  415,    0,  416,  417,
+      416,  415,  416,    0,    0,    0,    0,  416,    0,  417,
 
-      427,    0,  427,    0,  427,    0,  428,  429,  428,  427,
-      428,    0,    0,  428,  429,  428,    0,  429,  431,  429,
-        0,  429,    0,  432,  432,    0,  429,    0,  431,    0,
-      431,    0,  431,    0,  432,  434,  432,  431,  432,    0,
-        0,  435,    0,  432,    0,  434,    0,  434,    0,  434,
-        0,  435,  436,  435,  434,  435,    0,    0,    0,    0,
-      435,    0,  436,    0,  436,  437,  436,    0,  437,    0,
-      436,  436,    0,  439,    0,  437,    0,  437,    0,  437,
-        0,    0,    0,  439,  437,  439,    0,  439,  440,  440,
-        0,  441,  439,  439,  442,    0,    0,    0,  440,    0,
+        0,  417,  418,  417,    0,  418,    0,  417,  417,    0,
+      420,    0,  418,    0,  418,    0,  418,    0,    0,    0,
+      420,  418,  420,    0,  420,  421,  421,    0,  422,  420,
+      420,  423,    0,    0,    0,  421,    0,  421,  422,  421,
+      422,  423,  422,  423,  421,  423,  425,  422,  425,  427,
+      423,    0,  428,    0,    0,    0,  425,    0,  425,  427,
+      425,  427,  428,  427,  428,  425,  428,  435,  427,  428,
+        0,  428,    0,    0,    0,    0,    0,  435,    0,  435,
+      436,  435,    0,  438,    0,  435,  435,  436,    0,    0,
+      436,    0,  436,  438,  436,  438,    0,  438,  439,  436,
 
-      440,  441,  440,  441,  442,  441,  442,  440,  442,  444,
-      441,  444,  446,  442,    0,  447,    0,    0,    0,  444,
-        0,  444,  446,  444,  446,  447,  446,  447,  444,  447,
-      457,  446,  447,    0,  447,    0,    0,    0,    0,    0,
-      457,    0,  457,  458,  457,    0,  460,    0,  457,  457,
-      458,    0,    0,  458,    0,  458,  460,  458,  460,    0,
-      460,  461,  458,    0,  461,  460,    0,  462,    0,    0,
-        0,  461,    0,  461,    0,  461,    0,  462,  463,  462,
-      461,  462,    0,    0,  464,    0,  462,    0,  463,    0,
-      463,  464,  463,    0,  464,  465,  464,  463,  464,    0,
+        0,  439,  438,    0,  440,    0,    0,    0,  439,    0,
+      439,    0,  439,    0,  440,  441,  440,  439,  440,    0,
+        0,  442,    0,  440,    0,  441,    0,  441,  442,  441,
+        0,  442,  443,  442,  441,  442,    0,    0,  444,    0,
+      442,    0,  443,    0,  443,    0,  443,    0,  444,  445,
+      444,  443,  444,    0,    0,    0,  445,  444,    0,  445,
+      446,  445,  446,  445,    0,    0,  447,    0,  445,    0,
+      446,    0,  446,    0,  446,    0,  447,  448,  447,  446,
+      447,    0,  448,  449,    0,  447,    0,  448,    0,  448,
+        0,  448,    0,  449,  450,  449,  448,  449,    0,    0,
 
-        0,  466,    0,  464,    0,  465,    0,  465,    0,  465,
-        0,  466,  467,  466,  465,  466,    0,    0,    0,  467,
-      466,    0,  467,  468,  467,  468,  467,    0,    0,  469,
-        0,  467,    0,  468,    0,  468,    0,  468,    0,  469,
-      470,  469,  468,  469,    0,  470,  471,    0,  469,    0,
-      470,    0,  470,    0,  470,    0,  471,  472,  471,  470,
-      471,    0,    0,    0,  471,  471,    0,  472,  473,  472,
-        0,  472,    0,    0,  474,  472,  472,    0,  473,    0,
-      473,    0,  473,    0,  474,  475,  474,  473,  474,    0,
-        0,  479,    0,  474,    0,  475,    0,  475,  479,  475,
+        0,  449,  449,    0,  450,  451,  450,    0,  450,    0,
+        0,  452,  450,  450,    0,  451,    0,  451,    0,  451,
+        0,  452,  453,  452,  451,  452,    0,    0,  457,    0,
+      452,    0,  453,    0,  453,  457,  453,    0,  457,  458,
+      457,  453,  457,    0,    0,    0,    0,  457,    0,  458,
+      459,  458,    0,  458,    0,    0,  460,  458,  458,    0,
+      459,    0,  459,    0,  459,    0,  460,  461,  460,  459,
+      460,    0,    0,  462,    0,  460,  462,  461,    0,  461,
+        0,  461,    0,  462,  461,  462,  461,  462,  463,  464,
+        0,    0,  462,    0,    0,    0,    0,    0,  463,  464,
 
-        0,  479,  480,  479,  475,  479,    0,    0,    0,    0,
-      479,    0,  480,  481,  480,    0,  480,    0,    0,  482,
-      480,  480,    0,  481,    0,  481,    0,  481,    0,  482,
-      483,  482,  481,  482,    0,    0,  484,    0,  482,  484,
-      483,    0,  483,    0,  483,    0,  484,  483,  484,  483,
-      484,  485,  486,    0,    0,  484,    0,    0,    0,    0,
-        0,  485,  486,  485,  486,  485,  486,  487,  487,  485,
-      485,  486,    0,  488,    0,    0,    0,  487,    0,  487,
-        0,  487,    0,  488,  489,  488,  487,  488,    0,    0,
-      491,    0,  488,    0,  489,    0,  489,    0,  489,    0,
+      463,  464,  463,  464,  465,  465,  463,  463,  464,    0,
+      466,    0,    0,    0,  465,    0,  465,    0,  465,    0,
+      466,  467,  466,  465,  466,    0,    0,  469,    0,  466,
+        0,  467,    0,  467,    0,  467,    0,  469,  471,  469,
+      467,  469,    0,    0,    0,    0,  469,    0,  471,  472,
+      471,    0,  471,  472,  466,  473,    0,  471,    0,  472,
+        0,  472,    0,  472,    0,  473,  474,  473,  472,  473,
+        0,    0,  476,    0,  473,  476,  474,    0,  474,    0,
+      474,    0,  476,    0,  476,  474,  476,  477,    0,    0,
+      477,  476,    0,  479,    0,    0,  479,  477,    0,  477,
 
-      491,  493,  491,  489,  491,    0,    0,    0,    0,  491,
-        0,  493,  494,  493,    0,  493,  494,    0,  488,    0,
-      493,    0,  494,  495,  494,    0,  494,    0,    0,  496,
-        0,  494,    0,  495,    0,  495,    0,  495,    0,  496,
-        0,  496,  495,  496,  498,    0,    0,  498,  496,    0,
-      499,    0,    0,  499,  498,    0,  498,    0,  498,    0,
-      499,    0,  499,  498,  499,  501,    0,    0,  501,  499,
-      503,  503,    0,    0,    0,  501,    0,  501,    0,  501,
-        0,  503,  513,  503,  501,  503,    0,    0,    0,  513,
-      503,    0,  513,    0,  513,    0,  513,  514,  514,    0,
+        0,  477,    0,  479,    0,  479,  477,  479,  481,  481,
+      488,    0,  479,    0,    0,    0,    0,  488,    0,  481,
+      488,  481,  488,  481,  488,  489,  489,    0,  481,  488,
+        0,  491,    0,    0,    0,  489,    0,  489,    0,  489,
+        0,  491,  492,  491,  489,  491,    0,  491,    0,    0,
+      491,    0,  492,    0,  492,  493,  492,    0,  493,    0,
+      492,  492,    0,  494,    0,  493,  495,  493,    0,  493,
+        0,    0,  497,  494,  493,  494,  495,  494,  495,  495,
+      495,  496,  494,    0,  499,  495,    0,  497,    0,    0,
+        0,  496,    0,  496,  499,  496,  499,  497,  499,  497,
 
-        0,  513,    0,  516,    0,    0,    0,  514,    0,  514,
-        0,  514,    0,  516,  517,  516,  514,  516,    0,  516,
-        0,    0,  516,    0,  517,    0,  517,  518,  517,    0,
-      518,    0,  517,  517,    0,  519,    0,  518,  520,  518,
-        0,  518,    0,    0,  522,  519,  518,  519,  520,  519,
-      520,  520,  520,  521,  519,    0,  524,  520,    0,  522,
-        0,    0,    0,  521,    0,  521,  524,  521,  524,  522,
-      524,  522,  521,  522,  523,  524,    0,  523,  522,    0,
-      525,    0,    0,    0,  523,    0,  523,  525,  523,    0,
-      525,  526,  525,  523,  525,    0,    0,  531,    0,  525,
+      496,  497,  498,  499,    0,  498,  497,    0,  500,    0,
+        0,    0,  498,    0,  498,  500,  498,    0,  500,  501,
+      500,  498,  500,    0,    0,  506,    0,  500,  506,  501,
+        0,  501,    0,  501,    0,  506,  507,  506,  501,  506,
+        0,    0,  508,    0,  506,    0,  507,    0,  507,    0,
+      507,    0,  508,  509,  508,  507,  508,    0,    0,  510,
+        0,  508,    0,  509,    0,  509,  510,  509,    0,  510,
+      511,  510,  509,  510,    0,    0,    0,    0,  510,    0,
+      511,  513,  511,    0,  511,  513,    0,  515,  511,  511,
+        0,  513,    0,  513,  519,  513,    0,  515,  517,  515,
 
-      531,  526,    0,  526,    0,  526,    0,  531,  532,  531,
-      526,  531,    0,    0,  533,    0,  531,    0,  532,    0,
-      532,    0,  532,    0,  533,  534,  533,  532,  533,    0,
-        0,  535,    0,  533,    0,  534,    0,  534,  535,  534,
-        0,  535,  536,  535,  534,  535,    0,    0,    0,    0,
-      535,    0,  536,  538,  536,    0,  536,  538,    0,  540,
-      536,  536,    0,  538,    0,  538,  544,  538,    0,  540,
-      542,  540,  538,  540,    0,    0,    0,  542,  540,    0,
-      542,  544,  542,    0,  542,    0,    0,  545,    0,  542,
-        0,  544,    0,  544,    0,  544,    0,  545,  547,  545,
+      513,  515,    0,    0,    0,  517,  515,    0,  517,  519,
+      517,    0,  517,    0,    0,  520,    0,  517,    0,  519,
+        0,  519,    0,  519,    0,  520,  522,  520,  519,  520,
+        0,    0,  524,    0,  520,    0,  522,    0,  522,    0,
+      522,    0,  524,  530,  524,  522,  524,    0,    0,  531,
+        0,  524,    0,  530,    0,  530,  530,  530,    0,  531,
+      533,  531,  530,  531,    0,    0,  534,    0,  531,    0,
+      533,    0,  533,    0,  533,    0,  534,    0,  534,  533,
+      534,  536,  535,  534,  535,  534,  536,    0,    0,    0,
+        0,  536,  535,  536,  535,  536,  535,  537,  538,  538,
 
-      544,  545,    0,    0,  549,    0,  545,    0,  547,    0,
-      547,    0,  547,    0,  549,  558,  549,  547,  549,    0,
-        0,  559,    0,  549,    0,  558,    0,  558,  558,  558,
-        0,  559,  561,  559,  558,  559,    0,    0,  562,    0,
-      559,    0,  561,    0,  561,    0,  561,    0,  562,    0,
-      562,  561,  562,  564,  563,  562,  563,  562,  564,    0,
-        0,    0,    0,  564,  563,  564,  563,  564,  563,  565,
-      566,  566,  564,  563,    0,    0,    0,    0,    0,  565,
-      566,  565,  566,  565,  566,  567,  568,  567,  565,  566,
-        0,    0,    0,    0,    0,  567,  568,  567,  568,  567,
+      536,  535,    0,    0,    0,    0,    0,  537,  538,  537,
+      538,  537,  538,  539,  540,  539,  537,  538,    0,    0,
+        0,    0,    0,  539,  540,  539,  540,  539,  540,  545,
+        0,    0,  539,  540,    0,    0,    0,  546,    0,  545,
+        0,  545,    0,  545,    0,  545,    0,  546,  545,  546,
+      546,  546,  547,  549,    0,    0,  546,    0,    0,  547,
+      549,    0,  547,  549,  547,  549,  547,  549,  552,    0,
+        0,  547,  549,    0,    0,    0,  554,    0,  552,    0,
+      552,    0,  552,    0,  556,    0,  554,  552,  554,  554,
+      554,    0,    0,    0,  556,  554,  556,  558,  556,    0,
 
-      568,  573,    0,    0,  567,  568,    0,    0,    0,  574,
-        0,  573,    0,  573,    0,  573,    0,  573,    0,  574,
-      573,  574,  574,  574,  575,  577,    0,    0,  574,    0,
-        0,  575,  577,    0,  575,  577,  575,  577,  575,  577,
-      580,    0,    0,  575,  577,    0,    0,    0,  582,    0,
-      580,    0,  580,    0,  580,    0,  584,    0,  582,  580,
-      582,  582,  582,    0,    0,    0,  584,  582,  584,  586,
-      584,    0,    0,    0,  584,  584,    0,    0,    0,  586,
-        0,  586,    0,  586,  592,  592,  592,    0,  586,    0,
-        0,    0,    0,  595,  596,    0,  592,  592,  592,  592,
+      564,    0,  556,  556,    0,    0,    0,  558,  565,  558,
+      564,  558,  564,    0,  564,    0,  558,    0,  565,  564,
+      565,  566,  565,    0,  567,    0,    0,  565,    0,    0,
+        0,  566,  568,  566,  567,  566,  567,    0,  567,    0,
+      566,    0,  568,  567,  568,  569,  568,    0,    0,  568,
+        0,  568,    0,  570,    0,  569,    0,  569,  569,  569,
+        0,  571,    0,  570,  569,  570,    0,  570,  571,  575,
+        0,  571,  570,  571,    0,  571,    0,  576,    0,  575,
+      571,  575,    0,  575,    0,  577,    0,  576,  575,  576,
+        0,  576,    0,  579,    0,  577,  576,  577,  577,  577,
 
-      592,  592,  592,  595,  596,  595,  596,  595,  596,  597,
-      598,    0,  595,  596,    0,    0,    0,    0,    0,  597,
-      598,  597,  598,  597,  598,  599,    0,    0,  597,  598,
-        0,    0,    0,  600,    0,  599,    0,  599,    0,  599,
-        0,  601,  599,  600,  599,  600,  600,  600,    0,  602,
-        0,  601,  600,  601,    0,  601,  602,  606,    0,  602,
-      601,  602,    0,  602,    0,  607,    0,  606,  602,  606,
-        0,  606,    0,  608,    0,  607,  606,  607,    0,  607,
-        0,  610,    0,  608,  607,  608,  608,  608,    0,  613,
-        0,  610,  608,  610,    0,  610,  613,  615,    0,  613,
+        0,  582,    0,  579,  577,  579,    0,  579,  582,  584,
+        0,  582,  579,  582,    0,  582,  584,  585,    0,  584,
+      582,  584,    0,  584,  585,  592,    0,  585,  584,  585,
+        0,  585,    0,  593,    0,  592,  585,  592,    0,  592,
+        0,  594,    0,  593,  592,  593,    0,  593,    0,  595,
+        0,  594,  593,  594,    0,  594,    0,    0,    0,  595,
+      594,  595,  599,  595,    0,    0,    0,  595,  595,    0,
+      600,    0,  599,    0,  599,    0,  599,    0,  602,  599,
+      600,  599,  600,    0,  600,  602,  605,    0,  602,  600,
+      602,    0,  602,    0,    0,    0,  605,  602,  605,  607,
 
-      610,  613,    0,  613,  615,  616,    0,  615,  613,  615,
-        0,  615,  616,    0,    0,  616,  615,  616,    0,  616,
-        0,    0,  626,  627,  616,  623,  623,  623,  623,  623,
-      623,  623,  626,  627,  626,  627,  626,  627,  628,    0,
-        0,  626,  627,    0,    0,    0,  629,    0,  628,    0,
-      628,    0,  628,    0,    0,    0,  629,  628,  629,  633,
-      629,    0,    0,  623,  629,  629,    0,  634,    0,  633,
-        0,  633,    0,  633,    0,  636,  633,  634,  633,  634,
-        0,  634,  636,  639,    0,  636,  634,  636,    0,  636,
-        0,    0,    0,  639,  636,  639,  641,  639,  641,  642,
+      605,  607,  608,    0,  605,  605,  608,    0,    0,  607,
+      614,  607,  608,  607,  608,    0,  608,    0,  607,    0,
+      614,  608,  614,  615,  614,    0,  619,    0,  614,  614,
+        0,    0,    0,  615,    0,  615,  619,  615,  619,  620,
+      619,    0,  615,    0,    0,  619,  615,  622,    0,  620,
+      625,  620,    0,  620,    0,    0,    0,  622,  620,  622,
+      625,  622,  625,    0,  625,  622,  622,  627,  628,  625,
+        0,    0,    0,  625,    0,  628,    0,  627,  628,  627,
+      628,  627,  628,  634,  635,    0,  627,  628,    0,    0,
+        0,    0,    0,  634,  635,  634,  635,  634,  635,  634,
 
-        0,  639,  639,  642,    0,    0,  641,    0,  641,  642,
-      641,  642,    0,  642,    0,  641,    0,    0,  642,  649,
-      649,  649,    0,    0,    0,    0,    0,    0,  651,  652,
-        0,  649,  649,  649,  649,  649,  649,  649,  651,  652,
-      651,  652,  651,  652,  656,  657,  651,  651,  652,    0,
-        0,    0,  652,    0,  656,  657,  656,  657,  656,  657,
-      659,  662,    0,  656,  657,    0,    0,    0,    0,    0,
-      659,  662,  659,  662,  659,  662,  664,    0,  659,  659,
-      662,    0,  665,    0,  662,    0,  664,    0,  664,  665,
-      664,    0,  665,  672,  665,  664,  665,    0,    0,    0,
+      639,  642,  634,  635,    0,    0,    0,    0,    0,    0,
+      639,  642,  639,  642,  639,  642,    0,    0,  644,  639,
+      642,  644,    0,  639,    0,    0,  650,    0,  644,    0,
+      644,    0,  644,    0,  652,    0,  650,  644,  650,  650,
+      650,    0,  655,    0,  652,  650,  652,    0,  652,    0,
+      659,    0,  655,  652,  655,    0,  655,    0,  655,    0,
+      659,  655,  659,  663,  659,    0,  666,    0,    0,  659,
+        0,    0,    0,  663,    0,  663,  666,  663,  666,    0,
+      666,    0,  663,    0,    0,  666,  670,  670,  670,  670,
+      670,  670,  670,  670,  670,  670,  670,  671,  671,  671,
 
-        0,  665,    0,  672,  673,  672,    0,  672,    0,  672,
-      677,    0,  672,    0,  673,    0,  673,    0,  673,    0,
-      677,    0,  677,  673,  677,  680,    0,    0,  682,  677,
-        0,  682,    0,  677,    0,  680,    0,  680,  682,  680,
-      682,    0,  682,    0,  680,    0,    0,  682,  687,  687,
-      687,    0,    0,    0,    0,    0,    0,  689,    0,    0,
-      687,  687,  687,  687,  687,  687,  687,  689,  691,  689,
-      689,  689,    0,    0,  694,    0,  689,    0,  691,    0,
-      691,    0,  691,    0,  694,  698,  694,  691,  694,    0,
-      694,  702,    0,  694,    0,  698,    0,  698,    0,  698,
+      671,  671,  671,  671,  671,  671,  671,  671,  672,  672,
+      672,  672,  672,  672,  672,  672,  672,  672,  672,  673,
+      673,  673,  673,  673,  673,  673,  673,  673,  673,  673,
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+      674,  675,  675,  675,  675,  675,  675,  675,  675,  675,
+      675,  675,  676,  676,  676,    0,  676,  676,  676,  676,
+      676,  676,  676,  677,  677,    0,    0,  677,    0,  677,
+      678,  678,    0,  678,  679,  679,    0,  679,  679,  679,
+        0,  679,  679,  679,  679,  680,  680,  680,    0,  680,
+      680,  680,  680,  680,  680,  680,  681,  681,  681,  681,
 
-        0,  702,  705,  702,  698,  702,    0,    0,    0,    0,
-      702,    0,  705,    0,  705,    0,  705,    0,    0,    0,
-        0,  705,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  715,  715,  715,    0,  715,  715,
+      681,  681,  681,  681,    0,  681,  682,    0,    0,  682,
+      682,  682,  682,  682,  682,  682,  683,    0,    0,  683,
+      683,  683,  683,  683,  683,  683,  684,    0,    0,  684,
+        0,  684,  684,  684,  684,  684,  685,  685,    0,  685,
+      686,  686,    0,  686,  687,  687,    0,  687,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
 
-      715,  715,  715,  715,  715,  715,  716,  716,    0,    0,
-      716,    0,  716,  717,    0,  717,  718,  718,    0,  718,
-      718,  719,  719,    0,  719,  719,  719,    0,  719,  719,
-      719,  719,  719,  720,  720,  720,    0,  720,  720,  720,
-      720,  720,  720,  720,  720,  721,  721,  721,  721,  721,
-      721,  721,  721,    0,  721,  721,  722,    0,    0,  722,
-      722,  722,  722,  722,  722,  722,  722,  723,    0,    0,
-      723,  723,  723,  723,  723,  723,  723,  723,  724,    0,
-        0,  724,    0,  724,  724,  724,  724,  724,  724,  725,
-      725,    0,  725,  725,  726,  726,    0,  726,  726,  727,
-
-      727,    0,  727,  727,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669
     } ;
 
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static yyconst short int yy_rule_linenum[131] =
+static yyconst short int yy_rule_linenum[129] =
     {   0,
       103,  106,  108,  109,  110,  113,  115,  116,  117,  129,
       136,  143,  149,  158,  166,  174,  175,  177,  196,  202,
-      203,  204,  205,  206,  209,  215,  222,  229,  236,  246,
-      280,  287,  291,  292,  300,  301,  302,  303,  304,  309,
-      310,  311,  312,  313,  314,  315,  316,  317,  318,  319,
-      328,  329,  330,  331,  332,  333,  334,  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,  367,
-      368,  369,  370,  371,  372,  373,  374,  375,  376,  377,
+      203,  204,  205,  206,  209,  215,  222,  229,  236,  243,
+      247,  248,  256,  257,  258,  259,  260,  265,  266,  267,
+      268,  269,  270,  271,  272,  273,  274,  275,  284,  285,
+      286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
+      296,  297,  298,  299,  300,  301,  302,  303,  304,  305,
+      306,  307,  308,  309,  310,  311,  312,  313,  314,  315,
+      316,  317,  318,  319,  320,  321,  322,  323,  324,  325,
+      326,  327,  328,  329,  330,  331,  332,  333,  334,  335,
 
-      378,  379,  380,  381,  382,  383,  384,  385,  386,  391,
-      392,  397,  398,  399,  402,  408,  415,  424,  435,  441,
-      443,  444,  446,  448,  450,  463,  469,  475,  482,  484
+      336,  337,  338,  339,  340,  341,  342,  347,  348,  353,
+      354,  355,  358,  364,  371,  380,  391,  397,  399,  400,
+      402,  404,  406,  419,  425,  431,  438,  440
     } ;
 
 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
@@ -1877,7 +1827,7 @@
 
 /* Newline */
 /* White-space */
-#line 1881 "asn1p_l.c"
+#line 1831 "asn1p_l.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -2031,7 +1981,7 @@
 #line 101 "asn1p_l.l"
 
 
-#line 2035 "asn1p_l.c"
+#line 1985 "asn1p_l.c"
 
 	if ( yy_init )
 		{
@@ -2079,14 +2029,14 @@
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 709 )
+				if ( yy_current_state >= 670 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			*yy_state_ptr++ = yy_current_state;
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 4405 );
+		while ( yy_base[yy_current_state] != 4249 );
 
 yy_find_action:
 		yy_current_state = *--yy_state_ptr;
@@ -2123,13 +2073,13 @@
 			{
 			if ( yy_act == 0 )
 				fprintf( stderr, "--scanner backing up\n" );
-			else if ( yy_act < 131 )
+			else if ( yy_act < 129 )
 				fprintf( stderr, "--accepting rule at line %d (\"%s\")\n",
 				         yy_rule_linenum[yy_act], yytext );
-			else if ( yy_act == 131 )
+			else if ( yy_act == 129 )
 				fprintf( stderr, "--accepting default rule (\"%s\")\n",
 				         yytext );
-			else if ( yy_act == 132 )
+			else if ( yy_act == 130 )
 				fprintf( stderr, "--(end of buffer or a NUL)\n" );
 			else
 				fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2370,72 +2320,22 @@
 		return TOK_number;
 	}
 	YY_BREAK
-/*
-	 * Tags
-	 */
 case 30:
 YY_RULE_SETUP
-#line 246 "asn1p_l.l"
-{
-		char *p;
-		memset(&asn1p_lval.a_tag, 0, sizeof(asn1p_lval.a_tag));
-		switch(yytext[1]) {
-		case 'U':
-			asn1p_lval.a_tag.tag_class = TC_UNIVERSAL;
-			p = yytext + sizeof("UNIVERSAL") + 1;
-			break;
-		case 'A':
-			asn1p_lval.a_tag.tag_class = TC_APPLICATION;
-			p = yytext + sizeof("APPLICATION") + 1;
-			break;
-		case 'P':
-			asn1p_lval.a_tag.tag_class = TC_PRIVATE;
-			p = yytext + sizeof("PRIVATE") + 1;
-			break;
-		default:
-			assert(yytext[1] >= '0' && yytext[1] <= '9');
-			asn1p_lval.a_tag.tag_class = TC_CONTEXT_SPECIFIC;
-			p = yytext + 1;
-			break;
-		}
-		asn1p_lval.a_tag.tag_value = asn1p_atoi(p);
-		if(*p == '0' && asn1p_lval.a_tag.tag_value) {
-			fprintf(stderr,
-			"Tag value at line %d "
-			"cannot start with zero "
-			"and have multiple digits: \"%s\"\n",
-			yylineno, yytext);
-			return -1;
-		}
-		return TOK_tag;
-	}
-	YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 280 "asn1p_l.l"
-{
-		fprintf(stderr,
-			"Unsupported tag syntax at line %d: \"%s\"\n",
-			yylineno, yytext);
-		return -1;
-	}
-	YY_BREAK
-case 32:
-YY_RULE_SETUP
-#line 287 "asn1p_l.l"
+#line 243 "asn1p_l.l"
 return TOK_ABSENT;
 	YY_BREAK
 /*
 ABSTRACT-SYNTAX		return TOK_ABSTRACT_SYNTAX;
 	*/
-case 33:
+case 31:
 YY_RULE_SETUP
-#line 291 "asn1p_l.l"
+#line 247 "asn1p_l.l"
 return TOK_ALL;
 	YY_BREAK
-case 34:
+case 32:
 YY_RULE_SETUP
-#line 292 "asn1p_l.l"
+#line 248 "asn1p_l.l"
 {
 				/* Appeared in 1990, removed in 1997 */
 				if(TYPE_LIFETIME(1990, 1997))
@@ -2445,88 +2345,88 @@
 				REJECT;
 			}
 	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 256 "asn1p_l.l"
+return TOK_APPLICATION;
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 257 "asn1p_l.l"
+return TOK_AUTOMATIC;
+	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 300 "asn1p_l.l"
-return TOK_APPLICATION;
+#line 258 "asn1p_l.l"
+return TOK_BEGIN;
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 301 "asn1p_l.l"
-return TOK_AUTOMATIC;
+#line 259 "asn1p_l.l"
+return TOK_BIT;
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 302 "asn1p_l.l"
-return TOK_BEGIN;
-	YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 303 "asn1p_l.l"
-return TOK_BIT;
-	YY_BREAK
-case 39:
-YY_RULE_SETUP
-#line 304 "asn1p_l.l"
+#line 260 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_BMPString;
 				REJECT;
 			}
 	YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 265 "asn1p_l.l"
+return TOK_BOOLEAN;
+	YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 266 "asn1p_l.l"
+return TOK_BY;
+	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 309 "asn1p_l.l"
-return TOK_BOOLEAN;
+#line 267 "asn1p_l.l"
+return TOK_CHARACTER;
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 310 "asn1p_l.l"
-return TOK_BY;
+#line 268 "asn1p_l.l"
+return TOK_CHOICE;
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 311 "asn1p_l.l"
-return TOK_CHARACTER;
+#line 269 "asn1p_l.l"
+return TOK_CLASS;
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 312 "asn1p_l.l"
-return TOK_CHOICE;
+#line 270 "asn1p_l.l"
+return TOK_COMPONENT;
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 313 "asn1p_l.l"
-return TOK_CLASS;
+#line 271 "asn1p_l.l"
+return TOK_COMPONENTS;
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 314 "asn1p_l.l"
-return TOK_COMPONENT;
+#line 272 "asn1p_l.l"
+return TOK_CONSTRAINED;
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 315 "asn1p_l.l"
-return TOK_COMPONENTS;
+#line 273 "asn1p_l.l"
+return TOK_CONTAINING;
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 316 "asn1p_l.l"
-return TOK_CONSTRAINED;
+#line 274 "asn1p_l.l"
+return TOK_DEFAULT;
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 317 "asn1p_l.l"
-return TOK_CONTAINING;
-	YY_BREAK
-case 49:
-YY_RULE_SETUP
-#line 318 "asn1p_l.l"
-return TOK_DEFAULT;
-	YY_BREAK
-case 50:
-YY_RULE_SETUP
-#line 319 "asn1p_l.l"
+#line 275 "asn1p_l.l"
 {
 				/* Appeared in 1990, removed in 1997 */
 				if(TYPE_LIFETIME(1990, 1997))
@@ -2537,355 +2437,355 @@
 				REJECT;
 			}
 	YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 284 "asn1p_l.l"
+return TOK_DEFINITIONS;
+	YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 285 "asn1p_l.l"
+return TOK_EMBEDDED;
+	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 328 "asn1p_l.l"
-return TOK_DEFINITIONS;
+#line 286 "asn1p_l.l"
+return TOK_ENCODED;
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 329 "asn1p_l.l"
-return TOK_EMBEDDED;
+#line 287 "asn1p_l.l"
+return TOK_ENCODING_CONTROL;
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 330 "asn1p_l.l"
-return TOK_ENCODED;
+#line 288 "asn1p_l.l"
+return TOK_END;
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 331 "asn1p_l.l"
-return TOK_ENCODING_CONTROL;
+#line 289 "asn1p_l.l"
+return TOK_ENUMERATED;
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 332 "asn1p_l.l"
-return TOK_END;
+#line 290 "asn1p_l.l"
+return TOK_EXCEPT;
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 333 "asn1p_l.l"
-return TOK_ENUMERATED;
+#line 291 "asn1p_l.l"
+return TOK_EXPLICIT;
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 334 "asn1p_l.l"
-return TOK_EXCEPT;
+#line 292 "asn1p_l.l"
+return TOK_EXPORTS;
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 335 "asn1p_l.l"
-return TOK_EXPLICIT;
+#line 293 "asn1p_l.l"
+return TOK_EXTENSIBILITY;
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 336 "asn1p_l.l"
-return TOK_EXPORTS;
+#line 294 "asn1p_l.l"
+return TOK_EXTERNAL;
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 337 "asn1p_l.l"
-return TOK_EXTENSIBILITY;
+#line 295 "asn1p_l.l"
+return TOK_FALSE;
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 338 "asn1p_l.l"
-return TOK_EXTERNAL;
+#line 296 "asn1p_l.l"
+return TOK_FROM;
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 339 "asn1p_l.l"
-return TOK_FALSE;
+#line 297 "asn1p_l.l"
+return TOK_GeneralizedTime;
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 340 "asn1p_l.l"
-return TOK_FROM;
+#line 298 "asn1p_l.l"
+return TOK_GeneralString;
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 341 "asn1p_l.l"
-return TOK_GeneralizedTime;
+#line 299 "asn1p_l.l"
+return TOK_GraphicString;
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 342 "asn1p_l.l"
-return TOK_GeneralString;
+#line 300 "asn1p_l.l"
+return TOK_IA5String;
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 343 "asn1p_l.l"
-return TOK_GraphicString;
+#line 301 "asn1p_l.l"
+return TOK_IDENTIFIER;
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 344 "asn1p_l.l"
-return TOK_IA5String;
+#line 302 "asn1p_l.l"
+return TOK_IMPLICIT;
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 345 "asn1p_l.l"
-return TOK_IDENTIFIER;
+#line 303 "asn1p_l.l"
+return TOK_IMPLIED;
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 346 "asn1p_l.l"
-return TOK_IMPLICIT;
+#line 304 "asn1p_l.l"
+return TOK_IMPORTS;
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 347 "asn1p_l.l"
-return TOK_IMPLIED;
+#line 305 "asn1p_l.l"
+return TOK_INCLUDES;
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 348 "asn1p_l.l"
-return TOK_IMPORTS;
+#line 306 "asn1p_l.l"
+return TOK_INSTANCE;
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 349 "asn1p_l.l"
-return TOK_INCLUDES;
+#line 307 "asn1p_l.l"
+return TOK_INSTRUCTIONS;
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 350 "asn1p_l.l"
-return TOK_INSTANCE;
+#line 308 "asn1p_l.l"
+return TOK_INTEGER;
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 351 "asn1p_l.l"
-return TOK_INSTRUCTIONS;
+#line 309 "asn1p_l.l"
+return TOK_INTERSECTION;
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 352 "asn1p_l.l"
-return TOK_INTEGER;
+#line 310 "asn1p_l.l"
+return TOK_ISO646String;
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 353 "asn1p_l.l"
-return TOK_INTERSECTION;
+#line 311 "asn1p_l.l"
+return TOK_MAX;
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 354 "asn1p_l.l"
-return TOK_ISO646String;
+#line 312 "asn1p_l.l"
+return TOK_MIN;
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 355 "asn1p_l.l"
-return TOK_MAX;
+#line 313 "asn1p_l.l"
+return TOK_MINUS_INFINITY;
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 356 "asn1p_l.l"
-return TOK_MIN;
+#line 314 "asn1p_l.l"
+return TOK_NULL;
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 357 "asn1p_l.l"
-return TOK_MINUS_INFINITY;
+#line 315 "asn1p_l.l"
+return TOK_NumericString;
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 358 "asn1p_l.l"
-return TOK_NULL;
+#line 316 "asn1p_l.l"
+return TOK_OBJECT;
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 359 "asn1p_l.l"
-return TOK_NumericString;
+#line 317 "asn1p_l.l"
+return TOK_ObjectDescriptor;
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 360 "asn1p_l.l"
-return TOK_OBJECT;
+#line 318 "asn1p_l.l"
+return TOK_OCTET;
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 361 "asn1p_l.l"
-return TOK_ObjectDescriptor;
+#line 319 "asn1p_l.l"
+return TOK_OF;
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 362 "asn1p_l.l"
-return TOK_OCTET;
+#line 320 "asn1p_l.l"
+return TOK_OPTIONAL;
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 363 "asn1p_l.l"
-return TOK_OF;
+#line 321 "asn1p_l.l"
+return TOK_PATTERN;
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 364 "asn1p_l.l"
-return TOK_OPTIONAL;
+#line 322 "asn1p_l.l"
+return TOK_PDV;
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 365 "asn1p_l.l"
-return TOK_PATTERN;
+#line 323 "asn1p_l.l"
+return TOK_PLUS_INFINITY;
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 366 "asn1p_l.l"
-return TOK_PDV;
+#line 324 "asn1p_l.l"
+return TOK_PRESENT;
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 367 "asn1p_l.l"
-return TOK_PLUS_INFINITY;
+#line 325 "asn1p_l.l"
+return TOK_PrintableString;
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 368 "asn1p_l.l"
-return TOK_PRESENT;
+#line 326 "asn1p_l.l"
+return TOK_PRIVATE;
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 369 "asn1p_l.l"
-return TOK_PrintableString;
+#line 327 "asn1p_l.l"
+return TOK_REAL;
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 370 "asn1p_l.l"
-return TOK_PRIVATE;
+#line 328 "asn1p_l.l"
+return TOK_RELATIVE_OID;
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 371 "asn1p_l.l"
-return TOK_REAL;
+#line 329 "asn1p_l.l"
+return TOK_SEQUENCE;
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 372 "asn1p_l.l"
-return TOK_RELATIVE_OID;
+#line 330 "asn1p_l.l"
+return TOK_SET;
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 373 "asn1p_l.l"
-return TOK_SEQUENCE;
+#line 331 "asn1p_l.l"
+return TOK_SIZE;
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 374 "asn1p_l.l"
-return TOK_SET;
+#line 332 "asn1p_l.l"
+return TOK_STRING;
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 375 "asn1p_l.l"
-return TOK_SIZE;
+#line 333 "asn1p_l.l"
+return TOK_SYNTAX;
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 376 "asn1p_l.l"
-return TOK_STRING;
+#line 334 "asn1p_l.l"
+return TOK_T61String;
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 377 "asn1p_l.l"
-return TOK_SYNTAX;
+#line 335 "asn1p_l.l"
+return TOK_TAGS;
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 378 "asn1p_l.l"
-return TOK_T61String;
+#line 336 "asn1p_l.l"
+return TOK_TeletexString;
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 379 "asn1p_l.l"
-return TOK_TAGS;
+#line 337 "asn1p_l.l"
+return TOK_TRUE;
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 380 "asn1p_l.l"
-return TOK_TeletexString;
+#line 338 "asn1p_l.l"
+return TOK_TYPE_IDENTIFIER;
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 381 "asn1p_l.l"
-return TOK_TRUE;
+#line 339 "asn1p_l.l"
+return TOK_UNION;
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 382 "asn1p_l.l"
-return TOK_TYPE_IDENTIFIER;
+#line 340 "asn1p_l.l"
+return TOK_UNIQUE;
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 383 "asn1p_l.l"
-return TOK_UNION;
+#line 341 "asn1p_l.l"
+return TOK_UNIVERSAL;
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 384 "asn1p_l.l"
-return TOK_UNIQUE;
-	YY_BREAK
-case 108:
-YY_RULE_SETUP
-#line 385 "asn1p_l.l"
-return TOK_UNIVERSAL;
-	YY_BREAK
-case 109:
-YY_RULE_SETUP
-#line 386 "asn1p_l.l"
+#line 342 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_UniversalString;
 				REJECT;
 			}
 	YY_BREAK
-case 110:
+case 108:
 YY_RULE_SETUP
-#line 391 "asn1p_l.l"
+#line 347 "asn1p_l.l"
 return TOK_UTCTime;
 	YY_BREAK
-case 111:
+case 109:
 YY_RULE_SETUP
-#line 392 "asn1p_l.l"
+#line 348 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_UTF8String;
 				REJECT;
 			}
 	YY_BREAK
+case 110:
+YY_RULE_SETUP
+#line 353 "asn1p_l.l"
+return TOK_VideotexString;
+	YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 354 "asn1p_l.l"
+return TOK_VisibleString;
+	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 397 "asn1p_l.l"
-return TOK_VideotexString;
+#line 355 "asn1p_l.l"
+return TOK_WITH;
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 398 "asn1p_l.l"
-return TOK_VisibleString;
-	YY_BREAK
-case 114:
-YY_RULE_SETUP
-#line 399 "asn1p_l.l"
-return TOK_WITH;
-	YY_BREAK
-case 115:
-YY_RULE_SETUP
-#line 402 "asn1p_l.l"
+#line 358 "asn1p_l.l"
 {
 		CHECK_DASHES;
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_typefieldreference;
 	}
 	YY_BREAK
-case 116:
+case 114:
 YY_RULE_SETUP
-#line 408 "asn1p_l.l"
+#line 364 "asn1p_l.l"
 {
 		CHECK_DASHES;
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_valuefieldreference;
 	}
 	YY_BREAK
-case 117:
+case 115:
 YY_RULE_SETUP
-#line 415 "asn1p_l.l"
+#line 371 "asn1p_l.l"
 {
 		CHECK_DASHES;
 		asn1p_lval.tv_str = strdup(yytext);
@@ -2895,9 +2795,9 @@
 /*
 	 * objectclassreference
 	 */
-case 118:
+case 116:
 YY_RULE_SETUP
-#line 424 "asn1p_l.l"
+#line 380 "asn1p_l.l"
 {
 		CHECK_DASHES;
 		asn1p_lval.tv_str = strdup(yytext);
@@ -2909,43 +2809,43 @@
 	 * NOTE: TOK_objectclassreference must be combined
 	 * with this token to produce true typereference.
 	 */
-case 119:
+case 117:
 YY_RULE_SETUP
-#line 435 "asn1p_l.l"
+#line 391 "asn1p_l.l"
 {
 		CHECK_DASHES;
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_typereference;
 	}
 	YY_BREAK
+case 118:
+YY_RULE_SETUP
+#line 397 "asn1p_l.l"
+return TOK_PPEQ;
+	YY_BREAK
+case 119:
+YY_RULE_SETUP
+#line 399 "asn1p_l.l"
+return TOK_ThreeDots;
+	YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 441 "asn1p_l.l"
-return TOK_PPEQ;
+#line 400 "asn1p_l.l"
+return TOK_TwoDots;
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 443 "asn1p_l.l"
-return TOK_ThreeDots;
+#line 402 "asn1p_l.l"
+/* Ignore whitespace */
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 444 "asn1p_l.l"
-return TOK_TwoDots;
+#line 404 "asn1p_l.l"
+return yytext[0];
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 446 "asn1p_l.l"
-return yytext[0];
-	YY_BREAK
-case 124:
-YY_RULE_SETUP
-#line 448 "asn1p_l.l"
-/* Ignore whitespace */
-	YY_BREAK
-case 125:
-YY_RULE_SETUP
-#line 450 "asn1p_l.l"
+#line 406 "asn1p_l.l"
 {
 		if(TYPE_LIFETIME(1994, 0))
 			fprintf(stderr, "ERROR: ");
@@ -2958,41 +2858,41 @@
 	}
 	YY_BREAK
 
+case 124:
+YY_RULE_SETUP
+#line 419 "asn1p_l.l"
+{
+			asn1p_lval.tv_opaque.buf = strdup(yytext);
+			asn1p_lval.tv_opaque.len = yyleng;
+			return TOK_opaque;
+			}
+	YY_BREAK
+case 125:
+YY_RULE_SETUP
+#line 425 "asn1p_l.l"
+{
+			asn1p_lval.tv_opaque.buf = strdup(yytext);
+			asn1p_lval.tv_opaque.len = yyleng;
+			return TOK_opaque;
+			}
+	YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 463 "asn1p_l.l"
-{
-			asn1p_lval.tv_opaque.buf = strdup(yytext);
-			asn1p_lval.tv_opaque.len = yyleng;
-			return TOK_opaque;
-			}
-	YY_BREAK
-case 127:
-YY_RULE_SETUP
-#line 469 "asn1p_l.l"
-{
-			asn1p_lval.tv_opaque.buf = strdup(yytext);
-			asn1p_lval.tv_opaque.len = yyleng;
-			return TOK_opaque;
-			}
-	YY_BREAK
-case 128:
-YY_RULE_SETUP
-#line 475 "asn1p_l.l"
+#line 431 "asn1p_l.l"
 {
 				yy_pop_state();
 				return '}';
 			}
 	YY_BREAK
 
-case 129:
+case 127:
 YY_RULE_SETUP
-#line 482 "asn1p_l.l"
+#line 438 "asn1p_l.l"
 return yytext[0];	/* Union, Intersection */
 	YY_BREAK
-case 130:
+case 128:
 YY_RULE_SETUP
-#line 484 "asn1p_l.l"
+#line 440 "asn1p_l.l"
 {
 		fprintf(stderr,
 			"Unexpected token at line %d: \"%s\"\n",
@@ -3013,19 +2913,19 @@
 case YY_STATE_EOF(opaque):
 case YY_STATE_EOF(encoding_control):
 case YY_STATE_EOF(with_syntax):
-#line 497 "asn1p_l.l"
+#line 453 "asn1p_l.l"
 {
 		while(YYSTATE != INITIAL)
 			yy_pop_state();
 		yyterminate();
 	}
 	YY_BREAK
-case 131:
+case 129:
 YY_RULE_SETUP
-#line 504 "asn1p_l.l"
+#line 460 "asn1p_l.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 3029 "asn1p_l.c"
+#line 2929 "asn1p_l.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -3312,7 +3212,7 @@
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 709 )
+			if ( yy_current_state >= 670 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3342,11 +3242,11 @@
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 709 )
+		if ( yy_current_state >= 670 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 708);
+	yy_is_jam = (yy_current_state == 669);
 	if ( ! yy_is_jam )
 		*yy_state_ptr++ = yy_current_state;
 
@@ -3907,7 +3807,7 @@
 	return 0;
 	}
 #endif
-#line 504 "asn1p_l.l"
+#line 460 "asn1p_l.l"
 
 
 /*
diff --git a/libasn1parser/asn1p_l.l b/libasn1parser/asn1p_l.l
index efa4c1a..07fa676 100644
--- a/libasn1parser/asn1p_l.l
+++ b/libasn1parser/asn1p_l.l
@@ -24,7 +24,7 @@
 int asn1p_lexer_types_year = 0;
 int asn1p_lexer_constructs_year = 0;
 static int _check_dashes(char *ptr);
-static asn1_integer_t asn1p_atoi(char *ptr); /* errno is either 0 or ERANGE */
+static asn1c_integer_t asn1p_atoi(char *ptr); /* errno is either 0 or ERANGE */
 
 /*
  * Check that the type is defined in the year of the standard choosen.
@@ -240,50 +240,6 @@
 		return TOK_number;
 	}
 
-	/*
-	 * Tags
-	 */
-\[(UNIVERSAL[ \t\r\v\f\n]+|APPLICATION[ \t\r\v\f\n]+|PRIVATE[ \t\r\v\f\n]+)?[0-9]+\]	{
-		char *p;
-		memset(&asn1p_lval.a_tag, 0, sizeof(asn1p_lval.a_tag));
-		switch(yytext[1]) {
-		case 'U':
-			asn1p_lval.a_tag.tag_class = TC_UNIVERSAL;
-			p = yytext + sizeof("UNIVERSAL") + 1;
-			break;
-		case 'A':
-			asn1p_lval.a_tag.tag_class = TC_APPLICATION;
-			p = yytext + sizeof("APPLICATION") + 1;
-			break;
-		case 'P':
-			asn1p_lval.a_tag.tag_class = TC_PRIVATE;
-			p = yytext + sizeof("PRIVATE") + 1;
-			break;
-		default:
-			assert(yytext[1] >= '0' && yytext[1] <= '9');
-			asn1p_lval.a_tag.tag_class = TC_CONTEXT_SPECIFIC;
-			p = yytext + 1;
-			break;
-		}
-		asn1p_lval.a_tag.tag_value = asn1p_atoi(p);
-		if(*p == '0' && asn1p_lval.a_tag.tag_value) {
-			fprintf(stderr,
-			"Tag value at line %d "
-			"cannot start with zero "
-			"and have multiple digits: \"%s\"\n",
-			yylineno, yytext);
-			return -1;
-		}
-		return TOK_tag;
-	}
-
-\[[A-Z]+[ \t\r\v\f\n]+[0-9]+\]	{
-		fprintf(stderr,
-			"Unsupported tag syntax at line %d: \"%s\"\n",
-			yylineno, yytext);
-		return -1;
-	}
-
 ABSENT			return TOK_ABSENT;
 	/*
 ABSTRACT-SYNTAX		return TOK_ABSTRACT_SYNTAX;
@@ -443,10 +399,10 @@
 "..."		return TOK_ThreeDots;
 ".."		return TOK_TwoDots;
 
-[(){},;:|!.&@\[\]]	return yytext[0];
-
 {WSP}+	/* Ignore whitespace */
 
+[(){},;:|!.&@\[\]]	return yytext[0];
+
 [^A-Za-z0-9:=,{}<.@()[]'\"|&^*;!-] {
 		if(TYPE_LIFETIME(1994, 0))
 			fprintf(stderr, "ERROR: ");
@@ -550,9 +506,9 @@
 	return 0;
 }
 
-static asn1_integer_t
+static asn1c_integer_t
 asn1p_atoi(char *ptr) {
-	asn1_integer_t value;
+	asn1c_integer_t value;
 	errno = 0;	/* Clear the error code */
 
 	if(sizeof(value) <= sizeof(int)) {
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index a3af298..36a7b3b 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -109,7 +109,6 @@
 #define	TOK_UNION	352
 #define	TOK_TwoDots	353
 #define	TOK_ThreeDots	354
-#define	TOK_tag	355
 
 #line 1 "asn1p_y.y"
 
@@ -205,26 +204,26 @@
 
 
 
-#define	YYFINAL		407
+#define	YYFINAL		415
 #define	YYFLAG		-32768
-#define	YYNTBASE	115
+#define	YYNTBASE	116
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 213)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 354 ? yytranslate[x] : 217)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   111,     2,     2,     2,     2,     2,     2,   106,
-   107,     2,     2,   109,     2,   112,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,   110,   108,   113,
-     2,     2,     2,   114,     2,     2,     2,     2,     2,     2,
+     2,     2,   110,     2,     2,     2,     2,     2,     2,   105,
+   106,     2,     2,   108,     2,   111,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,   109,   107,   112,
+     2,     2,     2,   113,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,    97,     2,     2,     2,     2,     2,     2,
+   114,     2,   115,    97,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   104,    99,   105,     2,     2,     2,     2,     2,
+     2,     2,   103,    99,   104,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -247,7 +246,7 @@
     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    98,   100,   101,   102,   103
+    98,   100,   101,   102
 };
 
 #if YYDEBUG != 0
@@ -277,84 +276,86 @@
    631,   633,   635,   637,   639,   641,   643,   647,   652,   654,
    658,   661,   665,   667,   671,   672,   674,   676,   679,   682,
    686,   688,   692,   694,   699,   704,   706,   708,   710,   712,
-   713,   715,   717,   720,   723,   725,   727,   729,   730,   732
+   713,   715,   718,   723,   724,   726,   728,   730,   731,   733,
+   735,   737,   739,   741,   742,   744
 };
 
-static const short yyrhs[] = {   116,
-     0,   117,     0,   116,   117,     0,   209,   118,    34,   122,
-     3,    21,   125,    39,     0,     0,   119,     0,   104,   120,
-   105,     0,   104,   105,     0,   121,     0,   120,   121,     0,
-   212,     0,   212,   106,     9,   107,     0,     9,     0,     0,
-   123,     0,   124,     0,   123,   124,     0,    41,    84,     0,
+static const short yyrhs[] = {   117,
+     0,   118,     0,   117,   118,     0,   213,   119,    34,   123,
+     3,    21,   126,    39,     0,     0,   120,     0,   103,   121,
+   104,     0,   103,   104,     0,   122,     0,   121,   122,     0,
+   216,     0,   216,   105,     9,   106,     0,     9,     0,     0,
+   124,     0,   125,     0,   124,   125,     0,    41,    84,     0,
     52,    84,     0,    20,    84,     0,    43,    53,     0,    12,
-    57,     0,     0,   126,     0,   127,     0,   126,   127,     0,
-   129,     0,   134,     0,   142,     0,   169,     0,   137,     0,
-     0,    38,    12,   128,     0,   177,     0,    54,   130,   108,
-     0,    54,    46,     0,   131,     0,   130,   131,     0,   132,
-    46,   209,   118,     0,   133,     0,   132,   109,   133,     0,
-   209,     0,   209,   104,   105,     0,   212,     0,    42,   135,
-   108,     0,    42,    17,   108,     0,    42,   108,     0,   136,
-     0,   135,   109,   136,     0,   209,     0,   209,   104,   105,
-     0,   212,     0,   209,   138,     3,   104,   139,   105,     0,
-   164,     0,   174,     0,     0,   140,     0,   141,     0,   140,
-   109,   141,     0,   102,     0,   185,     0,   209,     3,   207,
-    87,     0,   209,     3,   162,     0,   209,     3,   152,     0,
-   209,   104,   143,   105,     3,   162,     0,   144,     0,   143,
-   109,   144,     0,   209,     0,   209,   110,   212,     0,   174,
-   110,   212,     0,   146,     0,   145,   109,   146,     0,   162,
-     0,   212,     0,     0,   148,     0,   149,     0,   148,   109,
-   149,     0,   212,   162,   201,     0,    30,    68,   162,     0,
-   161,     0,   151,     0,   150,   109,   151,     0,   212,   162,
-     0,   161,     0,    28,   104,   154,   105,   156,     0,     0,
-    88,     0,   155,     0,   154,   109,   155,     0,   167,   201,
-     0,   167,   162,   153,   201,     0,   167,   167,   153,   201,
-     0,     0,   157,     0,     0,    95,    82,   104,   158,   159,
-   105,     0,   160,     0,   159,   160,     0,     4,     0,   167,
-     0,   102,     0,   102,   111,   172,     0,   102,   111,   206,
-     0,   207,   163,   181,     0,   176,     0,   177,     0,    27,
-   104,   150,   105,     0,    78,   104,   147,   105,     0,    79,
-   104,   147,   105,     0,    78,   181,    68,   211,   207,   163,
-     0,    79,   181,    68,   211,   207,   163,     0,    18,     0,
-    18,    35,    25,   212,     0,   209,   104,   145,   105,     0,
-   164,     0,    56,    68,   164,     0,    11,     0,    11,   112,
-   209,     0,   210,   112,   209,     0,    11,   112,   212,     0,
-   210,     0,   210,   112,   165,     0,   166,     0,   165,   112,
-   166,     0,   168,     0,   168,     0,    13,     0,    14,     0,
-   212,   138,     3,   170,     0,   212,   110,   170,     0,     0,
-   104,   171,   173,     0,    63,     0,    45,     0,    86,     0,
-     5,     0,     7,     0,     6,     0,   206,     0,   172,     0,
-   212,     0,   209,   112,   212,     0,     4,     0,   173,     4,
-     0,    24,     0,    63,     0,    76,     0,   175,     0,    67,
+    57,     0,     0,   127,     0,   128,     0,   127,   128,     0,
+   130,     0,   135,     0,   143,     0,   170,     0,   138,     0,
+     0,    38,    12,   129,     0,   178,     0,    54,   131,   107,
+     0,    54,    46,     0,   132,     0,   131,   132,     0,   133,
+    46,   213,   119,     0,   134,     0,   133,   108,   134,     0,
+   213,     0,   213,   103,   104,     0,   216,     0,    42,   136,
+   107,     0,    42,    17,   107,     0,    42,   107,     0,   137,
+     0,   136,   108,   137,     0,   213,     0,   213,   103,   104,
+     0,   216,     0,   213,   139,     3,   103,   140,   104,     0,
+   165,     0,   175,     0,     0,   141,     0,   142,     0,   141,
+   108,   142,     0,   102,     0,   186,     0,   213,     3,   208,
+    87,     0,   213,     3,   163,     0,   213,     3,   153,     0,
+   213,   103,   144,   104,     3,   163,     0,   145,     0,   144,
+   108,   145,     0,   213,     0,   213,   109,   216,     0,   175,
+   109,   216,     0,   147,     0,   146,   108,   147,     0,   163,
+     0,   216,     0,     0,   149,     0,   150,     0,   149,   108,
+   150,     0,   216,   163,   202,     0,    30,    68,   163,     0,
+   162,     0,   152,     0,   151,   108,   152,     0,   216,   163,
+     0,   162,     0,    28,   103,   155,   104,   157,     0,     0,
+    88,     0,   156,     0,   155,   108,   156,     0,   168,   202,
+     0,   168,   163,   154,   202,     0,   168,   168,   154,   202,
+     0,     0,   158,     0,     0,    95,    82,   103,   159,   160,
+   104,     0,   161,     0,   160,   161,     0,     4,     0,   168,
+     0,   102,     0,   102,   110,   173,     0,   102,   110,   207,
+     0,   208,   164,   182,     0,   177,     0,   178,     0,    27,
+   103,   151,   104,     0,    78,   103,   148,   104,     0,    79,
+   103,   148,   104,     0,    78,   182,    68,   215,   208,   164,
+     0,    79,   182,    68,   215,   208,   164,     0,    18,     0,
+    18,    35,    25,   216,     0,   213,   103,   146,   104,     0,
+   165,     0,    56,    68,   165,     0,    11,     0,    11,   111,
+   213,     0,   214,   111,   213,     0,    11,   111,   216,     0,
+   214,     0,   214,   111,   166,     0,   167,     0,   166,   111,
+   167,     0,   169,     0,   169,     0,    13,     0,    14,     0,
+   216,   139,     3,   171,     0,   216,   109,   171,     0,     0,
+   103,   172,   174,     0,    63,     0,    45,     0,    86,     0,
+     5,     0,     7,     0,     6,     0,   207,     0,   173,     0,
+   216,     0,   213,   111,   216,     0,     4,     0,   174,     4,
+     0,    24,     0,    63,     0,    76,     0,   176,     0,    67,
     81,     0,    65,    51,     0,    77,     0,    44,     0,    36,
     71,     0,    26,    81,     0,    91,     0,    47,     0,    58,
-     0,    40,     0,    22,    81,     0,   174,     0,   175,   203,
+     0,    40,     0,    22,    81,     0,   175,     0,   176,   204,
      0,    23,     0,    48,     0,    49,     0,    50,     0,    59,
      0,    64,     0,    74,     0,    83,     0,    85,     0,    90,
      0,    92,     0,    93,     0,    94,     0,    66,     0,    99,
      0,   100,     0,    97,     0,    98,     0,    96,     0,     0,
-   182,     0,   183,     0,    80,   106,   184,   107,     0,   106,
-   184,   107,     0,   183,   106,   184,   107,     0,   185,     0,
-   185,   109,   102,     0,   185,   109,   102,   109,   185,     0,
-   186,     0,   185,   178,   186,     0,   185,   179,   186,     0,
-   186,   180,   186,     0,   188,   106,   184,   107,     0,   106,
-   184,   107,     0,   189,     0,   189,   187,   189,     0,    61,
-   187,   189,     0,   189,   187,    60,     0,    61,   187,    60,
-     0,   195,     0,   190,     0,   101,     0,   101,   113,     0,
-   113,   101,     0,   113,   101,   113,     0,    80,     0,    46,
-     0,   206,     0,   212,     0,     6,     0,    45,     0,    86,
-     0,    95,    30,   104,   191,   105,     0,   192,     0,   191,
-   109,   192,     0,   102,     0,   212,   181,   193,     0,     0,
-   194,     0,    73,     0,    15,     0,    69,     0,   196,     0,
-   197,     0,   104,   209,   105,     0,   196,   104,   198,   105,
-     0,   199,     0,   198,   109,   199,     0,   114,   200,     0,
-   114,   112,   200,     0,   212,     0,   200,   112,   212,     0,
-     0,   202,     0,    69,     0,    33,   170,     0,   104,   105,
-     0,   104,   204,   105,     0,   205,     0,   204,   109,   205,
-     0,   212,     0,   212,   106,   206,   107,     0,   212,   106,
-   172,   107,     0,   206,     0,   102,     0,     9,     0,    10,
-     0,     0,   208,     0,   103,     0,   103,    52,     0,   103,
-    41,     0,    11,     0,    12,     0,    12,     0,     0,   212,
-     0,     8,     0
+   183,     0,   184,     0,    80,   105,   185,   106,     0,   105,
+   185,   106,     0,   184,   105,   185,   106,     0,   186,     0,
+   186,   108,   102,     0,   186,   108,   102,   108,   186,     0,
+   187,     0,   186,   179,   187,     0,   186,   180,   187,     0,
+   187,   181,   187,     0,   189,   105,   185,   106,     0,   105,
+   185,   106,     0,   190,     0,   190,   188,   190,     0,    61,
+   188,   190,     0,   190,   188,    60,     0,    61,   188,    60,
+     0,   196,     0,   191,     0,   101,     0,   101,   112,     0,
+   112,   101,     0,   112,   101,   112,     0,    80,     0,    46,
+     0,   207,     0,   216,     0,     6,     0,    45,     0,    86,
+     0,    95,    30,   103,   192,   104,     0,   193,     0,   192,
+   108,   193,     0,   102,     0,   216,   182,   194,     0,     0,
+   195,     0,    73,     0,    15,     0,    69,     0,   197,     0,
+   198,     0,   103,   213,   104,     0,   197,   103,   199,   104,
+     0,   200,     0,   199,   108,   200,     0,   113,   201,     0,
+   113,   111,   201,     0,   216,     0,   201,   111,   216,     0,
+     0,   203,     0,    69,     0,    33,   171,     0,   103,   104,
+     0,   103,   205,   104,     0,   206,     0,   205,   108,   206,
+     0,   216,     0,   216,   105,   207,   106,     0,   216,   105,
+   173,   106,     0,   207,     0,   102,     0,     9,     0,    10,
+     0,     0,   209,     0,   210,   212,     0,   114,   211,     9,
+   115,     0,     0,    89,     0,    19,     0,    75,     0,     0,
+    52,     0,    41,     0,    11,     0,    12,     0,    12,     0,
+     0,   216,     0,     8,     0
 };
 
 #endif
@@ -386,7 +387,8 @@
   1690,  1693,  1697,  1700,  1705,  1709,  1717,  1732,  1738,  1745,
   1758,  1770,  1785,  1789,  1806,  1811,  1814,  1819,  1841,  1846,
   1851,  1857,  1863,  1871,  1879,  1887,  1894,  1904,  1909,  1939,
-  1941,  1944,  1949,  1953,  1959,  1964,  1971,  1978,  1980,  1984
+  1941,  1944,  1951,  1957,  1959,  1960,  1961,  1964,  1966,  1967,
+  1970,  1975,  1982,  1989,  1991,  1995
 };
 #endif
 
@@ -412,7 +414,7 @@
 "TOK_TRUE","TOK_TYPE_IDENTIFIER","TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString",
 "TOK_UTCTime","TOK_UTF8String","TOK_VideotexString","TOK_VisibleString","TOK_WITH",
 "TOK_EXCEPT","'^'","TOK_INTERSECTION","'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots",
-"TOK_tag","'{'","'}'","'('","')'","';'","','","':'","'!'","'.'","'<'","'@'",
+"'{'","'}'","'('","')'","';'","','","':'","'!'","'.'","'<'","'@'","'['","']'",
 "ParsedGrammar","ModuleList","ModuleSpecification","optObjectIdentifier","ObjectIdentifier",
 "ObjectIdentifierBody","ObjectIdentifierElement","optModuleSpecificationFlags",
 "ModuleSpecificationFlags","ModuleSpecificationFlag","optModuleSpecificationBody",
@@ -433,38 +435,39 @@
 "WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
 "SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
 "ComponentIdList","optMarker","Marker","UniverationDefinition","UniverationList",
-"UniverationElement","SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference",
-"optIdentifier","Identifier", NULL
+"UniverationElement","SignedNumber","optTag","Tag","TagTypeValue","TagClass",
+"TagPlicit","TypeRefName","ObjectClassReference","optIdentifier","Identifier", NULL
 };
 #endif
 
 static const short yyr1[] = {     0,
-   115,   116,   116,   117,   118,   118,   119,   119,   120,   120,
-   121,   121,   121,   122,   122,   123,   123,   124,   124,   124,
-   124,   124,   125,   125,   126,   126,   127,   127,   127,   127,
-   127,   128,   127,   127,   129,   129,   130,   130,   131,   132,
-   132,   133,   133,   133,   134,   134,   134,   135,   135,   136,
-   136,   136,   137,   138,   138,   139,   139,   140,   140,   141,
-   141,   142,   142,   142,   142,   143,   143,   144,   144,   144,
-   145,   145,   146,   146,   147,   147,   148,   148,   149,   149,
-   149,   150,   150,   151,   151,   152,   153,   153,   154,   154,
-   155,   155,   155,   156,   156,   158,   157,   159,   159,   160,
-   160,   161,   161,   161,   162,   163,   163,   163,   163,   163,
-   163,   163,   163,   163,   163,   163,   163,   164,   164,   164,
-   164,   164,   164,   165,   165,   166,   167,   168,   168,   169,
-   170,   171,   170,   170,   170,   170,   170,   170,   170,   170,
-   170,   172,   172,   173,   173,   174,   174,   174,   174,   174,
-   174,   174,   174,   174,   174,   174,   174,   175,   175,   175,
-   176,   176,   177,   177,   177,   177,   177,   177,   177,   177,
-   177,   177,   177,   177,   177,   177,   178,   178,   179,   179,
-   180,   181,   181,   182,   182,   183,   183,   184,   184,   184,
-   185,   185,   185,   185,   186,   186,   186,   186,   186,   186,
-   186,   186,   186,   187,   187,   187,   187,   188,   188,   189,
-   189,   189,   189,   189,   190,   191,   191,   192,   192,   193,
-   193,   194,   194,   194,   195,   195,   196,   197,   198,   198,
-   199,   199,   200,   200,   201,   201,   202,   202,   203,   203,
-   204,   204,   205,   205,   205,   205,   205,   206,   206,   207,
-   207,   208,   208,   208,   209,   209,   210,   211,   211,   212
+   116,   117,   117,   118,   119,   119,   120,   120,   121,   121,
+   122,   122,   122,   123,   123,   124,   124,   125,   125,   125,
+   125,   125,   126,   126,   127,   127,   128,   128,   128,   128,
+   128,   129,   128,   128,   130,   130,   131,   131,   132,   133,
+   133,   134,   134,   134,   135,   135,   135,   136,   136,   137,
+   137,   137,   138,   139,   139,   140,   140,   141,   141,   142,
+   142,   143,   143,   143,   143,   144,   144,   145,   145,   145,
+   146,   146,   147,   147,   148,   148,   149,   149,   150,   150,
+   150,   151,   151,   152,   152,   153,   154,   154,   155,   155,
+   156,   156,   156,   157,   157,   159,   158,   160,   160,   161,
+   161,   162,   162,   162,   163,   164,   164,   164,   164,   164,
+   164,   164,   164,   164,   164,   164,   164,   165,   165,   165,
+   165,   165,   165,   166,   166,   167,   168,   169,   169,   170,
+   171,   172,   171,   171,   171,   171,   171,   171,   171,   171,
+   171,   173,   173,   174,   174,   175,   175,   175,   175,   175,
+   175,   175,   175,   175,   175,   175,   175,   176,   176,   176,
+   177,   177,   178,   178,   178,   178,   178,   178,   178,   178,
+   178,   178,   178,   178,   178,   178,   179,   179,   180,   180,
+   181,   182,   182,   183,   183,   184,   184,   185,   185,   185,
+   186,   186,   186,   186,   187,   187,   187,   187,   187,   187,
+   187,   187,   187,   188,   188,   188,   188,   189,   189,   190,
+   190,   190,   190,   190,   191,   192,   192,   193,   193,   194,
+   194,   195,   195,   195,   196,   196,   197,   198,   199,   199,
+   200,   200,   201,   201,   202,   202,   203,   203,   204,   204,
+   205,   205,   206,   206,   206,   206,   206,   207,   207,   208,
+   208,   209,   210,   211,   211,   211,   211,   212,   212,   212,
+   213,   213,   214,   215,   215,   216
 };
 
 static const short yyr2[] = {     0,
@@ -493,11 +496,12 @@
      1,     1,     1,     1,     1,     1,     3,     4,     1,     3,
      2,     3,     1,     3,     0,     1,     1,     2,     2,     3,
      1,     3,     1,     4,     4,     1,     1,     1,     1,     0,
-     1,     1,     2,     2,     1,     1,     1,     0,     1,     1
+     1,     2,     4,     0,     1,     1,     1,     0,     1,     1,
+     1,     1,     1,     0,     1,     1
 };
 
 static const short yydefact[] = {     0,
-   255,   256,     1,     2,     5,     3,     0,     0,     6,   260,
+   261,   262,     1,     2,     5,     3,     0,     0,     6,   266,
     13,     8,     0,     9,    11,    14,     7,    10,     0,     0,
      0,     0,     0,     0,     0,    15,    16,     0,    22,    20,
     18,    21,    19,     0,    17,    12,    23,   163,     0,     0,
@@ -505,245 +509,249 @@
    172,   173,   174,   175,     0,    24,    25,    27,    28,    31,
     29,    30,    34,     0,     0,    32,     0,    47,     0,    48,
     50,    52,    36,     0,    37,     0,    40,    42,    44,     4,
-    26,   250,   118,   257,     0,   146,     0,     0,   159,   153,
+    26,   250,   118,   263,     0,   146,     0,     0,   159,   153,
    157,   158,   147,     0,     0,   148,   152,   156,     0,     0,
     54,    55,   149,   122,     0,    33,    46,    45,     0,     0,
-    35,    38,     0,     0,     0,     0,   252,    64,    63,     0,
-   251,     0,   160,   155,   154,   151,   150,     0,    66,     0,
-    68,     0,     0,     0,    49,    51,     5,    41,    43,     0,
-   254,   253,   118,   257,   113,     0,     0,   182,   182,    62,
-   182,   116,   161,   149,   106,   107,     0,   119,   121,     0,
-     0,     0,     0,    56,   128,   129,   123,   124,   126,   120,
-   137,   139,   138,   248,   249,   135,   134,   136,   132,   130,
-   141,   140,     0,   142,    39,     0,    89,   250,   127,     0,
-     0,     0,     0,    75,     0,     0,   183,   184,    75,     0,
-   105,     0,   162,   250,   250,    67,    70,    69,   212,   213,
-   209,     0,   208,   214,     0,    60,     0,     0,     0,    57,
-    58,    61,   191,     0,   197,   203,   202,   225,   226,   210,
-   211,     0,     0,     0,     0,    94,     0,     0,   237,    87,
-    87,    91,   236,     0,     0,   102,     0,    82,    85,   250,
-   117,     0,     0,     0,    76,    77,    81,   250,     0,   188,
-   258,     0,     0,   258,   247,   239,     0,   241,   246,   243,
-     0,    71,    73,    74,    65,   204,     0,     0,     0,     0,
-     0,    53,     0,   179,   180,   177,   178,     0,     0,   181,
-     0,     0,     0,     0,   125,   144,   133,   143,   131,     0,
-    86,    95,    90,   238,    88,   235,   235,   114,     0,   108,
-     0,    84,     0,   250,   109,     0,   235,   186,     0,   250,
-   259,     0,   110,   250,   240,     0,     0,   115,   250,   205,
-   206,   201,   199,     0,   227,   196,    59,   192,   193,   194,
-     0,   200,   198,     0,     0,   229,   145,     0,    92,    93,
-   103,   104,   142,    83,   185,    80,    78,    79,   189,     0,
-   187,     0,   242,     0,     0,    72,   207,   218,     0,   216,
-   182,   195,     0,   231,   233,   228,     0,    96,     0,   111,
-   112,   245,   244,   215,     0,   220,   232,     0,   230,     0,
-   190,   217,   223,   224,   222,   219,   221,   234,   100,     0,
-    98,   101,    97,    99,     0,     0,     0
+    35,    38,     0,     0,     0,     0,   254,    64,    63,     0,
+   251,   258,     0,   160,   155,   154,   151,   150,     0,    66,
+     0,    68,     0,     0,     0,    49,    51,     5,    41,    43,
+     0,   256,   257,   255,     0,   118,   263,   113,     0,     0,
+   182,   182,    62,   182,   116,   161,   149,   106,   107,     0,
+   260,   259,   252,   119,   121,     0,     0,     0,     0,    56,
+   128,   129,   123,   124,   126,   120,   137,   139,   138,   248,
+   249,   135,   134,   136,   132,   130,   141,   140,     0,   142,
+    39,     0,    89,   250,   127,     0,     0,     0,     0,     0,
+    75,     0,     0,   183,   184,    75,     0,   105,     0,   162,
+   250,   250,    67,    70,    69,   212,   213,   209,     0,   208,
+   214,     0,    60,     0,     0,     0,    57,    58,    61,   191,
+     0,   197,   203,   202,   225,   226,   210,   211,     0,     0,
+     0,     0,    94,     0,     0,   237,    87,    87,    91,   236,
+     0,   253,     0,   102,     0,    82,    85,   250,   117,     0,
+     0,     0,    76,    77,    81,   250,     0,   188,   264,     0,
+     0,   264,   247,   239,     0,   241,   246,   243,     0,    71,
+    73,    74,    65,   204,     0,     0,     0,     0,     0,    53,
+     0,   179,   180,   177,   178,     0,     0,   181,     0,     0,
+     0,     0,   125,   144,   133,   143,   131,     0,    86,    95,
+    90,   238,    88,   235,   235,   114,     0,   108,     0,    84,
+     0,   250,   109,     0,   235,   186,     0,   250,   265,     0,
+   110,   250,   240,     0,     0,   115,   250,   205,   206,   201,
+   199,     0,   227,   196,    59,   192,   193,   194,     0,   200,
+   198,     0,     0,   229,   145,     0,    92,    93,   103,   104,
+   142,    83,   185,    80,    78,    79,   189,     0,   187,     0,
+   242,     0,     0,    72,   207,   218,     0,   216,   182,   195,
+     0,   231,   233,   228,     0,    96,     0,   111,   112,   245,
+   244,   215,     0,   220,   232,     0,   230,     0,   190,   217,
+   223,   224,   222,   219,   221,   234,   100,     0,    98,   101,
+    97,    99,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   405,
+static const short yydefgoto[] = {   413,
      3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
     56,    57,   106,    58,    74,    75,    76,    77,    59,    69,
-    70,    60,   100,   219,   220,   221,    61,   128,   129,   271,
-   272,   254,   255,   256,   247,   248,   118,   306,   186,   187,
-   301,   302,   390,   400,   401,   257,   273,   151,   152,   167,
-   168,   188,   189,    62,   180,   233,   181,   297,   153,   103,
-   155,   156,   288,   289,   291,   196,   197,   198,   259,   260,
-   223,   278,   224,   225,   226,   369,   370,   396,   397,   227,
-   228,   229,   345,   346,   374,   242,   243,   203,   267,   268,
-   230,   244,   121,   183,   104,   320,   231
+    70,    60,   100,   226,   227,   228,    61,   129,   130,   279,
+   280,   262,   263,   264,   255,   256,   118,   314,   192,   193,
+   309,   310,   398,   408,   409,   265,   281,   154,   155,   173,
+   174,   194,   195,    62,   186,   240,   187,   305,   156,   103,
+   158,   159,   296,   297,   299,   203,   204,   205,   267,   268,
+   230,   286,   231,   232,   233,   377,   378,   404,   405,   234,
+   235,   236,   353,   354,   382,   249,   250,   210,   275,   276,
+   237,   251,   121,   122,   145,   163,   189,   104,   328,   238
 };
 
-static const short yypact[] = {   244,
--32768,-32768,   244,-32768,   -75,-32768,     5,    42,-32768,-32768,
--32768,-32768,    36,-32768,   -67,   161,-32768,-32768,    76,    51,
-   -14,    29,    46,    50,   119,   161,-32768,    39,-32768,-32768,
--32768,-32768,-32768,   141,-32768,-32768,   305,-32768,   168,    11,
--32768,-32768,-32768,   157,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   167,   305,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,    14,   519,-32768,    75,-32768,   197,-32768,
-   121,-32768,-32768,    23,-32768,   -22,-32768,   130,-32768,-32768,
--32768,    -8,   111,-32768,   155,-32768,   166,   171,-32768,-32768,
--32768,-32768,-32768,   202,   177,-32768,-32768,-32768,   536,   274,
--32768,-32768,-32768,   154,   285,-32768,-32768,-32768,   174,   185,
--32768,-32768,   244,   174,   193,   196,   108,-32768,-32768,   382,
--32768,   174,-32768,-32768,-32768,-32768,-32768,    58,-32768,   201,
-   208,   199,   283,   263,-32768,-32768,   -75,-32768,-32768,   310,
--32768,-32768,    -6,   203,   286,   221,   261,   -24,    71,-32768,
-   -20,-32768,-32768,   235,-32768,-32768,   237,-32768,-32768,   335,
-   536,   334,   334,   144,-32768,-32768,   232,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   233,   236,-32768,   117,-32768,    61,-32768,   323,
-    19,   324,   245,    43,   206,   282,-32768,   246,    43,   289,
--32768,    38,-32768,    13,   255,-32768,-32768,-32768,-32768,-32768,
--32768,    -9,-32768,-32768,   330,-32768,   244,   206,   256,   253,
--32768,   234,   267,   259,    -9,-32768,-32768,   264,-32768,-32768,
--32768,   310,   366,   334,   263,   277,   310,   263,-32768,   288,
-   288,-32768,-32768,   459,   334,   262,   128,-32768,-32768,   255,
--32768,   206,   306,   275,   276,-32768,-32768,   255,   279,   101,
-   334,   206,   278,   334,-32768,-32768,   140,-32768,-32768,   281,
-   156,-32768,-32768,-32768,-32768,   269,   290,   254,   280,   284,
-   294,-32768,   144,-32768,-32768,-32768,-32768,   206,   206,-32768,
-   206,   206,   270,   293,-32768,-32768,   388,-32768,-32768,   314,
--32768,-32768,-32768,-32768,-32768,    24,    24,-32768,   273,-32768,
-    19,-32768,   295,   255,-32768,    43,    24,-32768,   301,   255,
--32768,   303,-32768,   255,-32768,    56,   273,-32768,    13,-32768,
-   298,-32768,-32768,    45,-32768,-32768,-32768,-32768,-32768,-32768,
-   307,-32768,-32768,     0,   182,-32768,-32768,   308,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   304,   459,
--32768,   459,-32768,   309,   312,-32768,-32768,-32768,   184,-32768,
-   -20,-32768,   334,   311,-32768,-32768,   293,-32768,   206,-32768,
--32768,-32768,-32768,-32768,    45,    88,   311,   334,-32768,   207,
-   234,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    28,
--32768,-32768,-32768,-32768,   415,   417,-32768
+static const short yypact[] = {   120,
+-32768,-32768,   120,-32768,   -64,-32768,    38,    -5,-32768,-32768,
+-32768,-32768,    55,-32768,   -25,   165,-32768,-32768,    90,    49,
+    60,    73,    74,    82,   136,   165,-32768,    54,-32768,-32768,
+-32768,-32768,-32768,   151,-32768,-32768,   314,-32768,   177,    23,
+-32768,-32768,-32768,   159,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   187,   314,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   256,   528,-32768,   114,-32768,    76,-32768,
+   133,-32768,-32768,    42,-32768,   -20,-32768,   147,-32768,-32768,
+-32768,    -3,   144,-32768,   183,-32768,   185,   198,-32768,-32768,
+-32768,-32768,-32768,   232,   212,-32768,-32768,-32768,   545,   292,
+-32768,-32768,-32768,   186,   295,-32768,-32768,-32768,   101,   195,
+-32768,-32768,   120,   101,   197,   199,     3,-32768,-32768,   391,
+-32768,   113,   101,-32768,-32768,-32768,-32768,-32768,    78,-32768,
+   200,   202,   210,   263,   279,-32768,-32768,   -64,-32768,-32768,
+   182,-32768,-32768,-32768,   306,   -22,   213,   283,   226,   266,
+   -12,    -8,-32768,   -32,-32768,-32768,   228,-32768,-32768,   233,
+-32768,-32768,-32768,-32768,-32768,   340,   545,   336,   336,    95,
+-32768,-32768,   235,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   238,   239,
+-32768,   103,-32768,    29,-32768,   236,   325,    36,   237,   248,
+     6,   142,   286,-32768,   250,     6,   289,-32768,    51,-32768,
+     5,   244,-32768,-32768,-32768,-32768,-32768,-32768,    57,-32768,
+-32768,   330,-32768,   120,   142,   257,   258,-32768,   241,   271,
+   265,    57,-32768,-32768,   269,-32768,-32768,-32768,   182,   371,
+   336,   279,   281,   182,   279,-32768,   291,   291,-32768,-32768,
+   468,-32768,   336,   267,   108,-32768,-32768,   244,-32768,   142,
+   313,   280,   275,-32768,-32768,   244,   284,   173,   336,   142,
+   287,   336,-32768,-32768,   110,-32768,-32768,   282,   116,-32768,
+-32768,-32768,-32768,   273,   293,   170,   290,   288,   294,-32768,
+    95,-32768,-32768,-32768,-32768,   142,   142,-32768,   142,   142,
+   234,   285,-32768,-32768,   392,-32768,-32768,   319,-32768,-32768,
+-32768,-32768,-32768,   -17,   -17,-32768,   296,-32768,    36,-32768,
+   299,   244,-32768,     6,   -17,-32768,   308,   244,-32768,   305,
+-32768,   244,-32768,    61,   296,-32768,     5,-32768,   300,-32768,
+-32768,    43,-32768,-32768,-32768,-32768,-32768,-32768,   310,-32768,
+-32768,    11,   123,-32768,-32768,   316,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   312,   468,-32768,   468,
+-32768,   315,   317,-32768,-32768,-32768,   125,-32768,   -32,-32768,
+   336,   311,-32768,-32768,   285,-32768,   142,-32768,-32768,-32768,
+-32768,-32768,    43,    17,   311,   336,-32768,   160,   241,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,    14,-32768,-32768,
+-32768,-32768,   395,   424,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   418,   287,-32768,-32768,   407,-32768,-32768,   399,-32768,
--32768,   371,-32768,-32768,-32768,   354,-32768,   319,-32768,-32768,
-   325,-32768,   370,-32768,-32768,   153,-32768,-32768,   291,-32768,
-   110,   238,-32768,   126,-32768,   132,-32768,   209,-32768,   214,
--32768,-32768,-32768,-32768,    44,  -179,   -79,  -188,   -54,-32768,
-   222,  -183,   -90,-32768,   -99,-32768,  -231,-32768,    -2,  -119,
--32768,    32,-32768,-32768,-32768,  -142,-32768,-32768,   -74,  -160,
-   -95,   228,-32768,  -210,-32768,-32768,    70,-32768,-32768,-32768,
--32768,-32768,-32768,    80,    89,  -206,-32768,-32768,-32768,   137,
-  -118,   -80,-32768,    15,-32768,   200,    -7
+-32768,   422,   298,-32768,-32768,   413,-32768,-32768,   402,-32768,
+-32768,   373,-32768,-32768,-32768,   356,-32768,   318,-32768,-32768,
+   324,-32768,   369,-32768,-32768,   146,-32768,-32768,   276,-32768,
+   105,   240,-32768,   121,-32768,   129,-32768,   196,-32768,   207,
+-32768,-32768,-32768,-32768,    44,  -183,   -65,  -129,   -53,-32768,
+   214,  -185,  -114,-32768,  -160,-32768,  -252,-32768,   -41,  -117,
+-32768,    18,-32768,-32768,-32768,  -147,-32768,-32768,  -204,  -168,
+   -36,   227,-32768,  -207,-32768,-32768,    67,-32768,-32768,-32768,
+-32768,-32768,-32768,    77,    80,  -238,-32768,-32768,-32768,   130,
+  -125,   -74,-32768,-32768,-32768,-32768,     1,-32768,   191,    -7
 };
 
 
-#define	YYLAST		627
+#define	YYLAST		636
 
 
 static const short yytable[] = {    15,
-   154,   120,   119,   222,   241,    15,   200,    10,   201,   101,
-   101,   249,    10,    11,     5,   182,    82,     5,    10,   116,
-    10,     1,     2,   113,    83,    84,    10,    67,     7,    65,
-    10,   399,    72,     1,     2,    85,    79,    86,    19,    87,
-   165,   166,   169,    10,    11,    10,   174,   175,    65,    88,
-    10,    64,    10,    89,    71,   193,   238,    90,    78,   193,
-    91,   102,   102,    10,   174,   175,    79,   333,    63,    30,
-    64,    92,   253,   165,   166,    16,    93,   351,    94,   194,
-    95,   195,   343,   269,    28,   195,   114,    63,    78,    96,
-    97,   276,   239,   238,   117,   364,   130,  -255,    32,   349,
-   350,    72,   393,   277,    98,   122,    79,    29,   240,    12,
-   358,   373,    31,   131,   159,   117,   182,    99,    68,   182,
-   246,    34,   222,    71,   154,   275,   184,   137,    78,   239,
-   111,   249,   403,    33,   157,   299,   158,   251,   304,   265,
-    17,   169,   266,   281,   246,    36,   368,   170,   141,   209,
-   193,    10,   174,   175,   207,   208,   394,   265,   130,   142,
-   395,    37,   160,   117,    10,  -235,   161,     1,     2,  -235,
-   312,   380,    20,   381,   199,   131,   195,   313,   317,    66,
-    21,    10,   107,   250,     1,     2,   258,   322,   210,   211,
-   352,   258,   338,   339,   270,   340,   274,   284,   285,   286,
-   287,    22,    73,    23,   212,    80,   402,   269,   365,   319,
-   399,   209,    24,    10,   174,   175,   402,   341,   391,   165,
-   166,   236,   122,   213,   110,   237,   298,   184,   386,   214,
-   184,   280,   310,   115,   356,   123,   311,   308,   215,   360,
-   154,   125,   154,   362,   325,   216,   124,   217,   326,   218,
-   210,   211,   126,   321,     1,     2,   321,   127,   157,   209,
-   328,    10,   174,   175,   329,   133,   212,   171,   172,   173,
-    10,   174,   175,     1,     2,   209,   132,    10,   174,   175,
-    10,   174,   175,     1,     2,   213,   376,   134,   384,   136,
-   377,   214,   385,     1,     2,   165,   166,   139,   210,   140,
-   215,   353,   164,   250,   108,   109,  -256,   176,   258,   217,
-   162,   218,    10,   332,   210,     1,     2,   163,   270,   353,
-   190,   274,   165,   166,   191,   177,   371,    38,   192,   342,
-   284,   285,   286,   287,    83,    84,   375,   205,   202,   214,
-   204,    10,    39,   232,   234,   235,    40,   245,   178,   261,
-   252,   262,    41,    42,    43,   214,   264,   117,    44,   279,
-   282,   283,   290,    45,   292,   375,   179,   294,    46,   296,
-    47,   300,   309,   314,   157,   305,   157,   371,    48,   315,
-   398,   330,   323,   334,   316,   318,   327,    49,   335,    50,
-   331,   347,   143,   144,    51,   348,    52,    53,    54,   145,
-   336,   355,   359,    85,    38,    86,   344,    87,   146,   361,
-   367,   378,   379,   372,   406,   382,   407,    88,   383,    18,
-     6,    89,   388,   185,    35,    90,    81,   112,    91,    41,
-    42,    43,   138,   135,   105,   337,   263,   147,   366,    92,
-    45,   357,   354,   404,    93,    46,    94,    47,    95,   307,
-   303,   206,   293,   295,   392,    48,   389,    96,    97,   148,
-   149,   387,   363,   324,    49,     0,    50,     0,   150,   143,
-   144,    51,    98,    52,    53,    54,   145,     0,     0,     0,
-    85,    38,    86,     0,    87,   146,     0,     0,     0,     0,
-     0,     0,     0,     0,    88,     0,     0,     0,    89,     0,
-     0,     0,    90,     0,     0,    91,    41,    42,    43,     0,
-     0,     0,     0,     0,   147,     0,    92,    45,     0,     0,
-     0,    93,    46,    94,    47,    95,     0,     0,     0,    83,
-    84,     0,    48,     0,    96,    97,   148,   149,     0,     0,
-    85,    49,    86,    50,    87,     0,     1,     2,    51,    98,
-    52,    53,    54,     0,    88,     0,     0,    85,    89,    86,
-     0,    87,    90,     0,     0,    91,     0,     0,     0,     0,
-     0,    88,     0,     0,     0,    89,    92,     0,     0,    90,
-     0,    93,    91,    94,     0,    95,     0,     0,     0,     0,
-     0,     0,     0,    92,    96,    97,     0,     0,    93,     0,
-    94,     0,    95,     0,     0,     0,     0,     0,     0,    98,
-     0,    96,    97,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    98
+     5,   229,   157,     5,   207,    15,   208,   120,   248,   188,
+   101,   101,    10,    10,   257,   245,   119,   407,    10,   175,
+   289,   142,   102,   102,   116,   113,   171,   172,    16,    65,
+    10,   401,    72,     1,     2,   261,    79,    64,     7,    67,
+    71,   171,   172,    10,    78,    10,    11,   200,    65,    10,
+    10,   246,     1,     2,    63,   321,    64,   131,    10,   180,
+   181,   245,    10,    11,   359,   330,    79,   200,    10,   180,
+   181,   200,   202,    63,    78,   357,   358,   143,   341,    19,
+  -261,   307,   372,   277,   312,   402,   366,   114,   123,   403,
+   201,   144,   202,   351,   206,   349,   202,   246,    28,   132,
+   216,    72,    10,   180,   181,    29,    79,   254,    10,    71,
+   117,     1,     2,   138,    78,   165,   188,   411,   117,   188,
+   160,   381,   229,   164,   175,   131,    32,   190,   247,    68,
+     1,     2,  -235,   157,   176,   257,  -235,   254,    34,   217,
+   218,    12,   117,    30,   376,   259,   283,   216,   111,    10,
+   180,   181,   273,   161,   274,   219,    31,   284,    17,    36,
+   214,   215,   273,   407,   162,    33,    10,   132,   285,     1,
+     2,    37,   171,   172,   220,   216,    20,    10,   180,   181,
+   221,   166,   108,   109,    21,   167,   217,   218,    66,   222,
+   258,   360,   320,   266,   171,   172,   223,   224,   266,   225,
+   325,   278,   219,   282,    73,    22,   243,    23,   277,   373,
+   244,   318,   410,   333,   217,   319,    24,   334,   399,   336,
+   107,   220,   410,   337,   288,    80,   384,   221,   392,   340,
+   385,   394,   393,   306,   190,   110,   222,   190,   388,   216,
+   389,    10,   180,   181,   224,   316,   225,    83,    84,   115,
+   157,   160,   157,   368,   123,   221,   364,   370,    82,   346,
+   347,   329,   348,   124,   329,   125,    83,    84,   126,   292,
+   293,   294,   295,     1,     2,   171,   172,    85,   217,    86,
+   327,    87,   127,   177,   178,   179,    10,   180,   181,     1,
+     2,    88,   128,   350,   133,    89,   134,   135,   137,    90,
+   140,   141,    91,    10,   180,   181,     1,     2,   168,   361,
+   169,   258,   170,    92,   196,  -262,   266,   197,    93,   221,
+    94,    10,    95,   182,     1,     2,   278,   361,   198,   282,
+   209,    96,    97,   199,   379,   211,    38,   292,   293,   294,
+   295,   183,   212,    10,   383,   239,    98,   242,   241,   253,
+   252,    39,   260,   269,   270,    40,   272,   117,    99,   287,
+   290,    41,    42,    43,   184,   291,   298,    44,   160,   300,
+   160,   302,    45,   383,   304,   308,   317,    46,   313,    47,
+   322,   185,   324,   323,   338,   379,   335,    48,   406,   326,
+   331,   343,   342,   339,   414,   355,    49,   352,    50,   344,
+   356,   146,   147,    51,   363,    52,    53,    54,   148,   367,
+   369,   375,    85,    38,    86,   380,    87,   149,   386,   387,
+   390,   396,   391,   415,     6,    18,    88,    35,    81,   112,
+    89,   139,   136,   105,    90,   191,   345,    91,    41,    42,
+    43,   374,   213,   315,   365,   271,   150,   362,    92,    45,
+   311,   412,   303,    93,    46,    94,    47,    95,   301,   400,
+   395,   397,   332,   371,    48,     0,    96,    97,   151,   152,
+     0,     0,     0,    49,     0,    50,     0,   153,   146,   147,
+    51,    98,    52,    53,    54,   148,     0,     0,     0,    85,
+    38,    86,     0,    87,   149,     0,     0,     0,     0,     0,
+     0,     0,     0,    88,     0,     0,     0,    89,     0,     0,
+     0,    90,     0,     0,    91,    41,    42,    43,     0,     0,
+     0,     0,     0,   150,     0,    92,    45,     0,     0,     0,
+    93,    46,    94,    47,    95,     0,     0,     0,    83,    84,
+     0,    48,     0,    96,    97,   151,   152,     0,     0,    85,
+    49,    86,    50,    87,     0,     1,     2,    51,    98,    52,
+    53,    54,     0,    88,     0,     0,    85,    89,    86,     0,
+    87,    90,     0,     0,    91,     0,     0,     0,     0,     0,
+    88,     0,     0,     0,    89,    92,     0,     0,    90,     0,
+    93,    91,    94,     0,    95,     0,     0,     0,     0,     0,
+     0,     0,    92,    96,    97,     0,     0,    93,     0,    94,
+     0,    95,     0,     0,     0,     0,     0,     0,    98,     0,
+    96,    97,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    98
 };
 
 static const short yycheck[] = {     7,
-   120,    82,    82,   164,   188,    13,   149,     8,   151,    64,
-    65,   191,     8,     9,     0,   134,     3,     3,     8,    28,
-     8,    11,    12,    46,    11,    12,     8,    17,   104,    37,
-     8,     4,    40,    11,    12,    22,    44,    24,   106,    26,
-    13,    14,   133,     8,     9,     8,     9,    10,    56,    36,
-     8,    37,     8,    40,    40,    80,    33,    44,    44,    80,
-    47,    64,    65,     8,     9,    10,    74,   278,    37,    84,
-    56,    58,    30,    13,    14,    34,    63,   309,    65,   104,
-    67,   106,   293,   202,     9,   106,   109,    56,    74,    76,
-    77,   101,    69,    33,   103,   327,    99,   104,    53,   306,
-   307,   109,    15,   113,    91,   112,   114,    57,   188,   105,
-   317,   112,    84,    99,   122,   103,   235,   104,   108,   238,
-   102,     3,   283,   109,   244,   205,   134,   113,   114,    69,
-   108,   311,   105,    84,   120,   235,   122,   192,   238,   102,
-   105,   232,   105,   218,   102,   107,   102,   133,    41,     6,
-    80,     8,     9,    10,   162,   163,    69,   102,   161,    52,
-    73,    21,   105,   103,     8,   105,   109,    11,    12,   109,
-   250,   360,    12,   362,   104,   161,   106,   252,   258,    12,
-    20,     8,   108,   191,    11,    12,   194,   262,    45,    46,
-   309,   199,   288,   289,   202,   291,   204,    97,    98,    99,
-   100,    41,    46,    43,    61,    39,   390,   326,   327,   109,
-     4,     6,    52,     8,     9,    10,   400,   292,   379,    13,
-    14,   105,   112,    80,   104,   109,   234,   235,   371,    86,
-   238,   217,   105,   104,   314,    81,   109,   245,    95,   320,
-   360,    71,   362,   324,   105,   102,    81,   104,   109,   106,
-    45,    46,    51,   261,    11,    12,   264,    81,   244,     6,
-   105,     8,     9,    10,   109,   112,    61,     5,     6,     7,
-     8,     9,    10,    11,    12,     6,     3,     8,     9,    10,
-     8,     9,    10,    11,    12,    80,   105,     3,   105,   105,
-   109,    86,   109,    11,    12,    13,    14,   105,    45,   104,
-    95,   309,   104,   311,   108,   109,   104,    45,   316,   104,
-   110,   106,     8,    60,    45,    11,    12,   110,   326,   327,
-    35,   329,    13,    14,   104,    63,   334,    23,    68,    60,
-    97,    98,    99,   100,    11,    12,   344,     3,   104,    86,
-   104,     8,    38,   112,   112,   110,    42,    25,    86,    68,
-   106,   106,    48,    49,    50,    86,    68,   103,    54,    30,
-   105,   109,    96,    59,   106,   373,   104,   104,    64,     4,
-    66,    95,   111,    68,   360,    88,   362,   385,    74,   105,
-   388,   113,   105,   104,   109,   107,   106,    83,   105,    85,
-   101,     4,    11,    12,    90,    82,    92,    93,    94,    18,
-   107,   107,   102,    22,    23,    24,   114,    26,    27,   107,
-   113,   104,   109,   107,     0,   107,     0,    36,   107,    13,
-     3,    40,   112,   137,    26,    44,    56,    74,    47,    48,
-    49,    50,   114,   109,    65,   283,   199,    56,   329,    58,
-    59,   316,   311,   400,    63,    64,    65,    66,    67,   241,
-   237,   161,   225,   232,   385,    74,   377,    76,    77,    78,
-    79,   373,   326,   264,    83,    -1,    85,    -1,    87,    11,
-    12,    90,    91,    92,    93,    94,    18,    -1,    -1,    -1,
-    22,    23,    24,    -1,    26,    27,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,
-    -1,    -1,    44,    -1,    -1,    47,    48,    49,    50,    -1,
-    -1,    -1,    -1,    -1,    56,    -1,    58,    59,    -1,    -1,
-    -1,    63,    64,    65,    66,    67,    -1,    -1,    -1,    11,
-    12,    -1,    74,    -1,    76,    77,    78,    79,    -1,    -1,
-    22,    83,    24,    85,    26,    -1,    11,    12,    90,    91,
-    92,    93,    94,    -1,    36,    -1,    -1,    22,    40,    24,
-    -1,    26,    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,
-    -1,    36,    -1,    -1,    -1,    40,    58,    -1,    -1,    44,
-    -1,    63,    47,    65,    -1,    67,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    58,    76,    77,    -1,    -1,    63,    -1,
-    65,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    91,
-    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    91
+     0,   170,   120,     3,   152,    13,   154,    82,   194,   135,
+    64,    65,     8,     8,   198,    33,    82,     4,     8,   134,
+   225,    19,    64,    65,    28,    46,    13,    14,    34,    37,
+     8,    15,    40,    11,    12,    30,    44,    37,   103,    17,
+    40,    13,    14,     8,    44,     8,     9,    80,    56,     8,
+     8,    69,    11,    12,    37,   260,    56,    99,     8,     9,
+    10,    33,     8,     9,   317,   270,    74,    80,     8,     9,
+    10,    80,   105,    56,    74,   314,   315,    75,   286,   105,
+   103,   242,   335,   209,   245,    69,   325,   108,   111,    73,
+   103,    89,   105,   301,   103,   300,   105,    69,     9,    99,
+     6,   109,     8,     9,    10,    57,   114,   102,     8,   109,
+   114,    11,    12,   113,   114,   123,   242,   104,   114,   245,
+   120,   111,   291,   123,   239,   167,    53,   135,   194,   107,
+    11,    12,   104,   251,   134,   319,   108,   102,     3,    45,
+    46,   104,   114,    84,   102,   199,   212,     6,   107,     8,
+     9,    10,   102,    41,   104,    61,    84,   101,   104,   106,
+   168,   169,   102,     4,    52,    84,     8,   167,   112,    11,
+    12,    21,    13,    14,    80,     6,    12,     8,     9,    10,
+    86,   104,   107,   108,    20,   108,    45,    46,    12,    95,
+   198,   317,   258,   201,    13,    14,   102,   103,   206,   105,
+   266,   209,    61,   211,    46,    41,   104,    43,   334,   335,
+   108,   104,   398,   104,    45,   108,    52,   108,   387,   104,
+   107,    80,   408,   108,   224,    39,   104,    86,   104,    60,
+   108,   379,   108,   241,   242,   103,    95,   245,   368,     6,
+   370,     8,     9,    10,   103,   253,   105,    11,    12,   103,
+   368,   251,   370,   328,   111,    86,   322,   332,     3,   296,
+   297,   269,   299,    81,   272,    81,    11,    12,    71,    97,
+    98,    99,   100,    11,    12,    13,    14,    22,    45,    24,
+   108,    26,    51,     5,     6,     7,     8,     9,    10,    11,
+    12,    36,    81,    60,     3,    40,   111,     3,   104,    44,
+   104,   103,    47,     8,     9,    10,    11,    12,   109,   317,
+   109,   319,   103,    58,     9,   103,   324,    35,    63,    86,
+    65,     8,    67,    45,    11,    12,   334,   335,   103,   337,
+   103,    76,    77,    68,   342,   103,    23,    97,    98,    99,
+   100,    63,     3,     8,   352,   111,    91,   109,   111,    25,
+   115,    38,   105,    68,   105,    42,    68,   114,   103,    30,
+   104,    48,    49,    50,    86,   108,    96,    54,   368,   105,
+   370,   103,    59,   381,     4,    95,   110,    64,    88,    66,
+    68,   103,   108,   104,   112,   393,   105,    74,   396,   106,
+   104,   104,   103,   101,     0,     4,    83,   113,    85,   106,
+    82,    11,    12,    90,   106,    92,    93,    94,    18,   102,
+   106,   112,    22,    23,    24,   106,    26,    27,   103,   108,
+   106,   111,   106,     0,     3,    13,    36,    26,    56,    74,
+    40,   114,   109,    65,    44,   138,   291,    47,    48,    49,
+    50,   337,   167,   248,   324,   206,    56,   319,    58,    59,
+   244,   408,   239,    63,    64,    65,    66,    67,   232,   393,
+   381,   385,   272,   334,    74,    -1,    76,    77,    78,    79,
+    -1,    -1,    -1,    83,    -1,    85,    -1,    87,    11,    12,
+    90,    91,    92,    93,    94,    18,    -1,    -1,    -1,    22,
+    23,    24,    -1,    26,    27,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,    -1,
+    -1,    44,    -1,    -1,    47,    48,    49,    50,    -1,    -1,
+    -1,    -1,    -1,    56,    -1,    58,    59,    -1,    -1,    -1,
+    63,    64,    65,    66,    67,    -1,    -1,    -1,    11,    12,
+    -1,    74,    -1,    76,    77,    78,    79,    -1,    -1,    22,
+    83,    24,    85,    26,    -1,    11,    12,    90,    91,    92,
+    93,    94,    -1,    36,    -1,    -1,    22,    40,    24,    -1,
+    26,    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,
+    36,    -1,    -1,    -1,    40,    58,    -1,    -1,    44,    -1,
+    63,    47,    65,    -1,    67,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    58,    76,    77,    -1,    -1,    63,    -1,    65,
+    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,
+    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    91
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -3228,57 +3236,78 @@
 case 252:
 #line 1945 "asn1p_y.y"
 {
-		yyval.a_tag = yyvsp[0].a_tag;
-		yyval.a_tag.tag_mode = TM_DEFAULT;
+		yyval.a_tag = yyvsp[-1].a_tag;
+		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
 	;
     break;}
 case 253:
-#line 1949 "asn1p_y.y"
+#line 1952 "asn1p_y.y"
 {
-		yyval.a_tag = yyvsp[-1].a_tag;
-		yyval.a_tag.tag_mode = TM_IMPLICIT;
+		yyval.a_tag = yyvsp[-2].a_tag;
+		yyval.a_tag.tag_value = yyvsp[-1].a_int;
 	;
     break;}
 case 254:
-#line 1953 "asn1p_y.y"
-{
-		yyval.a_tag = yyvsp[-1].a_tag;
-		yyval.a_tag.tag_mode = TM_EXPLICIT;
-	;
+#line 1958 "asn1p_y.y"
+{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
     break;}
 case 255:
-#line 1960 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
+#line 1959 "asn1p_y.y"
+{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
     break;}
 case 256:
-#line 1964 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
+#line 1960 "asn1p_y.y"
+{ yyval.a_tag.tag_class = TC_APPLICATION; ;
     break;}
 case 257:
-#line 1972 "asn1p_y.y"
+#line 1961 "asn1p_y.y"
+{ yyval.a_tag.tag_class = TC_PRIVATE; ;
+    break;}
+case 258:
+#line 1965 "asn1p_y.y"
+{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
+    break;}
+case 259:
+#line 1966 "asn1p_y.y"
+{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
+    break;}
+case 260:
+#line 1967 "asn1p_y.y"
+{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
+    break;}
+case 261:
+#line 1971 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 258:
-#line 1979 "asn1p_y.y"
+case 262:
+#line 1975 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 263:
+#line 1983 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 264:
+#line 1990 "asn1p_y.y"
 { yyval.tv_str = 0; ;
     break;}
-case 259:
-#line 1980 "asn1p_y.y"
+case 265:
+#line 1991 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 260:
-#line 1985 "asn1p_y.y"
+case 266:
+#line 1996 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3506,7 +3535,7 @@
     }
   return 1;
 }
-#line 1991 "asn1p_y.y"
+#line 2002 "asn1p_y.y"
 
 
 
diff --git a/libasn1parser/asn1p_y.h b/libasn1parser/asn1p_y.h
index e1c581b..3b8d86d 100644
--- a/libasn1parser/asn1p_y.h
+++ b/libasn1parser/asn1p_y.h
@@ -128,7 +128,6 @@
 #define	TOK_UNION	352
 #define	TOK_TwoDots	353
 #define	TOK_ThreeDots	354
-#define	TOK_tag	355
 
 
 extern YYSTYPE asn1p_lval;
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index 1e77fee..3eb38c1 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -196,7 +196,6 @@
 /* Misc tags */
 %token			TOK_TwoDots		/* .. */
 %token			TOK_ThreeDots		/* ... */
-%token	<a_tag>		TOK_tag			/* [0] */
 
 
 /*
@@ -266,7 +265,8 @@
 %type	<a_type>		BasicString
 %type	<tv_opaque>		Opaque
 //%type	<tv_opaque>		StringValue
-%type	<a_tag>			Tag		/* [UNIVERSAL 0] IMPLICIT */
+%type	<a_tag>			Tag 		/* [UNIVERSAL 0] IMPLICIT */
+%type	<a_tag>			TagClass TagTypeValue TagPlicit
 %type	<a_tag>			optTag		/* [UNIVERSAL 0] IMPLICIT */
 %type	<a_constr>		optConstraints
 %type	<a_constr>		Constraints
@@ -1942,18 +1942,29 @@
 	;
 
 Tag:
-	TOK_tag {
+	TagTypeValue TagPlicit {
 		$$ = $1;
-		$$.tag_mode = TM_DEFAULT;
+		$$.tag_mode = $2.tag_mode;
 	}
-	| TOK_tag TOK_IMPLICIT {
-		$$ = $1;
-		$$.tag_mode = TM_IMPLICIT;
-	}
-	| TOK_tag TOK_EXPLICIT {
-		$$ = $1;
-		$$.tag_mode = TM_EXPLICIT;
-	}
+	;
+
+TagTypeValue:
+	'[' TagClass TOK_number ']' {
+		$$ = $2;
+		$$.tag_value = $3;
+	};
+
+TagClass:
+	{ $$.tag_class = TC_CONTEXT_SPECIFIC; }
+	| TOK_UNIVERSAL { $$.tag_class = TC_UNIVERSAL; }
+	| TOK_APPLICATION { $$.tag_class = TC_APPLICATION; }
+	| TOK_PRIVATE { $$.tag_class = TC_PRIVATE; }
+	;
+
+TagPlicit:
+	{ $$.tag_mode = TM_DEFAULT; }
+	| TOK_IMPLICIT { $$.tag_mode = TM_IMPLICIT; }
+	| TOK_EXPLICIT { $$.tag_mode = TM_EXPLICIT; }
 	;
 
 TypeRefName: