small fixes


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@499 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 02d6181..2c520f8 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -205,11 +205,11 @@
 
 
 
-#define	YYFINAL		402
+#define	YYFINAL		407
 #define	YYFLAG		-32768
 #define	YYNTBASE	115
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 212)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 213)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -256,136 +256,137 @@
     31,    33,    38,    40,    41,    43,    45,    48,    51,    54,
     57,    60,    63,    64,    66,    68,    71,    73,    75,    77,
     79,    81,    82,    86,    88,    92,    95,    97,   100,   105,
-   107,   111,   113,   115,   119,   123,   126,   128,   132,   134,
-   136,   143,   145,   147,   148,   150,   152,   156,   158,   160,
-   165,   169,   173,   180,   182,   186,   188,   192,   196,   198,
-   202,   204,   206,   208,   212,   216,   220,   222,   224,   228,
-   231,   233,   239,   240,   242,   244,   248,   251,   256,   261,
-   262,   264,   265,   272,   274,   277,   279,   281,   283,   287,
-   291,   295,   297,   299,   304,   309,   314,   321,   328,   330,
-   335,   340,   342,   346,   348,   352,   356,   360,   362,   366,
-   368,   372,   374,   376,   378,   380,   385,   389,   390,   394,
-   396,   398,   400,   402,   404,   406,   408,   410,   412,   416,
-   418,   421,   423,   425,   427,   429,   432,   435,   437,   439,
-   442,   445,   447,   449,   451,   453,   456,   458,   461,   463,
-   465,   467,   469,   471,   473,   475,   477,   479,   481,   483,
-   485,   487,   489,   491,   493,   495,   497,   499,   500,   502,
-   504,   509,   513,   518,   520,   524,   530,   532,   536,   540,
-   544,   549,   553,   555,   559,   563,   567,   571,   573,   575,
-   577,   580,   583,   587,   589,   591,   593,   595,   597,   599,
-   601,   607,   609,   613,   615,   619,   620,   622,   624,   626,
-   628,   630,   632,   636,   641,   643,   647,   650,   654,   656,
-   660,   661,   663,   665,   668,   671,   675,   677,   681,   683,
-   688,   693,   695,   697,   699,   701,   702,   704,   706,   709,
-   712,   714,   716,   718,   719,   721
+   107,   111,   113,   117,   119,   123,   127,   130,   132,   136,
+   138,   142,   144,   151,   153,   155,   156,   158,   160,   164,
+   166,   168,   173,   177,   181,   188,   190,   194,   196,   200,
+   204,   206,   210,   212,   214,   215,   217,   219,   223,   227,
+   231,   233,   235,   239,   242,   244,   250,   251,   253,   255,
+   259,   262,   267,   272,   273,   275,   276,   283,   285,   288,
+   290,   292,   294,   298,   302,   306,   308,   310,   315,   320,
+   325,   332,   339,   341,   346,   351,   353,   357,   359,   363,
+   367,   371,   373,   377,   379,   383,   385,   387,   389,   391,
+   396,   400,   401,   405,   407,   409,   411,   413,   415,   417,
+   419,   421,   423,   427,   429,   432,   434,   436,   438,   440,
+   443,   446,   448,   450,   453,   456,   458,   460,   462,   464,
+   467,   469,   472,   474,   476,   478,   480,   482,   484,   486,
+   488,   490,   492,   494,   496,   498,   500,   502,   504,   506,
+   508,   510,   511,   513,   515,   520,   524,   529,   531,   535,
+   541,   543,   547,   551,   555,   560,   564,   566,   570,   574,
+   578,   582,   584,   586,   588,   591,   594,   598,   600,   602,
+   604,   606,   608,   610,   612,   618,   620,   624,   626,   630,
+   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
 };
 
 static const short yyrhs[] = {   116,
-     0,   117,     0,   116,   117,     0,   208,   118,    34,   122,
+     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,
-   211,     0,   211,   106,     9,   107,     0,     9,     0,     0,
+   212,     0,   212,   106,     9,   107,     0,     9,     0,     0,
    123,     0,   124,     0,   123,   124,     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,   168,     0,   137,     0,
-     0,    38,    12,   128,     0,   176,     0,    54,   130,   108,
+   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,   208,   118,     0,   133,     0,   132,   109,   133,     0,
-   208,     0,   211,     0,    42,   135,   108,     0,    42,    17,
-   108,     0,    42,   108,     0,   136,     0,   135,   109,   136,
-     0,   208,     0,   211,     0,   208,   138,     3,   104,   139,
-   105,     0,   163,     0,   173,     0,     0,   140,     0,   141,
-     0,   140,   109,   141,     0,   102,     0,   184,     0,   208,
-     3,   206,    87,     0,   208,     3,   161,     0,   208,     3,
-   151,     0,   208,   104,   143,   105,     3,   161,     0,   144,
-     0,   143,   109,   144,     0,   208,     0,   208,   110,   211,
-     0,   173,   110,   211,     0,   146,     0,   145,   109,   146,
-     0,   161,     0,   211,     0,   148,     0,   147,   109,   148,
-     0,   211,   161,   200,     0,    30,    68,   161,     0,   160,
-     0,   150,     0,   149,   109,   150,     0,   211,   161,     0,
-   160,     0,    28,   104,   153,   105,   155,     0,     0,    88,
-     0,   154,     0,   153,   109,   154,     0,   166,   200,     0,
-   166,   161,   200,   152,     0,   166,   166,   200,   152,     0,
-     0,   156,     0,     0,    95,    82,   104,   157,   158,   105,
-     0,   159,     0,   158,   159,     0,     4,     0,   166,     0,
-   102,     0,   102,   111,   171,     0,   102,   111,   205,     0,
-   206,   162,   180,     0,   175,     0,   176,     0,    27,   104,
-   149,   105,     0,    78,   104,   147,   105,     0,    79,   104,
-   147,   105,     0,    78,   180,    68,   210,   206,   162,     0,
-    79,   180,    68,   210,   206,   162,     0,    18,     0,    18,
-    35,    25,   211,     0,   208,   104,   145,   105,     0,   163,
-     0,    56,    68,   163,     0,    11,     0,    11,   112,   208,
-     0,   209,   112,   208,     0,    11,   112,   211,     0,   209,
-     0,   209,   112,   164,     0,   165,     0,   164,   112,   165,
-     0,   167,     0,   167,     0,    13,     0,    14,     0,   211,
-   138,     3,   169,     0,   211,   110,   169,     0,     0,   104,
-   170,   172,     0,    63,     0,    45,     0,    86,     0,     5,
-     0,     7,     0,     6,     0,   205,     0,   171,     0,   211,
-     0,   208,   112,   211,     0,     4,     0,   172,     4,     0,
-    24,     0,    63,     0,    76,     0,   174,     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,   173,     0,   174,   202,     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,   181,
-     0,   182,     0,    80,   106,   183,   107,     0,   106,   183,
-   107,     0,   182,   106,   183,   107,     0,   184,     0,   184,
-   109,   102,     0,   184,   109,   102,   109,   184,     0,   185,
-     0,   184,   177,   185,     0,   184,   178,   185,     0,   185,
-   179,   185,     0,   187,   106,   183,   107,     0,   106,   183,
-   107,     0,   188,     0,   188,   186,   188,     0,    61,   186,
-   188,     0,   188,   186,    60,     0,    61,   186,    60,     0,
-   194,     0,   189,     0,   101,     0,   101,   113,     0,   113,
-   101,     0,   113,   101,   113,     0,    80,     0,    46,     0,
-   205,     0,   211,     0,     6,     0,    45,     0,    86,     0,
-    95,    30,   104,   190,   105,     0,   191,     0,   190,   109,
-   191,     0,   102,     0,   211,   180,   192,     0,     0,   193,
-     0,    73,     0,    15,     0,    69,     0,   195,     0,   196,
-     0,   104,   208,   105,     0,   195,   104,   197,   105,     0,
-   198,     0,   197,   109,   198,     0,   114,   199,     0,   114,
-   112,   199,     0,   211,     0,   199,   112,   211,     0,     0,
-   201,     0,    69,     0,    33,   169,     0,   104,   105,     0,
-   104,   203,   105,     0,   204,     0,   203,   109,   204,     0,
-   211,     0,   211,   106,   205,   107,     0,   211,   106,   171,
-   107,     0,   205,     0,   102,     0,     9,     0,    10,     0,
-     0,   207,     0,   103,     0,   103,    52,     0,   103,    41,
-     0,    11,     0,    12,     0,    12,     0,     0,   211,     0,
-     8,     0
+    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,   201,   153,     0,   167,   167,   201,   153,
+     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,
+    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,    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
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   300,   306,   312,   328,   353,   355,   358,   362,   367,   374,
-   382,   387,   391,   400,   402,   410,   414,   422,   426,   429,
-   432,   436,   456,   458,   466,   470,   502,   506,   515,   522,
-   535,   542,   544,   556,   569,   576,   581,   587,   593,   602,
-   608,   614,   621,   629,   633,   636,   643,   649,   655,   662,
-   671,   681,   689,   697,   699,   709,   712,   716,   719,   731,
-   743,   749,   765,   774,   784,   794,   799,   806,   816,   822,
-   828,   832,   844,   850,   856,   863,   870,   875,   881,   887,
-   893,   898,   908,   910,   913,   921,   927,   936,   942,   959,
-   961,   966,   970,   975,   980,   986,   990,  1001,  1010,  1019,
-  1030,  1052,  1056,  1062,  1068,  1074,  1080,  1090,  1100,  1106,
-  1120,  1144,  1151,  1165,  1174,  1184,  1194,  1204,  1212,  1233,
-  1242,  1251,  1252,  1254,  1261,  1273,  1283,  1291,  1291,  1296,
-  1301,  1306,  1311,  1315,  1319,  1323,  1326,  1331,  1343,  1359,
-  1370,  1384,  1386,  1387,  1388,  1389,  1390,  1391,  1392,  1393,
-  1394,  1395,  1396,  1402,  1404,  1405,  1408,  1415,  1427,  1429,
-  1433,  1437,  1438,  1439,  1440,  1441,  1445,  1446,  1447,  1448,
-  1452,  1453,  1460,  1460,  1461,  1461,  1462,  1464,  1466,  1471,
-  1475,  1484,  1488,  1493,  1497,  1503,  1513,  1517,  1520,  1523,
-  1528,  1537,  1545,  1551,  1558,  1566,  1574,  1583,  1586,  1591,
-  1593,  1594,  1595,  1598,  1602,  1607,  1611,  1622,  1626,  1631,
-  1638,  1644,  1648,  1653,  1659,  1671,  1673,  1676,  1680,  1683,
-  1688,  1692,  1700,  1715,  1721,  1728,  1741,  1753,  1768,  1772,
-  1789,  1794,  1797,  1802,  1824,  1829,  1834,  1840,  1846,  1854,
-  1862,  1870,  1877,  1887,  1892,  1922,  1924,  1927,  1932,  1936,
-  1942,  1947,  1954,  1961,  1963,  1967
+   301,   307,   313,   329,   354,   356,   359,   363,   368,   375,
+   383,   388,   392,   401,   403,   411,   415,   423,   427,   430,
+   433,   437,   457,   459,   467,   471,   503,   507,   516,   523,
+   536,   543,   545,   557,   570,   577,   582,   588,   594,   603,
+   609,   615,   622,   628,   636,   640,   643,   650,   656,   662,
+   669,   675,   684,   694,   702,   710,   712,   722,   725,   729,
+   732,   744,   756,   762,   778,   787,   797,   807,   812,   819,
+   829,   835,   841,   845,   857,   859,   861,   867,   873,   880,
+   887,   892,   898,   904,   910,   915,   925,   927,   930,   938,
+   944,   953,   959,   976,   978,   983,   987,   992,   997,  1003,
+  1007,  1018,  1027,  1036,  1047,  1069,  1073,  1079,  1085,  1091,
+  1097,  1107,  1117,  1123,  1137,  1161,  1168,  1182,  1191,  1201,
+  1211,  1221,  1229,  1250,  1259,  1268,  1269,  1271,  1278,  1290,
+  1300,  1308,  1308,  1313,  1318,  1323,  1328,  1332,  1336,  1340,
+  1343,  1348,  1360,  1376,  1387,  1401,  1403,  1404,  1405,  1406,
+  1407,  1408,  1409,  1410,  1411,  1412,  1413,  1419,  1421,  1422,
+  1425,  1432,  1444,  1446,  1450,  1454,  1455,  1456,  1457,  1458,
+  1462,  1463,  1464,  1465,  1469,  1470,  1477,  1477,  1478,  1478,
+  1479,  1481,  1483,  1488,  1492,  1501,  1505,  1510,  1514,  1520,
+  1530,  1534,  1537,  1540,  1545,  1554,  1562,  1568,  1575,  1583,
+  1591,  1600,  1603,  1608,  1610,  1611,  1612,  1615,  1619,  1624,
+  1628,  1639,  1643,  1648,  1655,  1661,  1665,  1670,  1676,  1688,
+  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
 };
 #endif
 
@@ -419,21 +420,21 @@
 "ImportsBundleSet","ImportsBundle","ImportsList","ImportsElement","ExportsDefinition",
 "ExportsBody","ExportsElement","ValueSetDefinition","DefinedTypeRef","optValueSetBody",
 "ValueSetBody","ValueSetElement","DataTypeReference","ParameterArgumentList",
-"ParameterArgumentName","ActualParameterList","ActualParameter","ComponentTypeLists",
-"ComponentType","AlternativeTypeLists","AlternativeType","ClassDeclaration",
-"optUnique","ClassFieldList","ClassField","optWithSyntax","WithSyntax","@2",
-"WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException","Type","TypeDeclaration",
-"ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
-"ClassFieldIdentifier","ClassFieldName","ValueDefinition","Value","@3","DefinedValue",
-"Opaque","BasicTypeId","BasicTypeId_UniverationCompatible","BasicType","BasicString",
-"Union","Intersection","Except","optConstraints","Constraints","SetOfConstraints",
-"ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement","ConstraintRangeSpec",
-"ConstraintSpec","ConstraintValue","WithComponents","WithComponentsList","WithComponentsElement",
-"optPresenceConstraint","PresenceConstraint","TableConstraint","SimpleTableConstraint",
-"ComponentRelationConstraint","AtNotationList","AtNotationElement","ComponentIdList",
-"optMarker","Marker","UniverationDefinition","UniverationList","UniverationElement",
-"SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference","optIdentifier",
-"Identifier", NULL
+"ParameterArgumentName","ActualParameterList","ActualParameter","optComponentTypeLists",
+"ComponentTypeLists","ComponentType","AlternativeTypeLists","AlternativeType",
+"ClassDeclaration","optUnique","ClassFieldList","ClassField","optWithSyntax",
+"WithSyntax","@2","WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException",
+"Type","TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
+"ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
+"Value","@3","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
+"BasicType","BasicString","Union","Intersection","Except","optConstraints","Constraints",
+"SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
+"ConstraintRangeSpec","ConstraintSpec","ConstraintValue","WithComponents","WithComponentsList",
+"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
+"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
+"ComponentIdList","optMarker","Marker","UniverationDefinition","UniverationList",
+"UniverationElement","SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference",
+"optIdentifier","Identifier", NULL
 };
 #endif
 
@@ -442,28 +443,28 @@
    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,   134,   134,   134,   135,   135,   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,   148,   149,   149,   150,
-   150,   151,   152,   152,   153,   153,   154,   154,   154,   155,
-   155,   157,   156,   158,   158,   159,   159,   160,   160,   160,
-   161,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-   162,   162,   162,   163,   163,   163,   163,   163,   163,   164,
-   164,   165,   166,   167,   167,   168,   169,   170,   169,   169,
-   169,   169,   169,   169,   169,   169,   169,   171,   171,   172,
-   172,   173,   173,   173,   173,   173,   173,   173,   173,   173,
-   173,   173,   173,   174,   174,   174,   175,   175,   176,   176,
-   176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-   176,   176,   177,   177,   178,   178,   179,   180,   180,   181,
-   181,   182,   182,   183,   183,   183,   184,   184,   184,   184,
-   185,   185,   185,   185,   185,   185,   185,   185,   185,   186,
-   186,   186,   186,   187,   187,   188,   188,   188,   188,   188,
-   189,   190,   190,   191,   191,   192,   192,   193,   193,   193,
-   194,   194,   195,   196,   197,   197,   198,   198,   199,   199,
-   200,   200,   201,   201,   202,   202,   203,   203,   204,   204,
-   204,   204,   204,   205,   205,   206,   206,   207,   207,   207,
-   208,   208,   209,   210,   210,   211
+   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
 };
 
 static const short yyr2[] = {     0,
@@ -471,280 +472,280 @@
      1,     4,     1,     0,     1,     1,     2,     2,     2,     2,
      2,     2,     0,     1,     1,     2,     1,     1,     1,     1,
      1,     0,     3,     1,     3,     2,     1,     2,     4,     1,
-     3,     1,     1,     3,     3,     2,     1,     3,     1,     1,
-     6,     1,     1,     0,     1,     1,     3,     1,     1,     4,
-     3,     3,     6,     1,     3,     1,     3,     3,     1,     3,
-     1,     1,     1,     3,     3,     3,     1,     1,     3,     2,
-     1,     5,     0,     1,     1,     3,     2,     4,     4,     0,
-     1,     0,     6,     1,     2,     1,     1,     1,     3,     3,
-     3,     1,     1,     4,     4,     4,     6,     6,     1,     4,
-     4,     1,     3,     1,     3,     3,     3,     1,     3,     1,
-     3,     1,     1,     1,     1,     4,     3,     0,     3,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
-     2,     1,     1,     1,     1,     2,     2,     1,     1,     2,
-     2,     1,     1,     1,     1,     2,     1,     2,     1,     1,
+     3,     1,     3,     1,     3,     3,     2,     1,     3,     1,
+     3,     1,     6,     1,     1,     0,     1,     1,     3,     1,
+     1,     4,     3,     3,     6,     1,     3,     1,     3,     3,
+     1,     3,     1,     1,     0,     1,     1,     3,     3,     3,
+     1,     1,     3,     2,     1,     5,     0,     1,     1,     3,
+     2,     4,     4,     0,     1,     0,     6,     1,     2,     1,
+     1,     1,     3,     3,     3,     1,     1,     4,     4,     4,
+     6,     6,     1,     4,     4,     1,     3,     1,     3,     3,
+     3,     1,     3,     1,     3,     1,     1,     1,     1,     4,
+     3,     0,     3,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     3,     1,     2,     1,     1,     1,     1,     2,
+     2,     1,     1,     2,     2,     1,     1,     1,     1,     2,
+     1,     2,     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,     0,     1,     1,
-     4,     3,     4,     1,     3,     5,     1,     3,     3,     3,
-     4,     3,     1,     3,     3,     3,     3,     1,     1,     1,
-     2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
-     5,     1,     3,     1,     3,     0,     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,     0,     1,     1,     4,     3,     4,     1,     3,     5,
+     1,     3,     3,     3,     4,     3,     1,     3,     3,     3,
+     3,     1,     1,     1,     2,     2,     3,     1,     1,     1,
+     1,     1,     1,     1,     5,     1,     3,     1,     3,     0,
+     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
 };
 
 static const short yydefact[] = {     0,
-   251,   252,     1,     2,     5,     3,     0,     0,     6,   256,
+   255,   256,     1,     2,     5,     3,     0,     0,     6,   260,
     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,   159,     0,     0,
-   160,   161,   162,     0,   163,   164,   172,   165,   166,   167,
-   168,   169,   170,   171,     0,    24,    25,    27,    28,    31,
-    29,    30,    34,     0,     0,    32,     0,    46,     0,    47,
-    49,    50,    36,     0,    37,     0,    40,    42,    43,     4,
-    26,   246,   114,   253,     0,   142,     0,     0,   155,   149,
-   153,   154,   143,     0,     0,   144,   148,   152,     0,     0,
-    52,    53,   145,   118,     0,    33,    45,    44,     0,    35,
-    38,     0,     0,     0,   248,    62,    61,     0,   247,     0,
-   156,   151,   150,   147,   146,     0,    64,     0,    66,     0,
-     0,     0,    48,     5,    41,     0,   250,   249,   114,   253,
-   109,     0,     0,   178,   178,    60,   178,   112,   157,   145,
-   102,   103,     0,   115,   117,     0,     0,     0,     0,    54,
-   124,   125,   119,   120,   122,   116,   133,   135,   134,   244,
-   245,   131,   130,   132,   128,   126,   137,   136,     0,   138,
-    39,     0,    85,   246,   123,     0,     0,     0,     0,     0,
-     0,     0,   179,   180,     0,     0,   101,     0,   158,   246,
-   246,    65,    68,    67,   208,   209,   205,     0,   204,   210,
-     0,    58,     0,     0,     0,    55,    56,    59,   187,     0,
-   193,   199,   198,   221,   222,   206,   207,     0,     0,     0,
-     0,    90,     0,     0,   233,   231,   231,    87,   232,     0,
-     0,    98,     0,    78,    81,   246,   113,     0,     0,     0,
-    73,    77,   246,     0,   184,   254,     0,     0,   254,   243,
-   235,     0,   237,   242,   239,     0,    69,    71,    72,    63,
-   200,     0,     0,     0,     0,     0,    51,     0,   175,   176,
-   173,   174,     0,     0,   177,     0,     0,     0,     0,   121,
-   140,   129,   139,   127,     0,    82,    91,    86,   234,    83,
-    83,   110,     0,   104,     0,    80,     0,   246,   105,     0,
-   231,   182,     0,   246,   255,     0,   106,   246,   236,     0,
-     0,   111,   246,   201,   202,   197,   195,     0,   223,   192,
-    57,   188,   189,   190,     0,   196,   194,     0,     0,   225,
-   141,     0,    84,    88,    89,    99,   100,   138,    79,   181,
-    76,    74,    75,   185,     0,   183,     0,   238,     0,     0,
-    70,   203,   214,     0,   212,   178,   191,     0,   227,   229,
-   224,     0,    92,     0,   107,   108,   241,   240,   211,     0,
-   216,   228,     0,   226,     0,   186,   213,   219,   220,   218,
-   215,   217,   230,    96,     0,    94,    97,    93,    95,     0,
-     0,     0
+    18,    21,    19,     0,    17,    12,    23,   163,     0,     0,
+   164,   165,   166,     0,   167,   168,   176,   169,   170,   171,
+   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,
+   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,   235,
+   235,    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,    87,    87,   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,    88,    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[] = {   400,
+static const short yydefgoto[] = {   405,
      3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
     56,    57,   106,    58,    74,    75,    76,    77,    59,    69,
-    70,    60,   100,   215,   216,   217,    61,   126,   127,   266,
-   267,   250,   251,   243,   244,   116,   344,   182,   183,   296,
-   297,   385,   395,   396,   252,   268,   147,   148,   163,   164,
-   184,   185,    62,   176,   229,   177,   292,   149,   103,   151,
-   152,   283,   284,   286,   192,   193,   194,   254,   255,   219,
-   273,   220,   221,   222,   364,   365,   391,   392,   223,   224,
-   225,   339,   340,   369,   238,   239,   199,   262,   263,   226,
-   240,   119,   179,   104,   314,   227
+    70,    60,   100,   219,   220,   221,    61,   128,   129,   271,
+   272,   254,   255,   256,   247,   248,   118,   349,   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,   344,   345,   374,   242,   243,   203,   267,   268,
+   230,   244,   121,   183,   104,   319,   231
 };
 
-static const short yypact[] = {    93,
--32768,-32768,    93,-32768,    65,-32768,    23,    78,-32768,-32768,
--32768,-32768,    52,-32768,    68,   224,-32768,-32768,   118,   122,
-    51,    59,   139,   113,   203,   224,-32768,   109,-32768,-32768,
--32768,-32768,-32768,   201,-32768,-32768,   318,-32768,   220,     9,
--32768,-32768,-32768,   173,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   198,   318,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,    12,   532,-32768,   135,-32768,    46,-32768,
--32768,-32768,-32768,    32,-32768,   -11,-32768,-32768,-32768,-32768,
--32768,    -6,   149,-32768,   196,-32768,   207,   226,-32768,-32768,
--32768,-32768,-32768,   223,   214,-32768,-32768,-32768,   549,   305,
--32768,-32768,-32768,   200,   307,-32768,-32768,-32768,   252,-32768,
--32768,    93,   252,   211,    30,-32768,-32768,   395,-32768,   252,
--32768,-32768,-32768,-32768,-32768,   -25,-32768,   208,   209,   216,
-   293,   155,-32768,    65,-32768,   217,-32768,-32768,    -5,   229,
-   292,   231,   268,   -23,    64,-32768,   -55,-32768,-32768,   233,
--32768,-32768,   234,-32768,-32768,   336,   549,   332,   332,   167,
--32768,-32768,   230,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   232,   235,
--32768,    77,-32768,   181,-32768,   321,     8,   280,   241,    39,
-   248,   281,-32768,   242,    39,   282,-32768,    45,-32768,    21,
-   250,-32768,-32768,-32768,-32768,-32768,-32768,    29,-32768,-32768,
-   325,-32768,    93,   248,   246,   253,-32768,   225,   267,   258,
-    29,-32768,-32768,   261,-32768,-32768,-32768,   217,   365,   332,
-   155,   275,   217,   155,-32768,    17,    17,-32768,-32768,   472,
-   332,   260,   112,-32768,-32768,   250,-32768,   248,   306,   146,
--32768,-32768,   250,   271,   202,   332,   248,   161,   332,-32768,
--32768,   163,-32768,-32768,   269,   170,-32768,-32768,-32768,-32768,
-   266,   279,    86,   277,   278,   283,-32768,   167,-32768,-32768,
--32768,-32768,   248,   248,-32768,   248,   248,   272,   273,-32768,
--32768,   381,-32768,-32768,   304,-32768,-32768,-32768,-32768,   300,
-   300,-32768,   193,-32768,     8,-32768,   284,   250,-32768,    39,
-    17,-32768,   287,   250,-32768,   286,-32768,   250,-32768,    54,
-   193,-32768,    21,-32768,   285,-32768,-32768,    37,-32768,-32768,
--32768,-32768,-32768,-32768,   288,-32768,-32768,    -4,   178,-32768,
--32768,   290,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   291,   472,-32768,   472,-32768,   289,   295,
--32768,-32768,-32768,   180,-32768,   -55,-32768,   332,   297,-32768,
--32768,   273,-32768,   248,-32768,-32768,-32768,-32768,-32768,    37,
-    76,   297,   332,-32768,   185,   225,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,    14,-32768,-32768,-32768,-32768,   397,
-   399,-32768
+static const short yypact[] = {   203,
+-32768,-32768,   203,-32768,   -50,-32768,    27,    63,-32768,-32768,
+-32768,-32768,    54,-32768,   -40,    38,-32768,-32768,    79,    47,
+    49,    73,    91,    80,   113,    38,-32768,    71,-32768,-32768,
+-32768,-32768,-32768,   149,-32768,-32768,   334,-32768,   174,    34,
+-32768,-32768,-32768,   135,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   150,   334,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,    17,   327,-32768,    83,-32768,   190,-32768,
+   102,-32768,-32768,    11,-32768,   -22,-32768,   108,-32768,-32768,
+-32768,     3,   117,-32768,   142,-32768,   158,   176,-32768,-32768,
+-32768,-32768,-32768,   199,   185,-32768,-32768,-32768,   548,   265,
+-32768,-32768,-32768,   175,   290,-32768,-32768,-32768,   197,   201,
+-32768,-32768,   203,   197,   215,   198,   111,-32768,-32768,   411,
+-32768,   197,-32768,-32768,-32768,-32768,-32768,   -14,-32768,   213,
+   214,   221,   278,   269,-32768,-32768,   -50,-32768,-32768,   291,
+-32768,-32768,    65,   223,   293,   225,   262,    -3,    92,-32768,
+   -46,-32768,-32768,   230,-32768,-32768,   231,-32768,-32768,   337,
+   548,   329,   329,   165,-32768,-32768,   232,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   235,   233,-32768,   116,-32768,    85,-32768,   323,
+    32,   305,   244,    48,   227,   284,-32768,   248,    48,   288,
+-32768,    60,-32768,    19,   256,-32768,-32768,-32768,-32768,-32768,
+-32768,   -69,-32768,-32768,   328,-32768,   203,   227,   257,   251,
+-32768,   212,   268,   259,   -69,-32768,-32768,   264,-32768,-32768,
+-32768,   291,   357,   329,   269,   275,   291,   269,-32768,    67,
+    67,-32768,-32768,   488,   329,   258,   125,-32768,-32768,   256,
+-32768,   227,   311,   281,   271,-32768,-32768,   256,   280,   104,
+   329,   227,   286,   329,-32768,-32768,   137,-32768,-32768,   283,
+   144,-32768,-32768,-32768,-32768,   282,   295,   210,   297,   292,
+   298,-32768,   165,-32768,-32768,-32768,-32768,   227,   227,-32768,
+   227,   227,   255,   285,-32768,-32768,   398,-32768,-32768,   324,
+-32768,-32768,-32768,-32768,   319,   319,-32768,   274,-32768,    32,
+-32768,   302,   256,-32768,    48,    67,-32768,   308,   256,-32768,
+   304,-32768,   256,-32768,    64,   274,-32768,    19,-32768,   299,
+-32768,-32768,    39,-32768,-32768,-32768,-32768,-32768,-32768,   306,
+-32768,-32768,     1,   147,-32768,-32768,   310,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   307,   488,
+-32768,   488,-32768,   313,   314,-32768,-32768,-32768,   153,-32768,
+   -46,-32768,   329,   303,-32768,-32768,   285,-32768,   227,-32768,
+-32768,-32768,-32768,-32768,    39,    23,   303,   329,-32768,   154,
+   212,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    12,
+-32768,-32768,-32768,-32768,   425,   430,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   401,   294,-32768,-32768,   392,-32768,-32768,   388,-32768,
--32768,   359,-32768,-32768,-32768,   342,-32768,   310,-32768,-32768,
-   311,-32768,   360,-32768,-32768,   148,-32768,-32768,   270,-32768,
-   101,   237,   119,-32768,   125,-32768,   132,-32768,   204,-32768,
--32768,-32768,-32768,    41,  -173,   -75,  -146,   -52,-32768,   206,
-  -175,   -90,-32768,   -97,-32768,  -231,-32768,     1,  -117,-32768,
-    31,-32768,-32768,-32768,  -137,-32768,-32768,   -61,  -149,   -38,
-   219,-32768,  -195,-32768,-32768,    58,-32768,-32768,-32768,-32768,
--32768,-32768,    69,    79,  -163,-32768,-32768,-32768,   126,  -113,
-   -79,-32768,     2,-32768,   189,    -7
+-32768,   428,   309,-32768,-32768,   419,-32768,-32768,   410,-32768,
+-32768,   383,-32768,-32768,-32768,   366,-32768,   330,-32768,-32768,
+   332,-32768,   377,-32768,-32768,   160,-32768,-32768,   287,-32768,
+   121,   246,-32768,   138,-32768,   140,-32768,   146,-32768,   217,
+-32768,-32768,-32768,-32768,    56,  -179,   -65,  -209,   -54,-32768,
+   234,  -183,  -112,-32768,   -55,-32768,  -243,-32768,   -51,  -119,
+-32768,    74,-32768,-32768,-32768,  -147,-32768,-32768,  -113,  -157,
+     6,   237,-32768,  -133,-32768,-32768,    72,-32768,-32768,-32768,
+-32768,-32768,-32768,    86,    95,  -155,-32768,-32768,-32768,   139,
+  -126,   -79,-32768,    15,-32768,   207,    -7
 };
 
 
-#define	YYLAST		640
+#define	YYLAST		639
 
 
 static const short yytable[] = {    15,
-   150,     5,   118,    10,     5,    15,   117,   196,   237,   197,
-   218,   101,   101,   245,    82,    10,    10,   394,   178,     1,
-     2,   114,    83,    84,   189,    67,   161,   162,    10,    65,
-    10,    11,    72,    85,   112,    86,    79,    87,    64,    10,
-   165,    71,     1,     2,    10,    78,    10,    88,    65,   234,
-   191,    89,    10,   170,   171,    90,   189,    64,    91,    10,
-    11,    10,   170,   171,   102,   102,    79,    63,   249,    92,
-   137,   346,   300,   301,    93,    78,    94,   327,    95,   156,
-   190,   138,   191,   157,   264,   235,    63,    96,    97,   359,
-   388,   205,   337,    10,   170,   171,   115,   113,  -251,   128,
-   129,    72,    98,     1,     2,    79,   120,   368,   236,   242,
-    71,    16,   155,   134,    78,    99,    68,   178,   398,   153,
-   178,   154,   150,   115,   180,   270,    28,    12,   218,   271,
-   206,   245,   166,   294,    30,   247,   299,   165,   363,   110,
-   242,   272,    31,   189,   389,   326,   260,   353,   390,   261,
-   203,   204,   276,   108,   109,   260,    17,   128,   129,   167,
-   168,   169,    10,   170,   171,     1,     2,   195,     7,   191,
-   306,   210,   205,    19,    10,   170,   171,   311,    29,   246,
-    10,   232,   253,     1,     2,   233,   307,   253,   394,   347,
-   265,    32,   269,   161,   162,   316,    33,   161,   162,   172,
-    10,   170,   171,     1,     2,    34,   264,   360,   375,   397,
-   376,   206,   207,   234,   275,    36,   304,   173,    73,   397,
-   305,    37,   293,   180,   386,   335,   180,   208,   381,   161,
-   162,    66,   351,   302,   355,    20,    80,   150,   357,   150,
-   174,   153,   107,    21,   332,   333,   209,   334,   315,   235,
-   309,   315,   210,   205,   310,    10,   170,   171,   175,    10,
-   120,   211,     1,     2,    22,   317,    23,   319,   212,   310,
-   213,   320,   214,   124,   322,    24,   121,   205,   323,    10,
-   170,   171,   371,   115,   379,  -231,   372,   122,   380,  -231,
-    83,    84,   206,   207,   125,   348,   123,   246,   279,   280,
-   281,   282,   253,     1,     2,   161,   162,   130,   208,   132,
-   313,   131,   265,   348,   136,   269,   206,   158,   159,   160,
-   366,   279,   280,   281,   282,    10,   186,   209,     1,     2,
-   370,   336,  -252,   210,   187,   188,   198,   200,   201,    10,
-    38,   228,   211,   230,   231,   241,   248,   257,   256,   259,
-   277,   213,   115,   214,   274,    39,   153,   210,   153,    40,
-   370,   278,   285,   287,   289,    41,    42,    43,   291,   295,
-   303,    44,   366,   308,   321,   393,    45,   312,   324,   325,
-   328,    46,   329,    47,   341,   342,   338,   343,   354,   330,
-   350,    48,   356,   373,   367,   377,   401,   362,   402,   374,
-    49,   378,    50,     6,    18,   139,   140,    51,   383,    52,
-    53,    54,   141,    35,    81,   111,    85,    38,    86,   133,
-    87,   142,   135,   361,   105,   331,   202,   181,   352,   349,
-    88,   258,   345,   290,    89,   399,   298,   387,    90,   288,
-   384,    91,    41,    42,    43,   358,   382,   318,     0,     0,
-   143,     0,    92,    45,     0,     0,     0,    93,    46,    94,
-    47,    95,     0,     0,     0,     0,     0,     0,    48,     0,
-    96,    97,   144,   145,     0,     0,     0,    49,     0,    50,
-     0,   146,   139,   140,    51,    98,    52,    53,    54,   141,
-     0,     0,     0,    85,    38,    86,     0,    87,   142,     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,   143,     0,    92,
-    45,     0,     0,     0,    93,    46,    94,    47,    95,     0,
-     0,     0,    83,    84,     0,    48,     0,    96,    97,   144,
-   145,     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
+   154,   200,   120,   201,   241,    15,   222,   182,    10,   101,
+   101,   249,   102,   102,     5,   399,   119,     5,    10,    82,
+   169,     1,     2,   113,   165,   166,    10,    83,    84,    65,
+   116,   276,    72,   193,    10,    11,    79,   393,    85,    10,
+    86,    10,    87,   277,     1,     2,    10,   130,    65,    20,
+    67,    64,    88,     7,    71,    10,    89,    21,    78,   195,
+    90,    10,    11,    91,   351,    19,    79,    10,   174,   175,
+    64,    10,   174,   175,    92,   269,   193,   253,    22,    93,
+    23,    94,   364,    95,   305,   306,   114,    28,    78,    24,
+   160,   394,    96,    97,   161,   395,    16,   165,   166,   238,
+   194,    72,   195,    29,   281,   117,    79,    98,   182,   130,
+    63,   182,   373,   131,   159,    34,   403,   238,   111,   169,
+    99,   117,   240,    71,   154,   222,   184,   137,    78,    63,
+   249,    12,    30,   246,   157,   239,   158,   251,   312,   275,
+   368,    68,    10,    32,   332,     1,     2,   170,   321,   246,
+   380,   141,   381,   239,   207,   208,    31,   399,    17,   342,
+   358,   265,   142,    33,   266,   265,   165,   166,  -255,    37,
+   209,   193,    10,   174,   175,   131,   122,    36,   340,   299,
+    73,   352,   304,   250,   311,    66,   258,   117,    80,  -235,
+   107,   258,   316,  -235,   270,   199,   274,   195,   269,   365,
+   284,   285,   286,   287,    10,   110,   402,     1,     2,   210,
+   211,   115,   318,     1,     2,   209,   402,    10,   174,   175,
+   236,   391,   123,   386,   237,   212,   298,   184,   122,   309,
+   184,   280,   209,   310,    10,   174,   175,   307,   124,   360,
+   154,   324,   154,   362,   213,   325,   125,   356,   327,   126,
+   214,   376,   328,   320,   210,   377,   320,   384,   157,   215,
+   209,   385,    10,   174,   175,   127,   216,   132,   217,   331,
+   218,   210,   211,   171,   172,   173,    10,   174,   175,     1,
+     2,    10,   174,   175,     1,     2,   133,   212,     1,     2,
+   165,   166,   134,   337,   338,   214,   339,   108,   109,   210,
+   353,   140,   250,   165,   166,   136,   213,   258,   284,   285,
+   286,   287,   214,   176,   341,    83,    84,   270,   353,   139,
+   274,   215,   162,   163,   164,   371,  -256,   190,   191,   192,
+   217,   177,   218,   202,   204,   375,    10,    83,    84,   205,
+   214,    10,   235,   232,     1,     2,   234,   245,    85,   252,
+    86,   261,    87,   262,   178,   264,    38,   279,   117,   283,
+   296,   282,    88,   290,   292,   375,    89,   294,   308,   300,
+    90,    39,   179,    91,   157,    40,   157,   371,   313,   315,
+   398,    41,    42,    43,    92,   314,   317,    44,   326,    93,
+   322,    94,    45,    95,   329,   330,   334,    46,   343,    47,
+   333,   346,    96,    97,   335,   347,   348,    48,   355,   359,
+   361,   367,   372,   378,   388,   379,    49,    98,    50,   382,
+   383,   143,   144,    51,   406,    52,    53,    54,   145,   407,
+     6,    18,    85,    38,    86,    35,    87,   146,    81,   112,
+   135,   105,   336,   138,   263,   185,    88,   206,   366,   354,
+    89,   350,   357,   303,    90,   404,   392,    91,    41,    42,
+    43,   293,   389,   363,     0,   295,   147,   387,    92,    45,
+   323,     0,     0,    93,    46,    94,    47,    95,     0,     0,
+     0,     0,     0,     0,    48,     0,    96,    97,   148,   149,
+     0,     0,     0,    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,     1,     2,
+     0,    48,     0,    96,    97,   148,   149,     0,     0,    85,
+    49,    86,    50,    87,     0,     0,     0,    51,    98,    52,
+    53,    54,     0,    88,     0,     0,     0,    89,     0,     0,
+     0,    90,     0,     0,    91,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    92,     0,     0,     0,     0,
+    93,     0,    94,     0,    95,     0,     0,     0,     0,     0,
+     0,     0,     0,    96,    97,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    98
 };
 
 static const short yycheck[] = {     7,
-   118,     0,    82,     8,     3,    13,    82,   145,   184,   147,
-   160,    64,    65,   187,     3,     8,     8,     4,   132,    11,
-    12,    28,    11,    12,    80,    17,    13,    14,     8,    37,
-     8,     9,    40,    22,    46,    24,    44,    26,    37,     8,
-   131,    40,    11,    12,     8,    44,     8,    36,    56,    33,
-   106,    40,     8,     9,    10,    44,    80,    56,    47,     8,
-     9,     8,     9,    10,    64,    65,    74,    37,    30,    58,
-    41,   303,   236,   237,    63,    74,    65,   273,    67,   105,
-   104,    52,   106,   109,   198,    69,    56,    76,    77,   321,
-    15,     6,   288,     8,     9,    10,   103,   109,   104,    99,
-    99,   109,    91,    11,    12,   113,   112,   112,   184,   102,
-   109,    34,   120,   112,   113,   104,   108,   231,   105,   118,
-   234,   120,   240,   103,   132,   201,     9,   105,   278,   101,
-    45,   305,   131,   231,    84,   188,   234,   228,   102,   108,
-   102,   113,    84,    80,    69,    60,   102,   311,    73,   105,
-   158,   159,   214,   108,   109,   102,   105,   157,   157,     5,
-     6,     7,     8,     9,    10,    11,    12,   104,   104,   106,
-   246,    86,     6,   106,     8,     9,    10,   253,    57,   187,
-     8,   105,   190,    11,    12,   109,   248,   195,     4,   303,
-   198,    53,   200,    13,    14,   257,    84,    13,    14,    45,
-     8,     9,    10,    11,    12,     3,   320,   321,   355,   385,
-   357,    45,    46,    33,   213,   107,   105,    63,    46,   395,
-   109,    21,   230,   231,   374,   287,   234,    61,   366,    13,
-    14,    12,   308,   241,   314,    12,    39,   355,   318,   357,
-    86,   240,   108,    20,   283,   284,    80,   286,   256,    69,
-   105,   259,    86,     6,   109,     8,     9,    10,   104,     8,
-   112,    95,    11,    12,    41,   105,    43,   105,   102,   109,
-   104,   109,   106,    51,   105,    52,    81,     6,   109,     8,
-     9,    10,   105,   103,   105,   105,   109,    81,   109,   109,
-    11,    12,    45,    46,    81,   303,    71,   305,    97,    98,
-    99,   100,   310,    11,    12,    13,    14,     3,    61,     3,
-   109,   112,   320,   321,   104,   323,    45,   110,   110,   104,
-   328,    97,    98,    99,   100,     8,    35,    80,    11,    12,
-   338,    60,   104,    86,   104,    68,   104,   104,     3,     8,
-    23,   112,    95,   112,   110,    25,   106,   106,    68,    68,
-   105,   104,   103,   106,    30,    38,   355,    86,   357,    42,
-   368,   109,    96,   106,   104,    48,    49,    50,     4,    95,
-   111,    54,   380,    68,   106,   383,    59,   107,   113,   101,
-   104,    64,   105,    66,     4,    82,   114,    88,   102,   107,
-   107,    74,   107,   104,   107,   107,     0,   113,     0,   109,
-    83,   107,    85,     3,    13,    11,    12,    90,   112,    92,
-    93,    94,    18,    26,    56,    74,    22,    23,    24,   109,
-    26,    27,   113,   323,    65,   278,   157,   134,   310,   305,
-    36,   195,   301,   228,    40,   395,   233,   380,    44,   221,
-   372,    47,    48,    49,    50,   320,   368,   259,    -1,    -1,
-    56,    -1,    58,    59,    -1,    -1,    -1,    63,    64,    65,
-    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,    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
+   120,   149,    82,   151,   188,    13,   164,   134,     8,    64,
+    65,   191,    64,    65,     0,     4,    82,     3,     8,     3,
+   133,    11,    12,    46,    13,    14,     8,    11,    12,    37,
+    28,   101,    40,    80,     8,     9,    44,    15,    22,     8,
+    24,     8,    26,   113,    11,    12,     8,    99,    56,    12,
+    17,    37,    36,   104,    40,     8,    40,    20,    44,   106,
+    44,     8,     9,    47,   308,   106,    74,     8,     9,    10,
+    56,     8,     9,    10,    58,   202,    80,    30,    41,    63,
+    43,    65,   326,    67,   240,   241,   109,     9,    74,    52,
+   105,    69,    76,    77,   109,    73,    34,    13,    14,    33,
+   104,   109,   106,    57,   218,   103,   114,    91,   235,   161,
+    37,   238,   112,    99,   122,     3,   105,    33,   108,   232,
+   104,   103,   188,   109,   244,   283,   134,   113,   114,    56,
+   310,   105,    84,   102,   120,    69,   122,   192,   252,   205,
+   102,   108,     8,    53,   278,    11,    12,   133,   262,   102,
+   360,    41,   362,    69,   162,   163,    84,     4,   105,   293,
+   316,   102,    52,    84,   105,   102,    13,    14,   104,    21,
+     6,    80,     8,     9,    10,   161,   112,   107,   292,   235,
+    46,   308,   238,   191,   250,    12,   194,   103,    39,   105,
+   108,   199,   258,   109,   202,   104,   204,   106,   325,   326,
+    97,    98,    99,   100,     8,   104,   390,    11,    12,    45,
+    46,   104,   109,    11,    12,     6,   400,     8,     9,    10,
+   105,   379,    81,   371,   109,    61,   234,   235,   112,   105,
+   238,   217,     6,   109,     8,     9,    10,   245,    81,   319,
+   360,   105,   362,   323,    80,   109,    71,   313,   105,    51,
+    86,   105,   109,   261,    45,   109,   264,   105,   244,    95,
+     6,   109,     8,     9,    10,    81,   102,     3,   104,    60,
+   106,    45,    46,     5,     6,     7,     8,     9,    10,    11,
+    12,     8,     9,    10,    11,    12,   112,    61,    11,    12,
+    13,    14,     3,   288,   289,    86,   291,   108,   109,    45,
+   308,   104,   310,    13,    14,   105,    80,   315,    97,    98,
+    99,   100,    86,    45,    60,    11,    12,   325,   326,   105,
+   328,    95,   110,   110,   104,   333,   104,    35,   104,    68,
+   104,    63,   106,   104,   104,   343,     8,    11,    12,     3,
+    86,     8,   110,   112,    11,    12,   112,    25,    22,   106,
+    24,    68,    26,   106,    86,    68,    23,    30,   103,   109,
+     4,   105,    36,    96,   106,   373,    40,   104,   111,    95,
+    44,    38,   104,    47,   360,    42,   362,   385,    68,   109,
+   388,    48,    49,    50,    58,   105,   107,    54,   106,    63,
+   105,    65,    59,    67,   113,   101,   105,    64,   114,    66,
+   104,     4,    76,    77,   107,    82,    88,    74,   107,   102,
+   107,   113,   107,   104,   112,   109,    83,    91,    85,   107,
+   107,    11,    12,    90,     0,    92,    93,    94,    18,     0,
+     3,    13,    22,    23,    24,    26,    26,    27,    56,    74,
+   109,    65,   283,   114,   199,   137,    36,   161,   328,   310,
+    40,   306,   315,   237,    44,   400,   385,    47,    48,    49,
+    50,   225,   377,   325,    -1,   232,    56,   373,    58,    59,
+   264,    -1,    -1,    63,    64,    65,    66,    67,    -1,    -1,
+    -1,    -1,    -1,    -1,    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,    -1,    -1,    90,    91,    92,
+    93,    94,    -1,    36,    -1,    -1,    -1,    40,    -1,    -1,
+    -1,    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    -1,    -1,
+    63,    -1,    65,    -1,    67,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -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"
@@ -1290,13 +1291,13 @@
   switch (yyn) {
 
 case 1:
-#line 301 "asn1p_y.y"
+#line 302 "asn1p_y.y"
 {
 		*(void **)param = yyvsp[0].a_grammar;
 	;
     break;}
 case 2:
-#line 307 "asn1p_y.y"
+#line 308 "asn1p_y.y"
 {
 		yyval.a_grammar = asn1p_new();
 		checkmem(yyval.a_grammar);
@@ -1304,14 +1305,14 @@
 	;
     break;}
 case 3:
-#line 312 "asn1p_y.y"
+#line 313 "asn1p_y.y"
 {
 		yyval.a_grammar = yyvsp[-1].a_grammar;
 		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
 	;
     break;}
 case 4:
-#line 333 "asn1p_y.y"
+#line 334 "asn1p_y.y"
 {
 
 		if(yyvsp[-1].a_module) {
@@ -1328,27 +1329,27 @@
 	;
     break;}
 case 5:
-#line 354 "asn1p_y.y"
+#line 355 "asn1p_y.y"
 { yyval.a_oid = 0; ;
     break;}
 case 6:
-#line 355 "asn1p_y.y"
+#line 356 "asn1p_y.y"
 { yyval.a_oid = yyvsp[0].a_oid; ;
     break;}
 case 7:
-#line 359 "asn1p_y.y"
+#line 360 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 	;
     break;}
 case 8:
-#line 362 "asn1p_y.y"
+#line 363 "asn1p_y.y"
 {
 		yyval.a_oid = 0;
 	;
     break;}
 case 9:
-#line 368 "asn1p_y.y"
+#line 369 "asn1p_y.y"
 {
 		yyval.a_oid = asn1p_oid_new();
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1357,7 +1358,7 @@
 	;
     break;}
 case 10:
-#line 374 "asn1p_y.y"
+#line 375 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1366,74 +1367,74 @@
 	;
     break;}
 case 11:
-#line 383 "asn1p_y.y"
+#line 384 "asn1p_y.y"
 {					/* iso */
 		yyval.a_oid_arc.name = yyvsp[0].tv_str;
 		yyval.a_oid_arc.number = -1;
 	;
     break;}
 case 12:
-#line 387 "asn1p_y.y"
+#line 388 "asn1p_y.y"
 {		/* iso(1) */
 		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
 		yyval.a_oid_arc.number = yyvsp[-1].a_int;
 	;
     break;}
 case 13:
-#line 391 "asn1p_y.y"
+#line 392 "asn1p_y.y"
 {					/* 1 */
 		yyval.a_oid_arc.name = 0;
 		yyval.a_oid_arc.number = yyvsp[0].a_int;
 	;
     break;}
 case 14:
-#line 401 "asn1p_y.y"
+#line 402 "asn1p_y.y"
 { yyval.a_module_flags = MSF_NOFLAGS; ;
     break;}
 case 15:
-#line 402 "asn1p_y.y"
+#line 403 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 16:
-#line 411 "asn1p_y.y"
+#line 412 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 17:
-#line 414 "asn1p_y.y"
+#line 415 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
 	;
     break;}
 case 18:
-#line 423 "asn1p_y.y"
+#line 424 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
 	;
     break;}
 case 19:
-#line 426 "asn1p_y.y"
+#line 427 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
 	;
     break;}
 case 20:
-#line 429 "asn1p_y.y"
+#line 430 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
 	;
     break;}
 case 21:
-#line 432 "asn1p_y.y"
+#line 433 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
 	;
     break;}
 case 22:
-#line 436 "asn1p_y.y"
+#line 437 "asn1p_y.y"
 {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -1451,23 +1452,23 @@
 	;
     break;}
 case 23:
-#line 457 "asn1p_y.y"
+#line 458 "asn1p_y.y"
 { yyval.a_module = 0; ;
     break;}
 case 24:
-#line 458 "asn1p_y.y"
+#line 459 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 25:
-#line 467 "asn1p_y.y"
+#line 468 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 26:
-#line 470 "asn1p_y.y"
+#line 471 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 
@@ -1497,13 +1498,13 @@
 	;
     break;}
 case 27:
-#line 503 "asn1p_y.y"
+#line 504 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 28:
-#line 506 "asn1p_y.y"
+#line 507 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1515,7 +1516,7 @@
 	;
     break;}
 case 29:
-#line 515 "asn1p_y.y"
+#line 516 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1525,7 +1526,7 @@
 	;
     break;}
 case 30:
-#line 522 "asn1p_y.y"
+#line 523 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1535,7 +1536,7 @@
 	;
     break;}
 case 31:
-#line 535 "asn1p_y.y"
+#line 536 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1545,11 +1546,11 @@
 	;
     break;}
 case 32:
-#line 543 "asn1p_y.y"
+#line 544 "asn1p_y.y"
 { asn1p_lexer_hack_push_encoding_control(); ;
     break;}
 case 33:
-#line 544 "asn1p_y.y"
+#line 545 "asn1p_y.y"
 {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -1560,7 +1561,7 @@
 	;
     break;}
 case 34:
-#line 556 "asn1p_y.y"
+#line 557 "asn1p_y.y"
 {
 		return yyerror(
 			"Attempt to redefine a standard basic type, "
@@ -1569,19 +1570,19 @@
 	;
     break;}
 case 35:
-#line 570 "asn1p_y.y"
+#line 571 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 	;
     break;}
 case 36:
-#line 576 "asn1p_y.y"
+#line 577 "asn1p_y.y"
 {
 		return yyerror("Empty IMPORTS list");
 	;
     break;}
 case 37:
-#line 582 "asn1p_y.y"
+#line 583 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1589,14 +1590,14 @@
 	;
     break;}
 case 38:
-#line 587 "asn1p_y.y"
+#line 588 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
 	;
     break;}
 case 39:
-#line 594 "asn1p_y.y"
+#line 595 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-3].a_xports;
 		yyval.a_xports->from = yyvsp[-1].tv_str;
@@ -1605,7 +1606,7 @@
 	;
     break;}
 case 40:
-#line 603 "asn1p_y.y"
+#line 604 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
@@ -1613,14 +1614,14 @@
 	;
     break;}
 case 41:
-#line 608 "asn1p_y.y"
+#line 609 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 42:
-#line 615 "asn1p_y.y"
+#line 616 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1629,7 +1630,16 @@
 	;
     break;}
 case 43:
-#line 621 "asn1p_y.y"
+#line 622 "asn1p_y.y"
+{		/* Completely equivalent to above */
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
+		yyval.a_expr->expr_type = A1TC_REFERENCE;
+	;
+    break;}
+case 44:
+#line 628 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1637,52 +1647,43 @@
 		yyval.a_expr->expr_type = A1TC_REFERENCE;
 	;
     break;}
-case 44:
-#line 630 "asn1p_y.y"
+case 45:
+#line 637 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-1].a_xports;
 	;
     break;}
-case 45:
-#line 633 "asn1p_y.y"
+case 46:
+#line 640 "asn1p_y.y"
 {
 		yyval.a_xports = 0;
 	;
     break;}
-case 46:
-#line 636 "asn1p_y.y"
+case 47:
+#line 643 "asn1p_y.y"
 {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
 	;
     break;}
-case 47:
-#line 644 "asn1p_y.y"
+case 48:
+#line 651 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		assert(yyval.a_xports);
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
-case 48:
-#line 649 "asn1p_y.y"
+case 49:
+#line 656 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
-case 49:
-#line 656 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[0].tv_str;
-		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
-	;
-    break;}
 case 50:
-#line 662 "asn1p_y.y"
+#line 663 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1691,7 +1692,25 @@
 	;
     break;}
 case 51:
-#line 672 "asn1p_y.y"
+#line 669 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
+		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
+	;
+    break;}
+case 52:
+#line 675 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = yyvsp[0].tv_str;
+		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
+	;
+    break;}
+case 53:
+#line 685 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-4].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1700,8 +1719,8 @@
 		// take care of optValueSetBody 
 	;
     break;}
-case 52:
-#line 682 "asn1p_y.y"
+case 54:
+#line 695 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1710,8 +1729,8 @@
 		yyval.a_expr->meta_type = AMT_TYPEREF;
 	;
     break;}
-case 53:
-#line 689 "asn1p_y.y"
+case 55:
+#line 702 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1719,19 +1738,9 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 54:
-#line 698 "asn1p_y.y"
-{ ;
-    break;}
-case 55:
-#line 699 "asn1p_y.y"
-{
-	;
-    break;}
 case 56:
-#line 710 "asn1p_y.y"
-{
-	;
+#line 711 "asn1p_y.y"
+{ ;
     break;}
 case 57:
 #line 712 "asn1p_y.y"
@@ -1739,17 +1748,27 @@
 	;
     break;}
 case 58:
-#line 717 "asn1p_y.y"
+#line 723 "asn1p_y.y"
 {
 	;
     break;}
 case 59:
-#line 719 "asn1p_y.y"
+#line 725 "asn1p_y.y"
 {
 	;
     break;}
 case 60:
-#line 735 "asn1p_y.y"
+#line 730 "asn1p_y.y"
+{
+	;
+    break;}
+case 61:
+#line 732 "asn1p_y.y"
+{
+	;
+    break;}
+case 62:
+#line 748 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1759,8 +1778,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 61:
-#line 743 "asn1p_y.y"
+case 63:
+#line 756 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1768,8 +1787,8 @@
 		assert(yyval.a_expr->meta_type);
 	;
     break;}
-case 62:
-#line 749 "asn1p_y.y"
+case 64:
+#line 762 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1777,8 +1796,8 @@
 		assert(yyval.a_expr->meta_type == AMT_OBJECT);
 	;
     break;}
-case 63:
-#line 765 "asn1p_y.y"
+case 65:
+#line 778 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1787,8 +1806,8 @@
 		yyval.a_expr->meta_type = AMT_PARAMTYPE;
 	;
     break;}
-case 64:
-#line 775 "asn1p_y.y"
+case 66:
+#line 788 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -1799,8 +1818,8 @@
 		if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
 	;
     break;}
-case 65:
-#line 784 "asn1p_y.y"
+case 67:
+#line 797 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = yyvsp[-2].a_plist;
@@ -1810,15 +1829,15 @@
 		if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
 	;
     break;}
-case 66:
-#line 795 "asn1p_y.y"
+case 68:
+#line 808 "asn1p_y.y"
 {
 		yyval.a_parg.governor = NULL;
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	;
     break;}
-case 67:
-#line 799 "asn1p_y.y"
+case 69:
+#line 812 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1827,8 +1846,8 @@
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	;
     break;}
-case 68:
-#line 806 "asn1p_y.y"
+case 70:
+#line 819 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1838,29 +1857,29 @@
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	;
     break;}
-case 69:
-#line 817 "asn1p_y.y"
+case 71:
+#line 830 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 70:
-#line 822 "asn1p_y.y"
+case 72:
+#line 835 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 71:
-#line 829 "asn1p_y.y"
+case 73:
+#line 842 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
-case 72:
-#line 832 "asn1p_y.y"
+case 74:
+#line 845 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1869,23 +1888,31 @@
 		yyval.a_expr->meta_type = AMT_VALUE;
 	;
     break;}
-case 73:
-#line 845 "asn1p_y.y"
+case 75:
+#line 858 "asn1p_y.y"
+{ yyval.a_expr = asn1p_expr_new(yylineno); ;
+    break;}
+case 76:
+#line 859 "asn1p_y.y"
+{ yyval.a_expr = yyvsp[0].a_expr; ;
+    break;}
+case 77:
+#line 862 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 74:
-#line 850 "asn1p_y.y"
+case 78:
+#line 867 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 75:
-#line 857 "asn1p_y.y"
+case 79:
+#line 874 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1893,8 +1920,8 @@
 		yyval.a_expr->marker = yyvsp[0].a_marker;
 	;
     break;}
-case 76:
-#line 863 "asn1p_y.y"
+case 80:
+#line 880 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1903,43 +1930,43 @@
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 77:
-#line 870 "asn1p_y.y"
+case 81:
+#line 887 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
-case 78:
-#line 876 "asn1p_y.y"
+case 82:
+#line 893 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 79:
-#line 881 "asn1p_y.y"
+case 83:
+#line 898 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 80:
-#line 888 "asn1p_y.y"
+case 84:
+#line 905 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
 		yyval.a_expr->Identifier = yyvsp[-1].tv_str;
 	;
     break;}
-case 81:
-#line 893 "asn1p_y.y"
+case 85:
+#line 910 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
-case 82:
-#line 899 "asn1p_y.y"
+case 86:
+#line 916 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
@@ -1948,16 +1975,16 @@
 		assert(yyval.a_expr->meta_type == AMT_OBJECT);
 	;
     break;}
-case 83:
-#line 909 "asn1p_y.y"
+case 87:
+#line 926 "asn1p_y.y"
 { yyval.a_int = 0; ;
     break;}
-case 84:
-#line 910 "asn1p_y.y"
+case 88:
+#line 927 "asn1p_y.y"
 { yyval.a_int = 1; ;
     break;}
-case 85:
-#line 914 "asn1p_y.y"
+case 89:
+#line 931 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1966,15 +1993,15 @@
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 86:
-#line 921 "asn1p_y.y"
+case 90:
+#line 938 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 87:
-#line 928 "asn1p_y.y"
+case 91:
+#line 945 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1984,8 +2011,8 @@
 		yyval.a_expr->marker = yyvsp[0].a_marker;
 	;
     break;}
-case 88:
-#line 936 "asn1p_y.y"
+case 92:
+#line 953 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
@@ -1993,8 +2020,8 @@
 		yyval.a_expr->unique = yyvsp[0].a_int;
 	;
     break;}
-case 89:
-#line 942 "asn1p_y.y"
+case 93:
+#line 959 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2011,48 +2038,48 @@
 		yyval.a_expr->unique = yyvsp[0].a_int;
 	;
     break;}
-case 90:
-#line 960 "asn1p_y.y"
+case 94:
+#line 977 "asn1p_y.y"
 { yyval.a_wsynt = 0; ;
     break;}
-case 91:
-#line 961 "asn1p_y.y"
+case 95:
+#line 978 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[0].a_wsynt;
 	;
     break;}
-case 92:
-#line 968 "asn1p_y.y"
+case 96:
+#line 985 "asn1p_y.y"
 { asn1p_lexer_hack_enable_with_syntax(); ;
     break;}
-case 93:
-#line 970 "asn1p_y.y"
+case 97:
+#line 987 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 	;
     break;}
-case 94:
-#line 976 "asn1p_y.y"
+case 98:
+#line 993 "asn1p_y.y"
 {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
-case 95:
-#line 980 "asn1p_y.y"
+case 99:
+#line 997 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
-case 96:
-#line 987 "asn1p_y.y"
+case 100:
+#line 1004 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 	;
     break;}
-case 97:
-#line 990 "asn1p_y.y"
+case 101:
+#line 1007 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2063,43 +2090,43 @@
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0);
 	;
     break;}
-case 98:
-#line 1002 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = strdup("...");
-		checkmem(yyval.a_expr->Identifier);
-		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
-		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 99:
-#line 1010 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = strdup("...");
-		checkmem(yyval.a_expr->Identifier);
-		yyval.a_expr->value = yyvsp[0].a_value;
-		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
-		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 100:
+case 102:
 #line 1019 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = strdup("...");
+		checkmem(yyval.a_expr->Identifier);
+		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
+		yyval.a_expr->meta_type = AMT_TYPE;
+	;
+    break;}
+case 103:
+#line 1027 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = strdup("...");
+		checkmem(yyval.a_expr->Identifier);
+		yyval.a_expr->value = yyvsp[0].a_value;
+		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
+		yyval.a_expr->meta_type = AMT_TYPE;
+	;
+    break;}
+case 104:
+#line 1036 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = strdup("...");
 		yyval.a_expr->value = yyvsp[0].a_value;
 		checkmem(yyval.a_expr->Identifier);
 		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 101:
-#line 1031 "asn1p_y.y"
+case 105:
+#line 1048 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2120,14 +2147,14 @@
 		}
 	;
     break;}
-case 102:
-#line 1053 "asn1p_y.y"
+case 106:
+#line 1070 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
-case 103:
-#line 1056 "asn1p_y.y"
+case 107:
+#line 1073 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2135,8 +2162,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 104:
-#line 1062 "asn1p_y.y"
+case 108:
+#line 1079 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2144,8 +2171,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 105:
-#line 1068 "asn1p_y.y"
+case 109:
+#line 1085 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2153,8 +2180,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 106:
-#line 1074 "asn1p_y.y"
+case 110:
+#line 1091 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2162,8 +2189,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 107:
-#line 1080 "asn1p_y.y"
+case 111:
+#line 1097 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2175,8 +2202,8 @@
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 108:
-#line 1090 "asn1p_y.y"
+case 112:
+#line 1107 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2188,8 +2215,8 @@
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 109:
-#line 1100 "asn1p_y.y"
+case 113:
+#line 1117 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2197,8 +2224,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 110:
-#line 1106 "asn1p_y.y"
+case 114:
+#line 1123 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2211,8 +2238,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 111:
-#line 1120 "asn1p_y.y"
+case 115:
+#line 1137 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = yyvsp[-1].a_expr;
@@ -2228,8 +2255,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 112:
-#line 1144 "asn1p_y.y"
+case 116:
+#line 1161 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2238,8 +2265,8 @@
 		yyval.a_expr->meta_type = AMT_TYPEREF;
 	;
     break;}
-case 113:
-#line 1151 "asn1p_y.y"
+case 117:
+#line 1168 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2248,8 +2275,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 114:
-#line 1166 "asn1p_y.y"
+case 118:
+#line 1183 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2259,8 +2286,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 115:
-#line 1174 "asn1p_y.y"
+case 119:
+#line 1191 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2272,8 +2299,8 @@
 		free(yyvsp[-2].tv_str);
 	;
     break;}
-case 116:
-#line 1184 "asn1p_y.y"
+case 120:
+#line 1201 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2285,8 +2312,8 @@
 		free(yyvsp[-2].tv_str);
 	;
     break;}
-case 117:
-#line 1194 "asn1p_y.y"
+case 121:
+#line 1211 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2298,8 +2325,8 @@
 		free(yyvsp[-2].tv_str);
 	;
     break;}
-case 118:
-#line 1204 "asn1p_y.y"
+case 122:
+#line 1221 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2309,8 +2336,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 119:
-#line 1212 "asn1p_y.y"
+case 123:
+#line 1229 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -2331,8 +2358,8 @@
 		}
 	;
     break;}
-case 120:
-#line 1234 "asn1p_y.y"
+case 124:
+#line 1251 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2342,8 +2369,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 121:
-#line 1242 "asn1p_y.y"
+case 125:
+#line 1259 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -2352,22 +2379,22 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 124:
-#line 1256 "asn1p_y.y"
+case 128:
+#line 1273 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
-case 125:
-#line 1261 "asn1p_y.y"
+case 129:
+#line 1278 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
-case 126:
-#line 1274 "asn1p_y.y"
+case 130:
+#line 1291 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -2376,8 +2403,8 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 127:
-#line 1284 "asn1p_y.y"
+case 131:
+#line 1301 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2386,77 +2413,77 @@
 		yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
 	;
     break;}
-case 128:
-#line 1291 "asn1p_y.y"
+case 132:
+#line 1308 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
-case 129:
-#line 1291 "asn1p_y.y"
+case 133:
+#line 1308 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_UNPARSED;
 	;
     break;}
-case 130:
-#line 1296 "asn1p_y.y"
+case 134:
+#line 1313 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_NULL;
 	;
     break;}
-case 131:
-#line 1301 "asn1p_y.y"
+case 135:
+#line 1318 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_FALSE;
 	;
     break;}
-case 132:
-#line 1306 "asn1p_y.y"
+case 136:
+#line 1323 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TRUE;
 	;
     break;}
-case 133:
-#line 1311 "asn1p_y.y"
+case 137:
+#line 1328 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
 	;
     break;}
-case 134:
-#line 1315 "asn1p_y.y"
+case 138:
+#line 1332 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
 	;
     break;}
-case 135:
-#line 1319 "asn1p_y.y"
+case 139:
+#line 1336 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
 	;
     break;}
-case 136:
-#line 1323 "asn1p_y.y"
+case 140:
+#line 1340 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 137:
-#line 1326 "asn1p_y.y"
+case 141:
+#line 1343 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 138:
-#line 1332 "asn1p_y.y"
+case 142:
+#line 1349 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2469,8 +2496,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 139:
-#line 1343 "asn1p_y.y"
+case 143:
+#line 1360 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2486,8 +2513,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 140:
-#line 1360 "asn1p_y.y"
+case 144:
+#line 1377 "asn1p_y.y"
 {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 2;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2499,8 +2526,8 @@
 		free(yyvsp[0].tv_opaque.buf);
 	;
     break;}
-case 141:
-#line 1370 "asn1p_y.y"
+case 145:
+#line 1387 "asn1p_y.y"
 {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -2514,68 +2541,68 @@
 		yyval.tv_opaque.len = newsize;
 	;
     break;}
-case 142:
-#line 1385 "asn1p_y.y"
+case 146:
+#line 1402 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BOOLEAN; ;
     break;}
-case 143:
-#line 1386 "asn1p_y.y"
+case 147:
+#line 1403 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_NULL; ;
     break;}
-case 144:
-#line 1387 "asn1p_y.y"
+case 148:
+#line 1404 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_REAL; ;
     break;}
-case 145:
-#line 1388 "asn1p_y.y"
+case 149:
+#line 1405 "asn1p_y.y"
 { yyval.a_type = yyvsp[0].a_type; ;
     break;}
-case 146:
-#line 1389 "asn1p_y.y"
+case 150:
+#line 1406 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OCTET_STRING; ;
     break;}
-case 147:
-#line 1390 "asn1p_y.y"
+case 151:
+#line 1407 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
     break;}
-case 148:
-#line 1391 "asn1p_y.y"
+case 152:
+#line 1408 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
     break;}
-case 149:
-#line 1392 "asn1p_y.y"
+case 153:
+#line 1409 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EXTERNAL; ;
     break;}
-case 150:
-#line 1393 "asn1p_y.y"
+case 154:
+#line 1410 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
     break;}
-case 151:
-#line 1394 "asn1p_y.y"
+case 155:
+#line 1411 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
     break;}
-case 152:
-#line 1395 "asn1p_y.y"
+case 156:
+#line 1412 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_UTCTime; ;
     break;}
-case 153:
-#line 1396 "asn1p_y.y"
+case 157:
+#line 1413 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_GeneralizedTime; ;
     break;}
-case 154:
-#line 1403 "asn1p_y.y"
+case 158:
+#line 1420 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_INTEGER; ;
     break;}
-case 155:
-#line 1404 "asn1p_y.y"
+case 159:
+#line 1421 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_ENUMERATED; ;
     break;}
-case 156:
-#line 1405 "asn1p_y.y"
+case 160:
+#line 1422 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BIT_STRING; ;
     break;}
-case 157:
-#line 1409 "asn1p_y.y"
+case 161:
+#line 1426 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2583,8 +2610,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 158:
-#line 1415 "asn1p_y.y"
+case 162:
+#line 1432 "asn1p_y.y"
 {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -2596,92 +2623,92 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 159:
-#line 1428 "asn1p_y.y"
+case 163:
+#line 1445 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_BMPString; ;
     break;}
-case 160:
-#line 1429 "asn1p_y.y"
+case 164:
+#line 1446 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	;
     break;}
-case 161:
-#line 1433 "asn1p_y.y"
+case 165:
+#line 1450 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	;
     break;}
-case 162:
-#line 1437 "asn1p_y.y"
+case 166:
+#line 1454 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_IA5String; ;
     break;}
-case 163:
-#line 1438 "asn1p_y.y"
+case 167:
+#line 1455 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ISO646String; ;
     break;}
-case 164:
-#line 1439 "asn1p_y.y"
+case 168:
+#line 1456 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_NumericString; ;
     break;}
-case 165:
-#line 1440 "asn1p_y.y"
+case 169:
+#line 1457 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_PrintableString; ;
     break;}
-case 166:
-#line 1441 "asn1p_y.y"
+case 170:
+#line 1458 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	;
     break;}
-case 167:
-#line 1445 "asn1p_y.y"
+case 171:
+#line 1462 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_TeletexString; ;
     break;}
-case 168:
-#line 1446 "asn1p_y.y"
+case 172:
+#line 1463 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UniversalString; ;
     break;}
-case 169:
-#line 1447 "asn1p_y.y"
+case 173:
+#line 1464 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UTF8String; ;
     break;}
-case 170:
-#line 1448 "asn1p_y.y"
+case 174:
+#line 1465 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	;
     break;}
-case 171:
-#line 1452 "asn1p_y.y"
+case 175:
+#line 1469 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_VisibleString; ;
     break;}
-case 172:
-#line 1453 "asn1p_y.y"
+case 176:
+#line 1470 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ObjectDescriptor; ;
     break;}
-case 178:
-#line 1465 "asn1p_y.y"
+case 182:
+#line 1482 "asn1p_y.y"
 { yyval.a_constr = 0; ;
     break;}
-case 179:
-#line 1466 "asn1p_y.y"
+case 183:
+#line 1483 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 180:
-#line 1472 "asn1p_y.y"
+case 184:
+#line 1489 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	;
     break;}
-case 181:
-#line 1475 "asn1p_y.y"
+case 185:
+#line 1492 "asn1p_y.y"
 {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -2690,26 +2717,26 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 182:
-#line 1485 "asn1p_y.y"
+case 186:
+#line 1502 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	;
     break;}
-case 183:
-#line 1488 "asn1p_y.y"
+case 187:
+#line 1505 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 184:
-#line 1494 "asn1p_y.y"
+case 188:
+#line 1511 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 185:
-#line 1497 "asn1p_y.y"
+case 189:
+#line 1514 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2717,8 +2744,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 186:
-#line 1503 "asn1p_y.y"
+case 190:
+#line 1520 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2728,32 +2755,32 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
 	;
     break;}
-case 187:
-#line 1514 "asn1p_y.y"
+case 191:
+#line 1531 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 188:
-#line 1517 "asn1p_y.y"
+case 192:
+#line 1534 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 189:
-#line 1520 "asn1p_y.y"
+case 193:
+#line 1537 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 190:
-#line 1523 "asn1p_y.y"
+case 194:
+#line 1540 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 191:
-#line 1529 "asn1p_y.y"
+case 195:
+#line 1546 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2763,8 +2790,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 192:
-#line 1537 "asn1p_y.y"
+case 196:
+#line 1554 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2774,8 +2801,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 193:
-#line 1545 "asn1p_y.y"
+case 197:
+#line 1562 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2783,98 +2810,98 @@
 		yyval.a_constr->value = yyvsp[0].a_value;
 	;
     break;}
-case 194:
-#line 1551 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = yyvsp[-2].a_value;
-		yyval.a_constr->range_stop = yyvsp[0].a_value;
-	;
-    break;}
-case 195:
-#line 1558 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = asn1p_value_fromint(-123);
-		yyval.a_constr->range_stop = yyvsp[0].a_value;
-		yyval.a_constr->range_start->type = ATV_MIN;
-	;
-    break;}
-case 196:
-#line 1566 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = yyvsp[-2].a_value;
-		yyval.a_constr->range_stop = asn1p_value_fromint(321);
-		yyval.a_constr->range_stop->type = ATV_MAX;
-	;
-    break;}
-case 197:
-#line 1574 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = asn1p_value_fromint(-123);
-		yyval.a_constr->range_stop = asn1p_value_fromint(321);
-		yyval.a_constr->range_start->type = ATV_MIN;
-		yyval.a_constr->range_stop->type = ATV_MAX;
-	;
-    break;}
 case 198:
-#line 1583 "asn1p_y.y"
+#line 1568 "asn1p_y.y"
 {
-		yyval.a_constr = yyvsp[0].a_constr;
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = yyvsp[-2].a_value;
+		yyval.a_constr->range_stop = yyvsp[0].a_value;
 	;
     break;}
 case 199:
-#line 1586 "asn1p_y.y"
+#line 1575 "asn1p_y.y"
+{
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = asn1p_value_fromint(-123);
+		yyval.a_constr->range_stop = yyvsp[0].a_value;
+		yyval.a_constr->range_start->type = ATV_MIN;
+	;
+    break;}
+case 200:
+#line 1583 "asn1p_y.y"
+{
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = yyvsp[-2].a_value;
+		yyval.a_constr->range_stop = asn1p_value_fromint(321);
+		yyval.a_constr->range_stop->type = ATV_MAX;
+	;
+    break;}
+case 201:
+#line 1591 "asn1p_y.y"
+{
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = asn1p_value_fromint(-123);
+		yyval.a_constr->range_stop = asn1p_value_fromint(321);
+		yyval.a_constr->range_start->type = ATV_MIN;
+		yyval.a_constr->range_stop->type = ATV_MAX;
+	;
+    break;}
+case 202:
+#line 1600 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 200:
-#line 1592 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_RANGE; ;
-    break;}
-case 201:
-#line 1593 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_RLRANGE; ;
-    break;}
-case 202:
-#line 1594 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_LLRANGE; ;
-    break;}
 case 203:
-#line 1595 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_ULRANGE; ;
+#line 1603 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
     break;}
 case 204:
-#line 1599 "asn1p_y.y"
+#line 1609 "asn1p_y.y"
+{ yyval.a_ctype = ACT_EL_RANGE; ;
+    break;}
+case 205:
+#line 1610 "asn1p_y.y"
+{ yyval.a_ctype = ACT_EL_RLRANGE; ;
+    break;}
+case 206:
+#line 1611 "asn1p_y.y"
+{ yyval.a_ctype = ACT_EL_LLRANGE; ;
+    break;}
+case 207:
+#line 1612 "asn1p_y.y"
+{ yyval.a_ctype = ACT_EL_ULRANGE; ;
+    break;}
+case 208:
+#line 1616 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_SIZE;
 	;
     break;}
-case 205:
-#line 1602 "asn1p_y.y"
+case 209:
+#line 1619 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_FROM;
 	;
     break;}
-case 206:
-#line 1608 "asn1p_y.y"
+case 210:
+#line 1625 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 207:
-#line 1611 "asn1p_y.y"
+case 211:
+#line 1628 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2887,57 +2914,57 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 208:
-#line 1622 "asn1p_y.y"
+case 212:
+#line 1639 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
 	;
     break;}
-case 209:
-#line 1626 "asn1p_y.y"
+case 213:
+#line 1643 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_FALSE;
 	;
     break;}
-case 210:
-#line 1631 "asn1p_y.y"
+case 214:
+#line 1648 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TRUE;
 	;
     break;}
-case 211:
-#line 1639 "asn1p_y.y"
+case 215:
+#line 1656 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 212:
-#line 1645 "asn1p_y.y"
+case 216:
+#line 1662 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 213:
-#line 1648 "asn1p_y.y"
+case 217:
+#line 1665 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 214:
-#line 1654 "asn1p_y.y"
+case 218:
+#line 1671 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = ACT_EL_EXT;
 	;
     break;}
-case 215:
-#line 1659 "asn1p_y.y"
+case 219:
+#line 1676 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2946,46 +2973,46 @@
 		yyval.a_constr->presence = yyvsp[0].a_pres;
 	;
     break;}
-case 216:
-#line 1672 "asn1p_y.y"
+case 220:
+#line 1689 "asn1p_y.y"
 { yyval.a_pres = ACPRES_DEFAULT; ;
     break;}
-case 217:
-#line 1673 "asn1p_y.y"
+case 221:
+#line 1690 "asn1p_y.y"
 { yyval.a_pres = yyvsp[0].a_pres; ;
     break;}
-case 218:
-#line 1677 "asn1p_y.y"
+case 222:
+#line 1694 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_PRESENT;
 	;
     break;}
-case 219:
-#line 1680 "asn1p_y.y"
+case 223:
+#line 1697 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_ABSENT;
 	;
     break;}
-case 220:
-#line 1683 "asn1p_y.y"
+case 224:
+#line 1700 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	;
     break;}
-case 221:
-#line 1689 "asn1p_y.y"
+case 225:
+#line 1706 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 222:
-#line 1692 "asn1p_y.y"
+case 226:
+#line 1709 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 223:
-#line 1701 "asn1p_y.y"
+case 227:
+#line 1718 "asn1p_y.y"
 {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -2999,14 +3026,14 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
 	;
     break;}
-case 224:
-#line 1716 "asn1p_y.y"
+case 228:
+#line 1733 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 225:
-#line 1722 "asn1p_y.y"
+case 229:
+#line 1739 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3014,8 +3041,8 @@
 		yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
 	;
     break;}
-case 226:
-#line 1728 "asn1p_y.y"
+case 230:
+#line 1745 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3025,8 +3052,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 227:
-#line 1742 "asn1p_y.y"
+case 231:
+#line 1759 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -3039,8 +3066,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 228:
-#line 1753 "asn1p_y.y"
+case 232:
+#line 1770 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -3054,14 +3081,14 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 229:
-#line 1769 "asn1p_y.y"
+case 233:
+#line 1786 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 230:
-#line 1772 "asn1p_y.y"
+case 234:
+#line 1789 "asn1p_y.y"
 {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -3072,61 +3099,61 @@
 		yyval.tv_str[l1 + 1 + l3] = '\0';
 	;
     break;}
-case 231:
-#line 1790 "asn1p_y.y"
+case 235:
+#line 1807 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_NOMARK;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
-case 232:
-#line 1794 "asn1p_y.y"
+case 236:
+#line 1811 "asn1p_y.y"
 { yyval.a_marker = yyvsp[0].a_marker; ;
     break;}
-case 233:
-#line 1798 "asn1p_y.y"
+case 237:
+#line 1815 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_OPTIONAL;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
-case 234:
-#line 1802 "asn1p_y.y"
+case 238:
+#line 1819 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_DEFAULT;
 		yyval.a_marker.default_value = yyvsp[0].a_value;
 	;
     break;}
-case 235:
-#line 1825 "asn1p_y.y"
+case 239:
+#line 1842 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 	;
     break;}
-case 236:
-#line 1829 "asn1p_y.y"
+case 240:
+#line 1846 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	;
     break;}
-case 237:
-#line 1835 "asn1p_y.y"
+case 241:
+#line 1852 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 238:
-#line 1840 "asn1p_y.y"
+case 242:
+#line 1857 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 239:
-#line 1847 "asn1p_y.y"
+case 243:
+#line 1864 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3135,8 +3162,8 @@
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
 	;
     break;}
-case 240:
-#line 1854 "asn1p_y.y"
+case 244:
+#line 1871 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3146,8 +3173,8 @@
 		yyval.a_expr->value = yyvsp[-1].a_value;
 	;
     break;}
-case 241:
-#line 1862 "asn1p_y.y"
+case 245:
+#line 1879 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3157,8 +3184,8 @@
 		yyval.a_expr->value = yyvsp[-1].a_value;
 	;
     break;}
-case 242:
-#line 1870 "asn1p_y.y"
+case 246:
+#line 1887 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3167,8 +3194,8 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 243:
-#line 1877 "asn1p_y.y"
+case 247:
+#line 1894 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3178,82 +3205,82 @@
 		yyval.a_expr->meta_type = AMT_VALUE;
 	;
     break;}
-case 244:
-#line 1888 "asn1p_y.y"
+case 248:
+#line 1905 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
-case 245:
-#line 1892 "asn1p_y.y"
+case 249:
+#line 1909 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
-case 246:
-#line 1923 "asn1p_y.y"
+case 250:
+#line 1940 "asn1p_y.y"
 { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
     break;}
-case 247:
-#line 1924 "asn1p_y.y"
+case 251:
+#line 1941 "asn1p_y.y"
 { yyval.a_tag = yyvsp[0].a_tag; ;
     break;}
-case 248:
-#line 1928 "asn1p_y.y"
+case 252:
+#line 1945 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[0].a_tag;
 		yyval.a_tag.tag_mode = TM_DEFAULT;
 	;
     break;}
-case 249:
-#line 1932 "asn1p_y.y"
+case 253:
+#line 1949 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = TM_IMPLICIT;
 	;
     break;}
-case 250:
-#line 1936 "asn1p_y.y"
+case 254:
+#line 1953 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = TM_EXPLICIT;
 	;
     break;}
-case 251:
-#line 1943 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
-case 252:
-#line 1947 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
-case 253:
-#line 1955 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
-case 254:
-#line 1962 "asn1p_y.y"
-{ yyval.tv_str = 0; ;
-    break;}
 case 255:
-#line 1963 "asn1p_y.y"
+#line 1960 "asn1p_y.y"
 {
+		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 256:
-#line 1968 "asn1p_y.y"
+#line 1964 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 257:
+#line 1972 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 258:
+#line 1979 "asn1p_y.y"
+{ yyval.tv_str = 0; ;
+    break;}
+case 259:
+#line 1980 "asn1p_y.y"
+{
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 260:
+#line 1985 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3481,7 +3508,7 @@
     }
   return 1;
 }
-#line 1974 "asn1p_y.y"
+#line 1991 "asn1p_y.y"