/* %% [3.0] code to copy yytext_ptr to parser4_text[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 143
-#define YY_END_OF_BUFFER 144
+#define YY_NUM_RULES 144
+#define YY_END_OF_BUFFER 145
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1166] =
+static const flex_int16_t yy_accept[1174] =
     {   0,
-      136,  136,    0,    0,    0,    0,    0,    0,    0,    0,
-      144,  142,   10,   11,  142,    1,  136,  133,  136,  136,
-      142,  135,  134,  142,  142,  142,  142,  142,  129,  130,
-      142,  142,  142,  131,  132,    5,    5,    5,  142,  142,
-      142,   10,   11,    0,    0,  125,    0,    0,    0,    0,
+      137,  137,    0,    0,    0,    0,    0,    0,    0,    0,
+      145,  143,   10,   11,  143,    1,  137,  134,  137,  137,
+      143,  136,  135,  143,  143,  143,  143,  143,  130,  131,
+      143,  143,  143,  132,  133,    5,    5,    5,  143,  143,
+      143,   10,   11,    0,    0,  126,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    1,  136,
-      136,    0,  135,  136,    3,    2,    6,    0,  136,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  137,
+      137,    0,  136,  137,    3,    2,    6,    0,  137,    0,
         0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
-      126,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  128,    0,    0,    0,    0,    0,
+      127,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  129,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    2,    0,
         0,    0,    0,    0,    0,    0,    8,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      127,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      128,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   50,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   51,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  141,  139,    0,  138,  137,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  107,    0,  106,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       25,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  142,  140,    0,  139,  138,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  108,    0,
+      107,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   26,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   15,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   16,
-        0,    0,    0,  140,  137,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  108,    0,    0,  110,    0,    0,
-        0,    0,    0,    0,    0,   53,    0,    0,    0,    0,
-       43,    0,    0,    0,    0,   65,    0,    0,    0,    0,
-        0,    0,    0,    0,   28,    0,    0,    0,    0,    0,
+        0,    0,    0,   15,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   16,    0,    0,    0,  141,  138,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  109,    0,    0,  111,
+        0,    0,    0,    0,    0,    0,    0,   54,    0,    0,
+        0,    0,   44,    0,    0,    0,    0,   66,    0,    0,
+        0,    0,    0,    0,    0,    0,   29,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   42,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   45,    0,   29,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   43,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   46,    0,   30,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   64,   22,    0,   27,    0,    0,
+        0,    0,    0,    0,    0,   12,  116,    0,  113,    0,
+      112,    0,    0,    0,   75,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   63,   21,    0,   26,    0,    0,    0,    0,    0,
-        0,    0,   12,  115,    0,  112,    0,  111,    0,    0,
-        0,   74,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   23,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,   44,    0,    0,
-        0,    0,    0,    0,    0,   75,    0,    0,    0,    0,
-        0,    0,    0,   70,    0,    0,    0,    0,    7,    0,
-        0,  113,    0,    0,    0,    0,    0,    0,    0,    0,
+       24,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       45,    0,    0,    0,    0,    0,    0,    0,    0,   76,
+        0,    0,    0,    0,    0,    0,    0,   71,    0,    0,
+        0,    0,    7,    0,    0,  114,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   58,    0,    0,    0,
+       59,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   47,    0,    0,    0,
 
-        0,    0,    0,    0,   55,    0,    0,    0,    0,    0,
+        0,   48,    0,    0,    0,    0,    0,    0,    0,   56,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   79,   56,
-        0,    0,    0,   22,    0,    0,    0,    0,    0,    0,
-        0,    0,   30,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   39,    0,    0,    0,    0,    0,  116,    0,    0,
+        0,    0,    0,   80,   57,    0,    0,    0,   23,    0,
+        0,    0,    0,    0,    0,    0,    0,   31,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   40,    0,    0,
+        0,    0,    0,  117,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,   69,    0,    0,    0,    0,   33,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   27,    0,    0,    0,   20,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   60,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   70,
+        0,    0,    0,    0,   34,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   28,    0,
+        0,    0,    0,   21,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   61,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   68,
+        0,    0,    0,    0,    0,    0,   92,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   67,    0,    0,    0,    0,    0,    0,   91,
+       49,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   48,    0,    0,    0,    0,    0,    0,
+
+        0,   18,    0,    0,    0,    0,    0,    0,   97,    0,
+        0,   95,    0,    0,    0,    0,    0,    0,    0,  120,
+        0,    0,    0,    0,   69,    0,    0,    0,    0,   72,
+       60,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   67,    0,   17,    0,   77,    0,
+        0,    0,    0,    0,  101,    0,    0,    0,   41,    0,
+        0,    0,   79,   25,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   74,    0,    0,    0,    0,    0,
 
-       96,    0,    0,   94,    0,    0,    0,    0,    0,    0,
-        0,  119,    0,    0,    0,    0,   68,    0,    0,    0,
-        0,   71,   59,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   66,    0,   17,    0,
-       76,    0,    0,    0,    0,    0,  100,    0,    0,    0,
-       40,    0,    0,    0,   78,   24,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      123,   42,    0,    0,    0,    0,    0,    0,    0,    0,
+       37,    0,    0,    0,   98,    0,   96,   91,   90,    0,
+        0,    0,    0,    0,  110,    0,    0,   63,    0,    0,
+        0,    0,    0,    0,   88,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   50,    0,    0,   32,    0,    0,
+        0,    0,  100,    0,    0,    0,    0,   52,   38,    0,
+       73,    0,    0,   65,    0,    0,   47,    0,  118,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   73,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,  122,   41,    0,    0,    0,    0,    0,    0,
-        0,    0,   36,    0,    0,    0,   97,    0,   95,   90,
-       89,    0,    0,    0,    0,    0,  109,    0,    0,   62,
-        0,    0,    0,    0,    0,    0,   87,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   49,    0,    0,   31,
-        0,    0,    0,    0,   99,    0,    0,    0,    0,   51,
-       37,    0,   72,    0,    0,   64,    0,    0,   46,    0,
-      117,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  124,
-       61,    0,   34,   88,    0,    0,  120,   92,    0,    0,
-        0,    0,    0,    0,   19,    0,   18,    0,   98,    0,
-        0,   57,    0,    0,    0,    0,    0,    0,    0,    0,
-       35,    0,    0,    0,   32,    0,    0,    0,    0,    0,
-        0,   77,    0,    0,  121,    0,    0,    0,    0,    0,
-        0,    0,    0,  123,    0,  118,  114,    0,    0,   14,
-        0,    0,  105,    0,    0,    0,    0,   85,    0,    0,
-        0,    0,    0,   52,    0,    0,    0,    0,    0,    0,
-        0,   13,    0,    0,    0,   93,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,   84,    0,  102,    0,    0,
-        0,  101,    0,    0,    0,   83,    0,    0,    0,  104,
+        0,    0,    0,    0,    0,    0,    0,  125,   62,    0,
+       35,   89,    0,    0,  121,   93,    0,    0,    0,    0,
+        0,    0,   20,    0,   19,    0,   99,    0,    0,   58,
+        0,    0,    0,    0,    0,    0,    0,    0,   36,    0,
+        0,    0,   33,    0,    0,    0,    0,    0,    0,   78,
+        0,    0,  122,    0,    0,    0,    0,    0,    0,    0,
+        0,  124,    0,  119,  115,    0,    0,   14,    0,    0,
+      106,    0,    0,    0,    0,   86,    0,    0,    0,    0,
+        0,   53,    0,    0,    0,    0,    0,    0,    0,   13,
+
+        0,    0,    0,   94,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   85,    0,  103,    0,    0,    0,  102,
+        0,    0,    0,   84,    0,    0,    0,  105,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  103,
-        0,    0,    0,    0,    0,    0,   81,   86,   38,    0,
-        0,    0,   80,    0,    0,    0,    0,    0,    0,    0,
-       54,    0,    0,   82,    0
+        0,    0,    0,    0,    0,    0,    0,  104,    0,    0,
+        0,    0,    0,    0,   82,   87,   39,    0,    0,    0,
+       81,    0,    0,    0,    0,    0,    0,    0,   55,    0,
+        0,   83,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
         3
     } ;
 
-static const flex_int16_t yy_base[1178] =
+static const flex_int16_t yy_base[1186] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1527, 1528,   32, 1523,  141,    0,  201, 1528,  206,   88,
-       11,  213, 1528, 1505,  114,   25,    2,    6, 1528, 1528,
-       73,   11,   17, 1528, 1528, 1528,  104, 1511, 1466,    0,
-     1503,  107, 1518,  217,  247, 1528, 1462,  185, 1468,   93,
-       58, 1460,   91,  209,  200,   14,  273,  190, 1459,  181,
-      186,  189,  223, 1468,   66,  206, 1467,  232,  204,  294,
-      256,  216, 1450,   78,  268,  300,  300, 1469,    0,  329,
-      344,  356,  364,  359, 1528,    0, 1528,  273,  335,  300,
-      335,  289,  353,  354,  299, 1528, 1466, 1505, 1528,  311,
-
-     1528,  375, 1494,  328, 1463,  356,  355, 1458,  350,  359,
-      357,  363,  371, 1501,    0,  426,  359, 1445, 1447, 1443,
-     1451,   74, 1447, 1436, 1437,   89, 1453, 1446, 1446,  213,
-     1437, 1431, 1437,  343, 1482, 1486, 1428, 1479, 1421, 1444,
-     1441, 1441, 1435,  336, 1428, 1421, 1426, 1420,  363, 1417,
-     1416, 1430,  365, 1416,  373, 1432,  351,  399,  372, 1429,
-     1430, 1428, 1410, 1412,  421, 1404, 1421, 1413,    0,  421,
-      430,  398,  426,  434,  439, 1412, 1528,    0, 1455,  446,
-     1406,  431,  427, 1414,  443, 1457,  444, 1456,  446, 1455,
-     1528,  490,  456, 1416, 1396, 1412, 1409, 1408,  438, 1449,
-
-     1443, 1409, 1388, 1396, 1391, 1402, 1390, 1402, 1402, 1393,
-     1382, 1395, 1395, 1387, 1377, 1395, 1528, 1390, 1393, 1374,
-     1373, 1423, 1372, 1382, 1385, 1419, 1380, 1368, 1379, 1415,
-     1362, 1372, 1364, 1361, 1377, 1358, 1357, 1363, 1354, 1353,
-     1360, 1362, 1407, 1365, 1359,  211, 1366, 1361, 1353, 1359,
-     1359, 1340, 1356, 1349, 1356, 1344, 1337, 1351, 1392, 1353,
-     1335, 1343,  454, 1528, 1528,  461, 1528, 1528, 1330,    0,
-      279,  439,  502,  471, 1387, 1340,  433, 1528, 1385, 1528,
-     1379,  526,  442, 1321, 1377, 1323, 1329, 1379, 1336,  438,
-     1528, 1334, 1376, 1331, 1328,  391, 1373, 1367, 1322, 1317,
-
-     1314, 1323, 1312, 1361, 1309,  519, 1323, 1308, 1321, 1308,
-     1318, 1313, 1320, 1315, 1311,  437, 1309, 1305, 1353,  355,
-     1347, 1299, 1292, 1294, 1298, 1287, 1300,  502, 1345, 1300,
-     1297, 1301, 1528, 1289, 1289, 1301, 1283, 1275, 1276, 1297,
-     1279, 1291, 1290, 1276, 1288, 1287, 1286, 1327, 1326, 1528,
-     1270,  516, 1283, 1528, 1528, 1282,    0, 1271, 1263,  494,
-     1320, 1319, 1277, 1317, 1528, 1265, 1315, 1528,  501,  568,
-      495, 1314, 1270, 1266, 1254, 1528, 1270, 1269, 1256, 1255,
-     1528, 1257, 1254,  497, 1252, 1528, 1263, 1260, 1245, 1258,
-     1294, 1260, 1242, 1291, 1528, 1240, 1256, 1288, 1251, 1248,
-
-     1249, 1251, 1283, 1236, 1231, 1230, 1279, 1225, 1240, 1232,
-     1280, 1528, 1227, 1223, 1221, 1225, 1218, 1228, 1231, 1220,
-     1215, 1528, 1270, 1528, 1214, 1225, 1262, 1215, 1224, 1218,
-     1222, 1262, 1256, 1220, 1200, 1203, 1202, 1210, 1198, 1254,
-     1196, 1528, 1528, 1201, 1528, 1211, 1245, 1207,    0, 1191,
-     1208, 1246, 1528, 1528, 1194, 1528, 1200, 1528,  522,  534,
-      555, 1528, 1197, 1185, 1236, 1183, 1182, 1189, 1182, 1194,
-     1193, 1193, 1181, 1222, 1182, 1225, 1171, 1187, 1172, 1169,
-     1183, 1175, 1181, 1172, 1180, 1165, 1181, 1163, 1177, 1175,
-     1158, 1152, 1157, 1172, 1169, 1170, 1167, 1528, 1153, 1155,
-
-     1164, 1200,  526, 1163, 1146, 1147, 1144, 1528, 1158, 1137,
-     1158, 1148, 1191, 1145, 1189, 1528, 1136, 1150, 1153, 1185,
-     1184, 1131, 1182, 1528,   14, 1144, 1133, 1135, 1528, 1141,
-     1131, 1528, 1125, 1180,  533,  495, 1133, 1129, 1172,  533,
-     1171, 1170, 1169, 1123, 1113, 1166, 1119, 1129, 1163, 1121,
-     1108, 1116, 1159, 1121, 1120, 1121, 1114, 1103, 1116, 1119,
-     1114, 1115, 1112, 1111, 1114, 1109, 1150, 1149, 1099, 1089,
-     1097, 1145, 1094, 1086, 1087, 1100, 1528, 1088, 1097, 1096,
-     1096, 1136, 1079, 1088, 1081, 1070, 1074, 1125, 1072, 1082,
-     1122, 1069,  503,  546, 1063,  543, 1528, 1124, 1082, 1071,
-
-     1075, 1065, 1077, 1118, 1528, 1112,  565, 1065, 1073, 1068,
-     1064, 1071, 1054, 1057, 1053, 1070, 1065, 1053, 1049, 1056,
-     1050, 1060, 1048, 1062, 1050, 1058, 1056, 1047, 1056, 1052,
-     1093, 1035, 1035, 1048, 1033, 1088, 1030, 1031, 1528, 1528,
-     1039, 1042, 1045, 1528, 1044, 1029, 1021,  559, 1026, 1073,
-     1022, 1076, 1528, 1021, 1023, 1023, 1072, 1025, 1013, 1007,
-     1018, 1027, 1020, 1012, 1012, 1011, 1009, 1009, 1060, 1021,
-      996, 1528, 1052,  999, 1012, 1011,  996, 1528,  545,  498,
-     1012, 1046, 1009, 1011, 1048, 1001,  994,  993,  987,  994,
-      987, 1041,  998,  987,  987,  996,  979,  993,  985, 1028,
-
-      994,  976,  975, 1528,  991,  972,  612,  971, 1528,  988,
-      966,  982, 1018,    7,    5,   92,  280,  276,  413,  458,
-      508,  462, 1528,  490,  513,  522, 1528,  530,  535,  529,
-      553,  547,  550,  603,  549,  549,  613,  559, 1528,  565,
-      563,  563,  577,  578,  584,  623,  597,  602,  576,  576,
-      628,  573, 1528,  580,  585,  592,  633,  634,  583, 1528,
-      579,  582,  581,  601,  598,  603,  604,  590,  598,  607,
-      587,  608,  648, 1528,  603,  650,  651,  615,  618,  606,
-      602,  609,  660,  609,  607,  625,  664,  619,  617,  615,
-      669,  670,  666,  626,  631,  624,  633,  621,  631,  627,
-
-     1528,  622,  623, 1528,  624,  640,  641,  642,  624,  629,
-      647, 1528,  669,  660,  632,  653, 1528,  636,  651,  643,
-      647, 1528, 1528,  657,  692,  641,  694,  643,  701,  646,
-      657,  649,  655,  651,  669,  670, 1528,  668, 1528,  670,
-     1528,  674,  664,  657,  669,  711, 1528,  669,  719,  720,
-     1528,  669,  676,  718, 1528, 1528,  668,  668,  671,  685,
-      672,  729,  688,  726,  732,  682,  734,  735,  736,  697,
-      681,  693,  698,  713,  742,  702,  694,  745,  694,  690,
-      706,  711,  693,  751,  706,  711, 1528,  712,  705,  714,
-      715,  712,  702,  704,  761,  710,  707,  764,  760,  703,
-
-      718,  768, 1528, 1528,  719,  729,  714,  715,  774,  776,
-      722,  778, 1528,  728,  730,  781, 1528,  745, 1528, 1528,
-     1528,  735,  785,  736,  788,  770, 1528,  748,  749, 1528,
-      736,  736,  739,  739,  740,  736, 1528,  758,  744,  745,
-      760,  760,  763,  763,  760,  765, 1528,  757,  767, 1528,
-      764,  769,  771,  768, 1528,  759,  765,  764,  775, 1528,
-     1528,  814, 1528,  763,  769, 1528,  772,  785, 1528,  782,
-     1528,  779,  802,  822,  828,  829,  773,  831,  832,  787,
-      781,  835,  836,  832,  797,  793,  835,  785,  790,  843,
-      801,  845,  805,  847,  810,  799,  850,  794,  811,  811,
-
-      795,  851,  816,  816,  813,  860,  820,  833,  820, 1528,
-     1528,  864, 1528, 1528,  813,  824, 1528, 1528,  814,  863,
-      808,  813,  871,  821, 1528,  827, 1528,  874, 1528,  819,
-      834, 1528,  872,  840,  833,  842,  830,  840,  883,  834,
-     1528,  885,  886,  833, 1528,  837,  889,  836,  835,  893,
-      848, 1528,  890,  852, 1528,  855,  898,  841,  843,  840,
-      856,  865,  904, 1528,  900, 1528, 1528,  865,  902, 1528,
-      856,  863, 1528,  860,  865,  912,  857, 1528,  861,  873,
-      916,  860,  868, 1528,  879,  869,  868,  882,  873,  882,
-      884, 1528,  926,  886,  928, 1528,  924,  888,  869,  932,
-
-      891,  892,  893,  936,  895, 1528,  900, 1528,  882,  940,
-      901, 1528,  887,  887,  889, 1528,  894,  889,  901, 1528,
-      899,  903,  894,  946,  895,  911,  904,  913,  904,  911,
-      898,  913,  960,  919,  906,  922,  913,  927,  923, 1528,
-      967,  968,  969,  926,  925,  926, 1528, 1528, 1528,  973,
-      917,  933, 1528,  971,  922,  921,  923,  934,  981,  932,
-     1528,  941,  984, 1528, 1528,  990,  995, 1000, 1005, 1010,
-     1015, 1020, 1023,  997, 1002, 1004, 1017
+     1536, 1537,   32, 1532,  141,    0,  201, 1537,  206,   88,
+       11,  213, 1537, 1514,  114,   25,    2,    6, 1537, 1537,
+       73,   11,   17, 1537, 1537, 1537,  104, 1520, 1475,    0,
+     1512,  107, 1527,  217,  247, 1537, 1471,  185, 1477,   93,
+       58, 1469,   91,  209,  200,   14,  273,  190, 1468,  181,
+      186,  189,  223, 1477,   66,  206, 1476,  232,  204,  294,
+      256,  216, 1459,   78,  268,  300,  300, 1478,    0,  329,
+      344,  356,  364,  359, 1537,    0, 1537,  273,  335,  300,
+      335,  289,  353,  354,  299, 1537, 1475, 1514, 1537,  311,
+
+     1537,  375, 1503,  328, 1472,  356,  355, 1467,  350,  359,
+      357,  363,  371, 1510,    0,  426,  359, 1454, 1456, 1452,
+     1460,   74, 1456, 1445, 1446,   89, 1462, 1455, 1455,  213,
+     1446, 1440, 1446,  343, 1491, 1495, 1437, 1488, 1430, 1453,
+     1450, 1450, 1444,  336, 1437, 1430, 1435, 1429,  363, 1426,
+     1425, 1439,  365, 1425,  373, 1441,  351,  422,  396, 1438,
+     1439, 1437, 1419, 1421,  370, 1413, 1430, 1422,    0,  403,
+      414,  398,  420,  430,  430, 1421, 1537,    0, 1464,  439,
+     1415,  424,  432, 1423,  439, 1466,  451, 1465,  433, 1464,
+     1537,  486,  459, 1425, 1405, 1421, 1418, 1417,  431, 1458,
+
+     1452, 1418, 1397, 1405, 1400, 1411, 1399, 1411, 1411, 1402,
+     1391, 1404, 1404, 1396, 1386, 1404, 1537, 1399, 1402, 1383,
+     1382, 1432, 1381, 1391, 1394, 1428, 1389, 1377, 1388, 1424,
+     1371, 1381, 1373, 1370, 1386, 1367, 1366, 1372, 1363, 1362,
+     1369, 1371, 1416, 1374, 1373, 1367,  211, 1374, 1369, 1361,
+     1367, 1367, 1348, 1364, 1357, 1364, 1352, 1345, 1359, 1400,
+     1361, 1343, 1351,  466, 1537, 1537,  467, 1537, 1537, 1338,
+        0,  279,  454,  480,  472, 1395, 1348,  465, 1537, 1393,
+     1537, 1387,  522,  474, 1329, 1385, 1331, 1337, 1387, 1344,
+      462, 1537, 1342, 1384, 1339, 1336,  506, 1381, 1375, 1330,
+
+     1325, 1322, 1331, 1320, 1369, 1317,  518, 1331, 1316, 1329,
+     1316, 1326, 1321, 1328, 1323, 1319,  384, 1317, 1313, 1361,
+      355, 1355, 1307, 1300, 1302, 1306, 1295, 1308,  499, 1353,
+     1308, 1305, 1309, 1537, 1307, 1296, 1296, 1308, 1290, 1282,
+     1283, 1304, 1286, 1298, 1297, 1283, 1295, 1294, 1293, 1334,
+     1333, 1537, 1277,  543, 1290, 1537, 1537, 1289,    0, 1278,
+     1270,  491, 1327, 1326, 1284, 1324, 1537, 1272, 1322, 1537,
+      520,  567,  493, 1321, 1277, 1273, 1261, 1537, 1277, 1276,
+     1263, 1262, 1537, 1264, 1261,  494, 1259, 1537, 1270, 1267,
+     1252, 1265, 1301, 1267, 1249, 1298, 1537, 1247, 1263, 1295,
+
+     1258, 1255, 1256, 1258, 1290, 1243, 1238, 1237, 1286, 1232,
+     1247, 1239, 1287, 1537, 1234, 1230, 1228, 1232, 1225, 1235,
+     1238, 1227, 1222, 1537, 1277, 1537, 1221, 1232, 1269, 1216,
+     1221, 1230, 1224, 1228, 1268, 1262, 1226, 1206, 1209, 1208,
+     1216, 1204, 1260, 1202, 1537, 1537, 1207, 1537, 1217, 1251,
+     1213,    0, 1197, 1214, 1252, 1537, 1537, 1200, 1537, 1206,
+     1537,  520,  524,  552, 1537, 1203, 1191, 1242, 1189, 1188,
+     1195, 1188, 1200, 1199, 1199, 1187, 1228, 1188, 1231, 1177,
+     1193, 1178, 1175, 1189, 1181, 1187, 1178, 1186, 1171, 1187,
+     1169, 1183, 1181, 1164, 1158, 1163, 1178, 1175, 1176, 1173,
+
+     1537, 1159, 1161, 1170, 1206,  522, 1169, 1152, 1153, 1150,
+     1537, 1164, 1143, 1164, 1161, 1153, 1196, 1150, 1194, 1537,
+     1141, 1155, 1158, 1190, 1189, 1136, 1187, 1537,   14, 1149,
+     1138, 1140, 1537, 1146, 1136, 1537, 1130, 1185,  524,  491,
+     1138, 1134, 1177,  548, 1176, 1175, 1174, 1128, 1118, 1171,
+     1124, 1134, 1168, 1126, 1113, 1121, 1164, 1126, 1125, 1126,
+     1119, 1108, 1121, 1124, 1119, 1120, 1117, 1116, 1119, 1114,
+     1155, 1154, 1104, 1094, 1102, 1150, 1099, 1091, 1092, 1105,
+     1537, 1093, 1102, 1101, 1101, 1141, 1084, 1093, 1086, 1097,
+     1074, 1078, 1129, 1076, 1086, 1126, 1073,  543,  545, 1067,
+
+      542, 1537, 1128, 1086, 1075, 1079, 1069, 1081, 1122, 1537,
+     1116,  539, 1069, 1077, 1072, 1068, 1075, 1058, 1061, 1057,
+     1074, 1069, 1057, 1053, 1060, 1054, 1064, 1052, 1066, 1054,
+     1062, 1060, 1051, 1060, 1056, 1097, 1039, 1039, 1052, 1037,
+     1092, 1034, 1035, 1537, 1537, 1043, 1046, 1049, 1537, 1048,
+     1033, 1025,  516, 1030, 1077, 1026, 1080, 1537, 1025, 1027,
+     1027, 1019, 1075, 1028, 1016, 1010, 1021, 1030, 1023, 1015,
+     1015, 1014, 1012, 1012, 1063, 1024,  999, 1537, 1055, 1002,
+     1015, 1014,  999, 1537,  544,  559, 1015, 1049, 1012, 1014,
+     1051, 1004,  997,  996,  990,  997,  990, 1044, 1001,  990,
+
+      990,  999,  982,  996,  988, 1031,  997,  979,  978, 1537,
+      994,    6,  611,   76, 1537,  284,  274,  358,  445,  466,
+      456,  494,  514,  509,  525,  523,  552,  544, 1537,  553,
+      560,  562,  613, 1537,  564,  569,  564,  576,  570,  568,
+      621,  567,  567,  624,  570, 1537,  576,  574,  573,  587,
+      588,  593,  632,  606,  611,  585,  585,  637,  582, 1537,
+      589,  594,  601,  642,  643,  592, 1537,  588,  591,  590,
+      610,  607,  612,  613,  599,  607,  616,  596,  617,  657,
+     1537,  612,  659,  660,  624,  627,  615,  612,  619,  670,
+      619,  617,  635,  674,  629,  627,  625,  678,  679,  675,
+
+      635, 1537,  640,  633,  642,  630,  640,  636, 1537,  631,
+      632, 1537,  633,  649,  650,  651,  633,  638,  656, 1537,
+      678,  669,  641,  662, 1537,  645,  660,  652,  656, 1537,
+     1537,  666,  701,  650,  703,  652,  710,  655,  666,  658,
+      664,  660,  678,  679, 1537,  677, 1537,  679, 1537,  683,
+      673,  666,  678,  720, 1537,  678,  728,  729, 1537,  678,
+      685,  727, 1537, 1537,  677,  677,  680,  694,  681,  738,
+      697,  735,  741,  691,  743,  744,  745,  706,  690,  702,
+      707,  722,  751,  711,  703,  754,  703,  699,  715,  720,
+      702,  760,  715,  720, 1537,  721,  714,  723,  724,  721,
+
+      711,  713,  770,  719,  716,  773,  769,  712,  727,  777,
+     1537, 1537,  728,  738,  723,  724,  783,  785,  731,  787,
+     1537,  737,  739,  790, 1537,  754, 1537, 1537, 1537,  744,
+      794,  745,  797,  779, 1537,  757,  758, 1537,  745,  745,
+      748,  748,  749,  745, 1537,  767,  753,  754,  769,  769,
+      772,  772,  769,  774, 1537,  766,  776, 1537,  773,  778,
+      780,  777, 1537,  768,  774,  773,  784, 1537, 1537,  823,
+     1537,  772,  778, 1537,  781,  794, 1537,  791, 1537,  788,
+      811,  831,  837,  838,  782,  840,  841,  796,  790,  844,
+      845,  841,  806,  802,  844,  794,  799,  852,  810,  854,
+
+      814,  856,  819,  808,  859,  803,  820,  820,  804,  860,
+      825,  825,  822,  869,  829,  842,  829, 1537, 1537,  873,
+     1537, 1537,  822,  833, 1537, 1537,  823,  872,  817,  822,
+      880,  830, 1537,  836, 1537,  883, 1537,  828,  843, 1537,
+      881,  849,  842,  851,  839,  849,  892,  843, 1537,  894,
+      895,  842, 1537,  846,  898,  845,  844,  902,  857, 1537,
+      899,  861, 1537,  864,  907,  850,  852,  849,  865,  874,
+      913, 1537,  909, 1537, 1537,  874,  911, 1537,  865,  872,
+     1537,  869,  874,  921,  866, 1537,  870,  882,  925,  869,
+      877, 1537,  888,  878,  877,  891,  882,  891,  893, 1537,
+
+      935,  895,  937, 1537,  933,  897,  878,  941,  900,  901,
+      902,  945,  904, 1537,  909, 1537,  891,  949,  910, 1537,
+      896,  896,  898, 1537,  903,  898,  910, 1537,  908,  912,
+      903,  955,  904,  920,  913,  922,  913,  920,  907,  922,
+      969,  928,  915,  931,  922,  936,  932, 1537,  976,  977,
+      978,  935,  934,  935, 1537, 1537, 1537,  982,  926,  942,
+     1537,  980,  931,  930,  932,  943,  990,  941, 1537,  950,
+      993, 1537, 1537,  999, 1004, 1009, 1014, 1019, 1024, 1029,
+     1032, 1006, 1011, 1013, 1026
     } ;
 
-static const flex_int16_t yy_def[1178] =
+static const flex_int16_t yy_def[1186] =
     {   0,
-     1166, 1166, 1167, 1167, 1166, 1166, 1166, 1166, 1166, 1166,
-     1165, 1165, 1165, 1165, 1165, 1168, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1169,
-     1165, 1165, 1165, 1170,   15, 1165,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1171,   45,   45,   45,
+     1174, 1174, 1175, 1175, 1174, 1174, 1174, 1174, 1174, 1174,
+     1173, 1173, 1173, 1173, 1173, 1176, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1177,
+     1173, 1173, 1173, 1178,   15, 1173,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1179,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1168, 1165,
-     1165, 1165, 1165, 1165, 1165, 1172, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1169, 1165, 1170,
+       45,   45,   45,   45,   45,   45,   45,   45, 1176, 1173,
+     1173, 1173, 1173, 1173, 1173, 1180, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1177, 1173, 1178,
 
-     1165, 1165,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1173,   45, 1171,   45,   45,   45,   45,
+     1173, 1173,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1181,   45, 1179,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1172, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1174,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1173,
-     1165, 1171,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1180, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1182,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1181,
+     1173, 1179,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1165,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1173,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1175,
-       45,   45,   45,   45,   45,   45,   45, 1165,   45, 1165,
-       45, 1171,   45,   45,   45,   45,   45,   45,   45,   45,
-     1165,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1183,   45,   45,   45,   45,   45,   45,   45, 1173,   45,
+     1173,   45, 1179,   45,   45,   45,   45,   45,   45,   45,
+       45, 1173,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1165,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1165,
-       45,   45,   45, 1165, 1165, 1165, 1176,   45,   45,   45,
-       45,   45,   45,   45, 1165,   45,   45, 1165,   45, 1171,
-       45,   45,   45,   45,   45, 1165,   45,   45,   45,   45,
-     1165,   45,   45,   45,   45, 1165,   45,   45,   45,   45,
-       45,   45,   45,   45, 1165,   45,   45,   45,   45,   45,
+       45,   45,   45, 1173,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1173,   45,   45,   45, 1173, 1173, 1173, 1184,   45,
+       45,   45,   45,   45,   45,   45, 1173,   45,   45, 1173,
+       45, 1179,   45,   45,   45,   45,   45, 1173,   45,   45,
+       45,   45, 1173,   45,   45,   45,   45, 1173,   45,   45,
+       45,   45,   45,   45,   45,   45, 1173,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1165,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1165,   45, 1165,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1173,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1173,   45, 1173,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1173, 1173,   45, 1173,   45,   45,
+     1173, 1185,   45,   45,   45, 1173, 1173,   45, 1173,   45,
+     1173,   45,   45,   45, 1173,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1165, 1165,   45, 1165,   45,   45, 1165, 1177,   45,
-       45,   45, 1165, 1165,   45, 1165,   45, 1165,   45,   45,
-       45, 1165,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1165,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45, 1165,   45,   45,
-       45,   45,   45,   45,   45, 1165,   45,   45,   45,   45,
-       45,   45,   45, 1165,   45,   45,   45,   45, 1165,   45,
-       45, 1165,   45,   45,   45,   45,   45,   45,   45,   45,
+     1173,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1173,   45,   45,   45,   45,   45,   45,   45,   45, 1173,
+       45,   45,   45,   45,   45,   45,   45, 1173,   45,   45,
+       45,   45, 1173,   45,   45, 1173,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1165,   45,   45,   45,
+     1173,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1165,   45,   45,   45,
 
-       45,   45,   45,   45, 1165,   45,   45,   45,   45,   45,
+       45, 1173,   45,   45,   45,   45,   45,   45,   45, 1173,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1165, 1165,
-       45,   45,   45, 1165,   45,   45,   45,   45,   45,   45,
-       45,   45, 1165,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1165,   45,   45,   45,   45,   45, 1165,   45,   45,
+       45,   45,   45, 1173, 1173,   45,   45,   45, 1173,   45,
+       45,   45,   45,   45,   45,   45,   45, 1173,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1173,   45,   45,
+       45,   45,   45, 1173,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45, 1165,   45,   45,   45,   45, 1165,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1165,   45,   45,   45, 1165,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1165,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1173,
+       45,   45,   45,   45, 1173,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1173,   45,
+       45,   45,   45, 1173,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1173,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1173,
+       45,   45,   45,   45,   45,   45, 1173,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1165,   45,   45,   45,   45,   45,   45, 1165,
+     1173,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1165,   45,   45,   45,   45,   45,   45,
+
+       45, 1173,   45,   45,   45,   45,   45,   45, 1173,   45,
+       45, 1173,   45,   45,   45,   45,   45,   45,   45, 1173,
+       45,   45,   45,   45, 1173,   45,   45,   45,   45, 1173,
+     1173,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1173,   45, 1173,   45, 1173,   45,
+       45,   45,   45,   45, 1173,   45,   45,   45, 1173,   45,
+       45,   45, 1173, 1173,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1173,   45,   45,   45,   45,   45,
 
-     1165,   45,   45, 1165,   45,   45,   45,   45,   45,   45,
-       45, 1165,   45,   45,   45,   45, 1165,   45,   45,   45,
-       45, 1165, 1165,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1165,   45, 1165,   45,
-     1165,   45,   45,   45,   45,   45, 1165,   45,   45,   45,
-     1165,   45,   45,   45, 1165, 1165,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1173, 1173,   45,   45,   45,   45,   45,   45,   45,   45,
+     1173,   45,   45,   45, 1173,   45, 1173, 1173, 1173,   45,
+       45,   45,   45,   45, 1173,   45,   45, 1173,   45,   45,
+       45,   45,   45,   45, 1173,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1173,   45,   45, 1173,   45,   45,
+       45,   45, 1173,   45,   45,   45,   45, 1173, 1173,   45,
+     1173,   45,   45, 1173,   45,   45, 1173,   45, 1173,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1165,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45, 1165, 1165,   45,   45,   45,   45,   45,   45,
-       45,   45, 1165,   45,   45,   45, 1165,   45, 1165, 1165,
-     1165,   45,   45,   45,   45,   45, 1165,   45,   45, 1165,
-       45,   45,   45,   45,   45,   45, 1165,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1165,   45,   45, 1165,
-       45,   45,   45,   45, 1165,   45,   45,   45,   45, 1165,
-     1165,   45, 1165,   45,   45, 1165,   45,   45, 1165,   45,
-     1165,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1173, 1173,   45,
+     1173, 1173,   45,   45, 1173, 1173,   45,   45,   45,   45,
+       45,   45, 1173,   45, 1173,   45, 1173,   45,   45, 1173,
+       45,   45,   45,   45,   45,   45,   45,   45, 1173,   45,
+       45,   45, 1173,   45,   45,   45,   45,   45,   45, 1173,
+       45,   45, 1173,   45,   45,   45,   45,   45,   45,   45,
+       45, 1173,   45, 1173, 1173,   45,   45, 1173,   45,   45,
+     1173,   45,   45,   45,   45, 1173,   45,   45,   45,   45,
+       45, 1173,   45,   45,   45,   45,   45,   45,   45, 1173,
+
+       45,   45,   45, 1173,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1173,   45, 1173,   45,   45,   45, 1173,
+       45,   45,   45, 1173,   45,   45,   45, 1173,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1165,
-     1165,   45, 1165, 1165,   45,   45, 1165, 1165,   45,   45,
-       45,   45,   45,   45, 1165,   45, 1165,   45, 1165,   45,
-       45, 1165,   45,   45,   45,   45,   45,   45,   45,   45,
-     1165,   45,   45,   45, 1165,   45,   45,   45,   45,   45,
-       45, 1165,   45,   45, 1165,   45,   45,   45,   45,   45,
-       45,   45,   45, 1165,   45, 1165, 1165,   45,   45, 1165,
-       45,   45, 1165,   45,   45,   45,   45, 1165,   45,   45,
-       45,   45,   45, 1165,   45,   45,   45,   45,   45,   45,
-       45, 1165,   45,   45,   45, 1165,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45, 1165,   45, 1165,   45,   45,
-       45, 1165,   45,   45,   45, 1165,   45,   45,   45, 1165,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1165,
-       45,   45,   45,   45,   45,   45, 1165, 1165, 1165,   45,
-       45,   45, 1165,   45,   45,   45,   45,   45,   45,   45,
-     1165,   45,   45, 1165,    0, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165
+       45,   45,   45,   45,   45,   45,   45, 1173,   45,   45,
+       45,   45,   45,   45, 1173, 1173, 1173,   45,   45,   45,
+     1173,   45,   45,   45,   45,   45,   45,   45, 1173,   45,
+       45, 1173,    0, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173
     } ;
 
-static const flex_int16_t yy_nxt[1600] =
+static const flex_int16_t yy_nxt[1609] =
     {   0,
-     1165,   13,   14,   13, 1165,   15,   16, 1165,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   85,  597,
-       37,   14,   37,   86,   25,   26,   38, 1165,  598,   27,
+     1173,   13,   14,   13, 1173,   15,   16, 1173,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   85,  602,
+       37,   14,   37,   86,   25,   26,   38, 1173,  603,   27,
        37,   14,   37,   42,   28,   42,   38,   91,   92,   29,
       113,   30,   13,   14,   13,   90,   91,   25,   31,   92,
-       13,   14,   13,   13,   14,   13,   32,   40,  782,   13,
-       14,   13,   33,   40,  113,   91,   92,  783,   90,   34,
+       13,   14,   13,   13,   14,   13,   32,   40, 1173,   13,
+       14,   13,   33,   40,  113,   91,   92,  780,   90,   34,
        35,   13,   14,   13,   94,   15,   16,   95,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
        13,  107,   39,   90,   25,   26,   13,   14,   13,   27,
        82,  110,  120,  126,  129,  121,  127,   82,  122,  104,
       123,  111,  124,  106,  117,  130,  112,  144,   82,  128,
       118,  145,  136,   82,  110,  131,  208,  102,  209,  153,
-       82,   45,  137,  154,  138,  336,  106,   45,  337,  111,
+       82,   45,  137,  154,  138,  338,  106,   45,  339,  111,
        45,  146,   45,  155,   45,   45,   45,  132,  115,  140,
       141,   45,   45,  142,   45,   45,   89,   89,   89,  143,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,  150,  159,  101,   45,  109,  151,
       152,   45,  110,  112,  172,  160,  161,  785,  170,   45,
-      358,  162,  111,   45,  172,   45,  116,  147,  786,  148,
-      359,  149,   84,   84,   84,  110,  165,  163,   89,   89,
+      360,  162,  111,   45,  172,   45,  116,  147,  786,  148,
+      361,  149,   84,   84,   84,  110,  165,  163,   89,   89,
        89,  102,  172,   82,  170,   80,  166,   81,   81,   81,
       111,  167,  175,  171,   88,  180,   88,  164,   82,   89,
        89,   89,   84,   84,   84,   80,   82,   83,   83,   83,
       100,  170,  171,   82,  182,  183,  185,  100,   82,  171,
       186,   82,  187,  180,  188,  189,  180,  213,  225,  185,
 
-      214,  384,  226,  413,  215,  385,   82,  173,  174,  242,
-      182,   82,  183,  414,  185,  100,  243,  186,  189,  100,
-      187,  188,  265,  100,  193,  235,  236,  185,  251,  231,
-      238,  100,  252,  239,  240,  100,  253,  100,  178,  192,
-      192,  192,  244,  245,  246,  265,  192,  192,  192,  192,
-      192,  192,  188,  247,  263,  248,  275,  249,  264,  263,
-      250,  787,  264,  265,  274,  367,  272,  277,  279,  192,
-      192,  192,  192,  192,  192,  281,  272,  360,  354,  259,
-      360,  378,  263,  275,  264,  354,  268,  266,  267,  272,
-      277,  279,  274,  367,  289,  364,  408,  409,  379,  283,
-
-      290,  354,  281,  282,  282,  282,  360,  422,  355,  371,
-      282,  282,  282,  282,  282,  282,  361,  362,  364,  607,
-      788,  445,  748,  791,  395,  363,  446,  452,  452,  396,
-      459,  577,  460,  282,  282,  282,  282,  282,  282,  370,
-      370,  370,  607,  472,  792,  748,  370,  370,  370,  370,
-      370,  370,  535,  789,  664,  452,  461,  459,  473,  460,
-      532,  665,  793,  423,  790,  537,  536,  606,  578,  370,
-      370,  370,  370,  370,  370,  397,  747,  794,  611,  535,
-      398,   45,   45,   45,  612,  795,  796,  797,   45,   45,
-       45,   45,   45,   45,  536,  606,  666,  667,  680,  670,
-
-      798,  799,  718,  747,  668,  671,  719,  800,  801,  802,
-      803,   45,   45,   45,   45,   45,   45,  774,  804,  805,
-      806,  807,  775,  808,  809,  810,  680,  811,  812,  813,
-      815,  814,  816,  817,  818,  819,  820,  821,  822,  823,
-      824,  825,  826,  827,  828,  829,  830,  831,  832,  833,
-      834,  835,  836,  837,  838,  839,  841,  813,  814,  842,
-      840,  843,  844,  845,  846,  847,  848,  849,  850,  851,
-      852,  853,  854,  776,  855,  856,  857,  858,  859,  860,
-      861,  862,  863,  864,  865,  866,  867,  868,  869,  870,
-      871,  872,  873,  874,  875,  876,  877,  878,  879,  880,
-
-      881,  882,  883,  884,  885,  886,  887,  888,  889,  890,
-      891,  892,  893,  894,  895,  896,  874,  897,  898,  899,
-      900,  901,  875,  902,  903,  904,  905,  906,  907,  908,
-      909,  910,  911,  912,  913,  914,  915,  917,  918,  919,
-      920,  921,  922,  923,  924,  925,  926,  927,  928,  929,
-      930,  932,  933,  934,  935,  936,  937,  938,  939,  940,
-      941,  942,  943,  944,  945,  946,  947,  948,  949,  950,
-      951,  952,  953,  955,  926,  956,  957,  958,  959,  960,
-      954,  961,  962,  963,  964,  965,  966,  916,  967,  968,
-      969,  970,  931,  971,  973,  974,  975,  976,  972,  977,
-
-      978,  979,  980,  981,  982,  983,  984,  985,  986,  987,
-      988,  989,  990,  991,  992,  993,  994,  973,  995,  996,
-      997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
-     1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016,
-     1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026,
-     1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1008, 1035,
-     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
-     1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
-     1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065,
-     1066, 1067, 1068, 1069, 1070, 1043, 1071, 1072, 1073, 1074,
-
-     1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
-     1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
-     1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104,
-     1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
-     1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124,
-     1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134,
-     1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144,
-     1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154,
-     1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164,
-       12,   12,   12,   12,   12,   36,   36,   36,   36,   36,
-
-       79,  270,   79,   79,   79,   98,  357,   98,  449,   98,
-      100,  100,  100,  100,  100,  114,  114,  114,  114,  114,
-      169,  100,  169,  169,  169,  190,  190,  190,  781,  780,
-      779,  778,  777,  773,  772,  771,  770,  769,  768,  767,
+      214,  188,  226,  415,  215,  787,   82,  173,  174,  242,
+      182,   82,  183,  416,  185,  100,  243,  186,  189,  100,
+      187,  188,  266,  100,  193,  235,  236,  185,  260,  231,
+      238,  100,  244,  239,  240,  100,  264,  100,  178,  192,
+      192,  192,  265,  410,  411,  266,  192,  192,  192,  192,
+      192,  192,  252,  264,  266,  788,  253,  275,  265,  273,
+      254,  276,  282,  278,  264,  245,  246,  247,  265,  192,
+      192,  192,  192,  192,  192,  280,  248,  269,  249,  273,
+      250,  267,  273,  251,  268,  275,  278,  290,  276,  282,
+      356,  356,  362,  291,  363,  364,  366,  369,  280,  283,
+
+      283,  283,  284,  365,  424,  380,  283,  283,  283,  283,
+      283,  283,  362,  356,  357,  612,  386,  789,  790,  366,
+      387,  362,  381,  397,  455,  369,  455,  581,  398,  283,
+      283,  283,  283,  283,  283,  372,  372,  372,  612,  791,
+      475,  373,  372,  372,  372,  372,  372,  372,  448,  462,
+      539,  463,  455,  449,  464,  476,  540,  536,  611,  724,
+      425,  792,  541,  725,  582,  372,  372,  372,  372,  372,
+      372,  793,  686,  794,  399,  754,  462,  539,  463,  400,
+       45,   45,   45,  755,  540,  795,  611,   45,   45,   45,
+       45,   45,   45,  616,  670,  672,  673,  796,  676,  617,
+
+      686,  671,  754,  674,  677,  798,  755,  799,  797,  800,
+       45,   45,   45,   45,   45,   45,  781,  801,  802,  803,
+      804,  782,  805,  806,  807,  808,  809,  810,  811,  812,
+      813,  814,  815,  816,  817,  818,  819,  820,  821,  823,
+      822,  824,  825,  826,  827,  828,  829,  830,  831,  832,
+      833,  834,  835,  836,  837,  838,  839,  840,  841,  842,
+      843,  844,  845,  846,  847,  849,  821,  822,  850,  848,
+      851,  852,  783,  853,  854,  855,  856,  857,  858,  859,
+      860,  861,  862,  863,  864,  865,  866,  867,  868,  869,
+      870,  871,  872,  873,  874,  875,  876,  877,  878,  879,
+
+      880,  881,  882,  883,  884,  885,  886,  887,  888,  889,
+      890,  891,  892,  893,  894,  895,  896,  897,  898,  899,
+      900,  901,  902,  903,  904,  882,  905,  906,  907,  908,
+      909,  883,  910,  911,  912,  913,  914,  915,  916,  917,
+      918,  919,  920,  921,  922,  923,  925,  926,  927,  928,
+      929,  930,  931,  932,  933,  934,  935,  936,  937,  938,
+      940,  941,  942,  943,  944,  945,  946,  947,  948,  949,
+      950,  951,  952,  953,  954,  955,  956,  957,  958,  959,
+      960,  961,  963,  934,  964,  965,  966,  967,  968,  962,
+      969,  970,  971,  972,  973,  974,  924,  975,  976,  977,
+
+      978,  939,  979,  981,  982,  983,  984,  980,  985,  986,
+      987,  988,  989,  990,  991,  992,  993,  994,  995,  996,
+      997,  998,  999, 1000, 1001, 1002,  981, 1003, 1004, 1005,
+     1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015,
+     1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
+     1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
+     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1016, 1043, 1044,
+     1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054,
+     1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064,
+     1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074,
+
+     1075, 1076, 1077, 1078, 1051, 1079, 1080, 1081, 1082, 1083,
+     1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093,
+     1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
+     1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113,
+     1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
+     1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
+     1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
+     1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
+     1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163,
+     1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172,   12,
+
+       12,   12,   12,   12,   36,   36,   36,   36,   36,   79,
+      271,   79,   79,   79,   98,  359,   98,  452,   98,  100,
+      100,  100,  100,  100,  114,  114,  114,  114,  114,  169,
+      100,  169,  169,  169,  190,  190,  190,  779,  778,  777,
+      776,  775,  774,  773,  772,  771,  770,  769,  768,  767,
       766,  765,  764,  763,  762,  761,  760,  759,  758,  757,
-      756,  755,  754,  753,  752,  751,  750,  749,  746,  745,
+      756,  753,  752,  751,  750,  749,  748,  747,  746,  745,
       744,  743,  742,  741,  740,  739,  738,  737,  736,  735,
-      734,  733,  732,  731,  730,  729,  728,  727,  726,  725,
-      724,  723,  722,  721,  720,  717,  716,  715,  714,  713,
-      712,  711,  710,  709,  708,  707,  706,  705,  704,  703,
+      734,  733,  732,  731,  730,  729,  728,  727,  726,  723,
+      722,  721,  720,  719,  718,  717,  716,  715,  714,  713,
 
+      712,  711,  710,  709,  708,  707,  706,  705,  704,  703,
       702,  701,  700,  699,  698,  697,  696,  695,  694,  693,
-      692,  691,  690,  689,  688,  687,  686,  685,  684,  683,
-      682,  681,  679,  678,  677,  676,  675,  674,  673,  672,
-      669,  663,  662,  661,  660,  659,  658,  657,  656,  655,
+      692,  691,  690,  689,  688,  687,  685,  684,  683,  682,
+      681,  680,  679,  678,  675,  669,  668,  667,  666,  665,
+      664,  663,  662,  661,  660,  659,  658,  657,  656,  655,
       654,  653,  652,  651,  650,  649,  648,  647,  646,  645,
       644,  643,  642,  641,  640,  639,  638,  637,  636,  635,
       634,  633,  632,  631,  630,  629,  628,  627,  626,  625,
-      624,  623,  622,  621,  620,  619,  618,  617,  616,  615,
-      614,  613,  610,  609,  608,  605,  604,  603,  602,  601,
-      600,  599,  596,  595,  594,  593,  592,  591,  590,  589,
+      624,  623,  622,  621,  620,  619,  618,  615,  614,  613,
+      610,  609,  608,  607,  606,  605,  604,  601,  600,  599,
 
-      588,  587,  586,  585,  584,  583,  582,  581,  580,  579,
+      598,  597,  596,  595,  594,  593,  592,  591,  590,  589,
+      588,  587,  586,  585,  584,  583,  580,  579,  578,  577,
       576,  575,  574,  573,  572,  571,  570,  569,  568,  567,
       566,  565,  564,  563,  562,  561,  560,  559,  558,  557,
       556,  555,  554,  553,  552,  551,  550,  549,  548,  547,
-      546,  545,  544,  543,  542,  541,  540,  539,  538,  534,
+      546,  545,  544,  543,  542,  538,  537,  536,  535,  534,
       533,  532,  531,  530,  529,  528,  527,  526,  525,  524,
       523,  522,  521,  520,  519,  518,  517,  516,  515,  514,
       513,  512,  511,  510,  509,  508,  507,  506,  505,  504,
       503,  502,  501,  500,  499,  498,  497,  496,  495,  494,
-      493,  492,  491,  490,  489,  488,  487,  486,  485,  484,
 
-      483,  482,  481,  480,  479,  478,  477,  476,  475,  474,
-      471,  470,  469,  468,  467,  466,  465,  464,  463,  462,
-      458,  457,  456,  455,  454,  453,  451,  450,  448,  447,
+      493,  492,  491,  490,  489,  488,  487,  486,  485,  484,
+      483,  482,  481,  480,  479,  478,  477,  474,  473,  472,
+      471,  470,  469,  468,  467,  466,  465,  461,  460,  459,
+      458,  457,  456,  454,  453,  451,  450,  447,  446,  445,
       444,  443,  442,  441,  440,  439,  438,  437,  436,  435,
-      434,  433,  432,  431,  430,  429,  428,  427,  426,  425,
-      424,  421,  420,  419,  418,  417,  416,  415,  412,  411,
-      410,  407,  406,  405,  404,  403,  402,  401,  400,  399,
-      394,  393,  392,  391,  390,  389,  388,  387,  386,  383,
-      382,  381,  380,  377,  376,  375,  374,  373,  372,  369,
-      368,  366,  365,  356,  353,  352,  351,  350,  349,  348,
-
-      347,  346,  345,  344,  343,  342,  341,  340,  339,  338,
+      434,  433,  432,  431,  430,  429,  428,  427,  426,  423,
+      422,  421,  420,  419,  418,  417,  414,  413,  412,  409,
+      408,  407,  406,  405,  404,  403,  402,  401,  396,  395,
+      394,  393,  392,  391,  390,  389,  388,  385,  384,  383,
+      382,  379,  378,  377,  376,  375,  374,  371,  370,  368,
+
+      367,  358,  355,  354,  353,  352,  351,  350,  349,  348,
+      347,  346,  345,  344,  343,  342,  341,  340,  337,  336,
       335,  334,  333,  332,  331,  330,  329,  328,  327,  326,
       325,  324,  323,  322,  321,  320,  319,  318,  317,  316,
       315,  314,  313,  312,  311,  310,  309,  308,  307,  306,
       305,  304,  303,  302,  301,  300,  299,  298,  297,  296,
-      295,  294,  293,  292,  291,  288,  287,  286,  285,  284,
-      191,  280,  278,  276,  273,  271,  269,  262,  261,  260,
-      258,  257,  256,  255,  254,  241,  237,  234,  233,  232,
-      230,  229,  228,  227,  224,  223,  222,  221,  220,  219,
-      218,  217,  216,  212,  211,  210,  207,  206,  205,  202,
-
-      201,  200,  197,  196,  195,  194,  191,  184,  181,  179,
-      177,  176,  168,  156,  139,  133,  119,  108,  105,  103,
-       43,   99,   97,   96,   87,   43, 1165,   11, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165
-
+      295,  294,  293,  292,  289,  288,  287,  286,  285,  191,
+      281,  279,  277,  274,  272,  270,  263,  262,  261,  259,
+      258,  257,  256,  255,  241,  237,  234,  233,  232,  230,
+      229,  228,  227,  224,  223,  222,  221,  220,  219,  218,
+
+      217,  216,  212,  211,  210,  207,  206,  205,  202,  201,
+      200,  197,  196,  195,  194,  191,  184,  181,  179,  177,
+      176,  168,  156,  139,  133,  119,  108,  105,  103,   43,
+       99,   97,   96,   87,   43, 1173,   11, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173
     } ;
 
-static const flex_int16_t yy_chk[1600] =
+static const flex_int16_t yy_chk[1609] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,   21,  525,
-        3,    3,    3,   21,    1,    1,    3,    0,  525,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,   21,  529,
+        3,    3,    3,   21,    1,    1,    3,    0,  529,    1,
         4,    4,    4,   13,    1,   13,    4,   27,   28,    1,
        56,    1,    5,    5,    5,   26,   32,    1,    1,   33,
-        6,    6,    6,    7,    7,    7,    1,    7,  714,    8,
-        8,    8,    1,    8,   56,   27,   28,  715,   26,    1,
+        6,    6,    6,    7,    7,    7,    1,    7,    0,    8,
+        8,    8,    1,    8,   56,   27,   28,  712,   26,    1,
         1,    2,    2,    2,   32,    2,    2,   33,    2,    2,
         2,    2,    2,    2,    2,    2,    2,    2,    9,    9,
         9,   51,    5,   31,    2,    2,   10,   10,   10,    2,
         6,   20,   20,   20,    2,   37,    9,   37,   42,    2,
        42,    2,   20,   50,   10,   53,   31,    2,    2,   51,
       122,   74,   25,   65,   25,   74,    2,   25,   25,   25,
-      122,   65,    2,  126,  126,   20,   50,  716,   53,    2,
+      122,   65,    2,  126,  126,   20,   50,  714,   53,    2,
         2,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        19,   54,   60,   61,   62,   60,   61,   22,   60,   48,
        60,   54,   60,   63,   58,   62,   55,   69,   17,   61,
        58,   69,   66,   19,   54,   62,  130,   44,  130,   72,
-       22,   45,   66,   72,   66,  246,   63,   45,  246,   54,
+       22,   45,   66,   72,   66,  247,   63,   45,  247,   54,
        45,   69,   45,   72,   45,   45,   45,   63,   57,   68,
        68,   45,   45,   68,   45,   57,   88,   88,   88,   68,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   57,   71,   75,  100,   57,   70,   71,
-       71,   57,   76,   77,   92,   75,   75,  717,   90,   57,
-      271,   75,   76,   57,   95,   57,   57,   70,  718,   70,
-      271,   70,   80,   80,   80,   76,   77,   76,   89,   89,
+       71,   57,   76,   77,   92,   75,   75,  716,   90,   57,
+      272,   75,   76,   57,   95,   57,   57,   70,  717,   70,
+      272,   70,   80,   80,   80,   76,   77,   76,   89,   89,
        89,  100,   92,   80,   90,   81,   77,   81,   81,   81,
        76,   77,   95,   91,   82,  104,   82,   76,   81,   82,
        82,   82,   84,   84,   84,   83,   80,   83,   83,   83,
       102,   93,   94,   84,  106,  107,  109,  102,   83,   91,
       110,   81,  111,  104,  112,  113,  117,  134,  144,  149,
 
-      134,  296,  144,  320,  134,  296,   84,   93,   94,  157,
-      106,   83,  107,  320,  109,  102,  157,  110,  113,  102,
-      111,  112,  172,  102,  117,  153,  153,  149,  159,  149,
-      155,  102,  159,  155,  155,  102,  159,  102,  102,  116,
-      116,  116,  158,  158,  158,  172,  116,  116,  116,  116,
-      116,  116,  165,  158,  170,  158,  183,  158,  171,  173,
-      158,  719,  174,  175,  182,  277,  180,  185,  187,  116,
-      116,  116,  116,  116,  116,  189,  193,  272,  263,  165,
-      283,  290,  170,  183,  171,  266,  175,  173,  174,  180,
-      185,  187,  182,  277,  199,  274,  316,  316,  290,  193,
-
-      199,  263,  189,  192,  192,  192,  272,  328,  266,  283,
-      192,  192,  192,  192,  192,  192,  273,  273,  274,  536,
-      720,  352,  680,  722,  306,  273,  352,  360,  371,  306,
-      369,  503,  369,  192,  192,  192,  192,  192,  192,  282,
-      282,  282,  536,  384,  724,  680,  282,  282,  282,  282,
-      282,  282,  459,  721,  593,  360,  371,  369,  384,  369,
-      461,  593,  725,  328,  721,  461,  460,  535,  503,  282,
-      282,  282,  282,  282,  282,  306,  679,  726,  540,  459,
-      306,  370,  370,  370,  540,  728,  729,  730,  370,  370,
-      370,  370,  370,  370,  460,  535,  594,  594,  607,  596,
-
-      731,  732,  648,  679,  594,  596,  648,  733,  734,  735,
-      736,  370,  370,  370,  370,  370,  370,  707,  737,  738,
-      740,  741,  707,  742,  743,  744,  607,  745,  746,  747,
-      749,  748,  750,  751,  752,  754,  755,  756,  757,  758,
-      759,  761,  762,  763,  764,  765,  766,  767,  768,  769,
-      770,  771,  772,  773,  775,  776,  777,  747,  748,  778,
-      776,  779,  780,  781,  782,  783,  784,  785,  786,  787,
-      788,  789,  790,  707,  791,  792,  793,  794,  795,  796,
-      797,  798,  799,  800,  802,  803,  805,  806,  807,  808,
-      809,  810,  811,  813,  814,  815,  816,  818,  819,  820,
-
-      821,  824,  825,  826,  827,  828,  829,  830,  831,  832,
-      833,  834,  835,  836,  838,  840,  813,  842,  843,  844,
-      845,  846,  814,  848,  849,  850,  852,  853,  854,  857,
-      858,  859,  860,  861,  862,  863,  864,  865,  866,  867,
-      868,  869,  870,  871,  872,  873,  874,  875,  876,  877,
-      878,  879,  880,  881,  882,  883,  884,  885,  886,  888,
-      889,  890,  891,  892,  893,  894,  895,  896,  897,  898,
-      899,  900,  901,  902,  874,  905,  906,  907,  908,  909,
-      901,  910,  911,  912,  914,  915,  916,  864,  918,  922,
-      923,  924,  878,  925,  926,  928,  929,  931,  925,  932,
-
-      933,  934,  935,  936,  938,  939,  940,  941,  942,  943,
-      944,  945,  946,  948,  949,  951,  952,  926,  953,  954,
-      956,  957,  958,  959,  962,  964,  965,  967,  968,  970,
-      972,  973,  974,  975,  976,  977,  978,  979,  980,  981,
-      982,  983,  984,  985,  986,  987,  988,  989,  990,  991,
-      992,  993,  994,  995,  996,  997,  998,  999,  973, 1000,
-     1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1012,
-     1015, 1016, 1019, 1020, 1021, 1022, 1023, 1024, 1026, 1028,
-     1030, 1031, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040,
-     1042, 1043, 1044, 1046, 1047, 1008, 1048, 1049, 1050, 1051,
-
-     1053, 1054, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
-     1065, 1068, 1069, 1071, 1072, 1074, 1075, 1076, 1077, 1079,
-     1080, 1081, 1082, 1083, 1085, 1086, 1087, 1088, 1089, 1090,
-     1091, 1093, 1094, 1095, 1097, 1098, 1099, 1100, 1101, 1102,
-     1103, 1104, 1105, 1107, 1109, 1110, 1111, 1113, 1114, 1115,
-     1117, 1118, 1119, 1121, 1122, 1123, 1124, 1125, 1126, 1127,
-     1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137,
-     1138, 1139, 1141, 1142, 1143, 1144, 1145, 1146, 1150, 1151,
-     1152, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1162, 1163,
-     1166, 1166, 1166, 1166, 1166, 1167, 1167, 1167, 1167, 1167,
-
-     1168, 1174, 1168, 1168, 1168, 1169, 1175, 1169, 1176, 1169,
-     1170, 1170, 1170, 1170, 1170, 1171, 1171, 1171, 1171, 1171,
-     1172, 1177, 1172, 1172, 1172, 1173, 1173, 1173,  713,  712,
-      711,  710,  708,  706,  705,  703,  702,  701,  700,  699,
-      698,  697,  696,  695,  694,  693,  692,  691,  690,  689,
-      688,  687,  686,  685,  684,  683,  682,  681,  677,  676,
-      675,  674,  673,  671,  670,  669,  668,  667,  666,  665,
-      664,  663,  662,  661,  660,  659,  658,  657,  656,  655,
-      654,  652,  651,  650,  649,  647,  646,  645,  643,  642,
-      641,  638,  637,  636,  635,  634,  633,  632,  631,  630,
-
-      629,  628,  627,  626,  625,  624,  623,  622,  621,  620,
-      619,  618,  617,  616,  615,  614,  613,  612,  611,  610,
-      609,  608,  606,  604,  603,  602,  601,  600,  599,  598,
-      595,  592,  591,  590,  589,  588,  587,  586,  585,  584,
-      583,  582,  581,  580,  579,  578,  576,  575,  574,  573,
-      572,  571,  570,  569,  568,  567,  566,  565,  564,  563,
-      562,  561,  560,  559,  558,  557,  556,  555,  554,  553,
-      552,  551,  550,  549,  548,  547,  546,  545,  544,  543,
-      542,  541,  539,  538,  537,  534,  533,  531,  530,  528,
-      527,  526,  523,  522,  521,  520,  519,  518,  517,  515,
-
-      514,  513,  512,  511,  510,  509,  507,  506,  505,  504,
-      502,  501,  500,  499,  497,  496,  495,  494,  493,  492,
-      491,  490,  489,  488,  487,  486,  485,  484,  483,  482,
-      481,  480,  479,  478,  477,  476,  475,  474,  473,  472,
-      471,  470,  469,  468,  467,  466,  465,  464,  463,  457,
-      455,  452,  451,  450,  448,  447,  446,  444,  441,  440,
-      439,  438,  437,  436,  435,  434,  433,  432,  431,  430,
-      429,  428,  427,  426,  425,  423,  421,  420,  419,  418,
-      417,  416,  415,  414,  413,  411,  410,  409,  408,  407,
-      406,  405,  404,  403,  402,  401,  400,  399,  398,  397,
-
-      396,  394,  393,  392,  391,  390,  389,  388,  387,  385,
-      383,  382,  380,  379,  378,  377,  375,  374,  373,  372,
-      367,  366,  364,  363,  362,  361,  359,  358,  356,  353,
-      351,  349,  348,  347,  346,  345,  344,  343,  342,  341,
-      340,  339,  338,  337,  336,  335,  334,  332,  331,  330,
-      329,  327,  326,  325,  324,  323,  322,  321,  319,  318,
-      317,  315,  314,  313,  312,  311,  310,  309,  308,  307,
-      305,  304,  303,  302,  301,  300,  299,  298,  297,  295,
-      294,  293,  292,  289,  288,  287,  286,  285,  284,  281,
-      279,  276,  275,  269,  262,  261,  260,  259,  258,  257,
-
-      256,  255,  254,  253,  252,  251,  250,  249,  248,  247,
-      245,  244,  243,  242,  241,  240,  239,  238,  237,  236,
-      235,  234,  233,  232,  231,  230,  229,  228,  227,  226,
-      225,  224,  223,  222,  221,  220,  219,  218,  216,  215,
-      214,  213,  212,  211,  210,  209,  208,  207,  206,  205,
-      204,  203,  202,  201,  200,  198,  197,  196,  195,  194,
-      190,  188,  186,  184,  181,  179,  176,  168,  167,  166,
-      164,  163,  162,  161,  160,  156,  154,  152,  151,  150,
-      148,  147,  146,  145,  143,  142,  141,  140,  139,  138,
-      137,  136,  135,  133,  132,  131,  129,  128,  127,  125,
-
-      124,  123,  121,  120,  119,  118,  114,  108,  105,  103,
-       98,   97,   78,   73,   67,   64,   59,   52,   49,   47,
-       43,   41,   39,   38,   24,   14,   11, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165
-
+      134,  165,  144,  321,  134,  718,   84,   93,   94,  157,
+      106,   83,  107,  321,  109,  102,  157,  110,  113,  102,
+      111,  112,  172,  102,  117,  153,  153,  149,  165,  149,
+      155,  102,  158,  155,  155,  102,  170,  102,  102,  116,
+      116,  116,  171,  317,  317,  172,  116,  116,  116,  116,
+      116,  116,  159,  173,  175,  719,  159,  182,  174,  180,
+      159,  183,  189,  185,  170,  158,  158,  158,  171,  116,
+      116,  116,  116,  116,  116,  187,  158,  175,  158,  193,
+      158,  173,  180,  158,  174,  182,  185,  199,  183,  189,
+      264,  267,  273,  199,  274,  274,  275,  278,  187,  192,
+
+      192,  192,  193,  274,  329,  291,  192,  192,  192,  192,
+      192,  192,  284,  264,  267,  540,  297,  720,  721,  275,
+      297,  273,  291,  307,  362,  278,  373,  506,  307,  192,
+      192,  192,  192,  192,  192,  283,  283,  283,  540,  722,
+      386,  284,  283,  283,  283,  283,  283,  283,  354,  371,
+      462,  371,  362,  354,  373,  386,  463,  464,  539,  653,
+      329,  723,  464,  653,  506,  283,  283,  283,  283,  283,
+      283,  724,  612,  725,  307,  685,  371,  462,  371,  307,
+      372,  372,  372,  686,  463,  726,  539,  372,  372,  372,
+      372,  372,  372,  544,  598,  599,  599,  727,  601,  544,
+
+      612,  598,  685,  599,  601,  728,  686,  730,  727,  731,
+      372,  372,  372,  372,  372,  372,  713,  732,  733,  735,
+      736,  713,  737,  738,  739,  740,  741,  742,  743,  744,
+      745,  747,  748,  749,  750,  751,  752,  753,  754,  756,
+      755,  757,  758,  759,  761,  762,  763,  764,  765,  766,
+      768,  769,  770,  771,  772,  773,  774,  775,  776,  777,
+      778,  779,  780,  782,  783,  784,  754,  755,  785,  783,
+      786,  787,  713,  788,  789,  790,  791,  792,  793,  794,
+      795,  796,  797,  798,  799,  800,  801,  803,  804,  805,
+      806,  807,  808,  810,  811,  813,  814,  815,  816,  817,
+
+      818,  819,  821,  822,  823,  824,  826,  827,  828,  829,
+      832,  833,  834,  835,  836,  837,  838,  839,  840,  841,
+      842,  843,  844,  846,  848,  821,  850,  851,  852,  853,
+      854,  822,  856,  857,  858,  860,  861,  862,  865,  866,
+      867,  868,  869,  870,  871,  872,  873,  874,  875,  876,
+      877,  878,  879,  880,  881,  882,  883,  884,  885,  886,
+      887,  888,  889,  890,  891,  892,  893,  894,  896,  897,
+      898,  899,  900,  901,  902,  903,  904,  905,  906,  907,
+      908,  909,  910,  882,  913,  914,  915,  916,  917,  909,
+      918,  919,  920,  922,  923,  924,  872,  926,  930,  931,
+
+      932,  886,  933,  934,  936,  937,  939,  933,  940,  941,
+      942,  943,  944,  946,  947,  948,  949,  950,  951,  952,
+      953,  954,  956,  957,  959,  960,  934,  961,  962,  964,
+      965,  966,  967,  970,  972,  973,  975,  976,  978,  980,
+      981,  982,  983,  984,  985,  986,  987,  988,  989,  990,
+      991,  992,  993,  994,  995,  996,  997,  998,  999, 1000,
+     1001, 1002, 1003, 1004, 1005, 1006, 1007,  981, 1008, 1009,
+     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1020, 1023,
+     1024, 1027, 1028, 1029, 1030, 1031, 1032, 1034, 1036, 1038,
+     1039, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1050,
+
+     1051, 1052, 1054, 1055, 1016, 1056, 1057, 1058, 1059, 1061,
+     1062, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1073,
+     1076, 1077, 1079, 1080, 1082, 1083, 1084, 1085, 1087, 1088,
+     1089, 1090, 1091, 1093, 1094, 1095, 1096, 1097, 1098, 1099,
+     1101, 1102, 1103, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
+     1112, 1113, 1115, 1117, 1118, 1119, 1121, 1122, 1123, 1125,
+     1126, 1127, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136,
+     1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146,
+     1147, 1149, 1150, 1151, 1152, 1153, 1154, 1158, 1159, 1160,
+     1162, 1163, 1164, 1165, 1166, 1167, 1168, 1170, 1171, 1174,
+
+     1174, 1174, 1174, 1174, 1175, 1175, 1175, 1175, 1175, 1176,
+     1182, 1176, 1176, 1176, 1177, 1183, 1177, 1184, 1177, 1178,
+     1178, 1178, 1178, 1178, 1179, 1179, 1179, 1179, 1179, 1180,
+     1185, 1180, 1180, 1180, 1181, 1181, 1181,  711,  709,  708,
+      707,  706,  705,  704,  703,  702,  701,  700,  699,  698,
+      697,  696,  695,  694,  693,  692,  691,  690,  689,  688,
+      687,  683,  682,  681,  680,  679,  677,  676,  675,  674,
+      673,  672,  671,  670,  669,  668,  667,  666,  665,  664,
+      663,  662,  661,  660,  659,  657,  656,  655,  654,  652,
+      651,  650,  648,  647,  646,  643,  642,  641,  640,  639,
+
+      638,  637,  636,  635,  634,  633,  632,  631,  630,  629,
+      628,  627,  626,  625,  624,  623,  622,  621,  620,  619,
+      618,  617,  616,  615,  614,  613,  611,  609,  608,  607,
+      606,  605,  604,  603,  600,  597,  596,  595,  594,  593,
+      592,  591,  590,  589,  588,  587,  586,  585,  584,  583,
+      582,  580,  579,  578,  577,  576,  575,  574,  573,  572,
+      571,  570,  569,  568,  567,  566,  565,  564,  563,  562,
+      561,  560,  559,  558,  557,  556,  555,  554,  553,  552,
+      551,  550,  549,  548,  547,  546,  545,  543,  542,  541,
+      538,  537,  535,  534,  532,  531,  530,  527,  526,  525,
+
+      524,  523,  522,  521,  519,  518,  517,  516,  515,  514,
+      513,  512,  510,  509,  508,  507,  505,  504,  503,  502,
+      500,  499,  498,  497,  496,  495,  494,  493,  492,  491,
+      490,  489,  488,  487,  486,  485,  484,  483,  482,  481,
+      480,  479,  478,  477,  476,  475,  474,  473,  472,  471,
+      470,  469,  468,  467,  466,  460,  458,  455,  454,  453,
+      451,  450,  449,  447,  444,  443,  442,  441,  440,  439,
+      438,  437,  436,  435,  434,  433,  432,  431,  430,  429,
+      428,  427,  425,  423,  422,  421,  420,  419,  418,  417,
+      416,  415,  413,  412,  411,  410,  409,  408,  407,  406,
+
+      405,  404,  403,  402,  401,  400,  399,  398,  396,  395,
+      394,  393,  392,  391,  390,  389,  387,  385,  384,  382,
+      381,  380,  379,  377,  376,  375,  374,  369,  368,  366,
+      365,  364,  363,  361,  360,  358,  355,  353,  351,  350,
+      349,  348,  347,  346,  345,  344,  343,  342,  341,  340,
+      339,  338,  337,  336,  335,  333,  332,  331,  330,  328,
+      327,  326,  325,  324,  323,  322,  320,  319,  318,  316,
+      315,  314,  313,  312,  311,  310,  309,  308,  306,  305,
+      304,  303,  302,  301,  300,  299,  298,  296,  295,  294,
+      293,  290,  289,  288,  287,  286,  285,  282,  280,  277,
+
+      276,  270,  263,  262,  261,  260,  259,  258,  257,  256,
+      255,  254,  253,  252,  251,  250,  249,  248,  246,  245,
+      244,  243,  242,  241,  240,  239,  238,  237,  236,  235,
+      234,  233,  232,  231,  230,  229,  228,  227,  226,  225,
+      224,  223,  222,  221,  220,  219,  218,  216,  215,  214,
+      213,  212,  211,  210,  209,  208,  207,  206,  205,  204,
+      203,  202,  201,  200,  198,  197,  196,  195,  194,  190,
+      188,  186,  184,  181,  179,  176,  168,  167,  166,  164,
+      163,  162,  161,  160,  156,  154,  152,  151,  150,  148,
+      147,  146,  145,  143,  142,  141,  140,  139,  138,  137,
+
+      136,  135,  133,  132,  131,  129,  128,  127,  125,  124,
+      123,  121,  120,  119,  118,  114,  108,  105,  103,   98,
+       97,   78,   73,   67,   64,   59,   52,   49,   47,   43,
+       41,   39,   38,   24,   14,   11, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
+
+     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173
     } ;
 
 static yy_state_type yy_last_accepting_state;
 extern int parser4__flex_debug;
 int parser4__flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[143] =
+static const flex_int16_t yy_rule_linenum[144] =
     {   0,
       131,  133,  135,  140,  141,  146,  147,  148,  160,  163,
       168,  175,  184,  193,  202,  211,  221,  230,  239,  248,
-      257,  268,  277,  286,  295,  304,  314,  324,  334,  344,
-      354,  364,  374,  384,  394,  404,  414,  424,  433,  442,
-      451,  465,  480,  489,  498,  507,  516,  525,  534,  543,
-      552,  561,  570,  580,  589,  598,  607,  616,  625,  634,
-      643,  653,  663,  673,  682,  692,  702,  712,  722,  731,
-      741,  750,  759,  768,  777,  786,  796,  806,  815,  824,
+      257,  266,  277,  286,  295,  304,  313,  323,  333,  343,
+      353,  363,  373,  383,  393,  403,  413,  423,  433,  442,
+      451,  460,  474,  489,  498,  507,  516,  525,  534,  543,
+      552,  561,  570,  579,  589,  598,  607,  616,  625,  634,
+      643,  652,  662,  672,  682,  691,  701,  711,  721,  731,
+      740,  750,  759,  768,  777,  786,  795,  805,  815,  824,
       833,  842,  851,  860,  869,  878,  887,  896,  905,  914,
       923,  932,  941,  950,  959,  968,  977,  986,  995, 1004,
 
-     1013, 1022, 1031, 1040, 1049, 1058, 1068, 1078, 1088, 1098,
-     1108, 1118, 1128, 1138, 1148, 1157, 1166, 1175, 1184, 1193,
-     1203, 1213, 1225, 1236, 1249, 1347, 1352, 1357, 1362, 1363,
-     1364, 1365, 1366, 1367, 1369, 1387, 1400, 1405, 1409, 1411,
-     1413, 1415
+     1013, 1022, 1031, 1040, 1049, 1058, 1067, 1077, 1087, 1097,
+     1107, 1117, 1127, 1137, 1147, 1157, 1166, 1175, 1184, 1193,
+     1202, 1212, 1222, 1234, 1245, 1258, 1356, 1361, 1366, 1371,
+     1372, 1373, 1374, 1375, 1376, 1378, 1396, 1409, 1414, 1418,
+     1420, 1422, 1424
     } ;
 
 /* The intent behind this definition is that it'll catch
 
 // To avoid the call to exit... oops!
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1406 "dhcp4_lexer.cc"
+#line 1411 "dhcp4_lexer.cc"
 /* noyywrap disables automatic rewinding for the next file to parse. Since we
    always parse only a single string, there's no need to do any wraps. And
    using yywrap requires linking with -lfl, which provides the default yywrap
 // by moving it ahead by yyleng bytes. yyleng specifies the length of the
 // currently matched token.
 #define YY_USER_ACTION  driver.loc_.columns(yyleng);
-#line 1432 "dhcp4_lexer.cc"
-#line 1433 "dhcp4_lexer.cc"
+#line 1437 "dhcp4_lexer.cc"
+#line 1438 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
     }
 
 
-#line 1755 "dhcp4_lexer.cc"
+#line 1760 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 1166 )
+                               if ( yy_current_state >= 1174 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1165 );
+               while ( yy_current_state != 1173 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 143 )
+                       else if ( yy_act < 144 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], parser4_text );
-                       else if ( yy_act == 143 )
+                       else if ( yy_act == 144 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         parser4_text );
-                       else if ( yy_act == 144 )
+                       else if ( yy_act == 145 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
 case 18:
 YY_RULE_SETUP
 #line 230 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
+        return  isc::dhcp::Dhcp4Parser::make_RE_DETECT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("re-detect", driver.loc_);
+    }
+}
+       YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 239 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 19:
+case 20:
 YY_RULE_SETUP
-#line 239 "dhcp4_lexer.ll"
+#line 248 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 20:
+case 21:
 YY_RULE_SETUP
-#line 248 "dhcp4_lexer.ll"
+#line 257 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOSTS_DATABASE:
     }
 }
        YY_BREAK
-case 21:
+case 22:
 YY_RULE_SETUP
-#line 257 "dhcp4_lexer.ll"
+#line 266 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 22:
+case 23:
 YY_RULE_SETUP
-#line 268 "dhcp4_lexer.ll"
+#line 277 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DATABASE_TYPE:
     }
 }
        YY_BREAK
-case 23:
+case 24:
 YY_RULE_SETUP
-#line 277 "dhcp4_lexer.ll"
+#line 286 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DATABASE_TYPE:
     }
 }
        YY_BREAK
-case 24:
+case 25:
 YY_RULE_SETUP
-#line 286 "dhcp4_lexer.ll"
+#line 295 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DATABASE_TYPE:
     }
 }
        YY_BREAK
-case 25:
+case 26:
 YY_RULE_SETUP
-#line 295 "dhcp4_lexer.ll"
+#line 304 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DATABASE_TYPE:
     }
 }
        YY_BREAK
-case 26:
+case 27:
 YY_RULE_SETUP
-#line 304 "dhcp4_lexer.ll"
+#line 313 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 27:
+case 28:
 YY_RULE_SETUP
-#line 314 "dhcp4_lexer.ll"
+#line 323 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 28:
+case 29:
 YY_RULE_SETUP
-#line 324 "dhcp4_lexer.ll"
+#line 333 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 29:
+case 30:
 YY_RULE_SETUP
-#line 334 "dhcp4_lexer.ll"
+#line 343 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 30:
+case 31:
 YY_RULE_SETUP
-#line 344 "dhcp4_lexer.ll"
+#line 353 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 31:
+case 32:
 YY_RULE_SETUP
-#line 354 "dhcp4_lexer.ll"
+#line 363 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 32:
+case 33:
 YY_RULE_SETUP
-#line 364 "dhcp4_lexer.ll"
+#line 373 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 33:
+case 34:
 YY_RULE_SETUP
-#line 374 "dhcp4_lexer.ll"
+#line 383 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 34:
+case 35:
 YY_RULE_SETUP
-#line 384 "dhcp4_lexer.ll"
+#line 393 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 35:
+case 36:
 YY_RULE_SETUP
-#line 394 "dhcp4_lexer.ll"
+#line 403 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 36:
+case 37:
 YY_RULE_SETUP
-#line 404 "dhcp4_lexer.ll"
+#line 413 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 37:
+case 38:
 YY_RULE_SETUP
-#line 414 "dhcp4_lexer.ll"
+#line 423 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 38:
+case 39:
 YY_RULE_SETUP
-#line 424 "dhcp4_lexer.ll"
+#line 433 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 39:
+case 40:
 YY_RULE_SETUP
-#line 433 "dhcp4_lexer.ll"
+#line 442 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 40:
+case 41:
 YY_RULE_SETUP
-#line 442 "dhcp4_lexer.ll"
+#line 451 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 41:
+case 42:
 YY_RULE_SETUP
-#line 451 "dhcp4_lexer.ll"
+#line 460 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 42:
+case 43:
 YY_RULE_SETUP
-#line 465 "dhcp4_lexer.ll"
+#line 474 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 43:
+case 44:
 YY_RULE_SETUP
-#line 480 "dhcp4_lexer.ll"
+#line 489 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
     }
 }
        YY_BREAK
-case 44:
+case 45:
 YY_RULE_SETUP
-#line 489 "dhcp4_lexer.ll"
+#line 498 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 45:
+case 46:
 YY_RULE_SETUP
-#line 498 "dhcp4_lexer.ll"
+#line 507 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::POOLS:
     }
 }
        YY_BREAK
-case 46:
+case 47:
 YY_RULE_SETUP
-#line 507 "dhcp4_lexer.ll"
+#line 516 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::POOLS:
     }
 }
        YY_BREAK
-case 47:
+case 48:
 YY_RULE_SETUP
-#line 516 "dhcp4_lexer.ll"
+#line 525 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 48:
+case 49:
 YY_RULE_SETUP
-#line 525 "dhcp4_lexer.ll"
+#line 534 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 49:
+case 50:
 YY_RULE_SETUP
-#line 534 "dhcp4_lexer.ll"
+#line 543 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 50:
+case 51:
 YY_RULE_SETUP
-#line 543 "dhcp4_lexer.ll"
+#line 552 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 51:
+case 52:
 YY_RULE_SETUP
-#line 552 "dhcp4_lexer.ll"
+#line 561 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 52:
+case 53:
 YY_RULE_SETUP
-#line 561 "dhcp4_lexer.ll"
+#line 570 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 53:
+case 54:
 YY_RULE_SETUP
-#line 570 "dhcp4_lexer.ll"
+#line 579 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
     }
 }
        YY_BREAK
-case 54:
+case 55:
 YY_RULE_SETUP
-#line 580 "dhcp4_lexer.ll"
+#line 589 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 55:
+case 56:
 YY_RULE_SETUP
-#line 589 "dhcp4_lexer.ll"
+#line 598 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
     }
 }
        YY_BREAK
-case 56:
+case 57:
 YY_RULE_SETUP
-#line 598 "dhcp4_lexer.ll"
+#line 607 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGING:
     }
 }
        YY_BREAK
-case 57:
+case 58:
 YY_RULE_SETUP
-#line 607 "dhcp4_lexer.ll"
+#line 616 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
     }
 }
        YY_BREAK
-case 58:
+case 59:
 YY_RULE_SETUP
-#line 616 "dhcp4_lexer.ll"
+#line 625 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
     }
 }
        YY_BREAK
-case 59:
+case 60:
 YY_RULE_SETUP
-#line 625 "dhcp4_lexer.ll"
+#line 634 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
     }
 }
        YY_BREAK
-case 60:
+case 61:
 YY_RULE_SETUP
-#line 634 "dhcp4_lexer.ll"
+#line 643 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
     }
 }
        YY_BREAK
-case 61:
+case 62:
 YY_RULE_SETUP
-#line 643 "dhcp4_lexer.ll"
+#line 652 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 62:
+case 63:
 YY_RULE_SETUP
-#line 653 "dhcp4_lexer.ll"
+#line 662 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 63:
+case 64:
 YY_RULE_SETUP
-#line 663 "dhcp4_lexer.ll"
+#line 672 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
     }
 }
        YY_BREAK
-case 64:
+case 65:
 YY_RULE_SETUP
-#line 673 "dhcp4_lexer.ll"
+#line 682 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 65:
+case 66:
 YY_RULE_SETUP
-#line 682 "dhcp4_lexer.ll"
+#line 691 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
     }
 }
        YY_BREAK
-case 66:
+case 67:
 YY_RULE_SETUP
-#line 692 "dhcp4_lexer.ll"
+#line 701 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
     }
 }
        YY_BREAK
-case 67:
+case 68:
 YY_RULE_SETUP
-#line 702 "dhcp4_lexer.ll"
+#line 711 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
     }
 }
        YY_BREAK
-case 68:
+case 69:
 YY_RULE_SETUP
-#line 712 "dhcp4_lexer.ll"
+#line 721 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
     }
 }
        YY_BREAK
-case 69:
+case 70:
 YY_RULE_SETUP
-#line 722 "dhcp4_lexer.ll"
+#line 731 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATIONS:
     }
 }
        YY_BREAK
-case 70:
+case 71:
 YY_RULE_SETUP
-#line 731 "dhcp4_lexer.ll"
+#line 740 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
     }
 }
        YY_BREAK
-case 71:
+case 72:
 YY_RULE_SETUP
-#line 741 "dhcp4_lexer.ll"
+#line 750 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
     }
 }
        YY_BREAK
-case 72:
+case 73:
 YY_RULE_SETUP
-#line 750 "dhcp4_lexer.ll"
+#line 759 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
     }
 }
        YY_BREAK
-case 73:
+case 74:
 YY_RULE_SETUP
-#line 759 "dhcp4_lexer.ll"
+#line 768 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
     }
 }
        YY_BREAK
-case 74:
+case 75:
 YY_RULE_SETUP
-#line 768 "dhcp4_lexer.ll"
+#line 777 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
     }
 }
        YY_BREAK
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 777 "dhcp4_lexer.ll"
+#line 786 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 786 "dhcp4_lexer.ll"
+#line 795 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
     }
 }
        YY_BREAK
-case 77:
+case 78:
 YY_RULE_SETUP
-#line 796 "dhcp4_lexer.ll"
+#line 805 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 78:
+case 79:
 YY_RULE_SETUP
-#line 806 "dhcp4_lexer.ll"
+#line 815 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
     }
 }
        YY_BREAK
-case 79:
+case 80:
 YY_RULE_SETUP
-#line 815 "dhcp4_lexer.ll"
+#line 824 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
     }
 }
        YY_BREAK
-case 80:
+case 81:
 YY_RULE_SETUP
-#line 824 "dhcp4_lexer.ll"
+#line 833 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 81:
+case 82:
 YY_RULE_SETUP
-#line 833 "dhcp4_lexer.ll"
+#line 842 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
     }
 }
        YY_BREAK
-case 82:
+case 83:
 YY_RULE_SETUP
-#line 842 "dhcp4_lexer.ll"
+#line 851 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
     }
 }
        YY_BREAK
-case 83:
+case 84:
 YY_RULE_SETUP
-#line 851 "dhcp4_lexer.ll"
+#line 860 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
     }
 }
        YY_BREAK
-case 84:
+case 85:
 YY_RULE_SETUP
-#line 860 "dhcp4_lexer.ll"
+#line 869 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
     }
 }
        YY_BREAK
-case 85:
+case 86:
 YY_RULE_SETUP
-#line 869 "dhcp4_lexer.ll"
+#line 878 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
     }
 }
        YY_BREAK
-case 86:
+case 87:
 YY_RULE_SETUP
-#line 878 "dhcp4_lexer.ll"
+#line 887 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
     }
 }
        YY_BREAK
-case 87:
+case 88:
 YY_RULE_SETUP
-#line 887 "dhcp4_lexer.ll"
+#line 896 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 896 "dhcp4_lexer.ll"
+#line 905 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 905 "dhcp4_lexer.ll"
+#line 914 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
     }
 }
        YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 914 "dhcp4_lexer.ll"
+#line 923 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
     }
 }
        YY_BREAK
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 923 "dhcp4_lexer.ll"
+#line 932 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 932 "dhcp4_lexer.ll"
+#line 941 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 941 "dhcp4_lexer.ll"
+#line 950 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 950 "dhcp4_lexer.ll"
+#line 959 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 959 "dhcp4_lexer.ll"
+#line 968 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 968 "dhcp4_lexer.ll"
+#line 977 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 977 "dhcp4_lexer.ll"
+#line 986 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 986 "dhcp4_lexer.ll"
+#line 995 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 995 "dhcp4_lexer.ll"
+#line 1004 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 1004 "dhcp4_lexer.ll"
+#line 1013 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 1013 "dhcp4_lexer.ll"
+#line 1022 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 1022 "dhcp4_lexer.ll"
+#line 1031 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 1031 "dhcp4_lexer.ll"
+#line 1040 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 1040 "dhcp4_lexer.ll"
+#line 1049 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 1049 "dhcp4_lexer.ll"
+#line 1058 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
     }
 }
        YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 1058 "dhcp4_lexer.ll"
+#line 1067 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 1068 "dhcp4_lexer.ll"
+#line 1077 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 1078 "dhcp4_lexer.ll"
+#line 1087 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 1088 "dhcp4_lexer.ll"
+#line 1097 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 1098 "dhcp4_lexer.ll"
+#line 1107 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 1108 "dhcp4_lexer.ll"
+#line 1117 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 1118 "dhcp4_lexer.ll"
+#line 1127 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 1128 "dhcp4_lexer.ll"
+#line 1137 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 1138 "dhcp4_lexer.ll"
+#line 1147 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 1148 "dhcp4_lexer.ll"
+#line 1157 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
     }
 }
        YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 1157 "dhcp4_lexer.ll"
+#line 1166 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
     }
 }
        YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 1166 "dhcp4_lexer.ll"
+#line 1175 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 1175 "dhcp4_lexer.ll"
+#line 1184 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 119:
+case 120:
 YY_RULE_SETUP
-#line 1184 "dhcp4_lexer.ll"
+#line 1193 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 120:
+case 121:
 YY_RULE_SETUP
-#line 1193 "dhcp4_lexer.ll"
+#line 1202 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 121:
+case 122:
 YY_RULE_SETUP
-#line 1203 "dhcp4_lexer.ll"
+#line 1212 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 122:
+case 123:
 YY_RULE_SETUP
-#line 1213 "dhcp4_lexer.ll"
+#line 1222 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
     }
 }
        YY_BREAK
-case 123:
+case 124:
 YY_RULE_SETUP
-#line 1225 "dhcp4_lexer.ll"
+#line 1234 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 1236 "dhcp4_lexer.ll"
+#line 1245 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
     }
 }
        YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 1249 "dhcp4_lexer.ll"
+#line 1258 "dhcp4_lexer.ll"
 {
     // A string has been matched. It contains the actual string and single quotes.
     // We need to get those quotes out of the way and just use its content, e.g.
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 126:
-/* rule 126 can match eol */
+case 127:
+/* rule 127 can match eol */
 YY_RULE_SETUP
-#line 1347 "dhcp4_lexer.ll"
+#line 1356 "dhcp4_lexer.ll"
 {
     // Bad string with a forbidden control character inside
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 127:
-/* rule 127 can match eol */
+case 128:
+/* rule 128 can match eol */
 YY_RULE_SETUP
-#line 1352 "dhcp4_lexer.ll"
+#line 1361 "dhcp4_lexer.ll"
 {
     // Bad string with a bad escape inside
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 1357 "dhcp4_lexer.ll"
+#line 1366 "dhcp4_lexer.ll"
 {
     // Bad string with an open escape at the end
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 1362 "dhcp4_lexer.ll"
+#line 1371 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 1363 "dhcp4_lexer.ll"
+#line 1372 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 1364 "dhcp4_lexer.ll"
+#line 1373 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 1365 "dhcp4_lexer.ll"
+#line 1374 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 1366 "dhcp4_lexer.ll"
+#line 1375 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 1367 "dhcp4_lexer.ll"
+#line 1376 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 1369 "dhcp4_lexer.ll"
+#line 1378 "dhcp4_lexer.ll"
 {
     // An integer was found.
     std::string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 136:
+case 137:
 YY_RULE_SETUP
-#line 1387 "dhcp4_lexer.ll"
+#line 1396 "dhcp4_lexer.ll"
 {
     // A floating point was found.
     std::string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 1400 "dhcp4_lexer.ll"
+#line 1409 "dhcp4_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 1405 "dhcp4_lexer.ll"
+#line 1414 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 1409 "dhcp4_lexer.ll"
+#line 1418 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 1411 "dhcp4_lexer.ll"
+#line 1420 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 1413 "dhcp4_lexer.ll"
+#line 1422 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 1415 "dhcp4_lexer.ll"
+#line 1424 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1417 "dhcp4_lexer.ll"
+#line 1426 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 1440 "dhcp4_lexer.ll"
+#line 1449 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 3588 "dhcp4_lexer.cc"
+#line 3605 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 1166 )
+                       if ( yy_current_state >= 1174 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 1166 )
+               if ( yy_current_state >= 1174 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1165);
+       yy_is_jam = (yy_current_state == 1173);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
 
 /* %ok-for-header */
 
-#line 1440 "dhcp4_lexer.ll"
+#line 1449 "dhcp4_lexer.ll"
 
 
 using namespace isc::dhcp;
 
   {
       switch (that.type_get ())
     {
-      case 148: // value
-      case 152: // map_value
-      case 190: // socket_type
-      case 199: // db_type
-      case 404: // ncr_protocol_value
-      case 412: // replace_client_name_value
+      case 149: // value
+      case 153: // map_value
+      case 191: // socket_type
+      case 201: // db_type
+      case 406: // ncr_protocol_value
+      case 414: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 134: // "boolean"
+      case 135: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 133: // "floating point"
+      case 134: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 132: // "integer"
+      case 133: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 131: // "constant string"
+      case 132: // "constant string"
         value.move< std::string > (that.value);
         break;
 
     state = that.state;
       switch (that.type_get ())
     {
-      case 148: // value
-      case 152: // map_value
-      case 190: // socket_type
-      case 199: // db_type
-      case 404: // ncr_protocol_value
-      case 412: // replace_client_name_value
+      case 149: // value
+      case 153: // map_value
+      case 191: // socket_type
+      case 201: // db_type
+      case 406: // ncr_protocol_value
+      case 414: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 134: // "boolean"
+      case 135: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 133: // "floating point"
+      case 134: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 132: // "integer"
+      case 133: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 131: // "constant string"
+      case 132: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 131: // "constant string"
+            case 132: // "constant string"
 
-#line 206 "dhcp4_parser.yy" // lalr1.cc:636
+#line 207 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 362 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 132: // "integer"
+      case 133: // "integer"
 
-#line 206 "dhcp4_parser.yy" // lalr1.cc:636
+#line 207 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 369 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 133: // "floating point"
+      case 134: // "floating point"
 
-#line 206 "dhcp4_parser.yy" // lalr1.cc:636
+#line 207 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 376 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 134: // "boolean"
+      case 135: // "boolean"
 
-#line 206 "dhcp4_parser.yy" // lalr1.cc:636
+#line 207 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 383 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 148: // value
+      case 149: // value
 
-#line 206 "dhcp4_parser.yy" // lalr1.cc:636
+#line 207 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 390 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 152: // map_value
+      case 153: // map_value
 
-#line 206 "dhcp4_parser.yy" // lalr1.cc:636
+#line 207 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 397 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 190: // socket_type
+      case 191: // socket_type
 
-#line 206 "dhcp4_parser.yy" // lalr1.cc:636
+#line 207 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 404 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 199: // db_type
+      case 201: // db_type
 
-#line 206 "dhcp4_parser.yy" // lalr1.cc:636
+#line 207 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 411 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 404: // ncr_protocol_value
+      case 406: // ncr_protocol_value
 
-#line 206 "dhcp4_parser.yy" // lalr1.cc:636
+#line 207 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 418 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 412: // replace_client_name_value
+      case 414: // replace_client_name_value
 
-#line 206 "dhcp4_parser.yy" // lalr1.cc:636
+#line 207 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 425 "dhcp4_parser.cc" // lalr1.cc:636
         break;
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 148: // value
-      case 152: // map_value
-      case 190: // socket_type
-      case 199: // db_type
-      case 404: // ncr_protocol_value
-      case 412: // replace_client_name_value
+      case 149: // value
+      case 153: // map_value
+      case 191: // socket_type
+      case 201: // db_type
+      case 406: // ncr_protocol_value
+      case 414: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 134: // "boolean"
+      case 135: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 133: // "floating point"
+      case 134: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 132: // "integer"
+      case 133: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 131: // "constant string"
+      case 132: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
           switch (yyn)
             {
   case 2:
-#line 215 "dhcp4_parser.yy" // lalr1.cc:859
+#line 216 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 670 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 216 "dhcp4_parser.yy" // lalr1.cc:859
+#line 217 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 676 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 217 "dhcp4_parser.yy" // lalr1.cc:859
+#line 218 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP4; }
 #line 682 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 218 "dhcp4_parser.yy" // lalr1.cc:859
+#line 219 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 688 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 219 "dhcp4_parser.yy" // lalr1.cc:859
+#line 220 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET4; }
 #line 694 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 220 "dhcp4_parser.yy" // lalr1.cc:859
+#line 221 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 700 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 221 "dhcp4_parser.yy" // lalr1.cc:859
+#line 222 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 706 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 222 "dhcp4_parser.yy" // lalr1.cc:859
+#line 223 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 712 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 223 "dhcp4_parser.yy" // lalr1.cc:859
+#line 224 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 718 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 224 "dhcp4_parser.yy" // lalr1.cc:859
+#line 225 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 724 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 225 "dhcp4_parser.yy" // lalr1.cc:859
+#line 226 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 730 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 233 "dhcp4_parser.yy" // lalr1.cc:859
+#line 234 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 736 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 25:
-#line 234 "dhcp4_parser.yy" // lalr1.cc:859
+#line 235 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 742 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 235 "dhcp4_parser.yy" // lalr1.cc:859
+#line 236 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 748 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 236 "dhcp4_parser.yy" // lalr1.cc:859
+#line 237 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 754 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 237 "dhcp4_parser.yy" // lalr1.cc:859
+#line 238 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 760 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 238 "dhcp4_parser.yy" // lalr1.cc:859
+#line 239 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 766 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 239 "dhcp4_parser.yy" // lalr1.cc:859
+#line 240 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 772 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 242 "dhcp4_parser.yy" // lalr1.cc:859
+#line 243 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
     break;
 
   case 32:
-#line 247 "dhcp4_parser.yy" // lalr1.cc:859
+#line 248 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     break;
 
   case 33:
-#line 252 "dhcp4_parser.yy" // lalr1.cc:859
+#line 253 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     break;
 
   case 34:
-#line 258 "dhcp4_parser.yy" // lalr1.cc:859
+#line 259 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 808 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 37:
-#line 265 "dhcp4_parser.yy" // lalr1.cc:859
+#line 266 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
     break;
 
   case 38:
-#line 269 "dhcp4_parser.yy" // lalr1.cc:859
+#line 270 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
     break;
 
   case 39:
-#line 276 "dhcp4_parser.yy" // lalr1.cc:859
+#line 277 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
     break;
 
   case 40:
-#line 279 "dhcp4_parser.yy" // lalr1.cc:859
+#line 280 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
     break;
 
   case 43:
-#line 287 "dhcp4_parser.yy" // lalr1.cc:859
+#line 288 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
     break;
 
   case 44:
-#line 291 "dhcp4_parser.yy" // lalr1.cc:859
+#line 292 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
     break;
 
   case 45:
-#line 298 "dhcp4_parser.yy" // lalr1.cc:859
+#line 299 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
     break;
 
   case 46:
-#line 300 "dhcp4_parser.yy" // lalr1.cc:859
+#line 301 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
     break;
 
   case 49:
-#line 309 "dhcp4_parser.yy" // lalr1.cc:859
+#line 310 "dhcp4_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
     break;
 
   case 50:
-#line 313 "dhcp4_parser.yy" // lalr1.cc:859
+#line 314 "dhcp4_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
     break;
 
   case 51:
-#line 324 "dhcp4_parser.yy" // lalr1.cc:859
+#line 325 "dhcp4_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
     break;
 
   case 52:
-#line 334 "dhcp4_parser.yy" // lalr1.cc:859
+#line 335 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     break;
 
   case 53:
-#line 339 "dhcp4_parser.yy" // lalr1.cc:859
+#line 340 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     break;
 
   case 61:
-#line 358 "dhcp4_parser.yy" // lalr1.cc:859
+#line 359 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     break;
 
   case 62:
-#line 365 "dhcp4_parser.yy" // lalr1.cc:859
+#line 366 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     break;
 
   case 63:
-#line 375 "dhcp4_parser.yy" // lalr1.cc:859
+#line 376 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     break;
 
   case 64:
-#line 379 "dhcp4_parser.yy" // lalr1.cc:859
+#line 380 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
     break;
 
   case 88:
-#line 412 "dhcp4_parser.yy" // lalr1.cc:859
+#line 413 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
     break;
 
   case 89:
-#line 417 "dhcp4_parser.yy" // lalr1.cc:859
+#line 418 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
     break;
 
   case 90:
-#line 422 "dhcp4_parser.yy" // lalr1.cc:859
+#line 423 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
     break;
 
   case 91:
-#line 427 "dhcp4_parser.yy" // lalr1.cc:859
+#line 428 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
     break;
 
   case 92:
-#line 432 "dhcp4_parser.yy" // lalr1.cc:859
+#line 433 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("echo-client-id", echo);
     break;
 
   case 93:
-#line 437 "dhcp4_parser.yy" // lalr1.cc:859
+#line 438 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("match-client-id", match);
     break;
 
   case 94:
-#line 443 "dhcp4_parser.yy" // lalr1.cc:859
+#line 444 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
     break;
 
   case 95:
-#line 448 "dhcp4_parser.yy" // lalr1.cc:859
+#line 449 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 #line 1046 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 100:
-#line 461 "dhcp4_parser.yy" // lalr1.cc:859
+  case 101:
+#line 463 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
 #line 1056 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 101:
-#line 465 "dhcp4_parser.yy" // lalr1.cc:859
+  case 102:
+#line 467 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1064 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 102:
-#line 469 "dhcp4_parser.yy" // lalr1.cc:859
+  case 103:
+#line 471 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
 #line 1075 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 103:
-#line 474 "dhcp4_parser.yy" // lalr1.cc:859
+  case 104:
+#line 476 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 #line 1084 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 104:
-#line 479 "dhcp4_parser.yy" // lalr1.cc:859
+  case 105:
+#line 481 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
 }
 #line 1092 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 105:
-#line 481 "dhcp4_parser.yy" // lalr1.cc:859
+  case 106:
+#line 483 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 #line 1101 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 106:
-#line 486 "dhcp4_parser.yy" // lalr1.cc:859
+  case 107:
+#line 488 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
 #line 1107 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 107:
-#line 487 "dhcp4_parser.yy" // lalr1.cc:859
+  case 108:
+#line 489 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
 #line 1113 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 108:
-#line 490 "dhcp4_parser.yy" // lalr1.cc:859
+  case 109:
+#line 492 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("re-detect", b);
+}
+#line 1122 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 110:
+#line 498 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.LEASE_DATABASE);
 }
-#line 1124 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1133 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 109:
-#line 495 "dhcp4_parser.yy" // lalr1.cc:859
+  case 111:
+#line 503 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1133 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1142 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 110:
-#line 500 "dhcp4_parser.yy" // lalr1.cc:859
+  case 112:
+#line 508 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1144 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1153 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 111:
-#line 505 "dhcp4_parser.yy" // lalr1.cc:859
+  case 113:
+#line 513 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1153 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1162 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 127:
-#line 529 "dhcp4_parser.yy" // lalr1.cc:859
+  case 129:
+#line 537 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1161 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1170 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 128:
-#line 531 "dhcp4_parser.yy" // lalr1.cc:859
+  case 130:
+#line 539 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1170 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1179 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 129:
-#line 536 "dhcp4_parser.yy" // lalr1.cc:859
+  case 131:
+#line 544 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1176 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1185 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 130:
-#line 537 "dhcp4_parser.yy" // lalr1.cc:859
+  case 132:
+#line 545 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1182 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1191 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 131:
-#line 538 "dhcp4_parser.yy" // lalr1.cc:859
+  case 133:
+#line 546 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1188 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1197 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 132:
-#line 539 "dhcp4_parser.yy" // lalr1.cc:859
+  case 134:
+#line 547 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1194 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1203 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 133:
-#line 542 "dhcp4_parser.yy" // lalr1.cc:859
+  case 135:
+#line 550 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1202 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1211 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 134:
-#line 544 "dhcp4_parser.yy" // lalr1.cc:859
+  case 136:
+#line 552 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1212 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1221 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 135:
-#line 550 "dhcp4_parser.yy" // lalr1.cc:859
+  case 137:
+#line 558 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1220 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1229 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 136:
-#line 552 "dhcp4_parser.yy" // lalr1.cc:859
+  case 138:
+#line 560 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1230 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1239 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 137:
-#line 558 "dhcp4_parser.yy" // lalr1.cc:859
+  case 139:
+#line 566 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1238 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1247 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 138:
-#line 560 "dhcp4_parser.yy" // lalr1.cc:859
+  case 140:
+#line 568 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1248 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1257 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 139:
-#line 566 "dhcp4_parser.yy" // lalr1.cc:859
+  case 141:
+#line 574 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1257 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1266 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 140:
-#line 571 "dhcp4_parser.yy" // lalr1.cc:859
+  case 142:
+#line 579 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1265 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1274 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 141:
-#line 573 "dhcp4_parser.yy" // lalr1.cc:859
+  case 143:
+#line 581 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1275 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1284 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 142:
-#line 579 "dhcp4_parser.yy" // lalr1.cc:859
+  case 144:
+#line 587 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1284 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1293 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 143:
-#line 584 "dhcp4_parser.yy" // lalr1.cc:859
+  case 145:
+#line 592 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1293 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1302 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 144:
-#line 589 "dhcp4_parser.yy" // lalr1.cc:859
+  case 146:
+#line 597 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1302 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1311 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 145:
-#line 594 "dhcp4_parser.yy" // lalr1.cc:859
+  case 147:
+#line 602 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1311 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1320 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 146:
-#line 599 "dhcp4_parser.yy" // lalr1.cc:859
+  case 148:
+#line 607 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1319 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1328 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 147:
-#line 601 "dhcp4_parser.yy" // lalr1.cc:859
+  case 149:
+#line 609 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1329 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1338 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 148:
-#line 607 "dhcp4_parser.yy" // lalr1.cc:859
+  case 150:
+#line 615 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1337 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1346 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 149:
-#line 609 "dhcp4_parser.yy" // lalr1.cc:859
+  case 151:
+#line 617 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1347 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1356 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 150:
-#line 616 "dhcp4_parser.yy" // lalr1.cc:859
+  case 152:
+#line 624 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 1358 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1367 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 151:
-#line 621 "dhcp4_parser.yy" // lalr1.cc:859
+  case 153:
+#line 629 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1367 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1376 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 158:
-#line 636 "dhcp4_parser.yy" // lalr1.cc:859
+  case 160:
+#line 644 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1376 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1385 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 159:
-#line 641 "dhcp4_parser.yy" // lalr1.cc:859
+  case 161:
+#line 649 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1385 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1394 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 160:
-#line 646 "dhcp4_parser.yy" // lalr1.cc:859
+  case 162:
+#line 654 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
 }
-#line 1394 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1403 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 161:
-#line 651 "dhcp4_parser.yy" // lalr1.cc:859
+  case 163:
+#line 659 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
 }
-#line 1403 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1412 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 162:
-#line 656 "dhcp4_parser.yy" // lalr1.cc:859
+  case 164:
+#line 664 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1414 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1423 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 163:
-#line 661 "dhcp4_parser.yy" // lalr1.cc:859
+  case 165:
+#line 669 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1423 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1432 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 168:
-#line 674 "dhcp4_parser.yy" // lalr1.cc:859
+  case 170:
+#line 682 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1433 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1442 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 169:
-#line 678 "dhcp4_parser.yy" // lalr1.cc:859
+  case 171:
+#line 686 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1441 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1450 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 170:
-#line 682 "dhcp4_parser.yy" // lalr1.cc:859
+  case 172:
+#line 690 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1451 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1460 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 171:
-#line 686 "dhcp4_parser.yy" // lalr1.cc:859
+  case 173:
+#line 694 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1459 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1468 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 177:
-#line 699 "dhcp4_parser.yy" // lalr1.cc:859
+  case 179:
+#line 707 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1467 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1476 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 178:
-#line 701 "dhcp4_parser.yy" // lalr1.cc:859
+  case 180:
+#line 709 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1477 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1486 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 179:
-#line 707 "dhcp4_parser.yy" // lalr1.cc:859
+  case 181:
+#line 715 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1485 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1494 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 180:
-#line 709 "dhcp4_parser.yy" // lalr1.cc:859
+  case 182:
+#line 717 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1494 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1503 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 181:
-#line 715 "dhcp4_parser.yy" // lalr1.cc:859
+  case 183:
+#line 723 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 1505 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1514 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 182:
-#line 720 "dhcp4_parser.yy" // lalr1.cc:859
+  case 184:
+#line 728 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1514 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1523 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 191:
-#line 737 "dhcp4_parser.yy" // lalr1.cc:859
+  case 193:
+#line 745 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reclaim-timer-wait-time", value);
 }
-#line 1523 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1532 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 192:
-#line 742 "dhcp4_parser.yy" // lalr1.cc:859
+  case 194:
+#line 750 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
 }
-#line 1532 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1541 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 193:
-#line 747 "dhcp4_parser.yy" // lalr1.cc:859
+  case 195:
+#line 755 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 1541 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1550 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 194:
-#line 752 "dhcp4_parser.yy" // lalr1.cc:859
+  case 196:
+#line 760 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 1550 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1559 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 195:
-#line 757 "dhcp4_parser.yy" // lalr1.cc:859
+  case 197:
+#line 765 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 1559 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1568 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 196:
-#line 762 "dhcp4_parser.yy" // lalr1.cc:859
+  case 198:
+#line 770 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 1568 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1577 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 197:
-#line 770 "dhcp4_parser.yy" // lalr1.cc:859
+  case 199:
+#line 778 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet4", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET4);
 }
-#line 1579 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1588 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 198:
-#line 775 "dhcp4_parser.yy" // lalr1.cc:859
+  case 200:
+#line 783 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1588 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1597 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 203:
-#line 795 "dhcp4_parser.yy" // lalr1.cc:859
+  case 205:
+#line 803 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1598 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1607 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 204:
-#line 799 "dhcp4_parser.yy" // lalr1.cc:859
+  case 206:
+#line 807 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
     // }
     ctx.stack_.pop_back();
 }
-#line 1621 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1630 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 205:
-#line 818 "dhcp4_parser.yy" // lalr1.cc:859
+  case 207:
+#line 826 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1631 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1640 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 206:
-#line 822 "dhcp4_parser.yy" // lalr1.cc:859
+  case 208:
+#line 830 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1639 "dhcp4_parser.cc" // lalr1.cc:859
-    break;
-
-  case 229:
-#line 854 "dhcp4_parser.yy" // lalr1.cc:859
-    {
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 1647 "dhcp4_parser.cc" // lalr1.cc:859
-    break;
-
-  case 230:
-#line 856 "dhcp4_parser.yy" // lalr1.cc:859
-    {
-    ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("subnet", subnet);
-    ctx.leave();
-}
-#line 1657 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1648 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 231:
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1665 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1656 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 232:
 #line 864 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("4o6-interface", iface);
+    ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 1675 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1666 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 233:
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1683 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1674 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 234:
 #line 872 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("4o6-interface-id", iface);
+    ctx.stack_.back()->set("4o6-interface", iface);
     ctx.leave();
 }
-#line 1693 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1684 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 235:
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1701 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1692 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 236:
 #line 880 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("4o6-subnet", iface);
+    ctx.stack_.back()->set("4o6-interface-id", iface);
     ctx.leave();
 }
-#line 1711 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1702 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 237:
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1719 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1710 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 238:
 #line 888 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("interface", iface);
+    ctx.stack_.back()->set("4o6-subnet", iface);
     ctx.leave();
 }
-#line 1729 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1720 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 239:
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1737 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1728 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 240:
 #line 896 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("interface-id", iface);
+    ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 1747 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1738 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 241:
 #line 902 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.enter(ctx.CLIENT_CLASS);
+    ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1755 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1746 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 242:
 #line 904 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("client-class", cls);
+    ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("interface-id", iface);
     ctx.leave();
 }
-#line 1765 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1756 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 243:
 #line 910 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.enter(ctx.NO_KEYWORD);
+    ctx.enter(ctx.CLIENT_CLASS);
 }
-#line 1773 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1764 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 244:
 #line 912 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr rm(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("reservation-mode", rm);
+    ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 1783 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1774 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 245:
 #line 918 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 1782 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 246:
+#line 920 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr rm(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("reservation-mode", rm);
+    ctx.leave();
+}
+#line 1792 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 247:
+#line 926 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 1792 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1801 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 246:
-#line 923 "dhcp4_parser.yy" // lalr1.cc:859
+  case 248:
+#line 931 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
 }
-#line 1801 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1810 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 247:
-#line 932 "dhcp4_parser.yy" // lalr1.cc:859
+  case 249:
+#line 940 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 1812 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1821 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 248:
-#line 937 "dhcp4_parser.yy" // lalr1.cc:859
+  case 250:
+#line 945 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1821 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1830 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 253:
-#line 954 "dhcp4_parser.yy" // lalr1.cc:859
+  case 255:
+#line 962 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1831 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1840 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 254:
-#line 958 "dhcp4_parser.yy" // lalr1.cc:859
+  case 256:
+#line 966 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1839 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1848 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 255:
-#line 965 "dhcp4_parser.yy" // lalr1.cc:859
+  case 257:
+#line 973 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1849 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1858 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 256:
-#line 969 "dhcp4_parser.yy" // lalr1.cc:859
+  case 258:
+#line 977 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1857 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1866 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 270:
-#line 995 "dhcp4_parser.yy" // lalr1.cc:859
+  case 272:
+#line 1003 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 1866 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1875 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 272:
-#line 1002 "dhcp4_parser.yy" // lalr1.cc:859
+  case 274:
+#line 1010 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1874 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1883 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 273:
-#line 1004 "dhcp4_parser.yy" // lalr1.cc:859
+  case 275:
+#line 1012 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 1884 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1893 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 274:
-#line 1010 "dhcp4_parser.yy" // lalr1.cc:859
+  case 276:
+#line 1018 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1892 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1901 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 275:
-#line 1012 "dhcp4_parser.yy" // lalr1.cc:859
+  case 277:
+#line 1020 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 1902 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1911 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 276:
-#line 1018 "dhcp4_parser.yy" // lalr1.cc:859
+  case 278:
+#line 1026 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1910 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1919 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 277:
-#line 1020 "dhcp4_parser.yy" // lalr1.cc:859
+  case 279:
+#line 1028 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 1920 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1929 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 279:
-#line 1028 "dhcp4_parser.yy" // lalr1.cc:859
+  case 281:
+#line 1036 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1928 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1937 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 280:
-#line 1030 "dhcp4_parser.yy" // lalr1.cc:859
+  case 282:
+#line 1038 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 1938 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1947 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 281:
-#line 1036 "dhcp4_parser.yy" // lalr1.cc:859
+  case 283:
+#line 1044 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 1947 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1956 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 282:
-#line 1045 "dhcp4_parser.yy" // lalr1.cc:859
+  case 284:
+#line 1053 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 1958 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1967 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 283:
-#line 1050 "dhcp4_parser.yy" // lalr1.cc:859
+  case 285:
+#line 1058 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1967 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1976 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 288:
-#line 1069 "dhcp4_parser.yy" // lalr1.cc:859
+  case 290:
+#line 1077 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1977 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1986 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 289:
-#line 1073 "dhcp4_parser.yy" // lalr1.cc:859
+  case 291:
+#line 1081 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1985 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1994 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 290:
-#line 1080 "dhcp4_parser.yy" // lalr1.cc:859
+  case 292:
+#line 1088 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1995 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2004 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 291:
-#line 1084 "dhcp4_parser.yy" // lalr1.cc:859
+  case 293:
+#line 1092 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2003 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2012 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 303:
-#line 1113 "dhcp4_parser.yy" // lalr1.cc:859
+  case 305:
+#line 1121 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2011 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2020 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 304:
-#line 1115 "dhcp4_parser.yy" // lalr1.cc:859
+  case 306:
+#line 1123 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2021 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2030 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 307:
-#line 1125 "dhcp4_parser.yy" // lalr1.cc:859
+  case 309:
+#line 1133 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2030 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2039 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 308:
-#line 1133 "dhcp4_parser.yy" // lalr1.cc:859
+  case 310:
+#line 1141 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 2041 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2050 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 309:
-#line 1138 "dhcp4_parser.yy" // lalr1.cc:859
+  case 311:
+#line 1146 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2050 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2059 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 314:
-#line 1153 "dhcp4_parser.yy" // lalr1.cc:859
+  case 316:
+#line 1161 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2060 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2069 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 315:
-#line 1157 "dhcp4_parser.yy" // lalr1.cc:859
+  case 317:
+#line 1165 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2068 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2077 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 316:
-#line 1161 "dhcp4_parser.yy" // lalr1.cc:859
+  case 318:
+#line 1169 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2078 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2087 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 317:
-#line 1165 "dhcp4_parser.yy" // lalr1.cc:859
+  case 319:
+#line 1173 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2086 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2095 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 324:
-#line 1179 "dhcp4_parser.yy" // lalr1.cc:859
+  case 326:
+#line 1187 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2094 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2103 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 325:
-#line 1181 "dhcp4_parser.yy" // lalr1.cc:859
+  case 327:
+#line 1189 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2104 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2113 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 326:
-#line 1187 "dhcp4_parser.yy" // lalr1.cc:859
+  case 328:
+#line 1195 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2112 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2121 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 327:
-#line 1189 "dhcp4_parser.yy" // lalr1.cc:859
+  case 329:
+#line 1197 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2121 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2130 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 328:
-#line 1197 "dhcp4_parser.yy" // lalr1.cc:859
+  case 330:
+#line 1205 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 2132 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2141 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 329:
-#line 1202 "dhcp4_parser.yy" // lalr1.cc:859
+  case 331:
+#line 1210 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2141 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2150 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 334:
-#line 1215 "dhcp4_parser.yy" // lalr1.cc:859
+  case 336:
+#line 1223 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2151 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2160 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 335:
-#line 1219 "dhcp4_parser.yy" // lalr1.cc:859
+  case 337:
+#line 1227 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2159 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2168 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 336:
-#line 1223 "dhcp4_parser.yy" // lalr1.cc:859
+  case 338:
+#line 1231 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2169 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2178 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 337:
-#line 1227 "dhcp4_parser.yy" // lalr1.cc:859
+  case 339:
+#line 1235 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2177 "dhcp4_parser.cc" // lalr1.cc:859
-    break;
-
-  case 354:
-#line 1254 "dhcp4_parser.yy" // lalr1.cc:859
-    {
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 2185 "dhcp4_parser.cc" // lalr1.cc:859
-    break;
-
-  case 355:
-#line 1256 "dhcp4_parser.yy" // lalr1.cc:859
-    {
-    ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("next-server", next_server);
-    ctx.leave();
-}
-#line 2195 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2186 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 356:
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2203 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2194 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 357:
 #line 1264 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("server-hostname", srv);
+    ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("next-server", next_server);
     ctx.leave();
 }
-#line 2213 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2204 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 358:
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2221 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2212 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 359:
 #line 1272 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("boot-file-name", bootfile);
+    ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("server-hostname", srv);
     ctx.leave();
 }
-#line 2231 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2222 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 360:
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2239 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2230 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 361:
 #line 1280 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("ip-address", addr);
+    ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("boot-file-name", bootfile);
     ctx.leave();
 }
-#line 2249 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2240 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 362:
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2257 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2248 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 363:
 #line 1288 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("duid", d);
+    ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("ip-address", addr);
     ctx.leave();
 }
-#line 2267 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2258 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 364:
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2275 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2266 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 365:
 #line 1296 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("hw-address", hw);
+    ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 2285 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2276 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 366:
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2293 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2284 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 367:
 #line 1304 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("client-id", hw);
+    ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 2303 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2294 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 368:
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2311 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2302 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 369:
 #line 1312 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("circuit-id", hw);
+    ctx.stack_.back()->set("client-id", hw);
     ctx.leave();
 }
-#line 2321 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2312 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 370:
-#line 1319 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1318 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2329 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2320 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 371:
-#line 1321 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1320 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("hostname", host);
+    ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("circuit-id", hw);
     ctx.leave();
 }
-#line 2339 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2330 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 372:
 #line 1327 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 2338 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 373:
+#line 1329 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("hostname", host);
+    ctx.leave();
+}
+#line 2348 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 374:
+#line 1335 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2350 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2359 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 373:
-#line 1332 "dhcp4_parser.yy" // lalr1.cc:859
+  case 375:
+#line 1340 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2359 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2368 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 374:
-#line 1340 "dhcp4_parser.yy" // lalr1.cc:859
+  case 376:
+#line 1348 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 2370 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2379 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 375:
-#line 1345 "dhcp4_parser.yy" // lalr1.cc:859
+  case 377:
+#line 1353 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2379 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2388 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 376:
-#line 1350 "dhcp4_parser.yy" // lalr1.cc:859
+  case 378:
+#line 1358 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2387 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2396 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 377:
-#line 1352 "dhcp4_parser.yy" // lalr1.cc:859
+  case 379:
+#line 1360 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", ip);
     ctx.leave();
 }
-#line 2397 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2406 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1361 "dhcp4_parser.yy" // lalr1.cc:859
+  case 380:
+#line 1369 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 2408 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2417 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1366 "dhcp4_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1374 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2417 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2426 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 382:
-#line 1375 "dhcp4_parser.yy" // lalr1.cc:859
+  case 384:
+#line 1383 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2427 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2436 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 383:
-#line 1379 "dhcp4_parser.yy" // lalr1.cc:859
+  case 385:
+#line 1387 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2435 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2444 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 396:
-#line 1402 "dhcp4_parser.yy" // lalr1.cc:859
+  case 398:
+#line 1410 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2443 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2452 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 397:
-#line 1404 "dhcp4_parser.yy" // lalr1.cc:859
+  case 399:
+#line 1412 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 2453 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2462 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 398:
-#line 1414 "dhcp4_parser.yy" // lalr1.cc:859
+  case 400:
+#line 1422 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 2462 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2471 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 399:
-#line 1421 "dhcp4_parser.yy" // lalr1.cc:859
+  case 401:
+#line 1429 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 2473 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2482 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 400:
-#line 1426 "dhcp4_parser.yy" // lalr1.cc:859
+  case 402:
+#line 1434 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2482 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2491 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 405:
-#line 1439 "dhcp4_parser.yy" // lalr1.cc:859
+  case 407:
+#line 1447 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2490 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2499 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 406:
-#line 1441 "dhcp4_parser.yy" // lalr1.cc:859
+  case 408:
+#line 1449 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 2500 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2509 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 407:
-#line 1447 "dhcp4_parser.yy" // lalr1.cc:859
+  case 409:
+#line 1455 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2508 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2517 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 408:
-#line 1449 "dhcp4_parser.yy" // lalr1.cc:859
+  case 410:
+#line 1457 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 2518 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2527 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 409:
-#line 1457 "dhcp4_parser.yy" // lalr1.cc:859
+  case 411:
+#line 1465 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 2529 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2538 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 410:
-#line 1462 "dhcp4_parser.yy" // lalr1.cc:859
+  case 412:
+#line 1470 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2538 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2547 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 411:
-#line 1467 "dhcp4_parser.yy" // lalr1.cc:859
+  case 413:
+#line 1475 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2548 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2557 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 412:
-#line 1471 "dhcp4_parser.yy" // lalr1.cc:859
+  case 414:
+#line 1479 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2556 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2565 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 430:
-#line 1496 "dhcp4_parser.yy" // lalr1.cc:859
+  case 432:
+#line 1504 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 2565 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2574 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 431:
-#line 1501 "dhcp4_parser.yy" // lalr1.cc:859
+  case 433:
+#line 1509 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2573 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2582 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 432:
-#line 1503 "dhcp4_parser.yy" // lalr1.cc:859
+  case 434:
+#line 1511 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
     ctx.leave();
 }
-#line 2583 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2592 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 433:
-#line 1509 "dhcp4_parser.yy" // lalr1.cc:859
+  case 435:
+#line 1517 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2591 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2600 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 434:
-#line 1511 "dhcp4_parser.yy" // lalr1.cc:859
+  case 436:
+#line 1519 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
     ctx.leave();
 }
-#line 2601 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2610 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 435:
-#line 1517 "dhcp4_parser.yy" // lalr1.cc:859
+  case 437:
+#line 1525 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 2610 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2619 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 436:
-#line 1522 "dhcp4_parser.yy" // lalr1.cc:859
+  case 438:
+#line 1530 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2618 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2627 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 437:
-#line 1524 "dhcp4_parser.yy" // lalr1.cc:859
+  case 439:
+#line 1532 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
     ctx.leave();
 }
-#line 2628 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2637 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 438:
-#line 1530 "dhcp4_parser.yy" // lalr1.cc:859
+  case 440:
+#line 1538 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 2637 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2646 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 439:
-#line 1535 "dhcp4_parser.yy" // lalr1.cc:859
+  case 441:
+#line 1543 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 2646 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2655 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 440:
-#line 1540 "dhcp4_parser.yy" // lalr1.cc:859
+  case 442:
+#line 1548 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 2654 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2663 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 441:
-#line 1542 "dhcp4_parser.yy" // lalr1.cc:859
+  case 443:
+#line 1550 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2663 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2672 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 442:
-#line 1548 "dhcp4_parser.yy" // lalr1.cc:859
+  case 444:
+#line 1556 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 2669 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2678 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 443:
-#line 1549 "dhcp4_parser.yy" // lalr1.cc:859
+  case 445:
+#line 1557 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 2675 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2684 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 444:
-#line 1552 "dhcp4_parser.yy" // lalr1.cc:859
+  case 446:
+#line 1560 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 2683 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2692 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 445:
-#line 1554 "dhcp4_parser.yy" // lalr1.cc:859
+  case 447:
+#line 1562 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 2693 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2702 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 446:
-#line 1560 "dhcp4_parser.yy" // lalr1.cc:859
+  case 448:
+#line 1568 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-include-fqdn", b);
 }
-#line 2702 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2711 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 447:
-#line 1565 "dhcp4_parser.yy" // lalr1.cc:859
+  case 449:
+#line 1573 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 2711 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2720 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 448:
-#line 1570 "dhcp4_parser.yy" // lalr1.cc:859
+  case 450:
+#line 1578 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 2720 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2729 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 449:
-#line 1575 "dhcp4_parser.yy" // lalr1.cc:859
+  case 451:
+#line 1583 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 2728 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2737 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 450:
-#line 1577 "dhcp4_parser.yy" // lalr1.cc:859
+  case 452:
+#line 1585 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2737 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2746 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 451:
-#line 1583 "dhcp4_parser.yy" // lalr1.cc:859
+  case 453:
+#line 1591 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
       }
-#line 2745 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2754 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 452:
-#line 1586 "dhcp4_parser.yy" // lalr1.cc:859
+  case 454:
+#line 1594 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2753 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2762 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 453:
-#line 1589 "dhcp4_parser.yy" // lalr1.cc:859
+  case 455:
+#line 1597 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2761 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2770 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 454:
-#line 1592 "dhcp4_parser.yy" // lalr1.cc:859
+  case 456:
+#line 1600 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2769 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2778 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 455:
-#line 1595 "dhcp4_parser.yy" // lalr1.cc:859
+  case 457:
+#line 1603 "dhcp4_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 2778 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2787 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 456:
-#line 1601 "dhcp4_parser.yy" // lalr1.cc:859
+  case 458:
+#line 1609 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2786 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2795 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 457:
-#line 1603 "dhcp4_parser.yy" // lalr1.cc:859
+  case 459:
+#line 1611 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
     ctx.leave();
 }
-#line 2796 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2805 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 458:
-#line 1611 "dhcp4_parser.yy" // lalr1.cc:859
+  case 460:
+#line 1619 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2804 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2813 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 459:
-#line 1613 "dhcp4_parser.yy" // lalr1.cc:859
+  case 461:
+#line 1621 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2813 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2822 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 460:
-#line 1618 "dhcp4_parser.yy" // lalr1.cc:859
+  case 462:
+#line 1626 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2821 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2830 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 461:
-#line 1620 "dhcp4_parser.yy" // lalr1.cc:859
+  case 463:
+#line 1628 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2830 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2839 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 462:
-#line 1630 "dhcp4_parser.yy" // lalr1.cc:859
+  case 464:
+#line 1638 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.LOGGING);
 }
-#line 2841 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2850 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 463:
-#line 1635 "dhcp4_parser.yy" // lalr1.cc:859
+  case 465:
+#line 1643 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2850 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2859 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 467:
-#line 1652 "dhcp4_parser.yy" // lalr1.cc:859
+  case 469:
+#line 1660 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 2861 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2870 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 468:
-#line 1657 "dhcp4_parser.yy" // lalr1.cc:859
+  case 470:
+#line 1665 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2870 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2879 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 471:
-#line 1669 "dhcp4_parser.yy" // lalr1.cc:859
+  case 473:
+#line 1677 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 2880 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2889 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 472:
-#line 1673 "dhcp4_parser.yy" // lalr1.cc:859
+  case 474:
+#line 1681 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2888 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2897 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 480:
-#line 1688 "dhcp4_parser.yy" // lalr1.cc:859
+  case 482:
+#line 1696 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 2897 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2906 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 481:
-#line 1693 "dhcp4_parser.yy" // lalr1.cc:859
+  case 483:
+#line 1701 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2905 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2914 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 482:
-#line 1695 "dhcp4_parser.yy" // lalr1.cc:859
+  case 484:
+#line 1703 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 2915 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2924 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 483:
-#line 1701 "dhcp4_parser.yy" // lalr1.cc:859
+  case 485:
+#line 1709 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 2926 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2935 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 484:
-#line 1706 "dhcp4_parser.yy" // lalr1.cc:859
+  case 486:
+#line 1714 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2935 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2944 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 487:
-#line 1715 "dhcp4_parser.yy" // lalr1.cc:859
+  case 489:
+#line 1723 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2945 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2954 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 488:
-#line 1719 "dhcp4_parser.yy" // lalr1.cc:859
+  case 490:
+#line 1727 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2953 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2962 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1727 "dhcp4_parser.yy" // lalr1.cc:859
+  case 493:
+#line 1735 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2961 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2970 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 492:
-#line 1729 "dhcp4_parser.yy" // lalr1.cc:859
+  case 494:
+#line 1737 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 2971 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2980 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 2975 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2984 "dhcp4_parser.cc" // lalr1.cc:859
             default:
               break;
             }
   }
 
 
-  const short int Dhcp4Parser::yypact_ninf_ = -469;
+  const short int Dhcp4Parser::yypact_ninf_ = -473;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
   const short int
   Dhcp4Parser::yypact_[] =
   {
-     117,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,    66,    19,    81,    85,    94,   139,   150,   165,
-     172,   184,   193,   199,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,    19,   -79,    17,    29,
-      20,    18,   -16,    71,    49,    74,   -35,   118,  -469,   132,
-      70,   127,   195,   137,  -469,  -469,  -469,  -469,   248,  -469,
-      26,  -469,  -469,  -469,  -469,  -469,  -469,   250,   253,  -469,
-    -469,  -469,   258,   261,   263,   265,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,   269,  -469,  -469,  -469,    45,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,    46,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,   271,   272,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,    52,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,    56,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-     270,   279,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,   275,  -469,  -469,  -469,   281,
-    -469,  -469,   282,   280,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,   283,  -469,  -469,  -469,  -469,
-     284,   288,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,   111,  -469,  -469,  -469,   293,  -469,  -469,   294,  -469,
-     300,   301,  -469,  -469,   302,   303,   305,  -469,  -469,  -469,
-     125,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,    19,    19,  -469,
-     180,   308,   309,   310,   311,  -469,    17,  -469,   312,   183,
-     185,   316,   317,   318,   191,   192,   194,   197,   321,   323,
-     324,   326,   327,   328,   329,   202,   331,   332,    29,  -469,
-     333,   334,    20,  -469,    65,   335,   336,   339,   340,   341,
-     342,   343,   216,   215,   346,   347,   348,   349,    18,  -469,
-     350,   351,   -16,  -469,   352,   353,   354,   355,   356,   357,
-     358,   359,   360,  -469,    71,   361,   362,   235,   364,   365,
-     366,   237,  -469,    49,   368,   239,  -469,    74,   370,   371,
-     155,  -469,   242,   373,   374,   249,   375,   251,   252,   376,
-     378,   254,   255,   256,   381,   382,   118,  -469,  -469,  -469,
-     383,   384,   385,    19,    19,  -469,   386,  -469,  -469,   264,
-     387,   389,  -469,  -469,  -469,  -469,   392,   393,   394,   395,
-     396,   397,   398,  -469,   399,   400,  -469,   403,    24,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,   401,   407,  -469,
-    -469,  -469,   273,   285,   286,   406,   287,   289,   290,  -469,
-    -469,   295,   298,   408,   405,  -469,   299,   417,  -469,   304,
-     307,   403,   313,   315,   319,   320,   322,   325,  -469,   330,
-     337,  -469,   338,   344,   345,  -469,  -469,   363,  -469,  -469,
-     367,    19,  -469,  -469,   369,   372,  -469,   377,  -469,  -469,
-      15,   296,  -469,  -469,  -469,    67,   379,  -469,    19,    29,
-     380,  -469,  -469,    20,  -469,   133,   133,   418,   424,   425,
-     188,    30,   426,   101,   182,   118,  -469,  -469,  -469,  -469,
-    -469,   410,  -469,    65,  -469,  -469,  -469,   427,  -469,  -469,
-    -469,  -469,  -469,   432,   388,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-     131,  -469,   151,  -469,  -469,   186,  -469,  -469,  -469,  -469,
-     411,   437,   438,   439,   443,  -469,  -469,  -469,   187,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,   189,  -469,   442,   446,  -469,  -469,   448,   454,
-    -469,  -469,   452,   456,  -469,  -469,  -469,  -469,  -469,   104,
-    -469,  -469,  -469,  -469,  -469,  -469,   105,  -469,   457,   459,
-    -469,   461,   462,   463,   466,   467,   468,   190,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,   196,  -469,  -469,
-    -469,   221,   390,   391,  -469,  -469,   471,   470,  -469,  -469,
-     472,   476,  -469,  -469,   473,  -469,   478,   380,  -469,  -469,
-     479,   480,   481,   482,   402,   404,   409,   412,   413,   483,
-     484,   133,  -469,  -469,    18,  -469,   418,    49,  -469,   424,
-      74,  -469,   425,   188,  -469,    30,  -469,   -35,  -469,   426,
-     415,   416,   419,   420,   421,   422,   101,  -469,   485,   486,
-     182,  -469,  -469,  -469,   474,   488,  -469,   -16,  -469,   427,
-      71,  -469,   432,   491,  -469,   455,  -469,   276,   428,   429,
-     430,  -469,  -469,  -469,  -469,  -469,   431,   433,  -469,   222,
-    -469,   489,  -469,   493,  -469,  -469,  -469,   223,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,   434,   435,  -469,  -469,
-     436,   224,  -469,   494,  -469,   440,   492,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,   124,  -469,
-      57,   492,  -469,  -469,   500,  -469,  -469,  -469,   245,  -469,
-    -469,  -469,  -469,  -469,   501,   423,   502,    57,  -469,   469,
-    -469,   441,  -469,   504,  -469,  -469,   152,  -469,   414,   504,
-    -469,  -469,   247,  -469,  -469,   503,   414,  -469,   444,  -469,
-    -469
+     201,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,    32,    19,    38,    58,    60,    82,    86,    92,
+     113,   134,   140,   151,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,    19,   -89,    17,    29,
+      96,    18,   -17,    71,    49,    74,   -30,   118,  -473,    68,
+     129,   135,   165,   177,  -473,  -473,  -473,  -473,   204,  -473,
+      26,  -473,  -473,  -473,  -473,  -473,  -473,   235,   247,  -473,
+    -473,  -473,   254,   258,   259,   260,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,   263,  -473,  -473,  -473,    30,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,   264,    36,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,   266,   268,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,    52,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,    53,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,   184,   222,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,   270,  -473,  -473,
+    -473,   271,  -473,  -473,   245,   273,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,   274,  -473,  -473,
+    -473,  -473,   277,   276,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,   108,  -473,  -473,  -473,   278,  -473,  -473,
+     282,  -473,   284,   286,  -473,  -473,   289,   290,   291,  -473,
+    -473,  -473,   126,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,    19,
+      19,  -473,   149,   296,   297,   299,   300,  -473,    17,  -473,
+     301,   172,   173,   302,   305,   306,   179,   181,   182,   183,
+     313,   314,   315,   316,   329,   330,   331,   203,   333,   334,
+      29,  -473,   335,   336,   206,    96,  -473,    65,   338,   339,
+     342,   343,   344,   345,   346,   218,   217,   349,   350,   351,
+     352,    18,  -473,   353,   354,   -17,  -473,   355,   356,   357,
+     358,   359,   360,   361,   362,   363,  -473,    71,   364,   365,
+     237,   367,   368,   369,   239,  -473,    49,   371,   241,  -473,
+      74,   373,   374,   -26,  -473,   244,   376,   377,   250,   378,
+     251,   252,   382,   383,   253,   255,   256,   385,   388,   118,
+    -473,  -473,  -473,   389,   387,   390,    19,    19,  -473,   391,
+    -473,  -473,   267,   393,   394,  -473,  -473,  -473,  -473,   397,
+     398,   399,   400,   401,   402,   403,  -473,   404,   405,  -473,
+     408,   242,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,   406,   392,  -473,  -473,  -473,   283,   285,   287,   411,
+     288,   292,   293,  -473,  -473,   298,   303,   413,   414,  -473,
+     304,   415,  -473,   307,   310,   408,   311,   318,   319,   320,
+     321,   322,  -473,   323,   325,  -473,   326,   328,   332,  -473,
+    -473,   337,  -473,  -473,   340,    19,  -473,  -473,   341,   347,
+    -473,   348,  -473,  -473,    15,   366,  -473,  -473,  -473,    67,
+     370,  -473,    19,    29,   294,  -473,  -473,    96,  -473,   133,
+     133,   421,   422,   426,   171,    28,   427,   101,   170,   118,
+    -473,  -473,  -473,  -473,  -473,   433,  -473,    65,  -473,  -473,
+    -473,   431,  -473,  -473,  -473,  -473,  -473,   438,   384,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,   132,  -473,   152,  -473,  -473,   187,
+    -473,  -473,  -473,  -473,   442,   443,   444,   458,   459,  -473,
+    -473,  -473,   188,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,   190,  -473,   460,   462,
+    -473,  -473,   461,   465,  -473,  -473,   464,   468,  -473,  -473,
+    -473,  -473,  -473,   125,  -473,  -473,  -473,  -473,  -473,  -473,
+     153,  -473,   469,   473,  -473,   474,   477,   478,   479,   480,
+     481,   191,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,   197,  -473,  -473,  -473,   223,   372,   375,  -473,  -473,
+     471,   483,  -473,  -473,   482,   484,  -473,  -473,   485,  -473,
+     486,   294,  -473,  -473,   487,   488,   490,   491,   379,   261,
+     380,   381,   386,   492,   493,   133,  -473,  -473,    18,  -473,
+     421,    49,  -473,   422,    74,  -473,   426,   171,  -473,    28,
+    -473,   -30,  -473,   427,   395,   396,   407,   409,   410,   412,
+     101,  -473,   494,   495,   170,  -473,  -473,  -473,   497,   498,
+    -473,   -17,  -473,   431,    71,  -473,   438,   496,  -473,   500,
+    -473,   221,   416,   417,   418,  -473,  -473,  -473,  -473,  -473,
+     419,   420,  -473,   224,  -473,   501,  -473,   502,  -473,  -473,
+    -473,   225,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+     423,   424,  -473,  -473,   425,   226,  -473,   503,  -473,   428,
+     499,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,   198,  -473,    57,   499,  -473,  -473,   504,  -473,
+    -473,  -473,   232,  -473,  -473,  -473,  -473,  -473,   510,   429,
+     511,    57,  -473,   512,  -473,   432,  -473,   513,  -473,  -473,
+     249,  -473,   430,   513,  -473,  -473,   233,  -473,  -473,   514,
+     430,  -473,   434,  -473,  -473
   };
 
   const unsigned short int
       20,    22,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     1,    39,    32,    28,    27,    24,
       25,    26,    31,     3,    29,    30,    52,     5,    63,     7,
-     100,     9,   205,    11,   316,    13,   336,    15,   255,    17,
-     290,    19,   170,    21,   411,    23,    41,    35,     0,     0,
-       0,     0,     0,   338,   257,   292,     0,     0,    43,     0,
-      42,     0,     0,    36,    61,   462,   458,   460,     0,    60,
-       0,    54,    56,    58,    59,    57,    94,     0,     0,   354,
-     108,   110,     0,     0,     0,     0,   197,   247,   282,   150,
-     378,   162,   181,     0,   399,   409,    87,     0,    65,    67,
+     101,     9,   207,    11,   318,    13,   338,    15,   257,    17,
+     292,    19,   172,    21,   413,    23,    41,    35,     0,     0,
+       0,     0,     0,   340,   259,   294,     0,     0,    43,     0,
+      42,     0,     0,    36,    61,   464,   460,   462,     0,    60,
+       0,    54,    56,    58,    59,    57,    94,     0,     0,   356,
+     110,   112,     0,     0,     0,     0,   199,   249,   284,   152,
+     380,   164,   183,     0,   401,   411,    87,     0,    65,    67,
       68,    69,    70,    84,    85,    72,    73,    74,    75,    79,
-      80,    71,    77,    78,    86,    76,    81,    82,    83,   102,
-     104,     0,    96,    98,    99,   382,   231,   233,   235,   308,
-     229,   237,   239,     0,     0,   243,   241,   328,   374,   228,
-     209,   210,   211,   223,     0,   207,   214,   225,   226,   227,
-     215,   216,   219,   221,   217,   218,   212,   213,   220,   224,
-     222,   324,   326,   323,   321,     0,   318,   320,   322,   356,
-     358,   372,   362,   364,   368,   366,   370,   360,   353,   349,
-       0,   339,   340,   350,   351,   352,   346,   342,   347,   344,
-     345,   348,   343,   272,   140,     0,   276,   274,   279,     0,
-     268,   269,     0,   258,   259,   261,   271,   262,   263,   264,
-     278,   265,   266,   267,   303,     0,   301,   302,   305,   306,
-       0,   293,   294,   296,   297,   298,   299,   300,   177,   179,
-     174,     0,   172,   175,   176,     0,   431,   433,     0,   436,
-       0,     0,   440,   444,     0,     0,     0,   449,   456,   429,
-       0,   413,   415,   416,   417,   418,   419,   420,   421,   422,
-     423,   424,   425,   426,   427,   428,    40,     0,     0,    33,
-       0,     0,     0,     0,     0,    51,     0,    53,     0,     0,
+      80,    71,    77,    78,    86,    76,    81,    82,    83,   103,
+     105,     0,     0,    96,    98,    99,   100,   384,   233,   235,
+     237,   310,   231,   239,   241,     0,     0,   245,   243,   330,
+     376,   230,   211,   212,   213,   225,     0,   209,   216,   227,
+     228,   229,   217,   218,   221,   223,   219,   220,   214,   215,
+     222,   226,   224,   326,   328,   325,   323,     0,   320,   322,
+     324,   358,   360,   374,   364,   366,   370,   368,   372,   362,
+     355,   351,     0,   341,   342,   352,   353,   354,   348,   344,
+     349,   346,   347,   350,   345,   274,   142,     0,   278,   276,
+     281,     0,   270,   271,     0,   260,   261,   263,   273,   264,
+     265,   266,   280,   267,   268,   269,   305,     0,   303,   304,
+     307,   308,     0,   295,   296,   298,   299,   300,   301,   302,
+     179,   181,   176,     0,   174,   177,   178,     0,   433,   435,
+       0,   438,     0,     0,   442,   446,     0,     0,     0,   451,
+     458,   431,     0,   415,   417,   418,   419,   420,   421,   422,
+     423,   424,   425,   426,   427,   428,   429,   430,    40,     0,
+       0,    33,     0,     0,     0,     0,     0,    51,     0,    53,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    64,     0,     0,     0,     0,   102,   386,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    64,
-       0,     0,     0,   101,   384,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   206,
-       0,     0,     0,   317,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   337,     0,     0,     0,     0,     0,     0,
-       0,     0,   256,     0,     0,     0,   291,     0,     0,     0,
-       0,   171,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   412,    44,    37,
-       0,     0,     0,     0,     0,    55,     0,    92,    93,     0,
-       0,     0,    88,    89,    90,    91,     0,     0,     0,     0,
-       0,     0,     0,   398,     0,     0,    66,     0,     0,    97,
-     396,   394,   395,   390,   391,   392,   393,     0,   385,   386,
-     388,   389,     0,     0,     0,     0,     0,     0,     0,   245,
-     246,     0,     0,     0,     0,   208,     0,     0,   319,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   341,     0,
-       0,   270,     0,     0,     0,   281,   260,     0,   307,   295,
-       0,     0,   173,   430,     0,     0,   435,     0,   438,   439,
-       0,     0,   446,   447,   448,     0,     0,   414,     0,     0,
-       0,   459,   461,     0,   355,     0,     0,   199,   249,   284,
-       0,     0,   164,     0,     0,     0,    45,   103,   106,   107,
-     105,     0,   383,     0,   232,   234,   236,   310,   230,   238,
-     240,   244,   242,   330,     0,   325,    34,   327,   357,   359,
-     373,   363,   365,   369,   367,   371,   361,   273,   141,   277,
-     275,   280,   304,   178,   180,   432,   434,   437,   442,   443,
-     441,   445,   451,   452,   453,   454,   455,   450,   457,    38,
-       0,   467,     0,   464,   466,     0,   127,   133,   135,   137,
-       0,     0,     0,     0,     0,   146,   148,   126,     0,   112,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,     0,   203,     0,   200,   201,   253,     0,   250,
-     251,   288,     0,   285,   286,   158,   159,   160,   161,     0,
-     152,   154,   155,   156,   157,   380,     0,   168,     0,   165,
-     166,     0,     0,     0,     0,     0,     0,     0,   183,   185,
-     186,   187,   188,   189,   190,   405,   407,     0,   401,   403,
-     404,     0,    47,     0,   387,   314,     0,   311,   312,   334,
-       0,   331,   332,   376,     0,    62,     0,     0,   463,    95,
+       0,     0,   208,     0,     0,     0,   319,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   339,     0,     0,     0,
+       0,     0,     0,     0,     0,   258,     0,     0,     0,   293,
+       0,     0,     0,     0,   173,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   109,   111,     0,   198,     0,   257,   248,     0,
-     292,   283,     0,     0,   151,     0,   379,     0,   163,     0,
-       0,     0,     0,     0,     0,     0,     0,   182,     0,     0,
-       0,   400,   410,    49,     0,    48,   397,     0,   309,     0,
-     338,   329,     0,     0,   375,     0,   465,     0,     0,     0,
-       0,   139,   142,   143,   144,   145,     0,     0,   113,     0,
-     202,     0,   252,     0,   287,   153,   381,     0,   167,   191,
-     192,   193,   194,   195,   196,   184,     0,     0,   402,    46,
-       0,     0,   313,     0,   333,     0,     0,   129,   130,   131,
-     132,   128,   134,   136,   138,   147,   149,   204,   254,   289,
-     169,   406,   408,    50,   315,   335,   377,   471,     0,   469,
-       0,     0,   468,   483,     0,   481,   479,   475,     0,   473,
-     477,   478,   476,   470,     0,     0,     0,     0,   472,     0,
-     480,     0,   474,     0,   482,   487,     0,   485,     0,     0,
-     484,   491,     0,   489,   486,     0,     0,   488,     0,   490,
-     492
+     414,    44,    37,     0,     0,     0,     0,     0,    55,     0,
+      92,    93,     0,     0,     0,    88,    89,    90,    91,     0,
+       0,     0,     0,     0,     0,     0,   400,     0,     0,    66,
+       0,     0,   109,    97,   398,   396,   397,   392,   393,   394,
+     395,     0,   387,   388,   390,   391,     0,     0,     0,     0,
+       0,     0,     0,   247,   248,     0,     0,     0,     0,   210,
+       0,     0,   321,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   343,     0,     0,   272,     0,     0,     0,   283,
+     262,     0,   309,   297,     0,     0,   175,   432,     0,     0,
+     437,     0,   440,   441,     0,     0,   448,   449,   450,     0,
+       0,   416,     0,     0,     0,   461,   463,     0,   357,     0,
+       0,   201,   251,   286,     0,     0,   166,     0,     0,     0,
+      45,   104,   107,   108,   106,     0,   385,     0,   234,   236,
+     238,   312,   232,   240,   242,   246,   244,   332,     0,   327,
+      34,   329,   359,   361,   375,   365,   367,   371,   369,   373,
+     363,   275,   143,   279,   277,   282,   306,   180,   182,   434,
+     436,   439,   444,   445,   443,   447,   453,   454,   455,   456,
+     457,   452,   459,    38,     0,   469,     0,   466,   468,     0,
+     129,   135,   137,   139,     0,     0,     0,     0,     0,   148,
+     150,   128,     0,   114,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,   125,   126,   127,     0,   205,     0,   202,
+     203,   255,     0,   252,   253,   290,     0,   287,   288,   160,
+     161,   162,   163,     0,   154,   156,   157,   158,   159,   382,
+       0,   170,     0,   167,   168,     0,     0,     0,     0,     0,
+       0,     0,   185,   187,   188,   189,   190,   191,   192,   407,
+     409,     0,   403,   405,   406,     0,    47,     0,   389,   316,
+       0,   313,   314,   336,     0,   333,   334,   378,     0,    62,
+       0,     0,   465,    95,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   111,   113,     0,   200,
+       0,   259,   250,     0,   294,   285,     0,     0,   153,     0,
+     381,     0,   165,     0,     0,     0,     0,     0,     0,     0,
+       0,   184,     0,     0,     0,   402,   412,    49,     0,    48,
+     399,     0,   311,     0,   340,   331,     0,     0,   377,     0,
+     467,     0,     0,     0,     0,   141,   144,   145,   146,   147,
+       0,     0,   115,     0,   204,     0,   254,     0,   289,   155,
+     383,     0,   169,   193,   194,   195,   196,   197,   198,   186,
+       0,     0,   404,    46,     0,     0,   315,     0,   335,     0,
+       0,   131,   132,   133,   134,   130,   136,   138,   140,   149,
+     151,   206,   256,   291,   171,   408,   410,    50,   317,   337,
+     379,   473,     0,   471,     0,     0,   470,   485,     0,   483,
+     481,   477,     0,   475,   479,   480,   478,   472,     0,     0,
+       0,     0,   474,     0,   482,     0,   476,     0,   484,   489,
+       0,   487,     0,     0,   486,   493,     0,   491,   488,     0,
+       0,   490,     0,   492,   494
   };
 
   const short int
   Dhcp4Parser::yypgoto_[] =
   {
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,   -42,  -469,    55,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,    68,  -469,  -469,  -469,   -58,  -469,
-    -469,  -469,   210,  -469,  -469,  -469,  -469,    33,   205,   -60,
-     -44,   -40,  -469,  -469,   -39,  -469,  -469,    31,   203,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-      32,  -145,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,   -63,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -156,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -160,  -469,  -469,  -469,  -157,   163,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -162,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -141,  -469,
-    -469,  -469,  -138,   200,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -468,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -142,  -469,  -469,  -469,
-    -137,  -469,   178,  -469,   -49,  -469,  -469,  -469,  -469,  -469,
-     -47,  -469,  -469,  -469,  -469,  -469,   -51,  -469,  -469,  -469,
-    -140,  -469,  -469,  -469,  -135,  -469,   176,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -163,  -469,  -469,
-    -469,  -158,   208,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -165,  -469,  -469,  -469,  -151,  -469,   198,   -48,  -469,
-    -295,  -469,  -294,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,    40,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -146,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,    61,   174,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,  -469,
-    -469,  -469,  -469,  -469,  -469,  -469,  -469,   -90,  -469,  -469,
-    -469,  -213,  -469,  -469,  -224,  -469,  -469,  -469,  -469,  -469,
-    -469,  -231,  -469,  -469,  -237,  -469
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,   -42,  -473,   -32,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,    44,  -473,  -473,  -473,   -58,  -473,
+    -473,  -473,   234,  -473,  -473,  -473,  -473,    40,   211,   -60,
+     -44,   -40,  -473,  -473,   -39,  -473,  -473,    37,   210,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,    41,  -139,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,   -63,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -150,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -153,  -473,  -473,  -473,  -149,
+     174,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -157,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -136,
+    -473,  -473,  -473,  -133,   205,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -472,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -135,  -473,  -473,
+    -473,  -132,  -473,   185,  -473,   -49,  -473,  -473,  -473,  -473,
+    -473,   -47,  -473,  -473,  -473,  -473,  -473,   -51,  -473,  -473,
+    -473,  -129,  -473,  -473,  -473,  -130,  -473,   193,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -145,  -473,
+    -473,  -473,  -147,   228,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -141,  -473,  -473,  -473,  -143,  -473,   212,   -48,
+    -473,  -298,  -473,  -297,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,    61,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -127,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,    70,   192,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,
+    -473,  -473,  -473,  -473,  -473,  -473,  -473,  -473,   -81,  -473,
+    -473,  -473,  -203,  -473,  -473,  -218,  -473,  -473,  -473,  -473,
+    -473,  -473,  -229,  -473,  -473,  -235,  -473
   };
 
   const short int
   Dhcp4Parser::yydefgoto_[] =
   {
       -1,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    32,    33,    34,    57,   517,    72,    73,
-      35,    56,    69,    70,   497,   632,   694,   695,   106,    37,
-      58,    80,    81,    82,   281,    39,    59,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   288,   131,   132,    41,
-      60,   133,   310,   134,   311,   500,   116,   292,   117,   293,
-     568,   569,   570,   650,   751,   571,   651,   572,   652,   573,
-     653,   574,   211,   346,   576,   577,   578,   579,   580,   659,
-     581,   660,   118,   301,   599,   600,   601,   602,   603,   604,
-     119,   303,   608,   609,   610,   677,    53,    66,   241,   242,
-     243,   358,   244,   359,   120,   304,   617,   618,   619,   620,
-     621,   622,   623,   624,   121,   298,   584,   585,   586,   664,
-      43,    61,   154,   155,   156,   319,   157,   315,   158,   316,
-     159,   317,   160,   320,   161,   321,   162,   325,   163,   324,
-     164,   165,   122,   299,   588,   589,   590,   667,    49,    64,
-     212,   213,   214,   215,   216,   217,   218,   345,   219,   349,
-     220,   348,   221,   222,   350,   223,   123,   300,   592,   593,
-     594,   670,    51,    65,   230,   231,   232,   233,   234,   354,
-     235,   236,   237,   167,   318,   636,   637,   638,   697,    45,
-      62,   175,   176,   177,   330,   178,   331,   168,   326,   640,
-     641,   642,   700,    47,    63,   190,   191,   192,   124,   291,
-     194,   334,   195,   335,   196,   342,   197,   337,   198,   338,
-     199,   340,   200,   339,   201,   341,   202,   336,   170,   327,
-     644,   703,   125,   302,   606,   314,   417,   418,   419,   420,
-     421,   501,   126,   127,   306,   627,   628,   629,   688,   630,
-     689,   128,   307,    55,    67,   260,   261,   262,   263,   363,
-     264,   364,   265,   266,   366,   267,   268,   269,   369,   540,
-     270,   370,   271,   272,   273,   274,   374,   547,   275,   375,
-      83,   283,    84,   284,    85,   282,   552,   553,   554,   646,
-     768,   769,   770,   778,   779,   780,   781,   786,   782,   784,
-     796,   797,   798,   802,   803,   805
+      21,    22,    23,    32,    33,    34,    57,   521,    72,    73,
+      35,    56,    69,    70,   501,   636,   698,   699,   106,    37,
+      58,    80,    81,    82,   283,    39,    59,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   290,   132,   133,    41,
+      60,   134,   312,   135,   313,   504,   136,   116,   294,   117,
+     295,   572,   573,   574,   654,   755,   575,   655,   576,   656,
+     577,   657,   578,   213,   349,   580,   581,   582,   583,   584,
+     663,   585,   664,   118,   303,   603,   604,   605,   606,   607,
+     608,   119,   305,   612,   613,   614,   681,    53,    66,   243,
+     244,   245,   361,   246,   362,   120,   306,   621,   622,   623,
+     624,   625,   626,   627,   628,   121,   300,   588,   589,   590,
+     668,    43,    61,   156,   157,   158,   322,   159,   318,   160,
+     319,   161,   320,   162,   323,   163,   324,   164,   328,   165,
+     327,   166,   167,   122,   301,   592,   593,   594,   671,    49,
+      64,   214,   215,   216,   217,   218,   219,   220,   348,   221,
+     352,   222,   351,   223,   224,   353,   225,   123,   302,   596,
+     597,   598,   674,    51,    65,   232,   233,   234,   235,   236,
+     357,   237,   238,   239,   169,   321,   640,   641,   642,   701,
+      45,    62,   177,   178,   179,   333,   180,   334,   170,   329,
+     644,   645,   646,   704,    47,    63,   192,   193,   194,   124,
+     293,   196,   337,   197,   338,   198,   345,   199,   340,   200,
+     341,   201,   343,   202,   342,   203,   344,   204,   339,   172,
+     330,   648,   707,   125,   304,   610,   317,   421,   422,   423,
+     424,   425,   505,   126,   127,   308,   631,   632,   633,   692,
+     634,   693,   128,   309,    55,    67,   262,   263,   264,   265,
+     366,   266,   367,   267,   268,   369,   269,   270,   271,   372,
+     544,   272,   373,   273,   274,   275,   276,   377,   551,   277,
+     378,    83,   285,    84,   286,    85,   284,   556,   557,   558,
+     650,   772,   773,   774,   782,   783,   784,   785,   790,   786,
+     788,   800,   801,   802,   806,   807,   809
   };
 
   const unsigned short int
   Dhcp4Parser::yytable_[] =
   {
-      79,   150,   227,   149,   173,   188,   210,   226,   240,   259,
-     166,   174,   189,   169,    68,   193,   228,   151,   229,   415,
-     416,   152,   153,   605,    25,   135,    26,    74,    27,   286,
-     538,    98,   129,   130,   287,    88,    89,   135,   498,   499,
-      86,   171,   172,   238,   239,    87,    88,    89,   308,   312,
-      90,    91,    71,   309,   313,   328,    92,    93,    94,   332,
-     329,   136,   137,   138,   333,    98,    24,    92,    93,    94,
-      95,    96,   203,   277,   139,    97,    98,   140,   141,   142,
-     143,   144,   145,    89,   179,   180,   146,   147,    36,    89,
-     179,   180,    38,   148,    99,   100,    78,   204,   146,   205,
-     206,    40,   207,   208,   209,   204,   101,   673,   675,   102,
-     674,   676,    98,   204,   360,    78,   103,   104,    98,   361,
-     105,   539,   204,   224,   205,   206,   225,   771,   376,    75,
-     772,   278,   410,   377,   308,    76,    77,   181,   276,   645,
-     280,   182,   183,   184,   185,   186,    42,   187,    78,    78,
-      28,    29,    30,    31,   647,   799,   556,    44,   800,   648,
-      78,   557,   558,   559,   560,   561,   562,   563,   564,   565,
-     566,   773,    46,   774,   775,   542,   543,   544,   545,    48,
-      78,   204,   611,   612,   613,   614,   615,   616,    78,   312,
-     661,    50,   661,   686,   649,   662,    78,   663,   687,   690,
-      52,   546,    78,   279,   691,    78,    54,   726,   415,   416,
-     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,   258,   376,   328,   360,   332,    79,   692,
-     757,   760,   764,   238,   239,   378,   379,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,   787,    78,
-     806,   412,   285,   788,   289,   807,   411,   290,   595,   596,
-     597,   598,   294,   413,    78,   295,   414,   296,   150,   297,
-     149,   625,   626,   305,   173,   322,   323,   166,   343,   347,
-     169,   174,   344,   353,   151,   351,   188,   355,   152,   153,
-     352,   357,   356,   189,   227,   210,   193,   362,   365,   226,
-     747,   748,   749,   750,   367,   368,   371,   372,   228,   373,
-     229,   380,   381,   382,   383,   384,   386,   387,   259,   388,
-     389,   390,   391,   392,   393,   396,   394,   397,   398,   395,
-     399,   400,   401,   402,   403,   404,   405,   407,   408,   422,
-     423,   481,   482,   424,   425,   426,   427,   428,   429,   430,
-     431,   432,   433,   434,   436,   437,   439,   440,   441,   442,
-     443,   444,   445,   446,   447,   449,   450,   451,   452,   453,
-     454,   455,   457,   458,   460,   461,   463,   464,   465,   467,
-     470,   466,   471,   468,   469,   475,   476,   478,   472,   473,
-     474,   479,   480,   483,   485,   484,   486,   487,   488,   489,
-     490,   491,   492,   541,   504,   493,   494,   495,   496,   502,
-     503,   507,   514,   513,   633,   654,   505,   506,   508,   534,
-     509,   510,   575,   575,    26,   583,   511,   567,   567,   512,
-     515,   587,   591,   607,   635,   518,   549,   259,   519,   639,
-     412,   655,   656,   657,   521,   411,   522,   658,   665,   666,
-     523,   524,   413,   525,   668,   414,   526,   669,   671,   672,
-     746,   527,   679,   678,   643,   680,   681,   682,   528,   529,
-     683,   684,   685,   699,   793,   530,   531,   698,   701,   702,
-     739,   704,   705,   707,   708,   709,   710,   716,   717,   736,
-     737,   740,   516,   551,   532,   745,   385,   758,   533,   767,
-     535,   759,   765,   536,   785,   789,   791,   808,   537,   520,
-     548,   795,   550,   406,   555,   409,   718,   725,   582,   728,
-     727,   693,   696,   462,   735,   720,   719,   722,   435,   801,
-     721,   456,   724,   459,   711,   723,   742,   744,   712,   741,
-     438,   713,   448,   634,   738,   715,   714,   729,   730,   743,
-     477,   731,   732,   733,   734,   790,   631,   706,   783,   752,
-     753,   754,   755,   792,   756,   761,   762,   763,   804,   809,
-       0,   766,   794,     0,     0,   810,     0,     0,     0,     0,
+      79,   152,   229,   151,   175,   190,   212,   228,   242,   261,
+     168,   176,   191,   171,    68,   195,   230,   153,   231,   419,
+     420,   154,   155,   609,    25,   137,    26,    74,    27,   288,
+     542,    98,    24,   310,   289,   137,    88,    89,   311,   315,
+      86,   173,   174,    71,   316,    36,    87,    88,    89,   240,
+     241,    90,    91,   240,   241,   331,   335,    92,    93,    94,
+     332,   336,   138,   139,   140,    38,    98,    40,    92,    93,
+      94,    95,    96,   205,   278,   141,    97,    98,   142,   143,
+     144,   145,   146,   147,    89,   181,   182,   148,   149,    42,
+      89,   181,   182,    44,   150,    99,   100,   148,   206,    46,
+     207,   208,    78,   209,   210,   211,   206,   101,   129,   130,
+     102,   363,   131,    98,   206,    78,   364,   103,   104,    98,
+      48,   105,   543,   206,   226,   207,   208,   227,   677,   379,
+      75,   678,   279,   414,   380,   310,    76,    77,   183,   280,
+     649,    50,   184,   185,   186,   187,   188,    52,   189,    78,
+      78,    28,    29,    30,    31,   651,   679,   560,    54,   680,
+     652,    78,   561,   562,   563,   564,   565,   566,   567,   568,
+     569,   570,   777,   281,   778,   779,   546,   547,   548,   549,
+     282,    78,   206,   615,   616,   617,   618,   619,   620,    78,
+     315,   665,   346,   665,   690,   653,   666,    78,   667,   691,
+     694,   775,   550,    78,   776,   695,    78,   730,   287,   419,
+     420,   247,   248,   249,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   347,   379,   331,   363,   335,
+      79,   696,   761,   764,   768,   791,   810,   381,   382,   291,
+     792,   811,   599,   600,   601,   602,   751,   752,   753,   754,
+      78,   292,   803,   355,   416,   804,   502,   503,   296,   415,
+     629,   630,   297,   298,   299,    78,   417,   307,   314,   418,
+     325,   152,   326,   151,   350,   354,   356,   175,   358,   360,
+     168,   383,   365,   171,   176,   359,   368,   153,   370,   190,
+     371,   154,   155,   374,   375,   376,   191,   229,   212,   195,
+     384,   385,   228,   386,   387,   389,   392,   390,   391,   393,
+     394,   230,   395,   231,   396,   397,   398,   399,   400,   401,
+     402,   261,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,   403,   404,   405,   406,   407,   408,   410,
+     411,   412,   426,   427,   485,   486,   428,   429,   430,   431,
+     432,   433,   434,   435,   436,   437,   438,   440,   441,   443,
+     444,   445,   446,   447,   448,   449,   450,   451,   453,   454,
+     455,   456,   457,   458,   459,   461,   462,   464,   465,   467,
+     468,   469,   471,   470,   472,   473,   474,   475,   476,   479,
+     477,   478,   480,   482,   483,   507,   716,   484,   487,   488,
+     489,   490,   491,   492,   493,   494,   495,   496,   555,   520,
+     497,   498,   499,   500,   506,   508,   511,   509,   517,   510,
+     512,   518,    26,   538,   513,   514,   579,   579,   587,   591,
+     515,   571,   571,   595,   611,   516,   519,   637,   639,   522,
+     553,   261,   523,   525,   416,   643,   658,   659,   660,   415,
+     526,   527,   528,   529,   530,   531,   417,   532,   533,   418,
+     534,   647,   661,   662,   535,   670,   669,   672,   673,   536,
+     675,   676,   537,   539,   545,   682,   683,   702,   684,   540,
+     541,   685,   686,   687,   688,   689,   703,   706,   705,   524,
+     709,   711,   712,   708,   713,   714,   720,   721,   740,   741,
+     749,   744,   552,   743,   697,   750,   771,   700,   789,   762,
+     763,   769,   715,   717,   793,   795,   718,   797,   812,   719,
+     799,   409,   388,   554,   559,   413,   722,   729,   733,   734,
+     732,   586,   731,   739,   724,   723,   439,   466,   726,   725,
+     735,   460,   736,   737,   727,   738,   805,   728,   756,   757,
+     758,   759,   760,   463,   745,   765,   766,   767,   746,   452,
+     770,   747,   794,   442,   798,   748,   814,   742,   638,   635,
+     710,   481,   787,   796,   808,   813,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   575,     0,
-       0,     0,     0,   567,   150,     0,   149,   227,     0,   210,
-       0,     0,   226,   166,     0,     0,   169,     0,     0,   240,
-     151,   228,     0,   229,   152,   153,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   173,
-       0,     0,   188,     0,     0,     0,   174,     0,     0,   189,
-       0,     0,   193,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   579,     0,     0,     0,     0,   571,   152,     0,
+     151,   229,     0,   212,     0,     0,   228,   168,     0,     0,
+     171,     0,     0,   242,   153,   230,     0,   231,   154,   155,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   175,     0,     0,   190,     0,     0,     0,
+     176,     0,     0,   191,     0,     0,   195,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   777,     0,     0,
-       0,     0,   776,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   777,     0,     0,     0,     0,   776
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   781,     0,     0,     0,     0,   780,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   781,     0,
+       0,     0,     0,   780
   };
 
   const short int
   Dhcp4Parser::yycheck_[] =
   {
       58,    61,    65,    61,    62,    63,    64,    65,    66,    67,
-      61,    62,    63,    61,    56,    63,    65,    61,    65,   314,
-     314,    61,    61,   491,     5,     7,     7,    10,     9,     3,
-      15,    47,    12,    13,     8,    17,    18,     7,    14,    15,
-      11,    57,    58,    78,    79,    16,    17,    18,     3,     3,
-      21,    22,   131,     8,     8,     3,    38,    39,    40,     3,
-       8,    43,    44,    45,     8,    47,     0,    38,    39,    40,
-      41,    42,    23,     3,    56,    46,    47,    59,    60,    61,
-      62,    63,    64,    18,    19,    20,    68,    69,     7,    18,
-      19,    20,     7,    75,    65,    66,   131,    48,    68,    50,
-      51,     7,    53,    54,    55,    48,    77,     3,     3,    80,
-       6,     6,    47,    48,     3,   131,    87,    88,    47,     8,
-      91,   106,    48,    49,    50,    51,    52,     3,     3,   112,
-       6,     4,    67,     8,     3,   118,   119,    66,     6,     8,
-       3,    70,    71,    72,    73,    74,     7,    76,   131,   131,
-     131,   132,   133,   134,     3,     3,    23,     7,     6,     8,
-     131,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,   114,     7,   116,   117,   108,   109,   110,   111,     7,
-     131,    48,    81,    82,    83,    84,    85,    86,   131,     3,
-       3,     7,     3,     3,     8,     8,   131,     8,     8,     3,
-       7,   134,   131,     8,     8,   131,     7,   675,   503,   503,
-      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-     102,   103,   104,   105,     3,     3,     3,     3,   286,     8,
-       8,     8,     8,    78,    79,   277,   278,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,     3,   131,
-       3,   314,     4,     8,     4,     8,   314,     4,    70,    71,
-      72,    73,     4,   314,   131,     4,   314,     4,   328,     4,
-     328,    89,    90,     4,   332,     4,     4,   328,     8,     4,
-     328,   332,     3,     3,   328,     4,   344,     4,   328,   328,
-       8,     3,     8,   344,   357,   353,   344,     4,     4,   357,
-      24,    25,    26,    27,     4,     4,     4,     4,   357,     4,
-     357,   131,     4,     4,     4,     4,     4,   134,   376,   134,
-       4,     4,     4,   132,   132,     4,   132,     4,     4,   132,
-       4,     4,     4,     4,   132,     4,     4,     4,     4,     4,
-       4,   383,   384,     4,     4,     4,     4,     4,   132,   134,
+      61,    62,    63,    61,    56,    63,    65,    61,    65,   317,
+     317,    61,    61,   495,     5,     7,     7,    10,     9,     3,
+      15,    48,     0,     3,     8,     7,    18,    19,     8,     3,
+      11,    58,    59,   132,     8,     7,    17,    18,    19,    79,
+      80,    22,    23,    79,    80,     3,     3,    39,    40,    41,
+       8,     8,    44,    45,    46,     7,    48,     7,    39,    40,
+      41,    42,    43,    24,     6,    57,    47,    48,    60,    61,
+      62,    63,    64,    65,    19,    20,    21,    69,    70,     7,
+      19,    20,    21,     7,    76,    66,    67,    69,    49,     7,
+      51,    52,   132,    54,    55,    56,    49,    78,    12,    13,
+      81,     3,    16,    48,    49,   132,     8,    88,    89,    48,
+       7,    92,   107,    49,    50,    51,    52,    53,     3,     3,
+     113,     6,     3,    68,     8,     3,   119,   120,    67,     4,
+       8,     7,    71,    72,    73,    74,    75,     7,    77,   132,
+     132,   132,   133,   134,   135,     3,     3,    24,     7,     6,
+       8,   132,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,   115,     8,   117,   118,   109,   110,   111,   112,
+       3,   132,    49,    82,    83,    84,    85,    86,    87,   132,
+       3,     3,     8,     3,     3,     8,     8,   132,     8,     8,
+       3,     3,   135,   132,     6,     8,   132,   679,     4,   507,
+     507,    93,    94,    95,    96,    97,    98,    99,   100,   101,
+     102,   103,   104,   105,   106,     3,     3,     3,     3,     3,
+     288,     8,     8,     8,     8,     3,     3,   279,   280,     4,
+       8,     8,    71,    72,    73,    74,    25,    26,    27,    28,
+     132,     4,     3,     8,   317,     6,    14,    15,     4,   317,
+      90,    91,     4,     4,     4,   132,   317,     4,     4,   317,
+       4,   331,     4,   331,     4,     4,     3,   335,     4,     3,
+     331,   132,     4,   331,   335,     8,     4,   331,     4,   347,
+       4,   331,   331,     4,     4,     4,   347,   360,   356,   347,
+       4,     4,   360,     4,     4,     4,     4,   135,   135,     4,
+       4,   360,   133,   360,   133,   133,   133,     4,     4,     4,
+       4,   379,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,     4,     4,     4,   133,     4,     4,     4,
+       4,   135,     4,     4,   386,   387,     4,     4,     4,     4,
+       4,   133,   135,     4,     4,     4,     4,     4,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,   132,     4,     4,
-       4,   134,     4,   134,     4,     4,   134,     4,     4,     4,
-       4,   132,     4,   132,   132,     4,     4,     4,   134,   134,
-     134,     7,     7,     7,     7,   131,     7,     5,     5,     5,
-       5,     5,     5,   107,   131,     7,     7,     7,     5,     8,
-       3,     5,     7,     5,     4,     4,   131,   131,   131,   461,
-     131,   131,   485,   486,     7,     7,   131,   485,   486,   131,
-     131,     7,     7,     7,     7,   131,   478,   495,   131,     7,
-     503,     4,     4,     4,   131,   503,   131,     4,     6,     3,
-     131,   131,   503,   131,     6,   503,   131,     3,     6,     3,
-       5,   131,     3,     6,    76,     4,     4,     4,   131,   131,
-       4,     4,     4,     3,     5,   131,   131,     6,     6,     3,
-       6,     8,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     3,   437,   113,   131,     4,   286,     8,   131,     7,
-     131,     8,     8,   131,     4,     4,     4,     4,   131,   441,
-     131,     7,   479,   308,   483,   312,   661,   673,   486,   679,
-     677,   131,   131,   360,   686,   666,   664,   669,   328,   115,
-     667,   353,   672,   357,   132,   670,   699,   702,   134,   697,
-     332,   132,   344,   503,   690,   132,   134,   132,   132,   700,
-     376,   132,   132,   132,   132,   132,   495,   647,   771,   131,
-     131,   131,   131,   787,   131,   131,   131,   131,   799,   806,
-      -1,   131,   131,    -1,    -1,   131,    -1,    -1,    -1,    -1,
+     133,     4,     4,     4,   135,     4,   135,     4,     4,   135,
+       4,     4,     4,   133,   133,   133,     4,     4,   135,     4,
+     135,   135,     4,     4,     7,     3,   135,     7,     7,   132,
+       7,     7,     5,     5,     5,     5,     5,     5,   114,   441,
+       7,     7,     7,     5,     8,   132,     5,   132,     5,   132,
+     132,     7,     7,   465,   132,   132,   489,   490,     7,     7,
+     132,   489,   490,     7,     7,   132,   132,     4,     7,   132,
+     482,   499,   132,   132,   507,     7,     4,     4,     4,   507,
+     132,   132,   132,   132,   132,   132,   507,   132,   132,   507,
+     132,    77,     4,     4,   132,     3,     6,     6,     3,   132,
+       6,     3,   132,   132,   108,     6,     3,     6,     4,   132,
+     132,     4,     4,     4,     4,     4,     3,     3,     6,   445,
+       4,     4,     4,     8,     4,     4,     4,     4,     4,     4,
+       4,     3,   132,     6,   132,     5,     7,   132,     4,     8,
+       8,     8,   133,   133,     4,     4,   135,     5,     4,   133,
+       7,   310,   288,   483,   487,   315,   665,   677,   133,   133,
+     683,   490,   681,   690,   670,   668,   331,   363,   673,   671,
+     133,   356,   133,   133,   674,   133,   116,   676,   132,   132,
+     132,   132,   132,   360,   701,   132,   132,   132,   703,   347,
+     132,   704,   133,   335,   132,   706,   132,   694,   507,   499,
+     651,   379,   775,   791,   803,   810,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   661,    -1,
-      -1,    -1,    -1,   661,   664,    -1,   664,   670,    -1,   667,
-      -1,    -1,   670,   664,    -1,    -1,   664,    -1,    -1,   677,
-     664,   670,    -1,   670,   664,   664,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   697,
-      -1,    -1,   700,    -1,    -1,    -1,   697,    -1,    -1,   700,
-      -1,    -1,   700,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   665,    -1,    -1,    -1,    -1,   665,   668,    -1,
+     668,   674,    -1,   671,    -1,    -1,   674,   668,    -1,    -1,
+     668,    -1,    -1,   681,   668,   674,    -1,   674,   668,   668,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   701,    -1,    -1,   704,    -1,    -1,    -1,
+     701,    -1,    -1,   704,    -1,    -1,   704,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   770,    -1,    -1,
-      -1,    -1,   770,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   787,    -1,    -1,    -1,    -1,   787
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   774,    -1,    -1,    -1,    -1,   774,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   791,    -1,
+      -1,    -1,    -1,   791
   };
 
   const unsigned short int
   Dhcp4Parser::yystos_[] =
   {
-       0,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,     0,     5,     7,     9,   131,   132,
-     133,   134,   148,   149,   150,   155,     7,   164,     7,   170,
-       7,   184,     7,   255,     7,   324,     7,   338,     7,   283,
-       7,   307,     7,   231,     7,   388,   156,   151,   165,   171,
-     185,   256,   325,   339,   284,   308,   232,   389,   148,   157,
-     158,   131,   153,   154,    10,   112,   118,   119,   131,   163,
-     166,   167,   168,   415,   417,   419,    11,    16,    17,    18,
-      21,    22,    38,    39,    40,    41,    42,    46,    47,    65,
-      66,    77,    80,    87,    88,    91,   163,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   191,   193,   217,   225,
-     239,   249,   277,   301,   343,   367,   377,   378,   386,    12,
-      13,   182,   183,   186,   188,     7,    43,    44,    45,    56,
-      59,    60,    61,    62,    63,    64,    68,    69,    75,   163,
-     174,   175,   176,   179,   257,   258,   259,   261,   263,   265,
-     267,   269,   271,   273,   275,   276,   301,   318,   332,   343,
-     363,    57,    58,   163,   301,   326,   327,   328,   330,    19,
-      20,    66,    70,    71,    72,    73,    74,    76,   163,   301,
-     340,   341,   342,   343,   345,   347,   349,   351,   353,   355,
-     357,   359,   361,    23,    48,    50,    51,    53,    54,    55,
-     163,   207,   285,   286,   287,   288,   289,   290,   291,   293,
-     295,   297,   298,   300,    49,    52,   163,   207,   289,   295,
-     309,   310,   311,   312,   313,   315,   316,   317,    78,    79,
-     163,   233,   234,   235,   237,    92,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   163,
-     390,   391,   392,   393,   395,   397,   398,   400,   401,   402,
-     405,   407,   408,   409,   410,   413,     6,     3,     4,     8,
-       3,   169,   420,   416,   418,     4,     3,     8,   181,     4,
-       4,   344,   192,   194,     4,     4,     4,     4,   250,   278,
-     302,   218,   368,   226,   240,     4,   379,   387,     3,     8,
-     187,   189,     3,     8,   370,   262,   264,   266,   319,   260,
-     268,   270,     4,     4,   274,   272,   333,   364,     3,     8,
-     329,   331,     3,     8,   346,   348,   362,   352,   354,   358,
-     356,   360,   350,     8,     3,   292,   208,     4,   296,   294,
-     299,     4,     8,     3,   314,     4,     8,     3,   236,   238,
-       3,     8,     4,   394,   396,     4,   399,     4,     4,   403,
-     406,     4,     4,     4,   411,   414,     3,     8,   148,   148,
-     131,     4,     4,     4,     4,   167,     4,   134,   134,     4,
-       4,     4,   132,   132,   132,   132,     4,     4,     4,     4,
-       4,     4,     4,   132,     4,     4,   173,     4,     4,   183,
-      67,   163,   207,   301,   343,   345,   347,   371,   372,   373,
-     374,   375,     4,     4,     4,     4,     4,     4,     4,   132,
-     134,     4,     4,     4,     4,   258,     4,     4,   327,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,   342,     4,
-       4,   132,     4,     4,     4,   134,   287,     4,   134,   311,
-       4,     4,   234,   134,     4,     4,   132,     4,   132,   132,
-       4,     4,   134,   134,   134,     4,     4,   391,     4,     7,
-       7,   148,   148,     7,   131,     7,     7,     5,     5,     5,
-       5,     5,     5,     7,     7,     7,     5,   159,    14,    15,
-     190,   376,     8,     3,   131,   131,   131,     5,   131,   131,
-     131,   131,   131,     5,     7,   131,   150,   152,   131,   131,
-     159,   131,   131,   131,   131,   131,   131,   131,   131,   131,
-     131,   131,   131,   131,   148,   131,   131,   131,    15,   106,
-     404,   107,   108,   109,   110,   111,   134,   412,   131,   148,
-     172,   113,   421,   422,   423,   182,    23,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,   163,   195,   196,
-     197,   200,   202,   204,   206,   207,   209,   210,   211,   212,
-     213,   215,   195,     7,   251,   252,   253,     7,   279,   280,
-     281,     7,   303,   304,   305,    70,    71,    72,    73,   219,
-     220,   221,   222,   223,   224,   271,   369,     7,   227,   228,
-     229,    81,    82,    83,    84,    85,    86,   241,   242,   243,
-     244,   245,   246,   247,   248,    89,    90,   380,   381,   382,
-     384,   390,   160,     4,   373,     7,   320,   321,   322,     7,
-     334,   335,   336,    76,   365,     8,   424,     3,     8,     8,
-     198,   201,   203,   205,     4,     4,     4,     4,     4,   214,
-     216,     3,     8,     8,   254,     6,     3,   282,     6,     3,
-     306,     6,     3,     3,     6,     3,     6,   230,     6,     3,
-       4,     4,     4,     4,     4,     4,     3,     8,   383,   385,
-       3,     8,     8,   131,   161,   162,   131,   323,     6,     3,
-     337,     6,     3,   366,     8,     4,   422,     4,     4,     4,
-       4,   132,   134,   132,   134,   132,     4,     4,   196,   257,
-     253,   285,   281,   309,   305,   220,   271,   233,   229,   132,
-     132,   132,   132,   132,   132,   242,     4,     4,   381,     6,
-       3,   326,   322,   340,   336,     4,     5,    24,    25,    26,
-      27,   199,   131,   131,   131,   131,   131,     8,     8,     8,
-       8,   131,   131,   131,     8,     8,   131,     7,   425,   426,
-     427,     3,     6,   114,   116,   117,   163,   207,   428,   429,
-     430,   431,   433,   426,   434,     4,   432,     3,     8,     4,
-     132,     4,   429,     5,   131,     7,   435,   436,   437,     3,
-       6,   115,   438,   439,   436,   440,     3,     8,     4,   439,
-     131
+       0,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,   131,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,     0,     5,     7,     9,   132,   133,
+     134,   135,   149,   150,   151,   156,     7,   165,     7,   171,
+       7,   185,     7,   257,     7,   326,     7,   340,     7,   285,
+       7,   309,     7,   233,     7,   390,   157,   152,   166,   172,
+     186,   258,   327,   341,   286,   310,   234,   391,   149,   158,
+     159,   132,   154,   155,    10,   113,   119,   120,   132,   164,
+     167,   168,   169,   417,   419,   421,    11,    17,    18,    19,
+      22,    23,    39,    40,    41,    42,    43,    47,    48,    66,
+      67,    78,    81,    88,    89,    92,   164,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   193,   195,   219,   227,
+     241,   251,   279,   303,   345,   369,   379,   380,   388,    12,
+      13,    16,   183,   184,   187,   189,   192,     7,    44,    45,
+      46,    57,    60,    61,    62,    63,    64,    65,    69,    70,
+      76,   164,   175,   176,   177,   180,   259,   260,   261,   263,
+     265,   267,   269,   271,   273,   275,   277,   278,   303,   320,
+     334,   345,   365,    58,    59,   164,   303,   328,   329,   330,
+     332,    20,    21,    67,    71,    72,    73,    74,    75,    77,
+     164,   303,   342,   343,   344,   345,   347,   349,   351,   353,
+     355,   357,   359,   361,   363,    24,    49,    51,    52,    54,
+      55,    56,   164,   209,   287,   288,   289,   290,   291,   292,
+     293,   295,   297,   299,   300,   302,    50,    53,   164,   209,
+     291,   297,   311,   312,   313,   314,   315,   317,   318,   319,
+      79,    80,   164,   235,   236,   237,   239,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   164,   392,   393,   394,   395,   397,   399,   400,   402,
+     403,   404,   407,   409,   410,   411,   412,   415,     6,     3,
+       4,     8,     3,   170,   422,   418,   420,     4,     3,     8,
+     182,     4,     4,   346,   194,   196,     4,     4,     4,     4,
+     252,   280,   304,   220,   370,   228,   242,     4,   381,   389,
+       3,     8,   188,   190,     4,     3,     8,   372,   264,   266,
+     268,   321,   262,   270,   272,     4,     4,   276,   274,   335,
+     366,     3,     8,   331,   333,     3,     8,   348,   350,   364,
+     354,   356,   360,   358,   362,   352,     8,     3,   294,   210,
+       4,   298,   296,   301,     4,     8,     3,   316,     4,     8,
+       3,   238,   240,     3,     8,     4,   396,   398,     4,   401,
+       4,     4,   405,   408,     4,     4,     4,   413,   416,     3,
+       8,   149,   149,   132,     4,     4,     4,     4,   168,     4,
+     135,   135,     4,     4,     4,   133,   133,   133,   133,     4,
+       4,     4,     4,     4,     4,     4,   133,     4,     4,   174,
+       4,     4,   135,   184,    68,   164,   209,   303,   345,   347,
+     349,   373,   374,   375,   376,   377,     4,     4,     4,     4,
+       4,     4,     4,   133,   135,     4,     4,     4,     4,   260,
+       4,     4,   329,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,   344,     4,     4,   133,     4,     4,     4,   135,
+     289,     4,   135,   313,     4,     4,   236,   135,     4,     4,
+     133,     4,   133,   133,     4,     4,   135,   135,   135,     4,
+       4,   393,     4,     7,     7,   149,   149,     7,   132,     7,
+       7,     5,     5,     5,     5,     5,     5,     7,     7,     7,
+       5,   160,    14,    15,   191,   378,     8,     3,   132,   132,
+     132,     5,   132,   132,   132,   132,   132,     5,     7,   132,
+     151,   153,   132,   132,   160,   132,   132,   132,   132,   132,
+     132,   132,   132,   132,   132,   132,   132,   132,   149,   132,
+     132,   132,    15,   107,   406,   108,   109,   110,   111,   112,
+     135,   414,   132,   149,   173,   114,   423,   424,   425,   183,
+      24,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,   164,   197,   198,   199,   202,   204,   206,   208,   209,
+     211,   212,   213,   214,   215,   217,   197,     7,   253,   254,
+     255,     7,   281,   282,   283,     7,   305,   306,   307,    71,
+      72,    73,    74,   221,   222,   223,   224,   225,   226,   273,
+     371,     7,   229,   230,   231,    82,    83,    84,    85,    86,
+      87,   243,   244,   245,   246,   247,   248,   249,   250,    90,
+      91,   382,   383,   384,   386,   392,   161,     4,   375,     7,
+     322,   323,   324,     7,   336,   337,   338,    77,   367,     8,
+     426,     3,     8,     8,   200,   203,   205,   207,     4,     4,
+       4,     4,     4,   216,   218,     3,     8,     8,   256,     6,
+       3,   284,     6,     3,   308,     6,     3,     3,     6,     3,
+       6,   232,     6,     3,     4,     4,     4,     4,     4,     4,
+       3,     8,   385,   387,     3,     8,     8,   132,   162,   163,
+     132,   325,     6,     3,   339,     6,     3,   368,     8,     4,
+     424,     4,     4,     4,     4,   133,   135,   133,   135,   133,
+       4,     4,   198,   259,   255,   287,   283,   311,   307,   222,
+     273,   235,   231,   133,   133,   133,   133,   133,   133,   244,
+       4,     4,   383,     6,     3,   328,   324,   342,   338,     4,
+       5,    25,    26,    27,    28,   201,   132,   132,   132,   132,
+     132,     8,     8,     8,     8,   132,   132,   132,     8,     8,
+     132,     7,   427,   428,   429,     3,     6,   115,   117,   118,
+     164,   209,   430,   431,   432,   433,   435,   428,   436,     4,
+     434,     3,     8,     4,   133,     4,   431,     5,   132,     7,
+     437,   438,   439,     3,     6,   116,   440,   441,   438,   442,
+       3,     8,     4,   441,   132
   };
 
   const unsigned short int
   Dhcp4Parser::yyr1_[] =
   {
-       0,   135,   137,   136,   138,   136,   139,   136,   140,   136,
-     141,   136,   142,   136,   143,   136,   144,   136,   145,   136,
-     146,   136,   147,   136,   148,   148,   148,   148,   148,   148,
-     148,   149,   151,   150,   152,   153,   153,   154,   154,   156,
-     155,   157,   157,   158,   158,   160,   159,   161,   161,   162,
-     162,   163,   165,   164,   166,   166,   167,   167,   167,   167,
-     167,   169,   168,   171,   170,   172,   172,   173,   173,   173,
-     173,   173,   173,   173,   173,   173,   173,   173,   173,   173,
-     173,   173,   173,   173,   173,   173,   173,   173,   174,   175,
-     176,   177,   178,   179,   181,   180,   182,   182,   183,   183,
-     185,   184,   187,   186,   189,   188,   190,   190,   192,   191,
-     194,   193,   195,   195,   196,   196,   196,   196,   196,   196,
-     196,   196,   196,   196,   196,   196,   196,   198,   197,   199,
-     199,   199,   199,   201,   200,   203,   202,   205,   204,   206,
-     208,   207,   209,   210,   211,   212,   214,   213,   216,   215,
-     218,   217,   219,   219,   220,   220,   220,   220,   221,   222,
-     223,   224,   226,   225,   227,   227,   228,   228,   230,   229,
-     232,   231,   233,   233,   233,   234,   234,   236,   235,   238,
-     237,   240,   239,   241,   241,   242,   242,   242,   242,   242,
-     242,   243,   244,   245,   246,   247,   248,   250,   249,   251,
-     251,   252,   252,   254,   253,   256,   255,   257,   257,   258,
-     258,   258,   258,   258,   258,   258,   258,   258,   258,   258,
-     258,   258,   258,   258,   258,   258,   258,   258,   258,   260,
-     259,   262,   261,   264,   263,   266,   265,   268,   267,   270,
-     269,   272,   271,   274,   273,   275,   276,   278,   277,   279,
-     279,   280,   280,   282,   281,   284,   283,   285,   285,   286,
-     286,   287,   287,   287,   287,   287,   287,   287,   287,   288,
-     289,   290,   292,   291,   294,   293,   296,   295,   297,   299,
-     298,   300,   302,   301,   303,   303,   304,   304,   306,   305,
-     308,   307,   309,   309,   310,   310,   311,   311,   311,   311,
-     311,   311,   312,   314,   313,   315,   316,   317,   319,   318,
-     320,   320,   321,   321,   323,   322,   325,   324,   326,   326,
-     327,   327,   327,   327,   329,   328,   331,   330,   333,   332,
-     334,   334,   335,   335,   337,   336,   339,   338,   340,   340,
-     341,   341,   342,   342,   342,   342,   342,   342,   342,   342,
-     342,   342,   342,   342,   344,   343,   346,   345,   348,   347,
+       0,   136,   138,   137,   139,   137,   140,   137,   141,   137,
+     142,   137,   143,   137,   144,   137,   145,   137,   146,   137,
+     147,   137,   148,   137,   149,   149,   149,   149,   149,   149,
+     149,   150,   152,   151,   153,   154,   154,   155,   155,   157,
+     156,   158,   158,   159,   159,   161,   160,   162,   162,   163,
+     163,   164,   166,   165,   167,   167,   168,   168,   168,   168,
+     168,   170,   169,   172,   171,   173,   173,   174,   174,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   175,   176,
+     177,   178,   179,   180,   182,   181,   183,   183,   184,   184,
+     184,   186,   185,   188,   187,   190,   189,   191,   191,   192,
+     194,   193,   196,   195,   197,   197,   198,   198,   198,   198,
+     198,   198,   198,   198,   198,   198,   198,   198,   198,   200,
+     199,   201,   201,   201,   201,   203,   202,   205,   204,   207,
+     206,   208,   210,   209,   211,   212,   213,   214,   216,   215,
+     218,   217,   220,   219,   221,   221,   222,   222,   222,   222,
+     223,   224,   225,   226,   228,   227,   229,   229,   230,   230,
+     232,   231,   234,   233,   235,   235,   235,   236,   236,   238,
+     237,   240,   239,   242,   241,   243,   243,   244,   244,   244,
+     244,   244,   244,   245,   246,   247,   248,   249,   250,   252,
+     251,   253,   253,   254,   254,   256,   255,   258,   257,   259,
+     259,   260,   260,   260,   260,   260,   260,   260,   260,   260,
+     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
+     260,   262,   261,   264,   263,   266,   265,   268,   267,   270,
+     269,   272,   271,   274,   273,   276,   275,   277,   278,   280,
+     279,   281,   281,   282,   282,   284,   283,   286,   285,   287,
+     287,   288,   288,   289,   289,   289,   289,   289,   289,   289,
+     289,   290,   291,   292,   294,   293,   296,   295,   298,   297,
+     299,   301,   300,   302,   304,   303,   305,   305,   306,   306,
+     308,   307,   310,   309,   311,   311,   312,   312,   313,   313,
+     313,   313,   313,   313,   314,   316,   315,   317,   318,   319,
+     321,   320,   322,   322,   323,   323,   325,   324,   327,   326,
+     328,   328,   329,   329,   329,   329,   331,   330,   333,   332,
+     335,   334,   336,   336,   337,   337,   339,   338,   341,   340,
+     342,   342,   343,   343,   344,   344,   344,   344,   344,   344,
+     344,   344,   344,   344,   344,   344,   346,   345,   348,   347,
      350,   349,   352,   351,   354,   353,   356,   355,   358,   357,
      360,   359,   362,   361,   364,   363,   366,   365,   368,   367,
-     369,   369,   370,   271,   371,   371,   372,   372,   373,   373,
-     373,   373,   373,   373,   373,   374,   376,   375,   377,   379,
-     378,   380,   380,   381,   381,   383,   382,   385,   384,   387,
-     386,   389,   388,   390,   390,   391,   391,   391,   391,   391,
-     391,   391,   391,   391,   391,   391,   391,   391,   391,   391,
-     392,   394,   393,   396,   395,   397,   399,   398,   400,   401,
-     403,   402,   404,   404,   406,   405,   407,   408,   409,   411,
-     410,   412,   412,   412,   412,   412,   414,   413,   416,   415,
-     418,   417,   420,   419,   421,   421,   422,   424,   423,   425,
-     425,   427,   426,   428,   428,   429,   429,   429,   429,   429,
-     430,   432,   431,   434,   433,   435,   435,   437,   436,   438,
-     438,   440,   439
+     370,   369,   371,   371,   372,   273,   373,   373,   374,   374,
+     375,   375,   375,   375,   375,   375,   375,   376,   378,   377,
+     379,   381,   380,   382,   382,   383,   383,   385,   384,   387,
+     386,   389,   388,   391,   390,   392,   392,   393,   393,   393,
+     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
+     393,   393,   394,   396,   395,   398,   397,   399,   401,   400,
+     402,   403,   405,   404,   406,   406,   408,   407,   409,   410,
+     411,   413,   412,   414,   414,   414,   414,   414,   416,   415,
+     418,   417,   420,   419,   422,   421,   423,   423,   424,   426,
+     425,   427,   427,   429,   428,   430,   430,   431,   431,   431,
+     431,   431,   432,   434,   433,   436,   435,   437,   437,   439,
+     438,   440,   440,   442,   441
   };
 
   const unsigned char
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
        3,     3,     3,     3,     0,     6,     1,     3,     1,     1,
-       0,     4,     0,     4,     0,     4,     1,     1,     0,     6,
-       0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     1,
-       1,     1,     1,     0,     4,     0,     4,     0,     4,     3,
-       0,     4,     3,     3,     3,     3,     0,     4,     0,     4,
-       0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     6,     0,     1,     1,     3,     0,     4,
-       0,     4,     1,     3,     1,     1,     1,     0,     4,     0,
-       4,     0,     6,     1,     3,     1,     1,     1,     1,     1,
-       1,     3,     3,     3,     3,     3,     3,     0,     6,     0,
-       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     0,     4,     0,     4,     0,     4,     1,     1,     3,
+       0,     6,     0,     6,     1,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     3,     3,     0,     6,     0,
-       1,     1,     3,     0,     4,     0,     4,     0,     1,     1,
+       4,     1,     1,     1,     1,     0,     4,     0,     4,     0,
+       4,     3,     0,     4,     3,     3,     3,     3,     0,     4,
+       0,     4,     0,     6,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     1,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     1,     3,     1,     1,     1,     0,
+       4,     0,     4,     0,     6,     1,     3,     1,     1,     1,
+       1,     1,     1,     3,     3,     3,     3,     3,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
        3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       3,     1,     0,     4,     0,     4,     0,     4,     1,     0,
-       4,     3,     0,     6,     0,     1,     1,     3,     0,     4,
-       0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     1,     1,     3,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
-       1,     1,     1,     1,     0,     4,     0,     4,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     0,     1,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     4,     0,     4,     0,     4,     3,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     0,
+       1,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     3,     1,     0,     4,     0,     4,     0,     4,
+       1,     0,     4,     3,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     0,     1,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     0,     4,     1,     1,     3,
+       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
+       1,     3,     1,     1,     1,     1,     0,     4,     0,     4,
+       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
+       0,     1,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     0,     4,
        0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     4,     0,     6,     0,     4,     0,     6,
-       1,     3,     0,     4,     0,     1,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     4,     3,     0,
-       6,     1,     3,     1,     1,     0,     4,     0,     4,     0,
-       6,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       0,     4,     0,     4,     0,     4,     0,     6,     0,     4,
+       0,     6,     1,     3,     0,     4,     0,     1,     1,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       3,     0,     6,     1,     3,     1,     1,     0,     4,     0,
+       4,     0,     6,     0,     4,     1,     3,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       3,     0,     4,     0,     4,     3,     0,     4,     3,     3,
-       0,     4,     1,     1,     0,     4,     3,     3,     3,     0,
-       4,     1,     1,     1,     1,     1,     0,     4,     0,     4,
-       0,     4,     0,     6,     1,     3,     1,     0,     6,     1,
-       3,     0,     4,     1,     3,     1,     1,     1,     1,     1,
-       3,     0,     4,     0,     6,     1,     3,     0,     4,     1,
-       3,     0,     4
+       1,     1,     3,     0,     4,     0,     4,     3,     0,     4,
+       3,     3,     0,     4,     1,     1,     0,     4,     3,     3,
+       3,     0,     4,     1,     1,     1,     1,     1,     0,     4,
+       0,     4,     0,     4,     0,     6,     1,     3,     1,     0,
+       6,     1,     3,     0,     4,     1,     3,     1,     1,     1,
+       1,     1,     3,     0,     4,     0,     6,     1,     3,     0,
+       4,     1,     3,     0,     4
   };
 
 
   "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"",
   "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp4\"",
   "\"interfaces-config\"", "\"interfaces\"", "\"dhcp-socket-type\"",
-  "\"raw\"", "\"udp\"", "\"echo-client-id\"", "\"match-client-id\"",
-  "\"next-server\"", "\"server-hostname\"", "\"boot-file-name\"",
-  "\"lease-database\"", "\"hosts-database\"", "\"type\"", "\"memfile\"",
-  "\"mysql\"", "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"",
-  "\"host\"", "\"port\"", "\"persist\"", "\"lfc-interval\"",
-  "\"readonly\"", "\"connect-timeout\"", "\"contact-points\"",
-  "\"keyspace\"", "\"valid-lifetime\"", "\"renew-timer\"",
-  "\"rebind-timer\"", "\"decline-probation-period\"", "\"subnet4\"",
-  "\"4o6-interface\"", "\"4o6-interface-id\"", "\"4o6-subnet\"",
-  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
-  "\"space\"", "\"csv-format\"", "\"record-types\"", "\"encapsulate\"",
-  "\"array\"", "\"pools\"", "\"pool\"", "\"user-context\"", "\"subnet\"",
-  "\"interface\"", "\"interface-id\"", "\"id\"", "\"rapid-commit\"",
-  "\"reservation-mode\"", "\"host-reservation-identifiers\"",
-  "\"client-classes\"", "\"test\"", "\"client-class\"", "\"reservations\"",
-  "\"duid\"", "\"hw-address\"", "\"circuit-id\"", "\"client-id\"",
-  "\"hostname\"", "\"relay\"", "\"ip-address\"", "\"hooks-libraries\"",
-  "\"library\"", "\"parameters\"", "\"expired-leases-processing\"",
-  "\"reclaim-timer-wait-time\"", "\"flush-reclaimed-timer-wait-time\"",
-  "\"hold-reclaimed-time\"", "\"max-reclaim-leases\"",
-  "\"max-reclaim-time\"", "\"unwarned-reclaim-cycles\"",
-  "\"dhcp4o6-port\"", "\"control-socket\"", "\"socket-type\"",
-  "\"socket-name\"", "\"dhcp-ddns\"", "\"enable-updates\"",
-  "\"qualifying-suffix\"", "\"server-ip\"", "\"server-port\"",
-  "\"sender-ip\"", "\"sender-port\"", "\"max-queue-size\"",
-  "\"ncr-protocol\"", "\"ncr-format\"", "\"always-include-fqdn\"",
-  "\"override-no-update\"", "\"override-client-update\"",
-  "\"replace-client-name\"", "\"generated-prefix\"", "\"tcp\"", "\"JSON\"",
-  "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"",
-  "\"Logging\"", "\"loggers\"", "\"output_options\"", "\"output\"",
-  "\"debuglevel\"", "\"severity\"", "\"Dhcp6\"", "\"DhcpDdns\"",
-  "TOPLEVEL_JSON", "TOPLEVEL_DHCP4", "SUB_DHCP4", "SUB_INTERFACES4",
-  "SUB_SUBNET4", "SUB_POOL4", "SUB_RESERVATION", "SUB_OPTION_DEF",
-  "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS",
-  "\"constant string\"", "\"integer\"", "\"floating point\"",
-  "\"boolean\"", "$accept", "start", "$@1", "$@2", "$@3", "$@4", "$@5",
-  "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "value", "sub_json", "map2",
-  "$@12", "map_value", "map_content", "not_empty_map", "list_generic",
-  "$@13", "list_content", "not_empty_list", "list_strings", "$@14",
-  "list_strings_content", "not_empty_list_strings", "unknown_map_entry",
-  "syntax_map", "$@15", "global_objects", "global_object", "dhcp4_object",
-  "$@16", "sub_dhcp4", "$@17", "global_params", "global_param",
-  "valid_lifetime", "renew_timer", "rebind_timer",
-  "decline_probation_period", "echo_client_id", "match_client_id",
-  "interfaces_config", "$@18", "interfaces_config_params",
-  "interfaces_config_param", "sub_interfaces4", "$@19", "interfaces_list",
-  "$@20", "dhcp_socket_type", "$@21", "socket_type", "lease_database",
-  "$@22", "hosts_database", "$@23", "database_map_params",
-  "database_map_param", "database_type", "$@24", "db_type", "user", "$@25",
-  "password", "$@26", "host", "$@27", "port", "name", "$@28", "persist",
-  "lfc_interval", "readonly", "connect_timeout", "contact_points", "$@29",
-  "keyspace", "$@30", "host_reservation_identifiers", "$@31",
+  "\"raw\"", "\"udp\"", "\"re-detect\"", "\"echo-client-id\"",
+  "\"match-client-id\"", "\"next-server\"", "\"server-hostname\"",
+  "\"boot-file-name\"", "\"lease-database\"", "\"hosts-database\"",
+  "\"type\"", "\"memfile\"", "\"mysql\"", "\"postgresql\"", "\"cql\"",
+  "\"user\"", "\"password\"", "\"host\"", "\"port\"", "\"persist\"",
+  "\"lfc-interval\"", "\"readonly\"", "\"connect-timeout\"",
+  "\"contact-points\"", "\"keyspace\"", "\"valid-lifetime\"",
+  "\"renew-timer\"", "\"rebind-timer\"", "\"decline-probation-period\"",
+  "\"subnet4\"", "\"4o6-interface\"", "\"4o6-interface-id\"",
+  "\"4o6-subnet\"", "\"option-def\"", "\"option-data\"", "\"name\"",
+  "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"",
+  "\"record-types\"", "\"encapsulate\"", "\"array\"", "\"pools\"",
+  "\"pool\"", "\"user-context\"", "\"subnet\"", "\"interface\"",
+  "\"interface-id\"", "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"",
+  "\"host-reservation-identifiers\"", "\"client-classes\"", "\"test\"",
+  "\"client-class\"", "\"reservations\"", "\"duid\"", "\"hw-address\"",
+  "\"circuit-id\"", "\"client-id\"", "\"hostname\"", "\"relay\"",
+  "\"ip-address\"", "\"hooks-libraries\"", "\"library\"", "\"parameters\"",
+  "\"expired-leases-processing\"", "\"reclaim-timer-wait-time\"",
+  "\"flush-reclaimed-timer-wait-time\"", "\"hold-reclaimed-time\"",
+  "\"max-reclaim-leases\"", "\"max-reclaim-time\"",
+  "\"unwarned-reclaim-cycles\"", "\"dhcp4o6-port\"", "\"control-socket\"",
+  "\"socket-type\"", "\"socket-name\"", "\"dhcp-ddns\"",
+  "\"enable-updates\"", "\"qualifying-suffix\"", "\"server-ip\"",
+  "\"server-port\"", "\"sender-ip\"", "\"sender-port\"",
+  "\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"",
+  "\"always-include-fqdn\"", "\"override-no-update\"",
+  "\"override-client-update\"", "\"replace-client-name\"",
+  "\"generated-prefix\"", "\"tcp\"", "\"JSON\"", "\"when-present\"",
+  "\"never\"", "\"always\"", "\"when-not-present\"", "\"Logging\"",
+  "\"loggers\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
+  "\"severity\"", "\"Dhcp6\"", "\"DhcpDdns\"", "TOPLEVEL_JSON",
+  "TOPLEVEL_DHCP4", "SUB_DHCP4", "SUB_INTERFACES4", "SUB_SUBNET4",
+  "SUB_POOL4", "SUB_RESERVATION", "SUB_OPTION_DEF", "SUB_OPTION_DATA",
+  "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS", "\"constant string\"",
+  "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start",
+  "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10",
+  "$@11", "value", "sub_json", "map2", "$@12", "map_value", "map_content",
+  "not_empty_map", "list_generic", "$@13", "list_content",
+  "not_empty_list", "list_strings", "$@14", "list_strings_content",
+  "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@15",
+  "global_objects", "global_object", "dhcp4_object", "$@16", "sub_dhcp4",
+  "$@17", "global_params", "global_param", "valid_lifetime", "renew_timer",
+  "rebind_timer", "decline_probation_period", "echo_client_id",
+  "match_client_id", "interfaces_config", "$@18",
+  "interfaces_config_params", "interfaces_config_param", "sub_interfaces4",
+  "$@19", "interfaces_list", "$@20", "dhcp_socket_type", "$@21",
+  "socket_type", "re_detect", "lease_database", "$@22", "hosts_database",
+  "$@23", "database_map_params", "database_map_param", "database_type",
+  "$@24", "db_type", "user", "$@25", "password", "$@26", "host", "$@27",
+  "port", "name", "$@28", "persist", "lfc_interval", "readonly",
+  "connect_timeout", "contact_points", "$@29", "keyspace", "$@30",
+  "host_reservation_identifiers", "$@31",
   "host_reservation_identifiers_list", "host_reservation_identifier",
   "duid_id", "hw_address_id", "circuit_id", "client_id", "hooks_libraries",
   "$@32", "hooks_libraries_list", "not_empty_hooks_libraries_list",
   const unsigned short int
   Dhcp4Parser::yyrline_[] =
   {
-       0,   215,   215,   215,   216,   216,   217,   217,   218,   218,
-     219,   219,   220,   220,   221,   221,   222,   222,   223,   223,
-     224,   224,   225,   225,   233,   234,   235,   236,   237,   238,
-     239,   242,   247,   247,   258,   261,   262,   265,   269,   276,
-     276,   283,   284,   287,   291,   298,   298,   305,   306,   309,
-     313,   324,   334,   334,   346,   347,   351,   352,   353,   354,
-     355,   358,   358,   375,   375,   383,   384,   389,   390,   391,
-     392,   393,   394,   395,   396,   397,   398,   399,   400,   401,
-     402,   403,   404,   405,   406,   407,   408,   409,   412,   417,
-     422,   427,   432,   437,   443,   443,   453,   454,   457,   458,
-     461,   461,   469,   469,   479,   479,   486,   487,   490,   490,
-     500,   500,   510,   511,   514,   515,   516,   517,   518,   519,
-     520,   521,   522,   523,   524,   525,   526,   529,   529,   536,
-     537,   538,   539,   542,   542,   550,   550,   558,   558,   566,
-     571,   571,   579,   584,   589,   594,   599,   599,   607,   607,
-     616,   616,   626,   627,   630,   631,   632,   633,   636,   641,
-     646,   651,   656,   656,   666,   667,   670,   671,   674,   674,
-     682,   682,   690,   691,   692,   695,   696,   699,   699,   707,
-     707,   715,   715,   725,   726,   729,   730,   731,   732,   733,
-     734,   737,   742,   747,   752,   757,   762,   770,   770,   783,
-     784,   787,   788,   795,   795,   818,   818,   827,   828,   832,
-     833,   834,   835,   836,   837,   838,   839,   840,   841,   842,
-     843,   844,   845,   846,   847,   848,   849,   850,   851,   854,
-     854,   862,   862,   870,   870,   878,   878,   886,   886,   894,
-     894,   902,   902,   910,   910,   918,   923,   932,   932,   944,
-     945,   948,   949,   954,   954,   965,   965,   975,   976,   979,
-     980,   983,   984,   985,   986,   987,   988,   989,   990,   993,
-     995,  1000,  1002,  1002,  1010,  1010,  1018,  1018,  1026,  1028,
-    1028,  1036,  1045,  1045,  1057,  1058,  1063,  1064,  1069,  1069,
-    1080,  1080,  1091,  1092,  1097,  1098,  1103,  1104,  1105,  1106,
-    1107,  1108,  1111,  1113,  1113,  1121,  1123,  1125,  1133,  1133,
-    1145,  1146,  1149,  1150,  1153,  1153,  1161,  1161,  1169,  1170,
-    1173,  1174,  1175,  1176,  1179,  1179,  1187,  1187,  1197,  1197,
-    1207,  1208,  1211,  1212,  1215,  1215,  1223,  1223,  1231,  1232,
-    1235,  1236,  1240,  1241,  1242,  1243,  1244,  1245,  1246,  1247,
-    1248,  1249,  1250,  1251,  1254,  1254,  1262,  1262,  1270,  1270,
+       0,   216,   216,   216,   217,   217,   218,   218,   219,   219,
+     220,   220,   221,   221,   222,   222,   223,   223,   224,   224,
+     225,   225,   226,   226,   234,   235,   236,   237,   238,   239,
+     240,   243,   248,   248,   259,   262,   263,   266,   270,   277,
+     277,   284,   285,   288,   292,   299,   299,   306,   307,   310,
+     314,   325,   335,   335,   347,   348,   352,   353,   354,   355,
+     356,   359,   359,   376,   376,   384,   385,   390,   391,   392,
+     393,   394,   395,   396,   397,   398,   399,   400,   401,   402,
+     403,   404,   405,   406,   407,   408,   409,   410,   413,   418,
+     423,   428,   433,   438,   444,   444,   454,   455,   458,   459,
+     460,   463,   463,   471,   471,   481,   481,   488,   489,   492,
+     498,   498,   508,   508,   518,   519,   522,   523,   524,   525,
+     526,   527,   528,   529,   530,   531,   532,   533,   534,   537,
+     537,   544,   545,   546,   547,   550,   550,   558,   558,   566,
+     566,   574,   579,   579,   587,   592,   597,   602,   607,   607,
+     615,   615,   624,   624,   634,   635,   638,   639,   640,   641,
+     644,   649,   654,   659,   664,   664,   674,   675,   678,   679,
+     682,   682,   690,   690,   698,   699,   700,   703,   704,   707,
+     707,   715,   715,   723,   723,   733,   734,   737,   738,   739,
+     740,   741,   742,   745,   750,   755,   760,   765,   770,   778,
+     778,   791,   792,   795,   796,   803,   803,   826,   826,   835,
+     836,   840,   841,   842,   843,   844,   845,   846,   847,   848,
+     849,   850,   851,   852,   853,   854,   855,   856,   857,   858,
+     859,   862,   862,   870,   870,   878,   878,   886,   886,   894,
+     894,   902,   902,   910,   910,   918,   918,   926,   931,   940,
+     940,   952,   953,   956,   957,   962,   962,   973,   973,   983,
+     984,   987,   988,   991,   992,   993,   994,   995,   996,   997,
+     998,  1001,  1003,  1008,  1010,  1010,  1018,  1018,  1026,  1026,
+    1034,  1036,  1036,  1044,  1053,  1053,  1065,  1066,  1071,  1072,
+    1077,  1077,  1088,  1088,  1099,  1100,  1105,  1106,  1111,  1112,
+    1113,  1114,  1115,  1116,  1119,  1121,  1121,  1129,  1131,  1133,
+    1141,  1141,  1153,  1154,  1157,  1158,  1161,  1161,  1169,  1169,
+    1177,  1178,  1181,  1182,  1183,  1184,  1187,  1187,  1195,  1195,
+    1205,  1205,  1215,  1216,  1219,  1220,  1223,  1223,  1231,  1231,
+    1239,  1240,  1243,  1244,  1248,  1249,  1250,  1251,  1252,  1253,
+    1254,  1255,  1256,  1257,  1258,  1259,  1262,  1262,  1270,  1270,
     1278,  1278,  1286,  1286,  1294,  1294,  1302,  1302,  1310,  1310,
-    1319,  1319,  1327,  1327,  1340,  1340,  1350,  1350,  1361,  1361,
-    1371,  1372,  1375,  1375,  1383,  1384,  1387,  1388,  1391,  1392,
-    1393,  1394,  1395,  1396,  1397,  1400,  1402,  1402,  1414,  1421,
-    1421,  1431,  1432,  1435,  1436,  1439,  1439,  1447,  1447,  1457,
-    1457,  1467,  1467,  1475,  1476,  1479,  1480,  1481,  1482,  1483,
-    1484,  1485,  1486,  1487,  1488,  1489,  1490,  1491,  1492,  1493,
-    1496,  1501,  1501,  1509,  1509,  1517,  1522,  1522,  1530,  1535,
-    1540,  1540,  1548,  1549,  1552,  1552,  1560,  1565,  1570,  1575,
-    1575,  1583,  1586,  1589,  1592,  1595,  1601,  1601,  1611,  1611,
-    1618,  1618,  1630,  1630,  1643,  1644,  1648,  1652,  1652,  1664,
-    1665,  1669,  1669,  1677,  1678,  1681,  1682,  1683,  1684,  1685,
-    1688,  1693,  1693,  1701,  1701,  1711,  1712,  1715,  1715,  1723,
-    1724,  1727,  1727
+    1318,  1318,  1327,  1327,  1335,  1335,  1348,  1348,  1358,  1358,
+    1369,  1369,  1379,  1380,  1383,  1383,  1391,  1392,  1395,  1396,
+    1399,  1400,  1401,  1402,  1403,  1404,  1405,  1408,  1410,  1410,
+    1422,  1429,  1429,  1439,  1440,  1443,  1444,  1447,  1447,  1455,
+    1455,  1465,  1465,  1475,  1475,  1483,  1484,  1487,  1488,  1489,
+    1490,  1491,  1492,  1493,  1494,  1495,  1496,  1497,  1498,  1499,
+    1500,  1501,  1504,  1509,  1509,  1517,  1517,  1525,  1530,  1530,
+    1538,  1543,  1548,  1548,  1556,  1557,  1560,  1560,  1568,  1573,
+    1578,  1583,  1583,  1591,  1594,  1597,  1600,  1603,  1609,  1609,
+    1619,  1619,  1626,  1626,  1638,  1638,  1651,  1652,  1656,  1660,
+    1660,  1672,  1673,  1677,  1677,  1685,  1686,  1689,  1690,  1691,
+    1692,  1693,  1696,  1701,  1701,  1709,  1709,  1719,  1720,  1723,
+    1723,  1731,  1732,  1735,  1735
   };
 
   // Print the state stack on the debug stream.
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4041 "dhcp4_parser.cc" // lalr1.cc:1167
-#line 1735 "dhcp4_parser.yy" // lalr1.cc:1168
+#line 4053 "dhcp4_parser.cc" // lalr1.cc:1167
+#line 1743 "dhcp4_parser.yy" // lalr1.cc:1168
 
 
 void
 
         TOKEN_DHCP_SOCKET_TYPE = 268,
         TOKEN_RAW = 269,
         TOKEN_UDP = 270,
-        TOKEN_ECHO_CLIENT_ID = 271,
-        TOKEN_MATCH_CLIENT_ID = 272,
-        TOKEN_NEXT_SERVER = 273,
-        TOKEN_SERVER_HOSTNAME = 274,
-        TOKEN_BOOT_FILE_NAME = 275,
-        TOKEN_LEASE_DATABASE = 276,
-        TOKEN_HOSTS_DATABASE = 277,
-        TOKEN_TYPE = 278,
-        TOKEN_MEMFILE = 279,
-        TOKEN_MYSQL = 280,
-        TOKEN_POSTGRESQL = 281,
-        TOKEN_CQL = 282,
-        TOKEN_USER = 283,
-        TOKEN_PASSWORD = 284,
-        TOKEN_HOST = 285,
-        TOKEN_PORT = 286,
-        TOKEN_PERSIST = 287,
-        TOKEN_LFC_INTERVAL = 288,
-        TOKEN_READONLY = 289,
-        TOKEN_CONNECT_TIMEOUT = 290,
-        TOKEN_CONTACT_POINTS = 291,
-        TOKEN_KEYSPACE = 292,
-        TOKEN_VALID_LIFETIME = 293,
-        TOKEN_RENEW_TIMER = 294,
-        TOKEN_REBIND_TIMER = 295,
-        TOKEN_DECLINE_PROBATION_PERIOD = 296,
-        TOKEN_SUBNET4 = 297,
-        TOKEN_SUBNET_4O6_INTERFACE = 298,
-        TOKEN_SUBNET_4O6_INTERFACE_ID = 299,
-        TOKEN_SUBNET_4O6_SUBNET = 300,
-        TOKEN_OPTION_DEF = 301,
-        TOKEN_OPTION_DATA = 302,
-        TOKEN_NAME = 303,
-        TOKEN_DATA = 304,
-        TOKEN_CODE = 305,
-        TOKEN_SPACE = 306,
-        TOKEN_CSV_FORMAT = 307,
-        TOKEN_RECORD_TYPES = 308,
-        TOKEN_ENCAPSULATE = 309,
-        TOKEN_ARRAY = 310,
-        TOKEN_POOLS = 311,
-        TOKEN_POOL = 312,
-        TOKEN_USER_CONTEXT = 313,
-        TOKEN_SUBNET = 314,
-        TOKEN_INTERFACE = 315,
-        TOKEN_INTERFACE_ID = 316,
-        TOKEN_ID = 317,
-        TOKEN_RAPID_COMMIT = 318,
-        TOKEN_RESERVATION_MODE = 319,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 320,
-        TOKEN_CLIENT_CLASSES = 321,
-        TOKEN_TEST = 322,
-        TOKEN_CLIENT_CLASS = 323,
-        TOKEN_RESERVATIONS = 324,
-        TOKEN_DUID = 325,
-        TOKEN_HW_ADDRESS = 326,
-        TOKEN_CIRCUIT_ID = 327,
-        TOKEN_CLIENT_ID = 328,
-        TOKEN_HOSTNAME = 329,
-        TOKEN_RELAY = 330,
-        TOKEN_IP_ADDRESS = 331,
-        TOKEN_HOOKS_LIBRARIES = 332,
-        TOKEN_LIBRARY = 333,
-        TOKEN_PARAMETERS = 334,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 335,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 336,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 337,
-        TOKEN_HOLD_RECLAIMED_TIME = 338,
-        TOKEN_MAX_RECLAIM_LEASES = 339,
-        TOKEN_MAX_RECLAIM_TIME = 340,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 341,
-        TOKEN_DHCP4O6_PORT = 342,
-        TOKEN_CONTROL_SOCKET = 343,
-        TOKEN_SOCKET_TYPE = 344,
-        TOKEN_SOCKET_NAME = 345,
-        TOKEN_DHCP_DDNS = 346,
-        TOKEN_ENABLE_UPDATES = 347,
-        TOKEN_QUALIFYING_SUFFIX = 348,
-        TOKEN_SERVER_IP = 349,
-        TOKEN_SERVER_PORT = 350,
-        TOKEN_SENDER_IP = 351,
-        TOKEN_SENDER_PORT = 352,
-        TOKEN_MAX_QUEUE_SIZE = 353,
-        TOKEN_NCR_PROTOCOL = 354,
-        TOKEN_NCR_FORMAT = 355,
-        TOKEN_ALWAYS_INCLUDE_FQDN = 356,
-        TOKEN_OVERRIDE_NO_UPDATE = 357,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 358,
-        TOKEN_REPLACE_CLIENT_NAME = 359,
-        TOKEN_GENERATED_PREFIX = 360,
-        TOKEN_TCP = 361,
-        TOKEN_JSON = 362,
-        TOKEN_WHEN_PRESENT = 363,
-        TOKEN_NEVER = 364,
-        TOKEN_ALWAYS = 365,
-        TOKEN_WHEN_NOT_PRESENT = 366,
-        TOKEN_LOGGING = 367,
-        TOKEN_LOGGERS = 368,
-        TOKEN_OUTPUT_OPTIONS = 369,
-        TOKEN_OUTPUT = 370,
-        TOKEN_DEBUGLEVEL = 371,
-        TOKEN_SEVERITY = 372,
-        TOKEN_DHCP6 = 373,
-        TOKEN_DHCPDDNS = 374,
-        TOKEN_TOPLEVEL_JSON = 375,
-        TOKEN_TOPLEVEL_DHCP4 = 376,
-        TOKEN_SUB_DHCP4 = 377,
-        TOKEN_SUB_INTERFACES4 = 378,
-        TOKEN_SUB_SUBNET4 = 379,
-        TOKEN_SUB_POOL4 = 380,
-        TOKEN_SUB_RESERVATION = 381,
-        TOKEN_SUB_OPTION_DEF = 382,
-        TOKEN_SUB_OPTION_DATA = 383,
-        TOKEN_SUB_HOOKS_LIBRARY = 384,
-        TOKEN_SUB_DHCP_DDNS = 385,
-        TOKEN_STRING = 386,
-        TOKEN_INTEGER = 387,
-        TOKEN_FLOAT = 388,
-        TOKEN_BOOLEAN = 389
+        TOKEN_RE_DETECT = 271,
+        TOKEN_ECHO_CLIENT_ID = 272,
+        TOKEN_MATCH_CLIENT_ID = 273,
+        TOKEN_NEXT_SERVER = 274,
+        TOKEN_SERVER_HOSTNAME = 275,
+        TOKEN_BOOT_FILE_NAME = 276,
+        TOKEN_LEASE_DATABASE = 277,
+        TOKEN_HOSTS_DATABASE = 278,
+        TOKEN_TYPE = 279,
+        TOKEN_MEMFILE = 280,
+        TOKEN_MYSQL = 281,
+        TOKEN_POSTGRESQL = 282,
+        TOKEN_CQL = 283,
+        TOKEN_USER = 284,
+        TOKEN_PASSWORD = 285,
+        TOKEN_HOST = 286,
+        TOKEN_PORT = 287,
+        TOKEN_PERSIST = 288,
+        TOKEN_LFC_INTERVAL = 289,
+        TOKEN_READONLY = 290,
+        TOKEN_CONNECT_TIMEOUT = 291,
+        TOKEN_CONTACT_POINTS = 292,
+        TOKEN_KEYSPACE = 293,
+        TOKEN_VALID_LIFETIME = 294,
+        TOKEN_RENEW_TIMER = 295,
+        TOKEN_REBIND_TIMER = 296,
+        TOKEN_DECLINE_PROBATION_PERIOD = 297,
+        TOKEN_SUBNET4 = 298,
+        TOKEN_SUBNET_4O6_INTERFACE = 299,
+        TOKEN_SUBNET_4O6_INTERFACE_ID = 300,
+        TOKEN_SUBNET_4O6_SUBNET = 301,
+        TOKEN_OPTION_DEF = 302,
+        TOKEN_OPTION_DATA = 303,
+        TOKEN_NAME = 304,
+        TOKEN_DATA = 305,
+        TOKEN_CODE = 306,
+        TOKEN_SPACE = 307,
+        TOKEN_CSV_FORMAT = 308,
+        TOKEN_RECORD_TYPES = 309,
+        TOKEN_ENCAPSULATE = 310,
+        TOKEN_ARRAY = 311,
+        TOKEN_POOLS = 312,
+        TOKEN_POOL = 313,
+        TOKEN_USER_CONTEXT = 314,
+        TOKEN_SUBNET = 315,
+        TOKEN_INTERFACE = 316,
+        TOKEN_INTERFACE_ID = 317,
+        TOKEN_ID = 318,
+        TOKEN_RAPID_COMMIT = 319,
+        TOKEN_RESERVATION_MODE = 320,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 321,
+        TOKEN_CLIENT_CLASSES = 322,
+        TOKEN_TEST = 323,
+        TOKEN_CLIENT_CLASS = 324,
+        TOKEN_RESERVATIONS = 325,
+        TOKEN_DUID = 326,
+        TOKEN_HW_ADDRESS = 327,
+        TOKEN_CIRCUIT_ID = 328,
+        TOKEN_CLIENT_ID = 329,
+        TOKEN_HOSTNAME = 330,
+        TOKEN_RELAY = 331,
+        TOKEN_IP_ADDRESS = 332,
+        TOKEN_HOOKS_LIBRARIES = 333,
+        TOKEN_LIBRARY = 334,
+        TOKEN_PARAMETERS = 335,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 336,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 337,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 338,
+        TOKEN_HOLD_RECLAIMED_TIME = 339,
+        TOKEN_MAX_RECLAIM_LEASES = 340,
+        TOKEN_MAX_RECLAIM_TIME = 341,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 342,
+        TOKEN_DHCP4O6_PORT = 343,
+        TOKEN_CONTROL_SOCKET = 344,
+        TOKEN_SOCKET_TYPE = 345,
+        TOKEN_SOCKET_NAME = 346,
+        TOKEN_DHCP_DDNS = 347,
+        TOKEN_ENABLE_UPDATES = 348,
+        TOKEN_QUALIFYING_SUFFIX = 349,
+        TOKEN_SERVER_IP = 350,
+        TOKEN_SERVER_PORT = 351,
+        TOKEN_SENDER_IP = 352,
+        TOKEN_SENDER_PORT = 353,
+        TOKEN_MAX_QUEUE_SIZE = 354,
+        TOKEN_NCR_PROTOCOL = 355,
+        TOKEN_NCR_FORMAT = 356,
+        TOKEN_ALWAYS_INCLUDE_FQDN = 357,
+        TOKEN_OVERRIDE_NO_UPDATE = 358,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 359,
+        TOKEN_REPLACE_CLIENT_NAME = 360,
+        TOKEN_GENERATED_PREFIX = 361,
+        TOKEN_TCP = 362,
+        TOKEN_JSON = 363,
+        TOKEN_WHEN_PRESENT = 364,
+        TOKEN_NEVER = 365,
+        TOKEN_ALWAYS = 366,
+        TOKEN_WHEN_NOT_PRESENT = 367,
+        TOKEN_LOGGING = 368,
+        TOKEN_LOGGERS = 369,
+        TOKEN_OUTPUT_OPTIONS = 370,
+        TOKEN_OUTPUT = 371,
+        TOKEN_DEBUGLEVEL = 372,
+        TOKEN_SEVERITY = 373,
+        TOKEN_DHCP6 = 374,
+        TOKEN_DHCPDDNS = 375,
+        TOKEN_TOPLEVEL_JSON = 376,
+        TOKEN_TOPLEVEL_DHCP4 = 377,
+        TOKEN_SUB_DHCP4 = 378,
+        TOKEN_SUB_INTERFACES4 = 379,
+        TOKEN_SUB_SUBNET4 = 380,
+        TOKEN_SUB_POOL4 = 381,
+        TOKEN_SUB_RESERVATION = 382,
+        TOKEN_SUB_OPTION_DEF = 383,
+        TOKEN_SUB_OPTION_DATA = 384,
+        TOKEN_SUB_HOOKS_LIBRARY = 385,
+        TOKEN_SUB_DHCP_DDNS = 386,
+        TOKEN_STRING = 387,
+        TOKEN_INTEGER = 388,
+        TOKEN_FLOAT = 389,
+        TOKEN_BOOLEAN = 390
       };
     };
 
     symbol_type
     make_UDP (const location_type& l);
 
+    static inline
+    symbol_type
+    make_RE_DETECT (const location_type& l);
+
     static inline
     symbol_type
     make_ECHO_CLIENT_ID (const location_type& l);
     enum
     {
       yyeof_ = 0,
-      yylast_ = 729,     ///< Last index in yytable_.
-      yynnts_ = 306,  ///< Number of nonterminal symbols.
+      yylast_ = 733,     ///< Last index in yytable_.
+      yynnts_ = 307,  ///< Number of nonterminal symbols.
       yyfinal_ = 24, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 135  ///< Number of tokens.
+      yyntokens_ = 136  ///< Number of tokens.
     };
 
 
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135
     };
-    const unsigned int user_token_number_max_ = 389;
+    const unsigned int user_token_number_max_ = 390;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
   {
       switch (other.type_get ())
     {
-      case 148: // value
-      case 152: // map_value
-      case 190: // socket_type
-      case 199: // db_type
-      case 404: // ncr_protocol_value
-      case 412: // replace_client_name_value
+      case 149: // value
+      case 153: // map_value
+      case 191: // socket_type
+      case 201: // db_type
+      case 406: // ncr_protocol_value
+      case 414: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 134: // "boolean"
+      case 135: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 133: // "floating point"
+      case 134: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 132: // "integer"
+      case 133: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 131: // "constant string"
+      case 132: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
     (void) v;
       switch (this->type_get ())
     {
-      case 148: // value
-      case 152: // map_value
-      case 190: // socket_type
-      case 199: // db_type
-      case 404: // ncr_protocol_value
-      case 412: // replace_client_name_value
+      case 149: // value
+      case 153: // map_value
+      case 191: // socket_type
+      case 201: // db_type
+      case 406: // ncr_protocol_value
+      case 414: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 134: // "boolean"
+      case 135: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 133: // "floating point"
+      case 134: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 132: // "integer"
+      case 133: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 131: // "constant string"
+      case 132: // "constant string"
         value.copy< std::string > (v);
         break;
 
     // Type destructor.
     switch (yytype)
     {
-      case 148: // value
-      case 152: // map_value
-      case 190: // socket_type
-      case 199: // db_type
-      case 404: // ncr_protocol_value
-      case 412: // replace_client_name_value
+      case 149: // value
+      case 153: // map_value
+      case 191: // socket_type
+      case 201: // db_type
+      case 406: // ncr_protocol_value
+      case 414: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 134: // "boolean"
+      case 135: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 133: // "floating point"
+      case 134: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 132: // "integer"
+      case 133: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 131: // "constant string"
+      case 132: // "constant string"
         value.template destroy< std::string > ();
         break;
 
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 148: // value
-      case 152: // map_value
-      case 190: // socket_type
-      case 199: // db_type
-      case 404: // ncr_protocol_value
-      case 412: // replace_client_name_value
+      case 149: // value
+      case 153: // map_value
+      case 191: // socket_type
+      case 201: // db_type
+      case 406: // ncr_protocol_value
+      case 414: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 134: // "boolean"
+      case 135: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 133: // "floating point"
+      case 134: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 132: // "integer"
+      case 133: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 131: // "constant string"
+      case 132: // "constant string"
         value.move< std::string > (s.value);
         break;
 
      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
-     385,   386,   387,   388,   389
+     385,   386,   387,   388,   389,   390
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
     return symbol_type (token::TOKEN_UDP, l);
   }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RE_DETECT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RE_DETECT, l);
+  }
+
   Dhcp4Parser::symbol_type
   Dhcp4Parser::make_ECHO_CLIENT_ID (const location_type& l)
   {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2518 "dhcp4_parser.h" // lalr1.cc:377
+#line 2530 "dhcp4_parser.h" // lalr1.cc:377
 
 
 
 
-// Generated 201703062326
+// Generated 201703162308
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
 
-// Generated 201703062326
+// Generated 201703162308
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
 
-// Generated 201703062326
+// Generated 201703162308
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++
 
 /* %% [3.0] code to copy yytext_ptr to parser6_text[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 149
-#define YY_END_OF_BUFFER 150
+#define YY_NUM_RULES 150
+#define YY_END_OF_BUFFER 151
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1186] =
+static const flex_int16_t yy_accept[1194] =
     {   0,
-      142,  142,    0,    0,    0,    0,    0,    0,    0,    0,
-      150,  148,   10,   11,  148,    1,  142,  139,  142,  142,
-      148,  141,  140,  148,  148,  148,  148,  148,  135,  136,
-      148,  148,  148,  137,  138,    5,    5,    5,  148,  148,
-      148,   10,   11,    0,    0,  131,    0,    0,    0,    0,
+      143,  143,    0,    0,    0,    0,    0,    0,    0,    0,
+      151,  149,   10,   11,  149,    1,  143,  140,  143,  143,
+      149,  142,  141,  149,  149,  149,  149,  149,  136,  137,
+      149,  149,  149,  138,  139,    5,    5,    5,  149,  149,
+      149,   10,   11,    0,    0,  132,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    1,  142,  142,
-        0,  141,  142,    3,    2,    6,    0,  142,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,  132,
+        0,    0,    0,    0,    0,    0,    0,    1,  143,  143,
+        0,  142,  143,    3,    2,    6,    0,  143,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,  133,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  134,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  135,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    2,    0,    0,
-        0,    0,    0,    0,    0,    8,    0,    0,    0,  111,
-        0,    0,  112,    0,    0,    0,    0,    0,    0,    0,
-        0,  133,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    8,    0,    0,    0,  112,
+        0,    0,  113,    0,    0,    0,    0,    0,    0,    0,
+        0,  134,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   77,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   78,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  147,  145,    0,  144,
-      143,    0,    0,    0,    0,    0,    0,  110,    0,    0,
-       27,    0,   26,    0,    0,    0,    0,    0,    0,    0,
-        0,   45,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  148,  146,    0,
+      145,  144,    0,    0,    0,    0,    0,    0,  111,    0,
+        0,   27,    0,   26,    0,    0,    0,    0,    0,    0,
+        0,    0,   46,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  146,  143,
-        0,    0,    0,    0,    0,    0,    0,   28,    0,    0,
-       30,    0,    0,    0,    0,    0,   80,    0,    0,    0,
-        0,   64,    0,    0,    0,    0,    0,   96,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   48,    0,    0,
-
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   63,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   72,    0,   49,    0,
+      147,  144,    0,    0,    0,    0,    0,    0,    0,   28,
+        0,    0,   30,    0,    0,    0,    0,    0,   81,    0,
+        0,    0,    0,   65,    0,    0,    0,    0,    0,   97,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   49,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   92,  115,
-       41,    0,   46,    0,    0,    0,    0,    0,  129,   35,
-        0,   32,    0,   31,    0,    0,    0,  103,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   64,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   73,    0,
+       50,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   93,  116,   42,    0,   47,    0,    0,    0,    0,
+        0,  130,   35,    0,   32,    0,   31,    0,    0,    0,
+      104,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      114,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  115,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,   43,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   65,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  104,    0,    0,    0,    0,    0,
-        0,    0,    0,   99,    0,    0,    0,    0,    7,   33,
+        0,    0,    0,    0,    0,    0,    0,   44,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   66,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  105,    0,
+        0,    0,    0,    0,    0,    0,    0,  100,    0,    0,
+        0,    0,    7,   33,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   87,    0,    0,    0,    0,    0,    0,
-        0,    0,   67,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   88,    0,    0,
+        0,    0,    0,    0,    0,    0,   68,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   74,
-        0,    0,    0,    0,    0,   84,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  108,   85,
-        0,    0,    0,   42,    0,    0,    0,    0,    0,    0,
-        0,    0,   50,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   75,    0,    0,    0,    0,    0,
+       85,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   60,    0,    0,    0,  130,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
+        0,    0,    0,  109,   86,    0,    0,    0,   43,    0,
+        0,    0,    0,    0,    0,    0,    0,   51,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   98,    0,    0,    0,    0,    0,   53,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   47,   66,    0,    0,    0,   95,    0,    0,   40,
+       61,    0,    0,    0,  131,    0,    0,    0,    0,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   89,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  128,
+        0,    0,    0,    0,    0,    0,    0,    0,   99,    0,
+        0,    0,    0,    0,   54,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   48,   67,    0,
+        0,    0,   96,    0,    0,    0,   41,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   90,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   75,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  129,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   76,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   16,    0,  109,   14,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      100,   88,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   97,  113,    0,   37,
-        0,  105,    0,    0,    0,    0,    0,    0,   20,    0,
-        0,   61,    0,    0,    0,  107,   44,    0,   68,    0,
+        0,    0,    0,   38,    0,    0,    0,    0,    0,    0,
+        0,   16,    0,  110,   14,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  101,   89,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   98,  114,    0,   37,    0,  106,
+        0,    0,    0,    0,    0,    0,   20,    0,    0,   62,
+        0,    0,    0,  108,   45,    0,   69,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  102,    0,    0,    0,
-
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   81,    0,    0,    0,   62,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   57,    0,    0,    0,
-       17,   15,  127,  126,    0,    0,    0,    0,   29,    0,
-       91,    0,    0,    0,    0,    0,    0,  124,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   76,    0,
-       94,    0,   51,    0,    0,    0,   19,    0,    0,    0,
-        0,    0,   78,   58,    0,  101,    0,    0,    0,   93,
-        0,   73,    0,    0,    0,    0,    0,    0,    0,    0,
-       71,    0,  116,    0,    0,    0,    0,    0,    0,    0,
 
+        0,    0,    0,    0,  103,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   82,
+        0,    0,    0,   63,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   58,    0,    0,    0,   17,   15,
+      128,  127,    0,    0,    0,    0,   29,    0,   92,    0,
+        0,    0,    0,    0,    0,  125,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   77,    0,   95,    0,
+       52,    0,    0,    0,   19,    0,    0,    0,    0,    0,
+       79,   59,    0,  102,    0,    0,    0,   94,    0,   74,
+        0,    0,    0,    0,    0,    0,    0,    0,   72,    0,
+
+      117,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   90,
-        0,   54,  125,    0,   12,    0,    0,    0,    0,    0,
-        0,    0,   39,    0,   38,   18,    0,    0,   86,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   56,    0,
-        0,   52,    0,   69,    0,    0,    0,    0,    0,  106,
+        0,    0,    0,    0,    0,    0,    0,   91,    0,   55,
+      126,    0,   12,    0,    0,    0,    0,    0,    0,    0,
+       40,    0,   39,   18,    0,    0,   87,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   57,    0,    0,   53,
+        0,   70,    0,    0,    0,    0,    0,  107,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   34,    0,    0,    0,    0,    0,   25,
-        0,    0,    0,    0,  122,    0,    0,    0,    0,    0,
-        0,    0,   79,    0,    0,    0,    0,    0,    0,    0,
-
-        0,   36,    0,    0,    0,    0,   13,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  121,    0,
-       22,   55,    0,    0,    0,    0,   21,    0,   70,    0,
-        0,  120,    0,    0,    0,    0,   24,    0,    0,    0,
+        0,   34,    0,    0,    0,    0,    0,   25,    0,    0,
+        0,    0,  123,    0,    0,    0,    0,    0,    0,    0,
+
+       80,    0,    0,    0,    0,    0,    0,    0,    0,   36,
+        0,    0,    0,    0,   13,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  122,    0,   22,   56,
+        0,    0,    0,    0,   21,    0,   71,    0,    0,  121,
+        0,    0,    0,    0,   24,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   23,    0,
-       82,    0,    0,    0,    0,    0,  118,  123,   59,    0,
-        0,    0,  117,    0,    0,    0,    0,    0,    0,    0,
-       83,    0,    0,  119,    0
+        0,    0,    0,    0,    0,    0,   23,    0,   83,    0,
+        0,    0,    0,    0,  119,  124,   60,    0,    0,    0,
+      118,    0,    0,    0,    0,    0,    0,    0,   84,    0,
+        0,  120,    0
+
     } ;
 
 static const YY_CHAR yy_ec[256] =
         3
     } ;
 
-static const flex_int16_t yy_base[1198] =
+static const flex_int16_t yy_base[1206] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1548, 1549,   32, 1544,  141,    0,  201, 1549,  206,   88,
-       11,  213, 1549, 1526,  114,   25,    2,    6, 1549, 1549,
-       73,   11,   17, 1549, 1549, 1549,  104, 1532, 1487,    0,
-     1524,  107, 1539,  217,  241, 1549,  185, 1490, 1510,   93,
+     1557, 1558,   32, 1553,  141,    0,  201, 1558,  206,   88,
+       11,  213, 1558, 1535,  114,   25,    2,    6, 1558, 1558,
+       73,   11,   17, 1558, 1558, 1558,  104, 1541, 1496,    0,
+     1533,  107, 1548,  217,  241, 1558,  185, 1499, 1519,   93,
        58,  190,   91,  211,  200,   14,  267,  213,  175,  188,
-       64,  220, 1491,  187,   75, 1490,  261,  215,  289,  256,
-      278, 1473,  207,  284,  311,  293, 1492,    0,  337,  352,
-      360,  366,  372, 1549,    0, 1549,  331,  378,  227,  231,
-      320,  294,  341,  325, 1549, 1489, 1528, 1549,  237, 1549,
-
-      377,  335, 1487, 1526,  366,  253,  323, 1481,  362,  295,
-      366,  306,  293, 1524,    0,  428,  365, 1468, 1476,  351,
-     1472, 1461, 1462,  360, 1478, 1471,  365,  358, 1458, 1464,
-      361, 1452, 1508,  407, 1455, 1506, 1448, 1471, 1468, 1468,
-     1462,  366, 1455, 1448, 1453, 1447, 1444, 1443, 1457,  363,
-     1493, 1442,  374, 1454, 1457, 1441,  401,  400, 1453, 1454,
-     1452, 1434, 1439, 1435, 1427, 1444, 1436,    0,  405,  430,
-      423,  428,  437,  439, 1435, 1549,    0,  447, 1430, 1549,
-      435,  380, 1549, 1482, 1437,  445, 1480,  453, 1479,  449,
-     1478, 1549,  493,  459, 1439, 1434, 1433,  425, 1474, 1468,
-
-     1434, 1413, 1421, 1427, 1415, 1426, 1427, 1427, 1422, 1414,
-     1416, 1405, 1418, 1418, 1410, 1400, 1403, 1417, 1549, 1403,
-     1411, 1414, 1395, 1394, 1444, 1393, 1403, 1441, 1440, 1401,
-     1389, 1400, 1436, 1394, 1386, 1383, 1399, 1380, 1382, 1378,
-     1384, 1375, 1374, 1387, 1380, 1382, 1386, 1380,   80, 1387,
-     1382, 1374, 1380, 1380, 1361, 1377, 1370, 1377, 1365, 1358,
-     1372, 1371, 1374, 1356, 1364,  456, 1549, 1549,  464, 1549,
-     1549, 1351,    0,  445,  505,  474, 1408, 1549, 1361,  450,
-     1549, 1406, 1549, 1400,  529,  455, 1342, 1352, 1402, 1359,
-      466, 1549, 1357, 1399, 1354, 1351, 1352,  485, 1395, 1345,
-
-     1340, 1337, 1333, 1335, 1344, 1333, 1382, 1330,  522, 1343,
-     1343, 1326, 1327, 1340, 1327, 1337, 1332, 1339, 1334, 1319,
-      464, 1328, 1324, 1372,  446, 1319, 1312, 1314, 1318, 1307,
-     1314, 1319,   62, 1364, 1319,  450, 1316, 1320, 1308, 1308,
-     1320, 1302, 1294, 1295, 1316, 1298, 1310, 1309, 1295, 1307,
-     1306, 1305, 1346, 1345, 1344, 1288,  520, 1301, 1549, 1549,
-     1300,    0,  496, 1340, 1339, 1297, 1337, 1549, 1285, 1335,
-     1549,  502,  571,  501, 1334, 1276, 1549, 1292, 1291, 1278,
-     1277, 1549, 1279, 1276, 1288, 1284, 1272, 1549, 1281, 1266,
-     1268, 1279, 1277, 1313, 1279, 1261, 1310, 1549, 1259, 1275,
-
-     1307, 1311, 1269, 1263, 1265, 1266, 1268, 1300, 1253, 1248,
-     1247, 1249, 1242, 1257, 1249, 1297, 1549, 1244, 1240, 1243,
-     1236, 1246, 1249, 1238, 1237, 1232, 1549, 1287, 1549, 1231,
-     1230, 1223, 1240, 1277, 1230, 1239, 1233, 1237,  551, 1272,
-     1236, 1216, 1219, 1218, 1226, 1214, 1270, 1212, 1549, 1549,
-     1549, 1217, 1549, 1227, 1261, 1223,    0, 1264, 1549, 1549,
-     1212, 1549, 1218, 1549,  525,  503,  554, 1549, 1256, 1203,
-     1202, 1209, 1202, 1214, 1213, 1197, 1212, 1242, 1246, 1192,
-     1194, 1206, 1206, 1191, 1188, 1202, 1194, 1200, 1191, 1199,
-     1549, 1184, 1195, 1199, 1181, 1195, 1193, 1176, 1170, 1175,
-
-     1172, 1187, 1188, 1185, 1549, 1171, 1173, 1219,  560, 1182,
-     1165, 1166, 1171, 1162, 1549, 1176, 1162,  561, 1154, 1175,
-     1165, 1208, 1162, 1206, 1549, 1154, 1152, 1166, 1169, 1201,
-     1200, 1147, 1198, 1549,  564, 1160, 1149, 1151, 1549, 1549,
-     1143, 1198,  536,  521, 1151, 1156, 1190, 1189, 1188, 1142,
-     1132, 1185, 1147, 1137, 1182, 1128, 1136, 1138, 1142, 1177,
-     1139, 1138, 1139, 1132, 1121, 1134, 1137, 1132, 1127, 1132,
-     1129, 1128, 1131, 1126, 1167, 1166, 1110, 1106, 1114, 1162,
-     1111, 1103, 1118, 1549, 1106, 1115, 1114, 1114, 1098, 1153,
-     1096, 1109, 1549, 1101, 1093, 1102, 1095, 1084, 1088, 1139,
-
-     1086, 1084, 1095, 1135, 1082,  529,  530, 1076,  541, 1549,
-     1137, 1095, 1084, 1088, 1133, 1549, 1127,  566, 1080, 1081,
-     1072, 1075, 1071, 1088, 1083, 1071, 1082, 1066, 1068, 1067,
-     1081, 1062, 1112, 1067, 1075, 1073, 1064, 1073, 1069, 1110,
-     1052, 1052, 1065, 1064, 1049, 1104, 1046, 1047, 1549, 1549,
-     1061, 1058, 1061, 1549, 1060, 1045,  557, 1043, 1090, 1039,
-     1093, 1092, 1549, 1037, 1049, 1047, 1088, 1036, 1036, 1085,
-     1038, 1026, 1020, 1028, 1030, 1039, 1032, 1024, 1024,  543,
-     1023, 1074, 1035, 1010, 1549, 1066, 1013, 1026, 1549,  574,
-      543, 1028, 1029, 1020, 1013, 1012, 1006, 1013, 1006, 1055,
-
-     1059, 1006, 1016,  999, 1013, 1001, 1011, 1003, 1046, 1012,
-      994,  993, 1549, 1009,  990,  990,  601,  988, 1549,   15,
-       61,  198,  270,  308,  344,  383,  423,  498,  485,  564,
-      487, 1549, 1549,  553,  600,  556, 1549,  564,  566, 1549,
-      567,  572,  566,  567,  579,  574,  572,  625,  571,  628,
-      629,  575, 1549,  581,  579,  578,  592,  593,  609,  614,
-      588,  583,  590,  595,  602,  643,  644,  593,  597, 1549,
-      592,  610,  607,  645,  596,  614,  615,  601,  609,  618,
-      599,  620,  660,  661, 1549,  616,  663,  666,  628,  631,
-      614,  615,  622,  673,  622,  637,  676,  631,  629,  627,
-
-      680,  681,  633,  683,  679,  639,  644,  637,  646,  640,
-      635,  645,  641, 1549,  636, 1549, 1549,  637,  653,  654,
-      655,  637,  642,  681,  672,  644,  647,  662,  654,  658,
-     1549, 1549,  668,  667,  653,  654,  712,  667,  672,  659,
-      670,  662,  668,  664,  682,  683, 1549, 1549,  681, 1549,
-      684, 1549,  669,  688,  678,  728,  684,  726, 1549,  683,
-      733, 1549,  682,  689,  731, 1549, 1549,  691, 1549,  682,
-      682,  685,  699,  686,  697,  744,  703,  741,  747,  748,
-      749,  750,  711,  695,  707,  726,  755,  715,  757,  706,
-      702,  718,  723,  711,  763,  722, 1549,  724,  723,  725,
-
-      718,  727,  728,  725,  715,  717,  774,  723,  776,  721,
-      778, 1549,  716,  731,  781, 1549,  732,  742,  727,  743,
-      729,  789,  790,  736,  792,  751, 1549,  743,  745,  796,
-     1549, 1549, 1549, 1549,  749,  800,  751,  783, 1549,  761,
-     1549,  748,  747,  750,  750,  751,  809, 1549,  754,  811,
-      766,  757,  772,  772,  775,  775,  772,  777, 1549,  769,
-     1549,  779, 1549,  780,  781,  778, 1549,  770,  776,  775,
-      787,  787, 1549, 1549,  826, 1549,  791,  776,  782, 1549,
-      797, 1549,  794,  813,  833,  839,  783,  841,  842,  797,
-     1549,  844, 1549,  784,  841,  806,  802,  844,  794,  799,
-
-      852,  810,  854,  855,  818,  807,  858,  802,  819,  804,
-      819,  803,  860,  861,  826,  822,  869,  841,  828, 1549,
-      872, 1549, 1549,  821, 1549,  874,  822,  871,  816,  821,
-      880,  830, 1549,  836, 1549, 1549,  827,  842, 1549,  880,
-      848,  841,  842,  851,  838,  840,  850,  843, 1549,  894,
-      841, 1549,  845, 1549,  848,  844,  843,  901,  856, 1549,
-      898,  860,  863,  906,  849,  851,  859,  849,  865,  859,
-      875,  914,  910, 1549,  875,  912,  876,  867,  874, 1549,
-      871,  876,  923,  868, 1549,  872,  884,  885,  928,  872,
-      873,  881, 1549,  892,  882,  881,  884,  896,  887,  896,
-
-      898, 1549,  940,  900,  942,  943, 1549,  939,  899,  904,
-      885,  948,  907,  950,  909,  910,  953,  912, 1549,  917,
-     1549, 1549,  899,  905,  958,  919, 1549,  905, 1549,  905,
-      907, 1549,  912,  907,  919,  915, 1549,  918,  922,  913,
-      965,  914,  930,  923,  918,  933,  924,  931,  918,  933,
-      980,  939,  982,  927,  943,  934,  948,  944, 1549,  988,
-     1549,  989,  990,  947,  946,  947, 1549, 1549, 1549,  994,
-      938,  954, 1549,  992,  943,  942,  944,  955, 1002,  953,
-     1549,  962, 1005, 1549, 1549, 1011, 1016, 1021, 1026, 1031,
-     1036, 1041, 1044, 1018, 1023, 1025, 1038
-
+       64,  220, 1500,  187,   75, 1499,  261,  215,  289,  256,
+      278, 1482,  207,  284,  311,  293, 1501,    0,  337,  352,
+      360,  366,  372, 1558,    0, 1558,  331,  378,  227,  231,
+      320,  294,  341,  325, 1558, 1498, 1537, 1558,  237, 1558,
+
+      377,  335, 1496, 1535,  366,  253,  323, 1490,  362,  295,
+      366,  306,  293, 1533,    0,  428,  365, 1477, 1485,  351,
+     1481, 1470, 1471,  360, 1487, 1480,  365,  358, 1467, 1473,
+      361, 1461, 1517,  407, 1464, 1515, 1457, 1480, 1477, 1477,
+     1471,  366, 1464, 1457, 1462, 1456, 1453, 1452, 1466,  363,
+     1502, 1451,  374, 1463, 1466, 1450,  434,  399, 1462, 1463,
+     1461, 1443, 1448, 1444, 1436, 1453, 1445,    0,  395,  408,
+      414,  424,  430,  421, 1444, 1558,    0,  426, 1439, 1558,
+      432,  431, 1558, 1491, 1446,  423, 1489,  442, 1488,  435,
+     1487, 1558,  483,  466, 1448, 1443, 1442,  438, 1483, 1477,
+
+     1443, 1422, 1430, 1436, 1424, 1435, 1436, 1436, 1431, 1423,
+     1425, 1414, 1427, 1427, 1419, 1409, 1412, 1426, 1558, 1412,
+     1420, 1423, 1404, 1403, 1453, 1402, 1412, 1450, 1449, 1410,
+     1398, 1409, 1445, 1403, 1395, 1392, 1408, 1389, 1391, 1387,
+     1393, 1384, 1383, 1396, 1389, 1391, 1395, 1394, 1388,   80,
+     1395, 1390, 1382, 1388, 1388, 1369, 1385, 1378, 1385, 1373,
+     1366, 1380, 1379, 1382, 1364, 1372,  475, 1558, 1558,  477,
+     1558, 1558, 1359,    0,  443,  497,  478, 1416, 1558, 1369,
+      481, 1558, 1414, 1558, 1408,  529,  478, 1350, 1360, 1410,
+     1367,  472, 1558, 1365, 1407, 1362, 1359, 1360,  504, 1403,
+
+     1353, 1348, 1345, 1341, 1343, 1352, 1341, 1390, 1338,  528,
+     1351, 1351, 1334, 1335, 1348, 1335, 1345, 1340, 1347, 1342,
+     1327,  423, 1336, 1332, 1380,  488, 1327, 1320, 1322, 1326,
+     1315, 1322, 1327,   62, 1372, 1327,  470, 1324, 1328, 1326,
+     1315, 1315, 1327, 1309, 1301, 1302, 1323, 1305, 1317, 1316,
+     1302, 1314, 1313, 1312, 1353, 1352, 1351, 1295,  529, 1308,
+     1558, 1558, 1307,    0,  486, 1347, 1346, 1304, 1344, 1558,
+     1292, 1342, 1558,  506,  577,  507, 1341, 1283, 1558, 1299,
+     1298, 1285, 1284, 1558, 1286, 1283, 1295, 1291, 1279, 1558,
+     1288, 1273, 1275, 1286, 1284, 1320, 1286, 1268, 1317, 1558,
+
+     1266, 1282, 1314, 1318, 1276, 1270, 1272, 1273, 1275, 1307,
+     1260, 1255, 1254, 1256, 1249, 1264, 1256, 1304, 1558, 1251,
+     1247, 1250, 1243, 1253, 1256, 1245, 1244, 1239, 1558, 1294,
+     1558, 1238, 1237, 1230, 1247, 1284, 1231, 1236, 1245, 1239,
+     1243,  550, 1278, 1242, 1222, 1225, 1224, 1232, 1220, 1276,
+     1218, 1558, 1558, 1558, 1223, 1558, 1233, 1267, 1229,    0,
+     1270, 1558, 1558, 1218, 1558, 1224, 1558,  526,  525,  553,
+     1558, 1262, 1209, 1208, 1215, 1208, 1220, 1219, 1203, 1218,
+     1248, 1252, 1198, 1200, 1212, 1212, 1197, 1194, 1208, 1200,
+     1206, 1197, 1205, 1558, 1190, 1201, 1205, 1187, 1201, 1199,
+
+     1182, 1176, 1181, 1178, 1193, 1194, 1191, 1558, 1177, 1179,
+     1225,  554, 1188, 1171, 1172, 1177, 1168, 1558, 1182, 1168,
+      556, 1160, 1181, 1178, 1170, 1213, 1167, 1211, 1558, 1159,
+     1157, 1171, 1174, 1206, 1205, 1152, 1203, 1558,  564, 1165,
+     1154, 1156, 1558, 1558, 1148, 1203,  531,  524, 1156, 1161,
+     1195, 1194, 1193, 1147, 1137, 1190, 1152, 1142, 1187, 1133,
+     1141, 1143, 1147, 1182, 1144, 1143, 1144, 1137, 1126, 1139,
+     1142, 1137, 1132, 1137, 1134, 1133, 1136, 1131, 1172, 1171,
+     1115, 1111, 1119, 1167, 1116, 1108, 1123, 1558, 1111, 1120,
+     1119, 1119, 1103, 1158, 1101, 1114, 1558, 1106, 1098, 1107,
+
+     1100, 1111, 1088, 1092, 1143, 1090, 1088, 1099, 1139, 1086,
+      529,  530, 1080,  548, 1558, 1141, 1099, 1088, 1092, 1137,
+     1558, 1131,  534, 1084, 1085, 1076, 1079, 1075, 1092, 1087,
+     1075, 1086, 1070, 1072, 1071, 1085, 1066, 1116, 1071, 1079,
+     1077, 1068, 1077, 1073, 1114, 1056, 1056, 1069, 1068, 1053,
+     1108, 1050, 1051, 1558, 1558, 1065, 1062, 1065, 1558, 1064,
+     1049,  535, 1047, 1094, 1043, 1097, 1096, 1558, 1041, 1053,
+     1051, 1092, 1040, 1040, 1032, 1088, 1041, 1029, 1023, 1031,
+     1033, 1042, 1035, 1027, 1027,  548, 1026, 1077, 1038, 1013,
+     1558, 1069, 1016, 1029, 1558,  555,  581, 1031, 1032, 1023,
+
+     1016, 1015, 1009, 1016, 1009, 1058, 1062, 1009, 1019, 1002,
+     1016, 1004, 1014, 1006, 1049, 1015,   65,  185, 1558,  237,
+      298,  346,  602,  348, 1558,  424,  416,  476,  560,  557,
+      547,  566,  552,  567,  554,  573,  556, 1558, 1558,  565,
+      616,  571, 1558,  581,  576,  627, 1558,  578,  583,  577,
+      578,  590,  584,  582,  635,  581,  637,  638,  584, 1558,
+      590,  588,  587,  601,  602,  618,  623,  597,  592,  599,
+      604,  611,  652,  653,  602,  606, 1558,  601,  619,  617,
+      655,  606,  624,  625,  611,  619,  628,  608,  629,  669,
+      670, 1558,  625,  672,  675,  637,  640,  623,  624,  631,
+
+      682,  631,  646,  685,  640,  638,  636,  689,  690,  642,
+      692,  688,  648, 1558,  653,  646,  655,  649,  644,  654,
+      650, 1558,  645, 1558, 1558,  646,  662,  663,  664,  646,
+      651,  690,  681,  653,  656,  671,  663,  667, 1558, 1558,
+      677,  676,  662,  663,  721,  676,  681,  668,  679,  671,
+      677,  673,  691,  692, 1558, 1558,  690, 1558,  693, 1558,
+      678,  697,  687,  737,  693,  735, 1558,  692,  742, 1558,
+      691,  698,  740, 1558, 1558,  700, 1558,  691,  691,  694,
+      708,  695,  706,  753,  712,  750,  756,  757,  758,  759,
+      720,  704,  716,  735,  764,  724,  766,  715,  711,  727,
+
+      732,  720,  772,  731, 1558,  733,  732,  734,  727,  736,
+      737,  734,  724,  726,  783,  732,  785,  730,  787, 1558,
+      725,  740,  790, 1558,  741,  751,  736,  752,  738,  798,
+      799,  745,  801,  760, 1558,  752,  754,  805, 1558, 1558,
+     1558, 1558,  758,  809,  760,  792, 1558,  770, 1558,  757,
+      756,  759,  759,  760,  818, 1558,  763,  820,  775,  766,
+      781,  781,  784,  784,  781,  786, 1558,  778, 1558,  788,
+     1558,  789,  790,  787, 1558,  779,  785,  784,  796,  796,
+     1558, 1558,  835, 1558,  800,  785,  791, 1558,  806, 1558,
+      803,  822,  842,  848,  792,  850,  851,  806, 1558,  853,
+
+     1558,  793,  850,  815,  811,  853,  803,  808,  861,  819,
+      863,  864,  827,  816,  867,  811,  828,  813,  828,  812,
+      869,  870,  835,  831,  878,  850,  837, 1558,  881, 1558,
+     1558,  830, 1558,  883,  831,  880,  825,  830,  889,  839,
+     1558,  845, 1558, 1558,  836,  851, 1558,  889,  857,  850,
+      851,  860,  847,  849,  859,  852, 1558,  903,  850, 1558,
+      854, 1558,  857,  853,  852,  910,  865, 1558,  907,  869,
+      872,  915,  858,  860,  868,  858,  874,  868,  884,  923,
+      919, 1558,  884,  921,  885,  876,  883, 1558,  880,  885,
+      932,  877, 1558,  881,  893,  894,  937,  881,  882,  890,
+
+     1558,  901,  891,  890,  893,  905,  896,  905,  907, 1558,
+      949,  909,  951,  952, 1558,  948,  908,  913,  894,  957,
+      916,  959,  918,  919,  962,  921, 1558,  926, 1558, 1558,
+      908,  914,  967,  928, 1558,  914, 1558,  914,  916, 1558,
+      921,  916,  928,  924, 1558,  927,  931,  922,  974,  923,
+      939,  932,  927,  942,  933,  940,  927,  942,  989,  948,
+      991,  936,  952,  943,  957,  953, 1558,  997, 1558,  998,
+      999,  956,  955,  956, 1558, 1558, 1558, 1003,  947,  963,
+     1558, 1001,  952,  951,  953,  964, 1011,  962, 1558,  971,
+     1014, 1558, 1558, 1020, 1025, 1030, 1035, 1040, 1045, 1050,
+
+     1053, 1027, 1032, 1034, 1047
     } ;
 
-static const flex_int16_t yy_def[1198] =
+static const flex_int16_t yy_def[1206] =
     {   0,
-     1186, 1186, 1187, 1187, 1186, 1186, 1186, 1186, 1186, 1186,
-     1185, 1185, 1185, 1185, 1185, 1188, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1189,
-     1185, 1185, 1185, 1190,   15, 1185,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1191,   45,   45,   45,
+     1194, 1194, 1195, 1195, 1194, 1194, 1194, 1194, 1194, 1194,
+     1193, 1193, 1193, 1193, 1193, 1196, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1197,
+     1193, 1193, 1193, 1198,   15, 1193,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1199,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1188, 1185, 1185,
-     1185, 1185, 1185, 1185, 1192, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1189, 1185, 1190, 1185,
+       45,   45,   45,   45,   45,   45,   45, 1196, 1193, 1193,
+     1193, 1193, 1193, 1193, 1200, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1197, 1193, 1198, 1193,
 
-     1185,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1193,   45, 1191,   45,   45,   45,   45,
+     1193,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1201,   45, 1199,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1192, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1194,   45,   45, 1185,
-       45,   45, 1185,   45,   45,   45,   45,   45,   45,   45,
-     1193, 1185, 1191,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1200, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1202,   45,   45, 1193,
+       45,   45, 1193,   45,   45,   45,   45,   45,   45,   45,
+     1201, 1193, 1199,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1185,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1193,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1195,   45,   45,   45,   45, 1185,   45,   45,
-     1185,   45, 1185,   45, 1191,   45,   45,   45,   45,   45,
-       45, 1185,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1203,   45,   45,   45,   45, 1193,   45,
+       45, 1193,   45, 1193,   45, 1199,   45,   45,   45,   45,
+       45,   45, 1193,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1185, 1185,
-     1185, 1196,   45,   45,   45,   45,   45, 1185,   45,   45,
-     1185,   45, 1191,   45,   45,   45, 1185,   45,   45,   45,
-       45, 1185,   45,   45,   45,   45,   45, 1185,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1185,   45,   45,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1185,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1185,   45, 1185,   45,
+     1193, 1193, 1193, 1204,   45,   45,   45,   45,   45, 1193,
+       45,   45, 1193,   45, 1199,   45,   45,   45, 1193,   45,
+       45,   45,   45, 1193,   45,   45,   45,   45,   45, 1193,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1193,
+
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1185, 1185,
-     1185,   45, 1185,   45,   45, 1185, 1197,   45, 1185, 1185,
-       45, 1185,   45, 1185,   45,   45,   45, 1185,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1193,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1193,   45,
+     1193,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1193, 1193, 1193,   45, 1193,   45,   45, 1193, 1205,
+       45, 1193, 1193,   45, 1193,   45, 1193,   45,   45,   45,
+     1193,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1185,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1193,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45, 1185,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1185,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1185,   45,   45,   45,   45,   45,
-       45,   45,   45, 1185,   45,   45,   45,   45, 1185, 1185,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1193,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1193,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1193,   45,
+       45,   45,   45,   45,   45,   45,   45, 1193,   45,   45,
+       45,   45, 1193, 1193,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1185,   45,   45,   45,   45,   45,   45,
-       45,   45, 1185,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1193,   45,   45,
+       45,   45,   45,   45,   45,   45, 1193,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1185,
-       45,   45,   45,   45,   45, 1185,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1193,   45,   45,   45,   45,   45,
+     1193,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1185, 1185,
-       45,   45,   45, 1185,   45,   45,   45,   45,   45,   45,
-       45,   45, 1185,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1185,   45,   45,   45, 1185,   45,
+       45,   45,   45, 1193, 1193,   45,   45,   45, 1193,   45,
+       45,   45,   45,   45,   45,   45,   45, 1193,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1185,   45,   45,   45,   45,   45, 1185,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1185, 1185,   45,   45,   45, 1185,   45,   45, 1185,
+     1193,   45,   45,   45, 1193,   45,   45,   45,   45,   45,
+
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1185,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1185,
+       45,   45,   45,   45,   45,   45,   45,   45, 1193,   45,
+       45,   45,   45,   45, 1193,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1193, 1193,   45,
+       45,   45, 1193,   45,   45,   45, 1193,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1193,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1185,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1193,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1193,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1185,   45, 1185, 1185,   45,   45,   45,
+       45,   45,   45, 1193,   45,   45,   45,   45,   45,   45,
+       45, 1193,   45, 1193, 1193,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1193, 1193,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1185, 1185,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1185, 1185,   45, 1185,
-       45, 1185,   45,   45,   45,   45,   45,   45, 1185,   45,
-       45, 1185,   45,   45,   45, 1185, 1185,   45, 1185,   45,
+       45,   45,   45,   45, 1193, 1193,   45, 1193,   45, 1193,
+       45,   45,   45,   45,   45,   45, 1193,   45,   45, 1193,
+       45,   45,   45, 1193, 1193,   45, 1193,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1185,   45,   45,   45,
 
+       45,   45,   45,   45, 1193,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1193,
+       45,   45,   45, 1193,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1193,   45,   45,   45, 1193, 1193,
+     1193, 1193,   45,   45,   45,   45, 1193,   45, 1193,   45,
+       45,   45,   45,   45,   45, 1193,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1193,   45, 1193,   45,
+     1193,   45,   45,   45, 1193,   45,   45,   45,   45,   45,
+     1193, 1193,   45, 1193,   45,   45,   45, 1193,   45, 1193,
+       45,   45,   45,   45,   45,   45,   45,   45, 1193,   45,
+
+     1193,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1185,   45,   45,   45, 1185,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1185,   45,   45,   45,
-     1185, 1185, 1185, 1185,   45,   45,   45,   45, 1185,   45,
-     1185,   45,   45,   45,   45,   45,   45, 1185,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1185,   45,
-     1185,   45, 1185,   45,   45,   45, 1185,   45,   45,   45,
-       45,   45, 1185, 1185,   45, 1185,   45,   45,   45, 1185,
-       45, 1185,   45,   45,   45,   45,   45,   45,   45,   45,
-     1185,   45, 1185,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1185,
-       45, 1185, 1185,   45, 1185,   45,   45,   45,   45,   45,
-       45,   45, 1185,   45, 1185, 1185,   45,   45, 1185,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1185,   45,
-       45, 1185,   45, 1185,   45,   45,   45,   45,   45, 1185,
+       45,   45,   45,   45,   45,   45,   45, 1193,   45, 1193,
+     1193,   45, 1193,   45,   45,   45,   45,   45,   45,   45,
+     1193,   45, 1193, 1193,   45,   45, 1193,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1193,   45,   45, 1193,
+       45, 1193,   45,   45,   45,   45,   45, 1193,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1185,   45,   45,   45,   45,   45, 1185,
-       45,   45,   45,   45, 1185,   45,   45,   45,   45,   45,
-       45,   45, 1185,   45,   45,   45,   45,   45,   45,   45,
-
-       45, 1185,   45,   45,   45,   45, 1185,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1185,   45,
-     1185, 1185,   45,   45,   45,   45, 1185,   45, 1185,   45,
-       45, 1185,   45,   45,   45,   45, 1185,   45,   45,   45,
+       45, 1193,   45,   45,   45,   45,   45, 1193,   45,   45,
+       45,   45, 1193,   45,   45,   45,   45,   45,   45,   45,
+
+     1193,   45,   45,   45,   45,   45,   45,   45,   45, 1193,
+       45,   45,   45,   45, 1193,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1193,   45, 1193, 1193,
+       45,   45,   45,   45, 1193,   45, 1193,   45,   45, 1193,
+       45,   45,   45,   45, 1193,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1185,   45,
-     1185,   45,   45,   45,   45,   45, 1185, 1185, 1185,   45,
-       45,   45, 1185,   45,   45,   45,   45,   45,   45,   45,
-     1185,   45,   45, 1185,    0, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185
+       45,   45,   45,   45,   45,   45, 1193,   45, 1193,   45,
+       45,   45,   45,   45, 1193, 1193, 1193,   45,   45,   45,
+     1193,   45,   45,   45,   45,   45,   45,   45, 1193,   45,
+       45, 1193,    0, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
 
+     1193, 1193, 1193, 1193, 1193
     } ;
 
-static const flex_int16_t yy_nxt[1621] =
+static const flex_int16_t yy_nxt[1630] =
     {   0,
-     1185,   13,   14,   13, 1185,   15,   16, 1185,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   84, 1185,
-       37,   14,   37,   85,   25,   26,   38, 1185, 1185,   27,
+     1193,   13,   14,   13, 1193,   15,   16, 1193,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   84, 1193,
+       37,   14,   37,   85,   25,   26,   38, 1193, 1193,   27,
        37,   14,   37,   42,   28,   42,   38,   90,   91,   29,
       113,   30,   13,   14,   13,   89,   90,   25,   31,   91,
-       13,   14,   13,   13,   14,   13,   32,   40,  789,   13,
-       14,   13,   33,   40,  113,   90,   91,  427,   89,   34,
+       13,   14,   13,   13,   14,   13,   32,   40, 1193,   13,
+       14,   13,   33,   40,  113,   90,   91,  429,   89,   34,
        35,   13,   14,   13,   93,   15,   16,   94,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
        13,  106,   39,   89,   25,   26,   13,   14,   13,   27,
 
        39,   83,   83,   83,   28,   42,   41,   42,   42,   29,
        42,   30,   81,  105,   41,  109,   92,   25,   31,  106,
-      127,  134,   87,  428,   87,  790,   32,   88,   88,   88,
-      128,  135,   33,  136,  341,   81,  105,  342,  109,   34,
+      127,  134,   87,  430,   87,  787,   32,   88,   88,   88,
+      128,  135,   33,  136,  343,   81,  105,  344,  109,   34,
        35,   44,   44,   44,   45,   45,   46,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   47,   45,   45,   48,   49,   50,   45,   51,   52,
        45,   45,   79,  102,   80,   80,   80,   79,  107,   82,
        82,   82,  100,  112,   79,   81,   82,   82,   82,  119,
        81,  123,  120,  110,  121,  124,  122,   81,  125,  102,
-      105,  102,  100,  111,  131,  791,  112,  108,   81,  132,
+      105,  102,  100,  111,  131,  788,  112,  108,   81,  132,
       156,  126,  133,   81,  157,  169,  110,  101,  142,  170,
        81,   45,  143,  105,   45,   45,   45,  117,   45,   45,
        45,  111,  115,  118,  129,   45,   45,  101,   45,   45,
-      792,  169,  144,  182,   45,  170,   45,   45,   45,   45,
+      789,  169,  144,  182,   45,  170,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,  138,  139,
       149,  150,  169,   45,  151,  152,  187,   45,  183,   45,
       116,  158,  145,  110,  146,  153,  109,  189,  154,  112,
       190,  159,  160,  111,   88,   88,   88,  161,  172,  165,
-       83,   83,   83,  187,  166,  171,  110,  184,  162,  793,
+       83,   83,   83,  187,  166,  171,  110,  184,  162,  790,
       171,   81,  163,   79,  189,   80,   80,   80,   87,  170,
        87,  111,  178,   88,   88,   88,   81,   79,  164,   82,
        82,   82,   99,  171,   81,   83,   83,   83,  174,   99,
        81,   88,   88,   88,  181,  173,   81,  197,  186,   81,
 
-      178,  188,  178,  210,  202,  203,  794,  198,  207,  277,
+      178,  188,  178,  210,  202,  203,  791,  198,  207,  795,
       208,  228,  219,   81,  204,  214,  211,   99,  215,   81,
-      181,   99,  216,  237,  238,   99,  186,  209,  795,  188,
-      194,  241,  229,   99,  242,  243,  277,   99,  266,   99,
-      177,  193,  193,  193,  247,  248,  249,  268,  193,  193,
-      193,  193,  193,  193,  220,  250,  254,  251,  267,  252,
-      255,  266,  253,  268,  256,  267,  266,  274,  276,  280,
-      268,  193,  193,  193,  193,  193,  193,  282,  284,  274,
-      359,  290,  370,  363,  267,  796,  271,  291,  359,  269,
-      274,  270,  280,  363,  418,  386,  276,  431,  367,  387,
-
-      282,  432,  286,  359,  419,  284,  285,  285,  285,  379,
-      370,  360,  363,  285,  285,  285,  285,  285,  285,  364,
-      365,  367,  374,  413,  414,  453,  380,  398,  366,  458,
-      454,  465,  399,  466,  458,  544,  285,  285,  285,  285,
-      285,  285,  373,  373,  373,  618,  797,  798,  801,  373,
-      373,  373,  373,  373,  373,  543,  525,  458,  465,  540,
-      466,  526,  467,  544,  545,  584,  593,  760,  618,  610,
-      617,  594,  373,  373,  373,  373,  373,  373,  400,  611,
-      678,  680,  543,  401,   45,   45,   45,  679,  681,  750,
-      760,   45,   45,   45,   45,   45,   45,  683,  617,  691,
-
-      727,  751,  585,  684,  728,  759,  785,  802,  595,  799,
-      803,  786,  804,  805,   45,   45,   45,   45,   45,   45,
-      800,  806,  807,  808,  809,  810,  811,  691,  812,  813,
-      814,  815,  759,  816,  817,  818,  819,  820,  821,  822,
-      823,  824,  826,  825,  827,  828,  829,  830,  831,  832,
-      833,  834,  835,  836,  837,  838,  839,  840,  841,  842,
-      843,  844,  787,  845,  846,  847,  848,  849,  850,  824,
-      825,  852,  854,  851,  855,  856,  857,  858,  859,  860,
-      861,  862,  863,  864,  865,  866,  867,  868,  869,  870,
-      871,  872,  873,  874,  875,  876,  877,  878,  879,  880,
-
-      881,  882,  883,  884,  885,  886,  887,  888,  889,  890,
-      891,  892,  893,  853,  894,  895,  896,  897,  898,  899,
-      900,  901,  902,  903,  904,  905,  906,  907,  886,  908,
-      909,  910,  911,  912,  887,  913,  914,  915,  916,  917,
-      918,  919,  920,  921,  922,  923,  924,  925,  926,  927,
-      928,  929,  931,  932,  933,  934,  935,  936,  937,  938,
-      939,  940,  941,  943,  944,  945,  946,  947,  948,  949,
-      950,  951,  952,  953,  954,  955,  956,  957,  958,  959,
-      960,  961,  962,  963,  964,  965,  967,  938,  968,  969,
-      970,  971,  972,  966,  973,  974,  975,  976,  977,  978,
-
-      979,  980,  930,  981,  942,  982,  983,  984,  985,  986,
-      987,  988,  989,  990,  991,  992,  993,  994,  995,  996,
-      997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
-      984, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015,
-     1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
-     1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
-     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1018,
-     1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054,
-     1056, 1057, 1058, 1059, 1055, 1060, 1061, 1062, 1063, 1064,
-     1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074,
-
-     1075, 1076, 1077, 1050, 1078, 1079, 1080, 1081, 1082, 1083,
-     1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093,
-     1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
-     1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113,
-     1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
-     1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
-     1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
-     1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
-     1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163,
-     1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173,
-
-     1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
-     1184,   12,   12,   12,   12,   12,   36,   36,   36,   36,
-       36,   78,  273,   78,   78,   78,   97,  362,   97,  457,
-       97,   99,   99,   99,   99,   99,  114,  114,  114,  114,
-      114,  168,   99,  168,  168,  168,  191,  191,  191,  788,
+      181,   99,  216,  237,  238,   99,  186,  209,  267,  188,
+      194,  241,  229,   99,  242,  243,  268,   99,  269,   99,
+      177,  193,  193,  193,  247,  269,  275,  281,  193,  193,
+      193,  193,  193,  193,  220,  255,  267,  267,  268,  256,
+      278,  269,  268,  257,  285,  277,  283,  796,  272,  275,
+      281,  193,  193,  193,  193,  193,  193,  248,  249,  250,
+      797,  365,  415,  416,  271,  270,  275,  278,  251,  283,
+      252,  285,  253,  277,  291,  254,  286,  286,  286,  361,
+
+      292,  361,  369,  286,  286,  286,  286,  286,  286,  287,
+      365,  366,  367,  372,  388,  381,  365,  433,  389,  461,
+      368,  434,  361,  798,  362,  369,  286,  286,  286,  286,
+      286,  286,  382,  400,  456,  468,  420,  469,  401,  457,
+      461,  372,  375,  375,  375,  376,  421,  461,  623,  375,
+      375,  375,  375,  375,  375,  529,  547,  548,  544,  588,
+      530,  597,  468,  549,  469,  622,  598,  697,  470,  615,
+      799,  623,  375,  375,  375,  375,  375,  375,  733,  616,
+      684,  686,  734,  547,  402,  548,  766,  685,  687,  403,
+       45,   45,   45,  622,  757,  697,  589,   45,   45,   45,
+
+       45,   45,   45,  599,  689,  767,  758,  792,  800,  801,
+      690,  802,  793,  766,  803,  804,  805,  808,  806,  809,
+       45,   45,   45,   45,   45,   45,  810,  811,  767,  807,
+      812,  813,  814,  815,  816,  817,  818,  819,  820,  821,
+      822,  823,  824,  825,  826,  827,  828,  829,  830,  831,
+      832,  834,  833,  835,  836,  837,  838,  839,  840,  841,
+      842,  843,  844,  794,  845,  846,  847,  848,  849,  850,
+      851,  852,  853,  854,  855,  856,  857,  858,  832,  833,
+      860,  862,  859,  863,  864,  865,  866,  867,  868,  869,
+      870,  871,  872,  873,  874,  875,  876,  877,  878,  879,
+
+      880,  881,  882,  883,  884,  885,  886,  887,  888,  889,
+      890,  891,  892,  893,  894,  895,  896,  897,  898,  899,
+      900,  901,  861,  902,  903,  904,  905,  906,  907,  908,
+      909,  910,  911,  912,  913,  914,  915,  894,  916,  917,
+      918,  919,  920,  895,  921,  922,  923,  924,  925,  926,
+      927,  928,  929,  930,  931,  932,  933,  934,  935,  936,
+      937,  939,  940,  941,  942,  943,  944,  945,  946,  947,
+      948,  949,  951,  952,  953,  954,  955,  956,  957,  958,
+      959,  960,  961,  962,  963,  964,  965,  966,  967,  968,
+      969,  970,  971,  972,  973,  975,  946,  976,  977,  978,
+
+      979,  980,  974,  981,  982,  983,  984,  985,  986,  987,
+      988,  938,  989,  950,  990,  991,  992,  993,  994,  995,
+      996,  997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005,
+     1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014,  992,
+     1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024,
+     1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034,
+     1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044,
+     1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1026, 1053,
+     1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1064,
+     1065, 1066, 1067, 1063, 1068, 1069, 1070, 1071, 1072, 1073,
+
+     1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083,
+     1084, 1085, 1058, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
+     1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
+     1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
+     1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122,
+     1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132,
+     1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142,
+     1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
+     1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162,
+     1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172,
+
+     1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182,
+     1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192,
+       12,   12,   12,   12,   12,   36,   36,   36,   36,   36,
+       78,  274,   78,   78,   78,   97,  364,   97,  460,   97,
+       99,   99,   99,   99,   99,  114,  114,  114,  114,  114,
+      168,   99,  168,  168,  168,  191,  191,  191,  786,  785,
       784,  783,  782,  781,  780,  779,  778,  777,  776,  775,
-      774,  773,  772,  771,  770,  769,  768,  767,  766,  765,
-      764,  763,  762,  761,  758,  757,  756,  755,  754,  753,
-      752,  749,  748,  747,  746,  745,  744,  743,  742,  741,
-      740,  739,  738,  737,  736,  735,  734,  733,  732,  731,
+      774,  773,  772,  771,  770,  769,  768,  765,  764,  763,
+      762,  761,  760,  759,  756,  755,  754,  753,  752,  751,
+      750,  749,  748,  747,  746,  745,  744,  743,  742,  741,
 
-      730,  729,  726,  725,  724,  723,  722,  721,  720,  719,
+      740,  739,  738,  737,  736,  735,  732,  731,  730,  729,
+      728,  727,  726,  725,  724,  723,  722,  721,  720,  719,
       718,  717,  716,  715,  714,  713,  712,  711,  710,  709,
       708,  707,  706,  705,  704,  703,  702,  701,  700,  699,
-      698,  697,  696,  695,  694,  693,  692,  690,  689,  688,
-      687,  686,  685,  682,  677,  676,  675,  674,  673,  672,
+      698,  696,  695,  694,  693,  692,  691,  688,  683,  682,
+      681,  680,  679,  678,  677,  676,  675,  674,  673,  672,
       671,  670,  669,  668,  667,  666,  665,  664,  663,  662,
       661,  660,  659,  658,  657,  656,  655,  654,  653,  652,
       651,  650,  649,  648,  647,  646,  645,  644,  643,  642,
       641,  640,  639,  638,  637,  636,  635,  634,  633,  632,
-      631,  630,  629,  628,  627,  626,  625,  624,  623,  622,
 
-      621,  620,  619,  616,  615,  614,  613,  612,  609,  608,
-      607,  606,  605,  604,  603,  602,  601,  600,  599,  598,
-      597,  596,  592,  591,  590,  589,  588,  587,  586,  583,
+      631,  630,  629,  628,  627,  626,  625,  624,  621,  620,
+      619,  618,  617,  614,  613,  612,  611,  610,  609,  608,
+      607,  606,  605,  604,  603,  602,  601,  600,  596,  595,
+      594,  593,  592,  591,  590,  587,  586,  585,  584,  583,
       582,  581,  580,  579,  578,  577,  576,  575,  574,  573,
       572,  571,  570,  569,  568,  567,  566,  565,  564,  563,
       562,  561,  560,  559,  558,  557,  556,  555,  554,  553,
-      552,  551,  550,  549,  548,  547,  546,  542,  541,  540,
-      539,  538,  537,  536,  535,  534,  533,  532,  531,  530,
-      529,  528,  527,  524,  523,  522,  521,  520,  519,  518,
-      517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
+      552,  551,  550,  546,  545,  544,  543,  542,  541,  540,
+      539,  538,  537,  536,  535,  534,  533,  532,  531,  528,
+      527,  526,  525,  524,  523,  522,  521,  520,  519,  518,
 
+      517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
       507,  506,  505,  504,  503,  502,  501,  500,  499,  498,
       497,  496,  495,  494,  493,  492,  491,  490,  489,  488,
       487,  486,  485,  484,  483,  482,  481,  480,  479,  478,
-      477,  476,  475,  474,  473,  472,  471,  470,  469,  468,
-      464,  463,  462,  461,  460,  459,  456,  455,  452,  451,
+      477,  476,  475,  474,  473,  472,  471,  467,  466,  465,
+      464,  463,  462,  459,  458,  455,  454,  453,  452,  451,
       450,  449,  448,  447,  446,  445,  444,  443,  442,  441,
-      440,  439,  438,  437,  436,  435,  434,  433,  430,  429,
-      426,  425,  424,  423,  422,  421,  420,  417,  416,  415,
-      412,  411,  410,  409,  408,  407,  406,  405,  404,  403,
-      402,  397,  396,  395,  394,  393,  392,  391,  390,  389,
-
-      388,  385,  384,  383,  382,  381,  378,  377,  376,  375,
-      372,  371,  369,  368,  361,  358,  357,  356,  355,  354,
-      353,  352,  351,  350,  349,  348,  347,  346,  345,  344,
-      343,  340,  339,  338,  337,  336,  335,  334,  333,  332,
+      440,  439,  438,  437,  436,  435,  432,  431,  428,  427,
+      426,  425,  424,  423,  422,  419,  418,  417,  414,  413,
+      412,  411,  410,  409,  408,  407,  406,  405,  404,  399,
+
+      398,  397,  396,  395,  394,  393,  392,  391,  390,  387,
+      386,  385,  384,  383,  380,  379,  378,  377,  374,  373,
+      371,  370,  363,  360,  359,  358,  357,  356,  355,  354,
+      353,  352,  351,  350,  349,  348,  347,  346,  345,  342,
+      341,  340,  339,  338,  337,  336,  335,  334,  333,  332,
       331,  330,  329,  328,  327,  326,  325,  324,  323,  322,
       321,  320,  319,  318,  317,  316,  315,  314,  313,  312,
       311,  310,  309,  308,  307,  306,  305,  304,  303,  302,
-      301,  300,  299,  298,  297,  296,  295,  294,  293,  292,
-      289,  288,  287,  192,  283,  281,  279,  278,  275,  272,
-      265,  264,  263,  262,  261,  260,  259,  258,  257,  246,
-
-      245,  244,  240,  239,  236,  235,  234,  233,  232,  231,
-      230,  227,  226,  225,  224,  223,  222,  221,  218,  217,
-      213,  212,  206,  205,  201,  200,  199,  196,  195,  192,
-      185,  180,  179,  176,  175,  167,  155,  137,  130,  104,
-      103,   43,   98,   96,   95,   86,   43, 1185,   11, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185
+      301,  300,  299,  298,  297,  296,  295,  294,  293,  290,
+      289,  288,  192,  284,  282,  280,  279,  276,  273,  266,
+
+      265,  264,  263,  262,  261,  260,  259,  258,  246,  245,
+      244,  240,  239,  236,  235,  234,  233,  232,  231,  230,
+      227,  226,  225,  224,  223,  222,  221,  218,  217,  213,
+      212,  206,  205,  201,  200,  199,  196,  195,  192,  185,
+      180,  179,  176,  175,  167,  155,  137,  130,  104,  103,
+       43,   98,   96,   95,   86,   43, 1193,   11, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193
     } ;
 
-static const flex_int16_t yy_chk[1621] =
+static const flex_int16_t yy_chk[1630] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,   21,    0,
         3,    3,    3,   21,    1,    1,    3,    0,    0,    1,
         4,    4,    4,   13,    1,   13,    4,   27,   28,    1,
        56,    1,    5,    5,    5,   26,   32,    1,    1,   33,
-        6,    6,    6,    7,    7,    7,    1,    7,  720,    8,
-        8,    8,    1,    8,   56,   27,   28,  333,   26,    1,
+        6,    6,    6,    7,    7,    7,    1,    7,    0,    8,
+        8,    8,    1,    8,   56,   27,   28,  334,   26,    1,
         1,    2,    2,    2,   32,    2,    2,   33,    2,    2,
         2,    2,    2,    2,    2,    2,    2,    2,    9,    9,
         9,   51,    5,   31,    2,    2,   10,   10,   10,    2,
 
         6,   20,   20,   20,    2,   37,    9,   37,   42,    2,
        42,    2,   20,   50,   10,   53,   31,    2,    2,   51,
-       61,   65,   25,  333,   25,  721,    2,   25,   25,   25,
-       61,   65,    2,   65,  249,   20,   50,  249,   53,    2,
+       61,   65,   25,  334,   25,  717,    2,   25,   25,   25,
+       61,   65,    2,   65,  250,   20,   50,  250,   53,    2,
         2,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   17,   47,   17,   17,   17,   19,   52,   19,
        19,   19,   44,   55,   22,   17,   22,   22,   22,   59,
        19,   60,   59,   54,   59,   60,   59,   22,   60,   47,
-       62,   58,   99,   54,   64,  722,   55,   52,   17,   64,
+       62,   58,   99,   54,   64,  718,   55,   52,   17,   64,
        73,   60,   64,   19,   73,   89,   54,   44,   68,   90,
        22,   45,   68,   62,   45,   45,   45,   58,   45,   45,
        45,   54,   57,   58,   62,   45,   45,   99,   45,   57,
-      723,   89,   68,  106,   45,   90,   45,   45,   45,   45,
+      720,   89,   68,  106,   45,   90,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   57,   67,   67,
        70,   71,   92,   57,   71,   71,  110,   57,  107,   57,
        57,   74,   69,   75,   69,   71,   69,  112,   71,   76,
       113,   74,   74,   75,   87,   87,   87,   74,   92,   76,
-       79,   79,   79,  110,   76,   91,   75,  107,   75,  724,
+       79,   79,   79,  110,   76,   91,   75,  107,   75,  721,
        94,   79,   75,   80,  112,   80,   80,   80,   81,   93,
        81,   75,  102,   81,   81,   81,   80,   82,   75,   82,
        82,   82,  101,   91,   79,   83,   83,   83,   94,  101,
        82,   88,   88,   88,  105,   93,   83,  120,  109,   80,
 
-      102,  111,  117,  128,  124,  124,  725,  120,  127,  182,
+      102,  111,  117,  128,  124,  124,  722,  120,  127,  724,
       127,  142,  134,   82,  124,  131,  128,  101,  131,   83,
-      105,  101,  131,  150,  150,  101,  109,  127,  726,  111,
-      117,  153,  142,  101,  153,  153,  182,  101,  169,  101,
-      101,  116,  116,  116,  157,  157,  157,  171,  116,  116,
-      116,  116,  116,  116,  134,  157,  158,  157,  170,  157,
-      158,  172,  157,  174,  158,  173,  169,  178,  181,  186,
-      171,  116,  116,  116,  116,  116,  116,  188,  190,  194,
-      266,  198,  280,  274,  170,  727,  174,  198,  269,  172,
-      178,  173,  186,  286,  325,  298,  181,  336,  276,  298,
-
-      188,  336,  194,  266,  325,  190,  193,  193,  193,  291,
-      280,  269,  274,  193,  193,  193,  193,  193,  193,  275,
-      275,  276,  286,  321,  321,  357,  291,  309,  275,  363,
-      357,  372,  309,  372,  374,  466,  193,  193,  193,  193,
-      193,  193,  285,  285,  285,  544,  728,  729,  731,  285,
-      285,  285,  285,  285,  285,  465,  439,  363,  372,  467,
-      372,  439,  374,  466,  467,  509,  518,  691,  544,  535,
-      543,  518,  285,  285,  285,  285,  285,  285,  309,  535,
-      606,  607,  465,  309,  373,  373,  373,  606,  607,  680,
-      691,  373,  373,  373,  373,  373,  373,  609,  543,  618,
-
-      657,  680,  509,  609,  657,  690,  717,  734,  518,  730,
-      735,  717,  736,  738,  373,  373,  373,  373,  373,  373,
-      730,  739,  741,  742,  743,  744,  745,  618,  746,  747,
-      748,  749,  690,  750,  751,  752,  754,  755,  756,  757,
-      758,  759,  761,  760,  762,  763,  764,  765,  766,  767,
-      768,  769,  771,  772,  773,  774,  775,  776,  777,  778,
-      779,  780,  717,  781,  782,  783,  784,  786,  787,  759,
-      760,  788,  789,  787,  790,  791,  792,  793,  794,  795,
-      796,  797,  798,  799,  800,  801,  802,  803,  804,  805,
-      806,  807,  808,  809,  810,  811,  812,  813,  815,  818,
-
-      819,  820,  821,  822,  823,  824,  825,  826,  827,  828,
-      829,  830,  833,  788,  834,  835,  836,  837,  838,  839,
-      840,  841,  842,  843,  844,  845,  846,  849,  824,  851,
-      853,  854,  855,  856,  825,  857,  858,  860,  861,  863,
-      864,  865,  868,  870,  871,  872,  873,  874,  875,  876,
-      877,  878,  879,  880,  881,  882,  883,  884,  885,  886,
-      887,  888,  889,  890,  891,  892,  893,  894,  895,  896,
-      898,  899,  900,  901,  902,  903,  904,  905,  906,  907,
-      908,  909,  910,  911,  913,  914,  915,  886,  917,  918,
-      919,  920,  921,  914,  922,  923,  924,  925,  926,  928,
-
-      929,  930,  878,  935,  889,  936,  937,  938,  940,  942,
-      943,  944,  945,  946,  947,  949,  950,  951,  952,  953,
-      954,  955,  956,  957,  958,  960,  962,  964,  965,  966,
-      938,  968,  969,  970,  971,  972,  975,  977,  978,  979,
-      981,  983,  984,  985,  986,  987,  988,  989,  990,  992,
-      994,  995,  996,  997,  998,  999, 1000, 1001, 1002, 1003,
-     1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,  984,
-     1013, 1014, 1015, 1016, 1017, 1018, 1019, 1021, 1024, 1026,
-     1027, 1028, 1029, 1030, 1026, 1031, 1032, 1034, 1037, 1038,
-     1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1050,
-
-     1051, 1053, 1055, 1018, 1056, 1057, 1058, 1059, 1061, 1062,
-     1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072,
-     1073, 1075, 1076, 1077, 1078, 1079, 1081, 1082, 1083, 1084,
-     1086, 1087, 1088, 1089, 1090, 1091, 1092, 1094, 1095, 1096,
-     1097, 1098, 1099, 1100, 1101, 1103, 1104, 1105, 1106, 1108,
-     1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118,
-     1120, 1123, 1124, 1125, 1126, 1128, 1130, 1131, 1133, 1134,
-     1135, 1136, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145,
-     1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155,
-     1156, 1157, 1158, 1160, 1162, 1163, 1164, 1165, 1166, 1170,
-
-     1171, 1172, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1182,
-     1183, 1186, 1186, 1186, 1186, 1186, 1187, 1187, 1187, 1187,
-     1187, 1188, 1194, 1188, 1188, 1188, 1189, 1195, 1189, 1196,
-     1189, 1190, 1190, 1190, 1190, 1190, 1191, 1191, 1191, 1191,
-     1191, 1192, 1197, 1192, 1192, 1192, 1193, 1193, 1193,  718,
-      716,  715,  714,  712,  711,  710,  709,  708,  707,  706,
-      705,  704,  703,  702,  701,  700,  699,  698,  697,  696,
-      695,  694,  693,  692,  688,  687,  686,  684,  683,  682,
-      681,  679,  678,  677,  676,  675,  674,  673,  672,  671,
-      670,  669,  668,  667,  666,  665,  664,  662,  661,  660,
-
-      659,  658,  656,  655,  653,  652,  651,  648,  647,  646,
-      645,  644,  643,  642,  641,  640,  639,  638,  637,  636,
-      635,  634,  633,  632,  631,  630,  629,  628,  627,  626,
-      625,  624,  623,  622,  621,  620,  619,  617,  615,  614,
-      613,  612,  611,  608,  605,  604,  603,  602,  601,  600,
-      599,  598,  597,  596,  595,  594,  592,  591,  590,  589,
-      588,  587,  586,  585,  583,  582,  581,  580,  579,  578,
-      577,  576,  575,  574,  573,  572,  571,  570,  569,  568,
-      567,  566,  565,  564,  563,  562,  561,  560,  559,  558,
-      557,  556,  555,  554,  553,  552,  551,  550,  549,  548,
-
-      547,  546,  545,  542,  541,  538,  537,  536,  533,  532,
-      531,  530,  529,  528,  527,  526,  524,  523,  522,  521,
-      520,  519,  517,  516,  514,  513,  512,  511,  510,  508,
-      507,  506,  504,  503,  502,  501,  500,  499,  498,  497,
-      496,  495,  494,  493,  492,  490,  489,  488,  487,  486,
-      485,  484,  483,  482,  481,  480,  479,  478,  477,  476,
-      475,  474,  473,  472,  471,  470,  469,  463,  461,  458,
-      456,  455,  454,  452,  448,  447,  446,  445,  444,  443,
-      442,  441,  440,  438,  437,  436,  435,  434,  433,  432,
-      431,  430,  428,  426,  425,  424,  423,  422,  421,  420,
-
-      419,  418,  416,  415,  414,  413,  412,  411,  410,  409,
-      408,  407,  406,  405,  404,  403,  402,  401,  400,  399,
-      397,  396,  395,  394,  393,  392,  391,  390,  389,  387,
-      386,  385,  384,  383,  381,  380,  379,  378,  376,  375,
-      370,  369,  367,  366,  365,  364,  361,  358,  356,  355,
-      354,  353,  352,  351,  350,  349,  348,  347,  346,  345,
-      344,  343,  342,  341,  340,  339,  338,  337,  335,  334,
-      332,  331,  330,  329,  328,  327,  326,  324,  323,  322,
-      320,  319,  318,  317,  316,  315,  314,  313,  312,  311,
-      310,  308,  307,  306,  305,  304,  303,  302,  301,  300,
-
-      299,  297,  296,  295,  294,  293,  290,  289,  288,  287,
-      284,  282,  279,  277,  272,  265,  264,  263,  262,  261,
-      260,  259,  258,  257,  256,  255,  254,  253,  252,  251,
-      250,  248,  247,  246,  245,  244,  243,  242,  241,  240,
-      239,  238,  237,  236,  235,  234,  233,  232,  231,  230,
-      229,  228,  227,  226,  225,  224,  223,  222,  221,  220,
-      218,  217,  216,  215,  214,  213,  212,  211,  210,  209,
-      208,  207,  206,  205,  204,  203,  202,  201,  200,  199,
-      197,  196,  195,  191,  189,  187,  185,  184,  179,  175,
-      167,  166,  165,  164,  163,  162,  161,  160,  159,  156,
-
-      155,  154,  152,  151,  149,  148,  147,  146,  145,  144,
-      143,  141,  140,  139,  138,  137,  136,  135,  133,  132,
-      130,  129,  126,  125,  123,  122,  121,  119,  118,  114,
-      108,  104,  103,   97,   96,   77,   72,   66,   63,   49,
-       48,   43,   41,   39,   38,   24,   14,   11, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185
+      105,  101,  131,  150,  150,  101,  109,  127,  169,  111,
+      117,  153,  142,  101,  153,  153,  170,  101,  171,  101,
+      101,  116,  116,  116,  157,  174,  178,  186,  116,  116,
+      116,  116,  116,  116,  134,  158,  169,  172,  173,  158,
+      182,  171,  170,  158,  190,  181,  188,  726,  174,  178,
+      186,  116,  116,  116,  116,  116,  116,  157,  157,  157,
+      727,  275,  322,  322,  173,  172,  194,  182,  157,  188,
+      157,  190,  157,  181,  198,  157,  193,  193,  193,  267,
+
+      198,  270,  277,  193,  193,  193,  193,  193,  193,  194,
+      275,  276,  276,  281,  299,  292,  287,  337,  299,  365,
+      276,  337,  267,  728,  270,  277,  193,  193,  193,  193,
+      193,  193,  292,  310,  359,  374,  326,  374,  310,  359,
+      376,  281,  286,  286,  286,  287,  326,  365,  548,  286,
+      286,  286,  286,  286,  286,  442,  468,  469,  470,  512,
+      442,  521,  374,  470,  374,  547,  521,  623,  376,  539,
+      729,  548,  286,  286,  286,  286,  286,  286,  662,  539,
+      611,  612,  662,  468,  310,  469,  696,  611,  612,  310,
+      375,  375,  375,  547,  686,  623,  512,  375,  375,  375,
+
+      375,  375,  375,  521,  614,  697,  686,  723,  730,  731,
+      614,  732,  723,  696,  733,  734,  735,  737,  736,  740,
+      375,  375,  375,  375,  375,  375,  741,  742,  697,  736,
+      744,  745,  746,  748,  749,  750,  751,  752,  753,  754,
+      755,  756,  757,  758,  759,  761,  762,  763,  764,  765,
+      766,  768,  767,  769,  770,  771,  772,  773,  774,  775,
+      776,  778,  779,  723,  780,  781,  782,  783,  784,  785,
+      786,  787,  788,  789,  790,  791,  793,  794,  766,  767,
+      795,  796,  794,  797,  798,  799,  800,  801,  802,  803,
+      804,  805,  806,  807,  808,  809,  810,  811,  812,  813,
+
+      815,  816,  817,  818,  819,  820,  821,  823,  826,  827,
+      828,  829,  830,  831,  832,  833,  834,  835,  836,  837,
+      838,  841,  795,  842,  843,  844,  845,  846,  847,  848,
+      849,  850,  851,  852,  853,  854,  857,  832,  859,  861,
+      862,  863,  864,  833,  865,  866,  868,  869,  871,  872,
+      873,  876,  878,  879,  880,  881,  882,  883,  884,  885,
+      886,  887,  888,  889,  890,  891,  892,  893,  894,  895,
+      896,  897,  898,  899,  900,  901,  902,  903,  904,  906,
+      907,  908,  909,  910,  911,  912,  913,  914,  915,  916,
+      917,  918,  919,  921,  922,  923,  894,  925,  926,  927,
+
+      928,  929,  922,  930,  931,  932,  933,  934,  936,  937,
+      938,  886,  943,  897,  944,  945,  946,  948,  950,  951,
+      952,  953,  954,  955,  957,  958,  959,  960,  961,  962,
+      963,  964,  965,  966,  968,  970,  972,  973,  974,  946,
+      976,  977,  978,  979,  980,  983,  985,  986,  987,  989,
+      991,  992,  993,  994,  995,  996,  997,  998, 1000, 1002,
+     1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+     1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020,  992, 1021,
+     1022, 1023, 1024, 1025, 1026, 1027, 1029, 1032, 1034, 1035,
+     1036, 1037, 1038, 1034, 1039, 1040, 1042, 1045, 1046, 1048,
+
+     1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1058, 1059,
+     1061, 1063, 1026, 1064, 1065, 1066, 1067, 1069, 1070, 1071,
+     1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081,
+     1083, 1084, 1085, 1086, 1087, 1089, 1090, 1091, 1092, 1094,
+     1095, 1096, 1097, 1098, 1099, 1100, 1102, 1103, 1104, 1105,
+     1106, 1107, 1108, 1109, 1111, 1112, 1113, 1114, 1116, 1117,
+     1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1128,
+     1131, 1132, 1133, 1134, 1136, 1138, 1139, 1141, 1142, 1143,
+     1144, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154,
+     1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164,
+
+     1165, 1166, 1168, 1170, 1171, 1172, 1173, 1174, 1178, 1179,
+     1180, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1190, 1191,
+     1194, 1194, 1194, 1194, 1194, 1195, 1195, 1195, 1195, 1195,
+     1196, 1202, 1196, 1196, 1196, 1197, 1203, 1197, 1204, 1197,
+     1198, 1198, 1198, 1198, 1198, 1199, 1199, 1199, 1199, 1199,
+     1200, 1205, 1200, 1200, 1200, 1201, 1201, 1201,  716,  715,
+      714,  713,  712,  711,  710,  709,  708,  707,  706,  705,
+      704,  703,  702,  701,  700,  699,  698,  694,  693,  692,
+      690,  689,  688,  687,  685,  684,  683,  682,  681,  680,
+      679,  678,  677,  676,  675,  674,  673,  672,  671,  670,
+
+      669,  667,  666,  665,  664,  663,  661,  660,  658,  657,
+      656,  653,  652,  651,  650,  649,  648,  647,  646,  645,
+      644,  643,  642,  641,  640,  639,  638,  637,  636,  635,
+      634,  633,  632,  631,  630,  629,  628,  627,  626,  625,
+      624,  622,  620,  619,  618,  617,  616,  613,  610,  609,
+      608,  607,  606,  605,  604,  603,  602,  601,  600,  599,
+      598,  596,  595,  594,  593,  592,  591,  590,  589,  587,
+      586,  585,  584,  583,  582,  581,  580,  579,  578,  577,
+      576,  575,  574,  573,  572,  571,  570,  569,  568,  567,
+      566,  565,  564,  563,  562,  561,  560,  559,  558,  557,
+
+      556,  555,  554,  553,  552,  551,  550,  549,  546,  545,
+      542,  541,  540,  537,  536,  535,  534,  533,  532,  531,
+      530,  528,  527,  526,  525,  524,  523,  522,  520,  519,
+      517,  516,  515,  514,  513,  511,  510,  509,  507,  506,
+      505,  504,  503,  502,  501,  500,  499,  498,  497,  496,
+      495,  493,  492,  491,  490,  489,  488,  487,  486,  485,
+      484,  483,  482,  481,  480,  479,  478,  477,  476,  475,
+      474,  473,  472,  466,  464,  461,  459,  458,  457,  455,
+      451,  450,  449,  448,  447,  446,  445,  444,  443,  441,
+      440,  439,  438,  437,  436,  435,  434,  433,  432,  430,
+
+      428,  427,  426,  425,  424,  423,  422,  421,  420,  418,
+      417,  416,  415,  414,  413,  412,  411,  410,  409,  408,
+      407,  406,  405,  404,  403,  402,  401,  399,  398,  397,
+      396,  395,  394,  393,  392,  391,  389,  388,  387,  386,
+      385,  383,  382,  381,  380,  378,  377,  372,  371,  369,
+      368,  367,  366,  363,  360,  358,  357,  356,  355,  354,
+      353,  352,  351,  350,  349,  348,  347,  346,  345,  344,
+      343,  342,  341,  340,  339,  338,  336,  335,  333,  332,
+      331,  330,  329,  328,  327,  325,  324,  323,  321,  320,
+      319,  318,  317,  316,  315,  314,  313,  312,  311,  309,
+
+      308,  307,  306,  305,  304,  303,  302,  301,  300,  298,
+      297,  296,  295,  294,  291,  290,  289,  288,  285,  283,
+      280,  278,  273,  266,  265,  264,  263,  262,  261,  260,
+      259,  258,  257,  256,  255,  254,  253,  252,  251,  249,
+      248,  247,  246,  245,  244,  243,  242,  241,  240,  239,
+      238,  237,  236,  235,  234,  233,  232,  231,  230,  229,
+      228,  227,  226,  225,  224,  223,  222,  221,  220,  218,
+      217,  216,  215,  214,  213,  212,  211,  210,  209,  208,
+      207,  206,  205,  204,  203,  202,  201,  200,  199,  197,
+      196,  195,  191,  189,  187,  185,  184,  179,  175,  167,
+
+      166,  165,  164,  163,  162,  161,  160,  159,  156,  155,
+      154,  152,  151,  149,  148,  147,  146,  145,  144,  143,
+      141,  140,  139,  138,  137,  136,  135,  133,  132,  130,
+      129,  126,  125,  123,  122,  121,  119,  118,  114,  108,
+      104,  103,   97,   96,   77,   72,   66,   63,   49,   48,
+       43,   41,   39,   38,   24,   14,   11, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193
     } ;
 
 static yy_state_type yy_last_accepting_state;
 extern int parser6__flex_debug;
 int parser6__flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[149] =
+static const flex_int16_t yy_rule_linenum[150] =
     {   0,
       133,  135,  137,  142,  143,  148,  149,  150,  162,  165,
       170,  177,  186,  195,  204,  213,  222,  231,  240,  249,
       258,  267,  276,  285,  294,  303,  313,  323,  333,  343,
       353,  363,  373,  383,  393,  402,  411,  420,  429,  438,
-      447,  459,  468,  477,  486,  495,  505,  515,  525,  535,
-      546,  556,  566,  576,  586,  596,  606,  616,  626,  635,
-      644,  653,  668,  683,  692,  701,  710,  719,  728,  737,
-      746,  755,  764,  774,  783,  792,  801,  810,  819,  828,
-      838,  847,  856,  865,  874,  883,  892,  901,  910,  919,
-      929,  939,  949,  958,  967,  976,  987,  997, 1006, 1016,
-
-     1025, 1034, 1043, 1052, 1061, 1070, 1080, 1089, 1098, 1107,
+      447,  456,  468,  477,  486,  495,  504,  514,  524,  534,
+      544,  555,  565,  575,  585,  595,  605,  615,  625,  635,
+      644,  653,  662,  677,  692,  701,  710,  719,  728,  737,
+      746,  755,  764,  773,  783,  792,  801,  810,  819,  828,
+      837,  847,  856,  865,  874,  883,  892,  901,  910,  919,
+      928,  938,  948,  958,  967,  976,  985,  996, 1006, 1015,
+
+     1025, 1034, 1043, 1052, 1061, 1070, 1079, 1089, 1098, 1107,
      1116, 1125, 1134, 1143, 1152, 1161, 1170, 1179, 1188, 1197,
      1206, 1215, 1224, 1233, 1242, 1251, 1260, 1269, 1278, 1287,
-     1296, 1394, 1399, 1404, 1409, 1410, 1411, 1412, 1413, 1414,
-     1416, 1434, 1447, 1452, 1456, 1458, 1460, 1462
+     1296, 1305, 1403, 1408, 1413, 1418, 1419, 1420, 1421, 1422,
+     1423, 1425, 1443, 1456, 1461, 1465, 1467, 1469, 1471
     } ;
 
 /* The intent behind this definition is that it'll catch
 
 // To avoid the call to exit... oops!
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1418 "dhcp6_lexer.cc"
+#line 1424 "dhcp6_lexer.cc"
 /* noyywrap disables automatic rewinding for the next file to parse. Since we
    always parse only a single string, there's no need to do any wraps. And
    using yywrap requires linking with -lfl, which provides the default yywrap
 // by moving it ahead by yyleng bytes. yyleng specifies the length of the
 // currently matched token.
 #define YY_USER_ACTION  driver.loc_.columns(yyleng);
-#line 1444 "dhcp6_lexer.cc"
-#line 1445 "dhcp6_lexer.cc"
+#line 1450 "dhcp6_lexer.cc"
+#line 1451 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
     }
 
 
-#line 1769 "dhcp6_lexer.cc"
+#line 1775 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 1186 )
+                               if ( yy_current_state >= 1194 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1185 );
+               while ( yy_current_state != 1193 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 149 )
+                       else if ( yy_act < 150 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], parser6_text );
-                       else if ( yy_act == 149 )
+                       else if ( yy_act == 150 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         parser6_text );
-                       else if ( yy_act == 150 )
+                       else if ( yy_act == 151 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
 case 38:
 YY_RULE_SETUP
 #line 420 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
+        return  isc::dhcp::Dhcp6Parser::make_RE_DETECT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("re-detect", driver.loc_);
+    }
+}
+       YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 429 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 39:
+case 40:
 YY_RULE_SETUP
-#line 429 "dhcp6_lexer.ll"
+#line 438 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 40:
+case 41:
 YY_RULE_SETUP
-#line 438 "dhcp6_lexer.ll"
+#line 447 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
     }
 }
        YY_BREAK
-case 41:
+case 42:
 YY_RULE_SETUP
-#line 447 "dhcp6_lexer.ll"
+#line 456 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 42:
+case 43:
 YY_RULE_SETUP
-#line 459 "dhcp6_lexer.ll"
+#line 468 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
     }
 }
        YY_BREAK
-case 43:
+case 44:
 YY_RULE_SETUP
-#line 468 "dhcp6_lexer.ll"
+#line 477 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
     }
 }
        YY_BREAK
-case 44:
+case 45:
 YY_RULE_SETUP
-#line 477 "dhcp6_lexer.ll"
+#line 486 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
     }
 }
        YY_BREAK
-case 45:
+case 46:
 YY_RULE_SETUP
-#line 486 "dhcp6_lexer.ll"
+#line 495 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
     }
 }
        YY_BREAK
-case 46:
+case 47:
 YY_RULE_SETUP
-#line 495 "dhcp6_lexer.ll"
+#line 504 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 47:
+case 48:
 YY_RULE_SETUP
-#line 505 "dhcp6_lexer.ll"
+#line 514 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 48:
+case 49:
 YY_RULE_SETUP
-#line 515 "dhcp6_lexer.ll"
+#line 524 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 49:
+case 50:
 YY_RULE_SETUP
-#line 525 "dhcp6_lexer.ll"
+#line 534 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 50:
+case 51:
 YY_RULE_SETUP
-#line 535 "dhcp6_lexer.ll"
+#line 544 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 51:
+case 52:
 YY_RULE_SETUP
-#line 546 "dhcp6_lexer.ll"
+#line 555 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 52:
+case 53:
 YY_RULE_SETUP
-#line 556 "dhcp6_lexer.ll"
+#line 565 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 53:
+case 54:
 YY_RULE_SETUP
-#line 566 "dhcp6_lexer.ll"
+#line 575 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 54:
+case 55:
 YY_RULE_SETUP
-#line 576 "dhcp6_lexer.ll"
+#line 585 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 55:
+case 56:
 YY_RULE_SETUP
-#line 586 "dhcp6_lexer.ll"
+#line 595 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 56:
+case 57:
 YY_RULE_SETUP
-#line 596 "dhcp6_lexer.ll"
+#line 605 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 57:
+case 58:
 YY_RULE_SETUP
-#line 606 "dhcp6_lexer.ll"
+#line 615 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 58:
+case 59:
 YY_RULE_SETUP
-#line 616 "dhcp6_lexer.ll"
+#line 625 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 59:
+case 60:
 YY_RULE_SETUP
-#line 626 "dhcp6_lexer.ll"
+#line 635 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 60:
+case 61:
 YY_RULE_SETUP
-#line 635 "dhcp6_lexer.ll"
+#line 644 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 61:
+case 62:
 YY_RULE_SETUP
-#line 644 "dhcp6_lexer.ll"
+#line 653 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 62:
+case 63:
 YY_RULE_SETUP
-#line 653 "dhcp6_lexer.ll"
+#line 662 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 63:
+case 64:
 YY_RULE_SETUP
-#line 668 "dhcp6_lexer.ll"
+#line 677 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
     }
 }
        YY_BREAK
-case 64:
+case 65:
 YY_RULE_SETUP
-#line 683 "dhcp6_lexer.ll"
+#line 692 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
     }
 }
        YY_BREAK
-case 65:
+case 66:
 YY_RULE_SETUP
-#line 692 "dhcp6_lexer.ll"
+#line 701 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
     }
 }
        YY_BREAK
-case 66:
+case 67:
 YY_RULE_SETUP
-#line 701 "dhcp6_lexer.ll"
+#line 710 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
     }
 }
        YY_BREAK
-case 67:
+case 68:
 YY_RULE_SETUP
-#line 710 "dhcp6_lexer.ll"
+#line 719 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
     }
 }
        YY_BREAK
-case 68:
+case 69:
 YY_RULE_SETUP
-#line 719 "dhcp6_lexer.ll"
+#line 728 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
     }
 }
        YY_BREAK
-case 69:
+case 70:
 YY_RULE_SETUP
-#line 728 "dhcp6_lexer.ll"
+#line 737 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
     }
 }
        YY_BREAK
-case 70:
+case 71:
 YY_RULE_SETUP
-#line 737 "dhcp6_lexer.ll"
+#line 746 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
     }
 }
        YY_BREAK
-case 71:
+case 72:
 YY_RULE_SETUP
-#line 746 "dhcp6_lexer.ll"
+#line 755 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
     }
 }
        YY_BREAK
-case 72:
+case 73:
 YY_RULE_SETUP
-#line 755 "dhcp6_lexer.ll"
+#line 764 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
     }
 }
        YY_BREAK
-case 73:
+case 74:
 YY_RULE_SETUP
-#line 764 "dhcp6_lexer.ll"
+#line 773 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
     }
 }
        YY_BREAK
-case 74:
+case 75:
 YY_RULE_SETUP
-#line 774 "dhcp6_lexer.ll"
+#line 783 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
     }
 }
        YY_BREAK
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 783 "dhcp6_lexer.ll"
+#line 792 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
     }
 }
        YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 792 "dhcp6_lexer.ll"
+#line 801 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
     }
 }
        YY_BREAK
-case 77:
+case 78:
 YY_RULE_SETUP
-#line 801 "dhcp6_lexer.ll"
+#line 810 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
     }
 }
        YY_BREAK
-case 78:
+case 79:
 YY_RULE_SETUP
-#line 810 "dhcp6_lexer.ll"
+#line 819 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
     }
 }
        YY_BREAK
-case 79:
+case 80:
 YY_RULE_SETUP
-#line 819 "dhcp6_lexer.ll"
+#line 828 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
     }
 }
        YY_BREAK
-case 80:
+case 81:
 YY_RULE_SETUP
-#line 828 "dhcp6_lexer.ll"
+#line 837 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
     }
 }
        YY_BREAK
-case 81:
+case 82:
 YY_RULE_SETUP
-#line 838 "dhcp6_lexer.ll"
+#line 847 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 82:
+case 83:
 YY_RULE_SETUP
-#line 847 "dhcp6_lexer.ll"
+#line 856 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 83:
+case 84:
 YY_RULE_SETUP
-#line 856 "dhcp6_lexer.ll"
+#line 865 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 84:
+case 85:
 YY_RULE_SETUP
-#line 865 "dhcp6_lexer.ll"
+#line 874 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
     }
 }
        YY_BREAK
-case 85:
+case 86:
 YY_RULE_SETUP
-#line 874 "dhcp6_lexer.ll"
+#line 883 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGING:
     }
 }
        YY_BREAK
-case 86:
+case 87:
 YY_RULE_SETUP
-#line 883 "dhcp6_lexer.ll"
+#line 892 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
     }
 }
        YY_BREAK
-case 87:
+case 88:
 YY_RULE_SETUP
-#line 892 "dhcp6_lexer.ll"
+#line 901 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
     }
 }
        YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 901 "dhcp6_lexer.ll"
+#line 910 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
     }
 }
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 910 "dhcp6_lexer.ll"
+#line 919 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
     }
 }
        YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 919 "dhcp6_lexer.ll"
+#line 928 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 929 "dhcp6_lexer.ll"
+#line 938 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
     }
 }
        YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 939 "dhcp6_lexer.ll"
+#line 948 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
     }
 }
        YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 949 "dhcp6_lexer.ll"
+#line 958 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
     }
 }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 958 "dhcp6_lexer.ll"
+#line 967 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
     }
 }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 967 "dhcp6_lexer.ll"
+#line 976 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
     }
 }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 976 "dhcp6_lexer.ll"
+#line 985 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
     }
 }
        YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 987 "dhcp6_lexer.ll"
+#line 996 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
     }
 }
        YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 997 "dhcp6_lexer.ll"
+#line 1006 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
     }
 }
        YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 1006 "dhcp6_lexer.ll"
+#line 1015 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
     }
 }
        YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 1016 "dhcp6_lexer.ll"
+#line 1025 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
     }
 }
        YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 1025 "dhcp6_lexer.ll"
+#line 1034 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
     }
 }
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 1034 "dhcp6_lexer.ll"
+#line 1043 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
     }
 }
        YY_BREAK
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 1043 "dhcp6_lexer.ll"
+#line 1052 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
     }
 }
        YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 1052 "dhcp6_lexer.ll"
+#line 1061 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
     }
 }
        YY_BREAK
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 1061 "dhcp6_lexer.ll"
+#line 1070 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
     }
 }
        YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 1070 "dhcp6_lexer.ll"
+#line 1079 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 1080 "dhcp6_lexer.ll"
+#line 1089 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
     }
 }
        YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 1089 "dhcp6_lexer.ll"
+#line 1098 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
     }
 }
        YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 1098 "dhcp6_lexer.ll"
+#line 1107 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 1107 "dhcp6_lexer.ll"
+#line 1116 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
     }
 }
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 1116 "dhcp6_lexer.ll"
+#line 1125 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
     }
 }
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 1125 "dhcp6_lexer.ll"
+#line 1134 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
     }
 }
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 1134 "dhcp6_lexer.ll"
+#line 1143 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
     }
 }
        YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 1143 "dhcp6_lexer.ll"
+#line 1152 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
     }
 }
        YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 1152 "dhcp6_lexer.ll"
+#line 1161 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
     }
 }
        YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 1161 "dhcp6_lexer.ll"
+#line 1170 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
     }
 }
        YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 1170 "dhcp6_lexer.ll"
+#line 1179 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 1179 "dhcp6_lexer.ll"
+#line 1188 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
     }
 }
        YY_BREAK
-case 119:
+case 120:
 YY_RULE_SETUP
-#line 1188 "dhcp6_lexer.ll"
+#line 1197 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
     }
 }
        YY_BREAK
-case 120:
+case 121:
 YY_RULE_SETUP
-#line 1197 "dhcp6_lexer.ll"
+#line 1206 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
     }
 }
        YY_BREAK
-case 121:
+case 122:
 YY_RULE_SETUP
-#line 1206 "dhcp6_lexer.ll"
+#line 1215 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
     }
 }
        YY_BREAK
-case 122:
+case 123:
 YY_RULE_SETUP
-#line 1215 "dhcp6_lexer.ll"
+#line 1224 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
     }
 }
        YY_BREAK
-case 123:
+case 124:
 YY_RULE_SETUP
-#line 1224 "dhcp6_lexer.ll"
+#line 1233 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
     }
 }
        YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 1233 "dhcp6_lexer.ll"
+#line 1242 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 1242 "dhcp6_lexer.ll"
+#line 1251 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 1251 "dhcp6_lexer.ll"
+#line 1260 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
     }
 }
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 1260 "dhcp6_lexer.ll"
+#line 1269 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
     }
 }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 1269 "dhcp6_lexer.ll"
+#line 1278 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
     }
 }
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 1278 "dhcp6_lexer.ll"
+#line 1287 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
     }
 }
        YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 1287 "dhcp6_lexer.ll"
+#line 1296 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
     }
 }
        YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 1296 "dhcp6_lexer.ll"
+#line 1305 "dhcp6_lexer.ll"
 {
     // A string has been matched. It contains the actual string and single quotes.
     // We need to get those quotes out of the way and just use its content, e.g.
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 132:
-/* rule 132 can match eol */
+case 133:
+/* rule 133 can match eol */
 YY_RULE_SETUP
-#line 1394 "dhcp6_lexer.ll"
+#line 1403 "dhcp6_lexer.ll"
 {
     // Bad string with a forbidden control character inside
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 133:
-/* rule 133 can match eol */
+case 134:
+/* rule 134 can match eol */
 YY_RULE_SETUP
-#line 1399 "dhcp6_lexer.ll"
+#line 1408 "dhcp6_lexer.ll"
 {
     // Bad string with a bad escape inside
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 1404 "dhcp6_lexer.ll"
+#line 1413 "dhcp6_lexer.ll"
 {
     // Bad string with an open escape at the end
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 1409 "dhcp6_lexer.ll"
+#line 1418 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 136:
+case 137:
 YY_RULE_SETUP
-#line 1410 "dhcp6_lexer.ll"
+#line 1419 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 1411 "dhcp6_lexer.ll"
+#line 1420 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 1412 "dhcp6_lexer.ll"
+#line 1421 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 1413 "dhcp6_lexer.ll"
+#line 1422 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 1414 "dhcp6_lexer.ll"
+#line 1423 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 1416 "dhcp6_lexer.ll"
+#line 1425 "dhcp6_lexer.ll"
 {
     // An integer was found.
     std::string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 1434 "dhcp6_lexer.ll"
+#line 1443 "dhcp6_lexer.ll"
 {
     // A floating point was found.
     std::string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 1447 "dhcp6_lexer.ll"
+#line 1456 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 1452 "dhcp6_lexer.ll"
+#line 1461 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 1456 "dhcp6_lexer.ll"
+#line 1465 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 1458 "dhcp6_lexer.ll"
+#line 1467 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 1460 "dhcp6_lexer.ll"
+#line 1469 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 1462 "dhcp6_lexer.ll"
+#line 1471 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1464 "dhcp6_lexer.ll"
+#line 1473 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 1487 "dhcp6_lexer.ll"
+#line 1496 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 3667 "dhcp6_lexer.cc"
+#line 3685 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 1186 )
+                       if ( yy_current_state >= 1194 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 1186 )
+               if ( yy_current_state >= 1194 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1185);
+       yy_is_jam = (yy_current_state == 1193);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
 
 /* %ok-for-header */
 
-#line 1487 "dhcp6_lexer.ll"
+#line 1496 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
 
   {
       switch (that.type_get ())
     {
-      case 157: // value
-      case 161: // map_value
-      case 202: // db_type
-      case 394: // duid_type
-      case 427: // ncr_protocol_value
-      case 435: // replace_client_name_value
+      case 158: // value
+      case 162: // map_value
+      case 206: // db_type
+      case 398: // duid_type
+      case 431: // ncr_protocol_value
+      case 439: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.move< std::string > (that.value);
         break;
 
     state = that.state;
       switch (that.type_get ())
     {
-      case 157: // value
-      case 161: // map_value
-      case 202: // db_type
-      case 394: // duid_type
-      case 427: // ncr_protocol_value
-      case 435: // replace_client_name_value
+      case 158: // value
+      case 162: // map_value
+      case 206: // db_type
+      case 398: // duid_type
+      case 431: // ncr_protocol_value
+      case 439: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 139: // "constant string"
+            case 140: // "constant string"
 
-#line 214 "dhcp6_parser.yy" // lalr1.cc:636
+#line 215 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 362 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
 
-#line 214 "dhcp6_parser.yy" // lalr1.cc:636
+#line 215 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 369 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
 
-#line 214 "dhcp6_parser.yy" // lalr1.cc:636
+#line 215 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 376 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
 
-#line 214 "dhcp6_parser.yy" // lalr1.cc:636
+#line 215 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 383 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 157: // value
+      case 158: // value
 
-#line 214 "dhcp6_parser.yy" // lalr1.cc:636
+#line 215 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 390 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 161: // map_value
+      case 162: // map_value
 
-#line 214 "dhcp6_parser.yy" // lalr1.cc:636
+#line 215 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 397 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 202: // db_type
+      case 206: // db_type
 
-#line 214 "dhcp6_parser.yy" // lalr1.cc:636
+#line 215 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 404 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 394: // duid_type
+      case 398: // duid_type
 
-#line 214 "dhcp6_parser.yy" // lalr1.cc:636
+#line 215 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 411 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 427: // ncr_protocol_value
+      case 431: // ncr_protocol_value
 
-#line 214 "dhcp6_parser.yy" // lalr1.cc:636
+#line 215 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 418 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 435: // replace_client_name_value
+      case 439: // replace_client_name_value
 
-#line 214 "dhcp6_parser.yy" // lalr1.cc:636
+#line 215 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 425 "dhcp6_parser.cc" // lalr1.cc:636
         break;
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 157: // value
-      case 161: // map_value
-      case 202: // db_type
-      case 394: // duid_type
-      case 427: // ncr_protocol_value
-      case 435: // replace_client_name_value
+      case 158: // value
+      case 162: // map_value
+      case 206: // db_type
+      case 398: // duid_type
+      case 431: // ncr_protocol_value
+      case 439: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
           switch (yyn)
             {
   case 2:
-#line 223 "dhcp6_parser.yy" // lalr1.cc:859
+#line 224 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 670 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 224 "dhcp6_parser.yy" // lalr1.cc:859
+#line 225 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 676 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 225 "dhcp6_parser.yy" // lalr1.cc:859
+#line 226 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
 #line 682 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 226 "dhcp6_parser.yy" // lalr1.cc:859
+#line 227 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 688 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 227 "dhcp6_parser.yy" // lalr1.cc:859
+#line 228 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET6; }
 #line 694 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 228 "dhcp6_parser.yy" // lalr1.cc:859
+#line 229 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 700 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 229 "dhcp6_parser.yy" // lalr1.cc:859
+#line 230 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.PD_POOLS; }
 #line 706 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 230 "dhcp6_parser.yy" // lalr1.cc:859
+#line 231 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 712 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 231 "dhcp6_parser.yy" // lalr1.cc:859
+#line 232 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 718 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 232 "dhcp6_parser.yy" // lalr1.cc:859
+#line 233 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 724 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 233 "dhcp6_parser.yy" // lalr1.cc:859
+#line 234 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 730 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 234 "dhcp6_parser.yy" // lalr1.cc:859
+#line 235 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 736 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 242 "dhcp6_parser.yy" // lalr1.cc:859
+#line 243 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 742 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 243 "dhcp6_parser.yy" // lalr1.cc:859
+#line 244 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 748 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 244 "dhcp6_parser.yy" // lalr1.cc:859
+#line 245 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 754 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 245 "dhcp6_parser.yy" // lalr1.cc:859
+#line 246 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 760 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 246 "dhcp6_parser.yy" // lalr1.cc:859
+#line 247 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 766 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 247 "dhcp6_parser.yy" // lalr1.cc:859
+#line 248 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 772 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 248 "dhcp6_parser.yy" // lalr1.cc:859
+#line 249 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 778 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 251 "dhcp6_parser.yy" // lalr1.cc:859
+#line 252 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
     break;
 
   case 34:
-#line 256 "dhcp6_parser.yy" // lalr1.cc:859
+#line 257 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     break;
 
   case 35:
-#line 261 "dhcp6_parser.yy" // lalr1.cc:859
+#line 262 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     break;
 
   case 36:
-#line 267 "dhcp6_parser.yy" // lalr1.cc:859
+#line 268 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 814 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 39:
-#line 274 "dhcp6_parser.yy" // lalr1.cc:859
+#line 275 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
     break;
 
   case 40:
-#line 278 "dhcp6_parser.yy" // lalr1.cc:859
+#line 279 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
     break;
 
   case 41:
-#line 285 "dhcp6_parser.yy" // lalr1.cc:859
+#line 286 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
     break;
 
   case 42:
-#line 288 "dhcp6_parser.yy" // lalr1.cc:859
+#line 289 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
     break;
 
   case 45:
-#line 296 "dhcp6_parser.yy" // lalr1.cc:859
+#line 297 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
     break;
 
   case 46:
-#line 300 "dhcp6_parser.yy" // lalr1.cc:859
+#line 301 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
     break;
 
   case 47:
-#line 307 "dhcp6_parser.yy" // lalr1.cc:859
+#line 308 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
     break;
 
   case 48:
-#line 309 "dhcp6_parser.yy" // lalr1.cc:859
+#line 310 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
     break;
 
   case 51:
-#line 318 "dhcp6_parser.yy" // lalr1.cc:859
+#line 319 "dhcp6_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
     break;
 
   case 52:
-#line 322 "dhcp6_parser.yy" // lalr1.cc:859
+#line 323 "dhcp6_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
     break;
 
   case 53:
-#line 333 "dhcp6_parser.yy" // lalr1.cc:859
+#line 334 "dhcp6_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
     break;
 
   case 54:
-#line 343 "dhcp6_parser.yy" // lalr1.cc:859
+#line 344 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     break;
 
   case 55:
-#line 348 "dhcp6_parser.yy" // lalr1.cc:859
+#line 349 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     break;
 
   case 63:
-#line 367 "dhcp6_parser.yy" // lalr1.cc:859
+#line 368 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     break;
 
   case 64:
-#line 374 "dhcp6_parser.yy" // lalr1.cc:859
+#line 375 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     break;
 
   case 65:
-#line 384 "dhcp6_parser.yy" // lalr1.cc:859
+#line 385 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     break;
 
   case 66:
-#line 388 "dhcp6_parser.yy" // lalr1.cc:859
+#line 389 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
     break;
 
   case 91:
-#line 422 "dhcp6_parser.yy" // lalr1.cc:859
+#line 423 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("preferred-lifetime", prf);
     break;
 
   case 92:
-#line 427 "dhcp6_parser.yy" // lalr1.cc:859
+#line 428 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
     break;
 
   case 93:
-#line 432 "dhcp6_parser.yy" // lalr1.cc:859
+#line 433 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
     break;
 
   case 94:
-#line 437 "dhcp6_parser.yy" // lalr1.cc:859
+#line 438 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
     break;
 
   case 95:
-#line 442 "dhcp6_parser.yy" // lalr1.cc:859
+#line 443 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
     break;
 
   case 96:
-#line 447 "dhcp6_parser.yy" // lalr1.cc:859
+#line 448 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
     break;
 
   case 97:
-#line 452 "dhcp6_parser.yy" // lalr1.cc:859
+#line 453 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
     break;
 
   case 98:
-#line 457 "dhcp6_parser.yy" // lalr1.cc:859
+#line 458 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     break;
 
   case 99:
-#line 461 "dhcp6_parser.yy" // lalr1.cc:859
+#line 462 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1061 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 100:
-#line 465 "dhcp6_parser.yy" // lalr1.cc:859
+  case 104:
+#line 474 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
 #line 1072 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 101:
-#line 470 "dhcp6_parser.yy" // lalr1.cc:859
+  case 105:
+#line 479 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 #line 1081 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 102:
-#line 475 "dhcp6_parser.yy" // lalr1.cc:859
+  case 106:
+#line 484 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("re-detect", b);
+}
+#line 1090 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 107:
+#line 490 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.LEASE_DATABASE);
 }
-#line 1092 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1101 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 103:
-#line 480 "dhcp6_parser.yy" // lalr1.cc:859
+  case 108:
+#line 495 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1101 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1110 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 104:
-#line 485 "dhcp6_parser.yy" // lalr1.cc:859
+  case 109:
+#line 500 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1112 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1121 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 105:
-#line 490 "dhcp6_parser.yy" // lalr1.cc:859
+  case 110:
+#line 505 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1121 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1130 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 121:
-#line 514 "dhcp6_parser.yy" // lalr1.cc:859
+  case 126:
+#line 529 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1129 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1138 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 122:
-#line 516 "dhcp6_parser.yy" // lalr1.cc:859
+  case 127:
+#line 531 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1138 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1147 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 123:
-#line 521 "dhcp6_parser.yy" // lalr1.cc:859
+  case 128:
+#line 536 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1144 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1153 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 124:
-#line 522 "dhcp6_parser.yy" // lalr1.cc:859
+  case 129:
+#line 537 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1150 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1159 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 125:
-#line 523 "dhcp6_parser.yy" // lalr1.cc:859
+  case 130:
+#line 538 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1156 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1165 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 126:
-#line 524 "dhcp6_parser.yy" // lalr1.cc:859
+  case 131:
+#line 539 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1162 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1171 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 127:
-#line 527 "dhcp6_parser.yy" // lalr1.cc:859
+  case 132:
+#line 542 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1170 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1179 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 128:
-#line 529 "dhcp6_parser.yy" // lalr1.cc:859
+  case 133:
+#line 544 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1180 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1189 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 129:
-#line 535 "dhcp6_parser.yy" // lalr1.cc:859
+  case 134:
+#line 550 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1188 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1197 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 130:
-#line 537 "dhcp6_parser.yy" // lalr1.cc:859
+  case 135:
+#line 552 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1198 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1207 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 131:
-#line 543 "dhcp6_parser.yy" // lalr1.cc:859
+  case 136:
+#line 558 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1206 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1215 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 132:
-#line 545 "dhcp6_parser.yy" // lalr1.cc:859
+  case 137:
+#line 560 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1216 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1225 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 133:
-#line 551 "dhcp6_parser.yy" // lalr1.cc:859
+  case 138:
+#line 566 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1225 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1234 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 134:
-#line 556 "dhcp6_parser.yy" // lalr1.cc:859
+  case 139:
+#line 571 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1233 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1242 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 135:
-#line 558 "dhcp6_parser.yy" // lalr1.cc:859
+  case 140:
+#line 573 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1243 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1252 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 136:
-#line 564 "dhcp6_parser.yy" // lalr1.cc:859
+  case 141:
+#line 579 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1252 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1261 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 137:
-#line 569 "dhcp6_parser.yy" // lalr1.cc:859
+  case 142:
+#line 584 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1261 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1270 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 138:
-#line 574 "dhcp6_parser.yy" // lalr1.cc:859
+  case 143:
+#line 589 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1270 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1279 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 139:
-#line 579 "dhcp6_parser.yy" // lalr1.cc:859
+  case 144:
+#line 594 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1279 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1288 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 140:
-#line 584 "dhcp6_parser.yy" // lalr1.cc:859
+  case 145:
+#line 599 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1287 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1296 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 141:
-#line 586 "dhcp6_parser.yy" // lalr1.cc:859
+  case 146:
+#line 601 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1297 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1306 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 142:
-#line 592 "dhcp6_parser.yy" // lalr1.cc:859
+  case 147:
+#line 607 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1305 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1314 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 143:
-#line 594 "dhcp6_parser.yy" // lalr1.cc:859
+  case 148:
+#line 609 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1315 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1324 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 144:
-#line 601 "dhcp6_parser.yy" // lalr1.cc:859
+  case 149:
+#line 616 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("mac-sources", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.MAC_SOURCES);
 }
-#line 1326 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1335 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 145:
-#line 606 "dhcp6_parser.yy" // lalr1.cc:859
+  case 150:
+#line 621 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1335 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1344 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 150:
-#line 619 "dhcp6_parser.yy" // lalr1.cc:859
+  case 155:
+#line 634 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1344 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1353 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 151:
-#line 624 "dhcp6_parser.yy" // lalr1.cc:859
+  case 156:
+#line 639 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1353 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1362 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 152:
-#line 629 "dhcp6_parser.yy" // lalr1.cc:859
+  case 157:
+#line 644 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 1364 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1373 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 153:
-#line 634 "dhcp6_parser.yy" // lalr1.cc:859
+  case 158:
+#line 649 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1373 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1382 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 158:
-#line 647 "dhcp6_parser.yy" // lalr1.cc:859
+  case 163:
+#line 662 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1382 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1391 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 159:
-#line 654 "dhcp6_parser.yy" // lalr1.cc:859
+  case 164:
+#line 669 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay-supplied-options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1393 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1402 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 160:
-#line 659 "dhcp6_parser.yy" // lalr1.cc:859
+  case 165:
+#line 674 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1402 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1411 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 161:
-#line 664 "dhcp6_parser.yy" // lalr1.cc:859
+  case 166:
+#line 679 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1413 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1422 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 162:
-#line 669 "dhcp6_parser.yy" // lalr1.cc:859
+  case 167:
+#line 684 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1422 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1431 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 167:
-#line 682 "dhcp6_parser.yy" // lalr1.cc:859
+  case 172:
+#line 697 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1432 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1441 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 168:
-#line 686 "dhcp6_parser.yy" // lalr1.cc:859
+  case 173:
+#line 701 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1440 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1449 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 169:
-#line 690 "dhcp6_parser.yy" // lalr1.cc:859
+  case 174:
+#line 705 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1450 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1459 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 170:
-#line 694 "dhcp6_parser.yy" // lalr1.cc:859
+  case 175:
+#line 709 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1458 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1467 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 176:
-#line 707 "dhcp6_parser.yy" // lalr1.cc:859
+  case 181:
+#line 722 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1466 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1475 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 177:
-#line 709 "dhcp6_parser.yy" // lalr1.cc:859
+  case 182:
+#line 724 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1476 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1485 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 178:
-#line 715 "dhcp6_parser.yy" // lalr1.cc:859
+  case 183:
+#line 730 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1484 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1493 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 179:
-#line 717 "dhcp6_parser.yy" // lalr1.cc:859
+  case 184:
+#line 732 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1493 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1502 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 180:
-#line 723 "dhcp6_parser.yy" // lalr1.cc:859
+  case 185:
+#line 738 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 1504 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1513 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 181:
-#line 728 "dhcp6_parser.yy" // lalr1.cc:859
+  case 186:
+#line 743 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1513 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1522 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 190:
-#line 745 "dhcp6_parser.yy" // lalr1.cc:859
+  case 195:
+#line 760 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reclaim-timer-wait-time", value);
 }
-#line 1522 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1531 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 191:
-#line 750 "dhcp6_parser.yy" // lalr1.cc:859
+  case 196:
+#line 765 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
 }
-#line 1531 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1540 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 192:
-#line 755 "dhcp6_parser.yy" // lalr1.cc:859
+  case 197:
+#line 770 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 1540 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1549 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 193:
-#line 760 "dhcp6_parser.yy" // lalr1.cc:859
+  case 198:
+#line 775 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 1549 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1558 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 194:
-#line 765 "dhcp6_parser.yy" // lalr1.cc:859
+  case 199:
+#line 780 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 1558 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1567 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 195:
-#line 770 "dhcp6_parser.yy" // lalr1.cc:859
+  case 200:
+#line 785 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 1567 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1576 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 196:
-#line 778 "dhcp6_parser.yy" // lalr1.cc:859
+  case 201:
+#line 793 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet6", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET6);
 }
-#line 1578 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1587 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 197:
-#line 783 "dhcp6_parser.yy" // lalr1.cc:859
+  case 202:
+#line 798 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1587 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1596 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 202:
-#line 803 "dhcp6_parser.yy" // lalr1.cc:859
+  case 207:
+#line 818 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1597 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1606 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 203:
-#line 807 "dhcp6_parser.yy" // lalr1.cc:859
+  case 208:
+#line 822 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
     // }
     ctx.stack_.pop_back();
 }
-#line 1620 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1629 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 204:
-#line 826 "dhcp6_parser.yy" // lalr1.cc:859
+  case 209:
+#line 841 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1630 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1639 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 205:
-#line 830 "dhcp6_parser.yy" // lalr1.cc:859
+  case 210:
+#line 845 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1638 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1647 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 225:
-#line 859 "dhcp6_parser.yy" // lalr1.cc:859
+  case 230:
+#line 874 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1646 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1655 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 226:
-#line 861 "dhcp6_parser.yy" // lalr1.cc:859
+  case 231:
+#line 876 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 1656 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1665 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 227:
-#line 867 "dhcp6_parser.yy" // lalr1.cc:859
+  case 232:
+#line 882 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1664 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1673 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 228:
-#line 869 "dhcp6_parser.yy" // lalr1.cc:859
+  case 233:
+#line 884 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 1674 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1683 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 229:
-#line 875 "dhcp6_parser.yy" // lalr1.cc:859
+  case 234:
+#line 890 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1682 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1691 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 230:
-#line 877 "dhcp6_parser.yy" // lalr1.cc:859
+  case 235:
+#line 892 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
     ctx.leave();
 }
-#line 1692 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1701 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 231:
-#line 883 "dhcp6_parser.yy" // lalr1.cc:859
+  case 236:
+#line 898 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
-#line 1700 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1709 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 232:
-#line 885 "dhcp6_parser.yy" // lalr1.cc:859
+  case 237:
+#line 900 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 1710 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1719 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 233:
-#line 891 "dhcp6_parser.yy" // lalr1.cc:859
+  case 238:
+#line 906 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1718 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1727 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 234:
-#line 893 "dhcp6_parser.yy" // lalr1.cc:859
+  case 239:
+#line 908 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr rm(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservation-mode", rm);
     ctx.leave();
 }
-#line 1728 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1737 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 235:
-#line 899 "dhcp6_parser.yy" // lalr1.cc:859
+  case 240:
+#line 914 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 1737 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 236:
-#line 904 "dhcp6_parser.yy" // lalr1.cc:859
+  case 241:
+#line 919 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
 }
-#line 1746 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1755 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 237:
-#line 913 "dhcp6_parser.yy" // lalr1.cc:859
+  case 242:
+#line 928 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 1757 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1766 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 238:
-#line 918 "dhcp6_parser.yy" // lalr1.cc:859
+  case 243:
+#line 933 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1766 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1775 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 243:
-#line 935 "dhcp6_parser.yy" // lalr1.cc:859
+  case 248:
+#line 950 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1776 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1785 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 244:
-#line 939 "dhcp6_parser.yy" // lalr1.cc:859
+  case 249:
+#line 954 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1784 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1793 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 245:
-#line 946 "dhcp6_parser.yy" // lalr1.cc:859
+  case 250:
+#line 961 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1794 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1803 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 246:
-#line 950 "dhcp6_parser.yy" // lalr1.cc:859
+  case 251:
+#line 965 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1802 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1811 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 260:
-#line 976 "dhcp6_parser.yy" // lalr1.cc:859
+  case 265:
+#line 991 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 1811 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1820 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 262:
-#line 983 "dhcp6_parser.yy" // lalr1.cc:859
+  case 267:
+#line 998 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1819 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1828 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 263:
-#line 985 "dhcp6_parser.yy" // lalr1.cc:859
+  case 268:
+#line 1000 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 1829 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1838 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 264:
-#line 991 "dhcp6_parser.yy" // lalr1.cc:859
+  case 269:
+#line 1006 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1837 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1846 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 265:
-#line 993 "dhcp6_parser.yy" // lalr1.cc:859
+  case 270:
+#line 1008 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 1847 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1856 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 266:
-#line 999 "dhcp6_parser.yy" // lalr1.cc:859
+  case 271:
+#line 1014 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1855 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1864 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 267:
-#line 1001 "dhcp6_parser.yy" // lalr1.cc:859
+  case 272:
+#line 1016 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 1865 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1874 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 269:
-#line 1009 "dhcp6_parser.yy" // lalr1.cc:859
+  case 274:
+#line 1024 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1873 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1882 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 270:
-#line 1011 "dhcp6_parser.yy" // lalr1.cc:859
+  case 275:
+#line 1026 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 1883 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1892 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 271:
-#line 1017 "dhcp6_parser.yy" // lalr1.cc:859
+  case 276:
+#line 1032 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 1892 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1901 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 272:
-#line 1026 "dhcp6_parser.yy" // lalr1.cc:859
+  case 277:
+#line 1041 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 1903 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1912 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 273:
-#line 1031 "dhcp6_parser.yy" // lalr1.cc:859
+  case 278:
+#line 1046 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1912 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1921 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 278:
-#line 1050 "dhcp6_parser.yy" // lalr1.cc:859
+  case 283:
+#line 1065 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1922 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1931 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 279:
-#line 1054 "dhcp6_parser.yy" // lalr1.cc:859
+  case 284:
+#line 1069 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1930 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1939 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 280:
-#line 1061 "dhcp6_parser.yy" // lalr1.cc:859
+  case 285:
+#line 1076 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1940 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1949 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 281:
-#line 1065 "dhcp6_parser.yy" // lalr1.cc:859
+  case 286:
+#line 1080 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1948 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1957 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 293:
-#line 1094 "dhcp6_parser.yy" // lalr1.cc:859
+  case 298:
+#line 1109 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1956 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1965 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 294:
-#line 1096 "dhcp6_parser.yy" // lalr1.cc:859
+  case 299:
+#line 1111 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 1966 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1975 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 297:
-#line 1106 "dhcp6_parser.yy" // lalr1.cc:859
+  case 302:
+#line 1121 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 1975 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1984 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 298:
-#line 1114 "dhcp6_parser.yy" // lalr1.cc:859
+  case 303:
+#line 1129 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 1986 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1995 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 299:
-#line 1119 "dhcp6_parser.yy" // lalr1.cc:859
+  case 304:
+#line 1134 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1995 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2004 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 304:
-#line 1134 "dhcp6_parser.yy" // lalr1.cc:859
+  case 309:
+#line 1149 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2005 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2014 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 305:
-#line 1138 "dhcp6_parser.yy" // lalr1.cc:859
+  case 310:
+#line 1153 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2013 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2022 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 306:
-#line 1142 "dhcp6_parser.yy" // lalr1.cc:859
+  case 311:
+#line 1157 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2023 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2032 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 307:
-#line 1146 "dhcp6_parser.yy" // lalr1.cc:859
+  case 312:
+#line 1161 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2031 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2040 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 314:
-#line 1160 "dhcp6_parser.yy" // lalr1.cc:859
+  case 319:
+#line 1175 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2039 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2048 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 315:
-#line 1162 "dhcp6_parser.yy" // lalr1.cc:859
+  case 320:
+#line 1177 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2049 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2058 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 316:
-#line 1168 "dhcp6_parser.yy" // lalr1.cc:859
+  case 321:
+#line 1183 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2057 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2066 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 317:
-#line 1170 "dhcp6_parser.yy" // lalr1.cc:859
+  case 322:
+#line 1185 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2066 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2075 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 318:
-#line 1178 "dhcp6_parser.yy" // lalr1.cc:859
+  case 323:
+#line 1193 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pd-pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.PD_POOLS);
 }
-#line 2077 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2086 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 319:
-#line 1183 "dhcp6_parser.yy" // lalr1.cc:859
+  case 324:
+#line 1198 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2086 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2095 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 324:
-#line 1198 "dhcp6_parser.yy" // lalr1.cc:859
+  case 329:
+#line 1213 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2096 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2105 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 325:
-#line 1202 "dhcp6_parser.yy" // lalr1.cc:859
+  case 330:
+#line 1217 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2104 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2113 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 326:
-#line 1206 "dhcp6_parser.yy" // lalr1.cc:859
+  case 331:
+#line 1221 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2114 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2123 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 327:
-#line 1210 "dhcp6_parser.yy" // lalr1.cc:859
+  case 332:
+#line 1225 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2122 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2131 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 338:
-#line 1228 "dhcp6_parser.yy" // lalr1.cc:859
+  case 343:
+#line 1243 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2130 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2139 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 339:
-#line 1230 "dhcp6_parser.yy" // lalr1.cc:859
+  case 344:
+#line 1245 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
     ctx.leave();
 }
-#line 2140 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2149 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 340:
-#line 1236 "dhcp6_parser.yy" // lalr1.cc:859
+  case 345:
+#line 1251 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix-len", prf);
 }
-#line 2149 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2158 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 341:
-#line 1241 "dhcp6_parser.yy" // lalr1.cc:859
+  case 346:
+#line 1256 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2157 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2166 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 342:
-#line 1243 "dhcp6_parser.yy" // lalr1.cc:859
+  case 347:
+#line 1258 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix", prf);
     ctx.leave();
 }
-#line 2167 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2176 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 343:
-#line 1249 "dhcp6_parser.yy" // lalr1.cc:859
+  case 348:
+#line 1264 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix-len", prf);
 }
-#line 2176 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2185 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 344:
-#line 1254 "dhcp6_parser.yy" // lalr1.cc:859
+  case 349:
+#line 1269 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("delegated-len", deleg);
 }
-#line 2185 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2194 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 345:
-#line 1262 "dhcp6_parser.yy" // lalr1.cc:859
+  case 350:
+#line 1277 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 2196 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2205 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 346:
-#line 1267 "dhcp6_parser.yy" // lalr1.cc:859
+  case 351:
+#line 1282 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2205 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2214 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 351:
-#line 1280 "dhcp6_parser.yy" // lalr1.cc:859
+  case 356:
+#line 1295 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2215 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2224 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 352:
-#line 1284 "dhcp6_parser.yy" // lalr1.cc:859
+  case 357:
+#line 1299 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2223 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2232 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 353:
-#line 1288 "dhcp6_parser.yy" // lalr1.cc:859
+  case 358:
+#line 1303 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2233 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2242 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 354:
-#line 1292 "dhcp6_parser.yy" // lalr1.cc:859
+  case 359:
+#line 1307 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2241 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2250 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 367:
-#line 1315 "dhcp6_parser.yy" // lalr1.cc:859
+  case 372:
+#line 1330 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-addresses", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2252 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2261 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 368:
-#line 1320 "dhcp6_parser.yy" // lalr1.cc:859
+  case 373:
+#line 1335 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2261 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2270 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 369:
-#line 1325 "dhcp6_parser.yy" // lalr1.cc:859
+  case 374:
+#line 1340 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefixes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2272 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2281 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 370:
-#line 1330 "dhcp6_parser.yy" // lalr1.cc:859
+  case 375:
+#line 1345 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2281 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2290 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 371:
-#line 1335 "dhcp6_parser.yy" // lalr1.cc:859
+  case 376:
+#line 1350 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2289 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2298 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 372:
-#line 1337 "dhcp6_parser.yy" // lalr1.cc:859
+  case 377:
+#line 1352 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 2299 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2308 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 373:
-#line 1343 "dhcp6_parser.yy" // lalr1.cc:859
+  case 378:
+#line 1358 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2307 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2316 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 374:
-#line 1345 "dhcp6_parser.yy" // lalr1.cc:859
+  case 379:
+#line 1360 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 2317 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2326 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 375:
-#line 1351 "dhcp6_parser.yy" // lalr1.cc:859
+  case 380:
+#line 1366 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2325 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2334 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 376:
-#line 1353 "dhcp6_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1368 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 2335 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2344 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 377:
-#line 1359 "dhcp6_parser.yy" // lalr1.cc:859
+  case 382:
+#line 1374 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2346 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2355 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1364 "dhcp6_parser.yy" // lalr1.cc:859
+  case 383:
+#line 1379 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2355 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2364 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1372 "dhcp6_parser.yy" // lalr1.cc:859
+  case 384:
+#line 1387 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 2366 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2375 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 380:
-#line 1377 "dhcp6_parser.yy" // lalr1.cc:859
+  case 385:
+#line 1392 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2375 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2384 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 381:
-#line 1382 "dhcp6_parser.yy" // lalr1.cc:859
+  case 386:
+#line 1397 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2383 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2392 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 382:
-#line 1384 "dhcp6_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1399 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", ip);
     ctx.leave();
 }
-#line 2393 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2402 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 383:
-#line 1393 "dhcp6_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1408 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 2404 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2413 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 384:
-#line 1398 "dhcp6_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1413 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2413 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2422 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1407 "dhcp6_parser.yy" // lalr1.cc:859
+  case 392:
+#line 1422 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2423 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2432 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1411 "dhcp6_parser.yy" // lalr1.cc:859
+  case 393:
+#line 1426 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2431 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2440 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 398:
-#line 1431 "dhcp6_parser.yy" // lalr1.cc:859
+  case 403:
+#line 1446 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2439 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2448 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 399:
-#line 1433 "dhcp6_parser.yy" // lalr1.cc:859
+  case 404:
+#line 1448 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 2449 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2458 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 400:
-#line 1442 "dhcp6_parser.yy" // lalr1.cc:859
+  case 405:
+#line 1457 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-id", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER_ID);
 }
-#line 2460 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2469 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 401:
-#line 1447 "dhcp6_parser.yy" // lalr1.cc:859
+  case 406:
+#line 1462 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2469 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2478 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 411:
-#line 1465 "dhcp6_parser.yy" // lalr1.cc:859
+  case 416:
+#line 1480 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 2477 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2486 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 412:
-#line 1467 "dhcp6_parser.yy" // lalr1.cc:859
+  case 417:
+#line 1482 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2486 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2495 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 413:
-#line 1472 "dhcp6_parser.yy" // lalr1.cc:859
+  case 418:
+#line 1487 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 2492 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2501 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 414:
-#line 1473 "dhcp6_parser.yy" // lalr1.cc:859
+  case 419:
+#line 1488 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 2498 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2507 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 415:
-#line 1474 "dhcp6_parser.yy" // lalr1.cc:859
+  case 420:
+#line 1489 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 2504 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2513 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 416:
-#line 1477 "dhcp6_parser.yy" // lalr1.cc:859
+  case 421:
+#line 1492 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("htype", htype);
 }
-#line 2513 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2522 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 417:
-#line 1482 "dhcp6_parser.yy" // lalr1.cc:859
+  case 422:
+#line 1497 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2521 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2530 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 418:
-#line 1484 "dhcp6_parser.yy" // lalr1.cc:859
+  case 423:
+#line 1499 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
     ctx.leave();
 }
-#line 2531 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2540 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 419:
-#line 1490 "dhcp6_parser.yy" // lalr1.cc:859
+  case 424:
+#line 1505 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("time", time);
 }
-#line 2540 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2549 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 420:
-#line 1495 "dhcp6_parser.yy" // lalr1.cc:859
+  case 425:
+#line 1510 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enterprise-id", time);
 }
-#line 2549 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2558 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 421:
-#line 1502 "dhcp6_parser.yy" // lalr1.cc:859
+  case 426:
+#line 1517 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 2558 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2567 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 422:
-#line 1509 "dhcp6_parser.yy" // lalr1.cc:859
+  case 427:
+#line 1524 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 2569 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2578 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 423:
-#line 1514 "dhcp6_parser.yy" // lalr1.cc:859
+  case 428:
+#line 1529 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2578 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2587 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 428:
-#line 1527 "dhcp6_parser.yy" // lalr1.cc:859
+  case 433:
+#line 1542 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2586 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2595 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 429:
-#line 1529 "dhcp6_parser.yy" // lalr1.cc:859
+  case 434:
+#line 1544 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 2596 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2605 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 430:
-#line 1535 "dhcp6_parser.yy" // lalr1.cc:859
+  case 435:
+#line 1550 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2604 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2613 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 431:
-#line 1537 "dhcp6_parser.yy" // lalr1.cc:859
+  case 436:
+#line 1552 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 2614 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2623 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 432:
-#line 1545 "dhcp6_parser.yy" // lalr1.cc:859
+  case 437:
+#line 1560 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 2625 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2634 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 433:
-#line 1550 "dhcp6_parser.yy" // lalr1.cc:859
+  case 438:
+#line 1565 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2634 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2643 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 434:
-#line 1555 "dhcp6_parser.yy" // lalr1.cc:859
+  case 439:
+#line 1570 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2644 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2653 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 435:
-#line 1559 "dhcp6_parser.yy" // lalr1.cc:859
+  case 440:
+#line 1574 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2652 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2661 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 453:
-#line 1584 "dhcp6_parser.yy" // lalr1.cc:859
+  case 458:
+#line 1599 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 2661 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2670 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 454:
-#line 1589 "dhcp6_parser.yy" // lalr1.cc:859
+  case 459:
+#line 1604 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2669 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2678 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 455:
-#line 1591 "dhcp6_parser.yy" // lalr1.cc:859
+  case 460:
+#line 1606 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
     ctx.leave();
 }
-#line 2679 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2688 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 456:
-#line 1597 "dhcp6_parser.yy" // lalr1.cc:859
+  case 461:
+#line 1612 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2687 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2696 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 457:
-#line 1599 "dhcp6_parser.yy" // lalr1.cc:859
+  case 462:
+#line 1614 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
     ctx.leave();
 }
-#line 2697 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2706 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 458:
-#line 1605 "dhcp6_parser.yy" // lalr1.cc:859
+  case 463:
+#line 1620 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 2706 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2715 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 459:
-#line 1610 "dhcp6_parser.yy" // lalr1.cc:859
+  case 464:
+#line 1625 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2714 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2723 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 460:
-#line 1612 "dhcp6_parser.yy" // lalr1.cc:859
+  case 465:
+#line 1627 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
     ctx.leave();
 }
-#line 2724 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2733 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 461:
-#line 1618 "dhcp6_parser.yy" // lalr1.cc:859
+  case 466:
+#line 1633 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 2733 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2742 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 462:
-#line 1623 "dhcp6_parser.yy" // lalr1.cc:859
+  case 467:
+#line 1638 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 2742 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2751 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 463:
-#line 1628 "dhcp6_parser.yy" // lalr1.cc:859
+  case 468:
+#line 1643 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 2750 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2759 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 464:
-#line 1630 "dhcp6_parser.yy" // lalr1.cc:859
+  case 469:
+#line 1645 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2759 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2768 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 465:
-#line 1636 "dhcp6_parser.yy" // lalr1.cc:859
+  case 470:
+#line 1651 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 2765 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2774 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 466:
-#line 1637 "dhcp6_parser.yy" // lalr1.cc:859
+  case 471:
+#line 1652 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 2771 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2780 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 467:
-#line 1640 "dhcp6_parser.yy" // lalr1.cc:859
+  case 472:
+#line 1655 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 2779 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2788 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 468:
-#line 1642 "dhcp6_parser.yy" // lalr1.cc:859
+  case 473:
+#line 1657 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 2789 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2798 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 469:
-#line 1648 "dhcp6_parser.yy" // lalr1.cc:859
+  case 474:
+#line 1663 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-include-fqdn", b);
 }
-#line 2798 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2807 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 470:
-#line 1653 "dhcp6_parser.yy" // lalr1.cc:859
+  case 475:
+#line 1668 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 2807 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2816 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 471:
-#line 1658 "dhcp6_parser.yy" // lalr1.cc:859
+  case 476:
+#line 1673 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 2816 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2825 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 472:
-#line 1663 "dhcp6_parser.yy" // lalr1.cc:859
+  case 477:
+#line 1678 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 2824 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2833 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 473:
-#line 1665 "dhcp6_parser.yy" // lalr1.cc:859
+  case 478:
+#line 1680 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2833 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2842 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 474:
-#line 1671 "dhcp6_parser.yy" // lalr1.cc:859
+  case 479:
+#line 1686 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
       }
-#line 2841 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2850 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 475:
-#line 1674 "dhcp6_parser.yy" // lalr1.cc:859
+  case 480:
+#line 1689 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2849 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2858 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 476:
-#line 1677 "dhcp6_parser.yy" // lalr1.cc:859
+  case 481:
+#line 1692 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2857 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2866 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 477:
-#line 1680 "dhcp6_parser.yy" // lalr1.cc:859
+  case 482:
+#line 1695 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 2865 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2874 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 478:
-#line 1683 "dhcp6_parser.yy" // lalr1.cc:859
+  case 483:
+#line 1698 "dhcp6_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 2874 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2883 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 479:
-#line 1689 "dhcp6_parser.yy" // lalr1.cc:859
+  case 484:
+#line 1704 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2882 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2891 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 480:
-#line 1691 "dhcp6_parser.yy" // lalr1.cc:859
+  case 485:
+#line 1706 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
     ctx.leave();
 }
-#line 2892 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2901 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 481:
-#line 1699 "dhcp6_parser.yy" // lalr1.cc:859
+  case 486:
+#line 1714 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2900 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2909 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 482:
-#line 1701 "dhcp6_parser.yy" // lalr1.cc:859
+  case 487:
+#line 1716 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2909 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2918 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 483:
-#line 1706 "dhcp6_parser.yy" // lalr1.cc:859
+  case 488:
+#line 1721 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2917 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2926 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 484:
-#line 1708 "dhcp6_parser.yy" // lalr1.cc:859
+  case 489:
+#line 1723 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2926 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2935 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 485:
-#line 1718 "dhcp6_parser.yy" // lalr1.cc:859
+  case 490:
+#line 1733 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.LOGGING);
 }
-#line 2937 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2946 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 486:
-#line 1723 "dhcp6_parser.yy" // lalr1.cc:859
+  case 491:
+#line 1738 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2946 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2955 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 490:
-#line 1740 "dhcp6_parser.yy" // lalr1.cc:859
+  case 495:
+#line 1755 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 2957 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2966 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1745 "dhcp6_parser.yy" // lalr1.cc:859
+  case 496:
+#line 1760 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2966 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2975 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 494:
-#line 1757 "dhcp6_parser.yy" // lalr1.cc:859
+  case 499:
+#line 1772 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 2976 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2985 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 495:
-#line 1761 "dhcp6_parser.yy" // lalr1.cc:859
+  case 500:
+#line 1776 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2984 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2993 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 503:
-#line 1776 "dhcp6_parser.yy" // lalr1.cc:859
+  case 508:
+#line 1791 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 2993 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3002 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 504:
-#line 1781 "dhcp6_parser.yy" // lalr1.cc:859
+  case 509:
+#line 1796 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3001 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3010 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 505:
-#line 1783 "dhcp6_parser.yy" // lalr1.cc:859
+  case 510:
+#line 1798 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 3011 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3020 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 506:
-#line 1789 "dhcp6_parser.yy" // lalr1.cc:859
+  case 511:
+#line 1804 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 3022 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3031 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 507:
-#line 1794 "dhcp6_parser.yy" // lalr1.cc:859
+  case 512:
+#line 1809 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3031 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3040 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 510:
-#line 1803 "dhcp6_parser.yy" // lalr1.cc:859
+  case 515:
+#line 1818 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3041 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3050 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 511:
-#line 1807 "dhcp6_parser.yy" // lalr1.cc:859
+  case 516:
+#line 1822 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3049 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3058 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 514:
-#line 1815 "dhcp6_parser.yy" // lalr1.cc:859
+  case 519:
+#line 1830 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3057 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3066 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 515:
-#line 1817 "dhcp6_parser.yy" // lalr1.cc:859
+  case 520:
+#line 1832 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 3067 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3076 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3071 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3080 "dhcp6_parser.cc" // lalr1.cc:859
             default:
               break;
             }
   }
 
 
-  const short int Dhcp6Parser::yypact_ninf_ = -486;
+  const short int Dhcp6Parser::yypact_ninf_ = -494;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short int
   Dhcp6Parser::yypact_[] =
   {
-      63,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,    50,    19,    67,   116,   122,   131,   137,
-     148,   150,   195,   196,   213,   214,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-      19,   -51,    17,    31,    92,    23,    -8,    48,   104,    32,
-      -5,   -28,   107,  -486,   259,   249,   254,   276,   269,  -486,
-    -486,  -486,  -486,   281,  -486,    83,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,   282,   288,   289,   291,   293,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,   295,
-    -486,  -486,  -486,   118,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,   296,  -486,  -486,
-    -486,  -486,  -486,  -486,   297,   308,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,   119,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,   127,  -486,  -486,  -486,  -486,   309,  -486,
-     310,   311,  -486,  -486,  -486,   129,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-     312,   313,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,   314,  -486,  -486,  -486,   315,  -486,  -486,   316,   319,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,   321,  -486,  -486,  -486,  -486,   318,   320,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,   161,  -486,  -486,
-    -486,   323,  -486,  -486,   324,  -486,   325,   326,  -486,  -486,
-     327,   328,   329,  -486,  -486,  -486,   216,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,    19,    19,  -486,   157,   330,   331,   332,
-     333,  -486,    17,  -486,   334,   335,   336,   160,   177,   201,
-     202,   203,   340,   341,   342,   343,   344,   345,   346,   347,
-     348,   349,   215,   350,   352,    31,  -486,   353,  -486,    -6,
-     354,   355,   356,   357,   358,   223,   222,   361,   362,   363,
-     364,    23,  -486,   365,   366,    -8,  -486,   367,   234,   368,
-     235,   237,    48,  -486,   369,   372,   374,   375,   376,   377,
-    -486,   104,   378,   379,   244,   381,   382,   383,   247,  -486,
-      32,   384,   250,  -486,    -5,   386,   387,   -36,  -486,   251,
-     390,   391,   261,   392,   262,   263,   395,   396,   265,   266,
-     267,   400,   401,   107,  -486,  -486,  -486,   402,   403,   404,
-      19,    19,  -486,   405,   406,   407,  -486,  -486,  -486,  -486,
-    -486,   410,   411,   412,   413,   414,   415,   416,   417,   418,
-     421,  -486,   422,   425,  -486,   419,  -486,  -486,  -486,  -486,
-     426,   420,  -486,  -486,  -486,   428,   430,   299,   301,   302,
-    -486,  -486,   303,   304,   431,   438,  -486,   307,   440,  -486,
-     317,  -486,   322,  -486,  -486,  -486,   419,   419,   419,   337,
-     338,   339,  -486,   351,   359,  -486,   360,   370,   371,  -486,
-    -486,   373,  -486,  -486,   380,    19,  -486,  -486,   385,   388,
-    -486,   389,  -486,  -486,   -55,   393,  -486,  -486,  -486,    -3,
-     394,  -486,    19,    31,   397,  -486,  -486,    92,   125,   125,
-     442,   443,   444,   -32,    19,    95,    44,   445,    98,    28,
-     179,   107,  -486,  -486,   449,  -486,    -6,   447,   448,  -486,
-    -486,  -486,  -486,  -486,   450,   399,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-     219,  -486,   220,  -486,  -486,   451,  -486,  -486,  -486,  -486,
-     456,   458,   459,   460,   461,  -486,  -486,  -486,   226,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,   229,  -486,   462,   463,  -486,  -486,   464,   466,
-    -486,  -486,   465,   471,  -486,  -486,  -486,    81,  -486,  -486,
-    -486,   469,  -486,  -486,   102,  -486,  -486,  -486,   256,  -486,
-     473,   477,  -486,   478,   479,   480,   481,   482,   483,   230,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,   484,
-     487,   488,  -486,  -486,   232,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,   233,  -486,  -486,  -486,   236,   398,   408,
-    -486,  -486,   475,   490,  -486,  -486,   489,   491,  -486,  -486,
-     494,   493,  -486,  -486,   495,  -486,   497,   397,  -486,  -486,
-     498,   500,   501,   502,   409,   423,   424,   427,   432,   504,
-     507,   125,  -486,  -486,    23,  -486,   442,    32,  -486,   443,
-      -5,  -486,   444,   -32,  -486,  -486,    95,  -486,    44,  -486,
-     -28,  -486,   445,   433,   434,   435,   436,   437,   439,    98,
-    -486,   509,   510,   441,   446,   452,    28,  -486,   511,   512,
-     179,  -486,  -486,  -486,   514,   515,  -486,    -8,  -486,   447,
-      48,  -486,   448,   104,  -486,   450,   517,  -486,   492,  -486,
-     292,   429,   454,   455,  -486,  -486,  -486,  -486,  -486,   457,
-     467,  -486,   239,  -486,   518,  -486,   521,  -486,  -486,  -486,
-    -486,   242,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-      97,   468,  -486,  -486,  -486,  -486,   470,   472,  -486,  -486,
-     474,   245,  -486,   246,  -486,   522,  -486,   476,   516,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,   260,  -486,    65,   516,
-    -486,  -486,   527,  -486,  -486,  -486,   248,  -486,  -486,  -486,
-    -486,  -486,   528,   486,   530,    65,  -486,   520,  -486,   485,
-    -486,   529,  -486,  -486,   264,  -486,   496,   529,  -486,  -486,
-     252,  -486,  -486,   531,   496,  -486,   503,  -486,  -486
+     120,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,    46,    20,    23,    64,   119,   149,   159,
+     165,   183,   200,   222,   239,   255,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+      20,   -55,    18,    27,   137,    19,    -1,    44,    82,    28,
+      68,    41,    92,  -494,    96,   109,   266,   161,   214,  -494,
+    -494,  -494,  -494,   274,  -494,    31,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,   288,   294,   295,   298,   299,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,   301,
+    -494,  -494,  -494,    40,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,   302,   140,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,   303,   306,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,   162,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,   202,  -494,  -494,
+    -494,  -494,   314,  -494,   315,   316,  -494,  -494,  -494,   203,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,   264,   318,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,   319,  -494,  -494,  -494,   320,
+    -494,  -494,   293,   322,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,   324,  -494,  -494,  -494,  -494,
+     321,   323,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,   206,  -494,  -494,  -494,   326,  -494,  -494,   327,  -494,
+     328,   329,  -494,  -494,   330,   331,   332,  -494,  -494,  -494,
+     210,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,    20,    20,  -494,
+     182,   333,   334,   335,   336,  -494,    18,  -494,   337,   338,
+     339,   204,   205,   207,   208,   211,   340,   343,   346,   347,
+     349,   350,   351,   352,   353,   354,   218,   356,   357,    27,
+    -494,   358,   220,   137,  -494,    17,   360,   361,   362,   363,
+     364,   228,   229,   366,   367,   369,   370,    19,  -494,   371,
+     372,    -1,  -494,   373,   238,   374,   240,   241,    44,  -494,
+     376,   379,   380,   381,   382,   383,  -494,    82,   384,   385,
+     249,   387,   388,   389,   251,  -494,    28,   391,   253,  -494,
+      68,   393,   394,   105,  -494,   256,   396,   397,   262,   398,
+     263,   267,   403,   405,   269,   270,   271,   406,   407,    92,
+    -494,  -494,  -494,   411,   409,   410,    20,    20,  -494,   412,
+     413,   414,  -494,  -494,  -494,  -494,  -494,   417,   418,   419,
+     420,   421,   422,   423,   424,   425,   426,  -494,   429,   430,
+    -494,   435,  -494,  -494,  -494,  -494,  -494,  -494,   433,   415,
+    -494,  -494,  -494,   437,   438,   290,   291,   304,  -494,  -494,
+     308,   309,   441,   443,  -494,   311,   446,  -494,   317,  -494,
+     325,  -494,  -494,  -494,   435,   435,   435,   341,   344,   345,
+    -494,   348,   355,  -494,   365,   368,   375,  -494,  -494,   377,
+    -494,  -494,   378,    20,  -494,  -494,   386,   390,  -494,   392,
+    -494,  -494,   113,   359,  -494,  -494,  -494,    69,   395,  -494,
+      20,    27,   342,  -494,  -494,   137,   107,   107,   447,   448,
+     451,   -40,    20,   209,    38,   452,    95,    24,   194,    92,
+    -494,  -494,   456,  -494,    17,   454,   455,  -494,  -494,  -494,
+    -494,  -494,   457,   400,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,   212,  -494,
+     213,  -494,  -494,   216,  -494,  -494,  -494,  -494,   463,   464,
+     465,   466,   467,  -494,  -494,  -494,   225,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+     227,  -494,   470,   469,  -494,  -494,   471,   475,  -494,  -494,
+     473,   477,  -494,  -494,  -494,    29,  -494,  -494,  -494,   480,
+    -494,  -494,    30,  -494,  -494,  -494,    78,  -494,   481,   486,
+    -494,   479,   487,   488,   489,   490,   492,   233,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,   493,   494,   496,
+    -494,  -494,   234,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,   235,  -494,  -494,  -494,   236,   399,   401,  -494,  -494,
+     484,   498,  -494,  -494,   497,   499,  -494,  -494,   500,   501,
+    -494,  -494,   502,  -494,   503,   342,  -494,  -494,   505,   507,
+     508,   509,   402,   404,   408,   416,   427,   510,   512,   107,
+    -494,  -494,    19,  -494,   447,    28,  -494,   448,    68,  -494,
+     451,   -40,  -494,  -494,   209,  -494,    38,  -494,    41,  -494,
+     452,   428,   431,   432,   434,   436,   439,    95,  -494,   515,
+     516,   440,   442,   444,    24,  -494,   517,   518,   194,  -494,
+    -494,  -494,   519,   520,  -494,    -1,  -494,   454,    44,  -494,
+     455,    82,  -494,   457,   523,  -494,   468,  -494,   297,   449,
+     450,   453,  -494,  -494,  -494,  -494,  -494,   458,   459,  -494,
+     237,  -494,   521,  -494,   525,  -494,  -494,  -494,  -494,   257,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,    53,   460,
+    -494,  -494,  -494,  -494,   461,   462,  -494,  -494,   472,   258,
+    -494,   261,  -494,   526,  -494,   474,   524,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,    98,  -494,    49,   524,  -494,  -494,
+     532,  -494,  -494,  -494,   265,  -494,  -494,  -494,  -494,  -494,
+     533,   445,   534,    49,  -494,   535,  -494,   476,  -494,   537,
+    -494,  -494,   121,  -494,   482,   537,  -494,  -494,   268,  -494,
+    -494,   538,   482,  -494,   478,  -494,  -494
   };
 
   const unsigned short int
       20,    22,    24,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     1,    41,    34,    30,
       29,    26,    27,    28,    33,     3,    31,    32,    54,     5,
-      65,     7,    98,     9,   204,    11,   306,    13,   326,    15,
-     353,    17,   245,    19,   280,    21,   169,    23,   434,    25,
-      43,    37,     0,     0,     0,     0,     0,     0,   355,   247,
-     282,     0,     0,    45,     0,    44,     0,     0,    38,    63,
-     485,   481,   483,     0,    62,     0,    56,    58,    60,    61,
-      59,    96,   102,   104,     0,     0,     0,     0,     0,   196,
-     237,   272,   144,   159,   152,   383,   161,   180,   400,     0,
-     422,   432,    90,     0,    67,    69,    70,    71,    72,    73,
+      65,     7,    98,     9,   209,    11,   311,    13,   331,    15,
+     358,    17,   250,    19,   285,    21,   174,    23,   439,    25,
+      43,    37,     0,     0,     0,     0,     0,     0,   360,   252,
+     287,     0,     0,    45,     0,    44,     0,     0,    38,    63,
+     490,   486,   488,     0,    62,     0,    56,    58,    60,    61,
+      59,    96,   107,   109,     0,     0,     0,     0,     0,   201,
+     242,   277,   149,   164,   157,   388,   166,   185,   405,     0,
+     427,   437,    90,     0,    67,    69,    70,    71,    72,    73,
       75,    76,    77,    78,    80,    79,    84,    85,    74,    82,
-      83,    81,    86,    87,    88,    89,   100,     0,   387,   298,
-     318,   225,   227,   229,     0,     0,   233,   231,   345,   379,
-     224,   208,   209,   210,   211,     0,   206,   215,   216,   217,
-     220,   222,   218,   219,   212,   213,   214,   221,   223,   314,
-     316,   313,   311,     0,   308,   310,   312,   338,     0,   341,
-       0,     0,   337,   333,   336,     0,   328,   330,   331,   334,
-     335,   332,   377,   367,   369,   371,   373,   375,   366,   365,
-       0,   356,   357,   361,   362,   359,   363,   364,   360,   262,
-     134,     0,   266,   264,   269,     0,   258,   259,     0,   248,
-     249,   251,   261,   252,   253,   254,   268,   255,   256,   257,
-     293,     0,   291,   292,   295,   296,     0,   283,   284,   286,
-     287,   288,   289,   290,   176,   178,   173,     0,   171,   174,
-     175,     0,   454,   456,     0,   459,     0,     0,   463,   467,
-       0,     0,     0,   472,   479,   452,     0,   436,   438,   439,
-     440,   441,   442,   443,   444,   445,   446,   447,   448,   449,
-     450,   451,    42,     0,     0,    35,     0,     0,     0,     0,
-       0,    53,     0,    55,     0,     0,     0,     0,     0,     0,
+      83,    81,    86,    87,    88,    89,   104,     0,     0,   100,
+     102,   103,   392,   303,   323,   230,   232,   234,     0,     0,
+     238,   236,   350,   384,   229,   213,   214,   215,   216,     0,
+     211,   220,   221,   222,   225,   227,   223,   224,   217,   218,
+     219,   226,   228,   319,   321,   318,   316,     0,   313,   315,
+     317,   343,     0,   346,     0,     0,   342,   338,   341,     0,
+     333,   335,   336,   339,   340,   337,   382,   372,   374,   376,
+     378,   380,   371,   370,     0,   361,   362,   366,   367,   364,
+     368,   369,   365,   267,   139,     0,   271,   269,   274,     0,
+     263,   264,     0,   253,   254,   256,   266,   257,   258,   259,
+     273,   260,   261,   262,   298,     0,   296,   297,   300,   301,
+       0,   288,   289,   291,   292,   293,   294,   295,   181,   183,
+     178,     0,   176,   179,   180,     0,   459,   461,     0,   464,
+       0,     0,   468,   472,     0,     0,     0,   477,   484,   457,
+       0,   441,   443,   444,   445,   446,   447,   448,   449,   450,
+     451,   452,   453,   454,   455,   456,    42,     0,     0,    35,
+       0,     0,     0,     0,     0,    53,     0,    55,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    66,     0,    99,   389,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   205,     0,     0,     0,   307,     0,     0,     0,
-       0,     0,     0,   327,     0,     0,     0,     0,     0,     0,
-     354,     0,     0,     0,     0,     0,     0,     0,     0,   246,
-       0,     0,     0,   281,     0,     0,     0,     0,   170,     0,
+      66,     0,     0,     0,    99,   394,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   210,     0,
+       0,     0,   312,     0,     0,     0,     0,     0,     0,   332,
+       0,     0,     0,     0,     0,     0,   359,     0,     0,     0,
+       0,     0,     0,     0,     0,   251,     0,     0,     0,   286,
+       0,     0,     0,     0,   175,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   435,    46,    39,     0,     0,     0,
-       0,     0,    57,     0,     0,     0,    91,    92,    93,    94,
-      95,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   421,     0,     0,    68,     0,   398,   396,   397,   395,
-       0,   390,   391,   393,   394,     0,     0,     0,     0,     0,
-     235,   236,     0,     0,     0,     0,   207,     0,     0,   309,
-       0,   340,     0,   343,   344,   329,     0,     0,     0,     0,
-       0,     0,   358,     0,     0,   260,     0,     0,     0,   271,
-     250,     0,   297,   285,     0,     0,   172,   453,     0,     0,
-     458,     0,   461,   462,     0,     0,   469,   470,   471,     0,
-       0,   437,     0,     0,     0,   482,   484,     0,     0,     0,
-     198,   239,   274,     0,    43,     0,     0,   163,     0,     0,
-       0,     0,    47,   101,     0,   388,     0,   300,   320,   226,
-     228,   230,   234,   232,   347,     0,   315,    36,   317,   339,
-     342,   378,   368,   370,   372,   374,   376,   263,   135,   267,
-     265,   270,   294,   177,   179,   455,   457,   460,   465,   466,
-     464,   468,   474,   475,   476,   477,   478,   473,   480,    40,
-       0,   490,     0,   487,   489,     0,   121,   127,   129,   131,
-       0,     0,     0,     0,     0,   140,   142,   120,     0,   106,
-     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,     0,   202,     0,   199,   200,   243,     0,   240,
-     241,   278,     0,   275,   276,   150,   151,     0,   146,   148,
-     149,     0,   158,   156,     0,   154,   157,   385,     0,   167,
-       0,   164,   165,     0,     0,     0,     0,     0,     0,     0,
-     182,   184,   185,   186,   187,   188,   189,   411,   417,     0,
-       0,     0,   410,   409,     0,   402,   404,   407,   405,   406,
-     408,   428,   430,     0,   424,   426,   427,     0,    49,     0,
-     392,   304,     0,   301,   302,   324,     0,   321,   322,   351,
-       0,   348,   349,   381,     0,    64,     0,     0,   486,    97,
+     440,    46,    39,     0,     0,     0,     0,     0,    57,     0,
+       0,     0,    91,    92,    93,    94,    95,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   426,     0,     0,
+      68,     0,   106,   101,   403,   401,   402,   400,     0,   395,
+     396,   398,   399,     0,     0,     0,     0,     0,   240,   241,
+       0,     0,     0,     0,   212,     0,     0,   314,     0,   345,
+       0,   348,   349,   334,     0,     0,     0,     0,     0,     0,
+     363,     0,     0,   265,     0,     0,     0,   276,   255,     0,
+     302,   290,     0,     0,   177,   458,     0,     0,   463,     0,
+     466,   467,     0,     0,   474,   475,   476,     0,     0,   442,
+       0,     0,     0,   487,   489,     0,     0,     0,   203,   244,
+     279,     0,    43,     0,     0,   168,     0,     0,     0,     0,
+      47,   105,     0,   393,     0,   305,   325,   231,   233,   235,
+     239,   237,   352,     0,   320,    36,   322,   344,   347,   383,
+     373,   375,   377,   379,   381,   268,   140,   272,   270,   275,
+     299,   182,   184,   460,   462,   465,   470,   471,   469,   473,
+     479,   480,   481,   482,   483,   478,   485,    40,     0,   495,
+       0,   492,   494,     0,   126,   132,   134,   136,     0,     0,
+       0,     0,     0,   145,   147,   125,     0,   111,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+       0,   207,     0,   204,   205,   248,     0,   245,   246,   283,
+       0,   280,   281,   155,   156,     0,   151,   153,   154,     0,
+     163,   161,     0,   159,   162,   390,     0,   172,     0,   169,
+     170,     0,     0,     0,     0,     0,     0,     0,   187,   189,
+     190,   191,   192,   193,   194,   416,   422,     0,     0,     0,
+     415,   414,     0,   407,   409,   412,   410,   411,   413,   433,
+     435,     0,   429,   431,   432,     0,    49,     0,   397,   309,
+       0,   306,   307,   329,     0,   326,   327,   356,     0,   353,
+     354,   386,     0,    64,     0,     0,   491,    97,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   103,   105,     0,   197,     0,   247,   238,     0,
-     282,   273,     0,     0,   145,   160,     0,   153,     0,   384,
-       0,   162,     0,     0,     0,     0,     0,     0,     0,     0,
-     181,     0,     0,     0,     0,     0,     0,   401,     0,     0,
-       0,   423,   433,    51,     0,    50,   399,     0,   299,     0,
-       0,   319,     0,   355,   346,     0,     0,   380,     0,   488,
-       0,     0,     0,     0,   133,   136,   137,   138,   139,     0,
-       0,   107,     0,   201,     0,   242,     0,   277,   147,   155,
-     386,     0,   166,   190,   191,   192,   193,   194,   195,   183,
-       0,     0,   416,   419,   420,   403,     0,     0,   425,    48,
-       0,     0,   303,     0,   323,     0,   350,     0,     0,   123,
-     124,   125,   126,   122,   128,   130,   132,   141,   143,   203,
-     244,   279,   168,   413,   414,   415,   412,   418,   429,   431,
-      52,   305,   325,   352,   382,   494,     0,   492,     0,     0,
-     491,   506,     0,   504,   502,   498,     0,   496,   500,   501,
-     499,   493,     0,     0,     0,     0,   495,     0,   503,     0,
-     497,     0,   505,   510,     0,   508,     0,     0,   507,   514,
-       0,   512,   509,     0,     0,   511,     0,   513,   515
+     108,   110,     0,   202,     0,   252,   243,     0,   287,   278,
+       0,     0,   150,   165,     0,   158,     0,   389,     0,   167,
+       0,     0,     0,     0,     0,     0,     0,     0,   186,     0,
+       0,     0,     0,     0,     0,   406,     0,     0,     0,   428,
+     438,    51,     0,    50,   404,     0,   304,     0,     0,   324,
+       0,   360,   351,     0,     0,   385,     0,   493,     0,     0,
+       0,     0,   138,   141,   142,   143,   144,     0,     0,   112,
+       0,   206,     0,   247,     0,   282,   152,   160,   391,     0,
+     171,   195,   196,   197,   198,   199,   200,   188,     0,     0,
+     421,   424,   425,   408,     0,     0,   430,    48,     0,     0,
+     308,     0,   328,     0,   355,     0,     0,   128,   129,   130,
+     131,   127,   133,   135,   137,   146,   148,   208,   249,   284,
+     173,   418,   419,   420,   417,   423,   434,   436,    52,   310,
+     330,   357,   387,   499,     0,   497,     0,     0,   496,   511,
+       0,   509,   507,   503,     0,   501,   505,   506,   504,   498,
+       0,     0,     0,     0,   500,     0,   508,     0,   502,     0,
+     510,   515,     0,   513,     0,     0,   512,   519,     0,   517,
+     514,     0,     0,   516,     0,   518,   520
   };
 
   const short int
   Dhcp6Parser::yypgoto_[] =
   {
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,     7,  -486,    29,  -486,  -486,  -486,
-    -486,  -486,  -486,    45,  -486,  -169,  -486,  -486,  -486,   -62,
-    -486,  -486,  -486,   253,  -486,  -486,  -486,  -486,    39,   225,
-     -63,   -50,   -49,   -43,  -486,  -486,  -486,  -486,  -486,    51,
-    -486,  -486,  -486,  -486,  -486,    52,  -139,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,   -58,  -486,  -485,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -150,  -470,  -486,  -486,  -486,  -486,  -152,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -156,  -486,  -486,  -486,  -149,   181,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -159,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -134,  -486,
-    -486,  -486,  -131,   224,  -486,  -486,  -486,  -486,  -486,  -486,
-    -473,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -135,  -486,  -486,  -486,  -130,  -486,   198,  -486,   -59,  -486,
-    -486,  -486,  -486,  -486,   -57,  -486,  -486,  -486,  -486,  -486,
-     -48,  -486,  -486,  -486,  -136,  -486,  -486,  -486,  -129,  -486,
-     199,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -170,  -486,  -486,  -486,  -167,   227,  -486,  -486,   -66,
-    -486,  -486,  -486,  -486,  -486,  -166,  -486,  -486,  -486,  -163,
-     228,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -164,  -486,  -486,  -486,  -155,  -486,   231,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,    74,  -486,  -486,  -486,  -486,  -486,  -486,  -133,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -132,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-      84,   204,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,  -486,
-    -486,  -486,   -83,  -486,  -486,  -486,  -230,  -486,  -486,  -245,
-    -486,  -486,  -486,  -486,  -486,  -486,  -256,  -486,  -486,  -259,
-    -486
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,     9,  -494,    99,  -494,  -494,  -494,
+    -494,  -494,  -494,    22,  -494,  -171,  -494,  -494,  -494,   -62,
+    -494,  -494,  -494,   232,  -494,  -494,  -494,  -494,    55,   231,
+     -63,   -50,   -49,   -43,  -494,  -494,  -494,  -494,  -494,    56,
+     230,  -494,  -494,  -494,  -494,  -494,  -494,  -494,    51,  -137,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+     -58,  -494,  -493,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -147,  -479,  -494,  -494,  -494,  -494,  -149,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -154,  -494,  -494,
+    -494,  -151,   185,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -157,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -133,  -494,  -494,  -494,  -130,   226,  -494,  -494,  -494,
+    -494,  -494,  -494,  -483,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -132,  -494,  -494,  -494,  -131,  -494,   201,
+    -494,   -59,  -494,  -494,  -494,  -494,  -494,   -57,  -494,  -494,
+    -494,  -494,  -494,   -48,  -494,  -494,  -494,  -134,  -494,  -494,
+    -494,  -128,  -494,   217,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -166,  -494,  -494,  -494,  -161,   243,
+    -494,  -494,   -66,  -494,  -494,  -494,  -494,  -494,  -164,  -494,
+    -494,  -494,  -160,   244,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -155,  -494,  -494,  -494,  -162,
+    -494,   246,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,    77,  -494,  -494,  -494,  -494,  -494,
+    -494,  -142,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -124,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,    85,   219,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,  -494,
+    -494,  -494,  -494,  -494,  -494,   -80,  -494,  -494,  -494,  -231,
+    -494,  -494,  -246,  -494,  -494,  -494,  -494,  -494,  -494,  -249,
+    -494,  -494,  -255,  -494
   };
 
   const short int
   Dhcp6Parser::yydefgoto_[] =
   {
       -1,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    73,    35,    36,    61,   518,    77,
-      78,    37,    60,    74,    75,   503,   648,   724,   725,   112,
-      39,    62,    85,    86,    87,   287,    41,    63,   113,   114,
-     115,   116,   117,   118,   119,   120,   294,    43,    64,   137,
-     317,   121,   295,   122,   296,   568,   569,   570,   670,   793,
-     571,   671,   572,   672,   573,   673,   574,   217,   353,   576,
-     577,   578,   579,   580,   679,   581,   680,   123,   305,   597,
-     598,   599,   600,   124,   307,   604,   605,   606,   125,   306,
-     126,   309,   610,   611,   612,   700,    57,    71,   247,   248,
-     249,   365,   250,   366,   127,   310,   619,   620,   621,   622,
-     623,   624,   625,   626,   128,   302,   584,   585,   586,   684,
-      45,    65,   155,   156,   157,   322,   158,   323,   159,   324,
-     160,   328,   161,   327,   162,   163,   129,   303,   588,   589,
-     590,   687,    53,    69,   218,   219,   220,   221,   222,   223,
-     224,   352,   225,   356,   226,   355,   227,   228,   357,   229,
-     130,   304,   592,   593,   594,   690,    55,    70,   236,   237,
-     238,   239,   240,   361,   241,   242,   243,   165,   320,   652,
-     653,   654,   727,    47,    66,   173,   174,   175,   333,   176,
-     334,   166,   321,   656,   657,   658,   730,    49,    67,   185,
-     186,   187,   337,   188,   189,   339,   190,   191,   167,   329,
-     660,   661,   662,   733,    51,    68,   200,   201,   202,   203,
-     345,   204,   346,   205,   347,   206,   348,   207,   349,   208,
-     344,   168,   330,   664,   736,   131,   308,   608,   319,   420,
-     421,   422,   423,   424,   504,   132,   311,   634,   635,   636,
-     711,   806,   637,   638,   712,   639,   640,   133,   134,   313,
-     643,   644,   645,   718,   646,   719,   135,   314,    59,    72,
-     266,   267,   268,   269,   370,   270,   371,   271,   272,   373,
-     273,   274,   275,   376,   540,   276,   377,   277,   278,   279,
-     280,   381,   547,   281,   382,    88,   289,    89,   290,    90,
-     288,   552,   553,   554,   666,   816,   817,   818,   826,   827,
-     828,   829,   834,   830,   832,   844,   845,   846,   850,   851,
-     853
+      22,    23,    24,    25,    73,    35,    36,    61,   526,    77,
+      78,    37,    60,    74,    75,   511,   656,   732,   733,   112,
+      39,    62,    85,    86,    87,   291,    41,    63,   113,   114,
+     115,   116,   117,   118,   119,   120,   298,    43,    64,   138,
+     139,   140,   321,   141,   121,   299,   122,   300,   576,   577,
+     578,   678,   801,   579,   679,   580,   680,   581,   681,   582,
+     221,   359,   584,   585,   586,   587,   588,   687,   589,   688,
+     123,   309,   605,   606,   607,   608,   124,   311,   612,   613,
+     614,   125,   310,   126,   313,   618,   619,   620,   708,    57,
+      71,   251,   252,   253,   371,   254,   372,   127,   314,   627,
+     628,   629,   630,   631,   632,   633,   634,   128,   306,   592,
+     593,   594,   692,    45,    65,   159,   160,   161,   328,   162,
+     329,   163,   330,   164,   334,   165,   333,   166,   167,   129,
+     307,   596,   597,   598,   695,    53,    69,   222,   223,   224,
+     225,   226,   227,   228,   358,   229,   362,   230,   361,   231,
+     232,   363,   233,   130,   308,   600,   601,   602,   698,    55,
+      70,   240,   241,   242,   243,   244,   367,   245,   246,   247,
+     169,   326,   660,   661,   662,   735,    47,    66,   177,   178,
+     179,   339,   180,   340,   170,   327,   664,   665,   666,   738,
+      49,    67,   189,   190,   191,   343,   192,   193,   345,   194,
+     195,   171,   335,   668,   669,   670,   741,    51,    68,   204,
+     205,   206,   207,   351,   208,   352,   209,   353,   210,   354,
+     211,   355,   212,   350,   172,   336,   672,   744,   131,   312,
+     616,   325,   428,   429,   430,   431,   432,   512,   132,   315,
+     642,   643,   644,   719,   814,   645,   646,   720,   647,   648,
+     133,   134,   317,   651,   652,   653,   726,   654,   727,   135,
+     318,    59,    72,   270,   271,   272,   273,   376,   274,   377,
+     275,   276,   379,   277,   278,   279,   382,   548,   280,   383,
+     281,   282,   283,   284,   387,   555,   285,   388,    88,   293,
+      89,   294,    90,   292,   560,   561,   562,   674,   824,   825,
+     826,   834,   835,   836,   837,   842,   838,   840,   852,   853,
+     854,   858,   859,   861
   };
 
   const unsigned short int
   Dhcp6Parser::yytable_[] =
   {
-      84,   184,   151,   150,   171,   182,   198,   216,   232,   246,
-     265,   234,   233,   235,   633,   152,   153,   164,   172,   183,
-     199,    34,   154,   607,    27,   603,    28,    79,    29,   101,
-     138,   101,   210,   210,   230,   211,   212,   231,   595,   169,
-     244,   245,    91,   627,    92,    93,   170,   209,   244,   245,
-      26,   138,   561,    94,    95,    96,    97,   538,   539,   416,
-     101,    94,    95,    96,    97,    98,    99,   100,   101,   139,
-     210,   140,   211,   212,    38,   213,   214,   215,   141,   142,
-     143,   144,   145,   146,   693,   101,   292,   694,    76,   147,
-     148,   293,   102,   103,   104,   105,   149,   177,   178,   179,
-     180,   181,   170,   210,   136,   696,   106,   596,   697,   107,
-     147,    83,   542,   543,   544,   545,   108,   628,   629,   630,
-     631,   315,   331,    40,   109,   110,   316,   332,   111,    42,
-     335,    83,   342,    83,    83,   336,    80,   343,    44,   546,
-     556,   101,    81,    82,    46,   557,   558,   559,   560,   561,
-     562,   563,   564,   565,   566,    48,    83,    50,    30,    31,
-      32,    33,    83,   210,   367,   595,   602,    83,   192,   368,
-      83,    83,   193,   194,   195,   196,   197,   613,   614,   615,
-     616,   617,   618,   803,   804,   805,   821,    83,   822,   823,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    52,    54,    83,   251,   252,   253,   254,   255,
-     256,   257,   258,   259,   260,   261,   262,   263,   264,   383,
-      56,    58,   315,   667,   384,   760,   603,   665,   668,   681,
-      84,   633,   681,   709,   682,   716,   720,   683,   710,   383,
-     717,   721,   331,    83,   722,   367,    83,   799,   335,   342,
-     802,   835,   283,   811,   812,   854,   836,   417,   284,   698,
-     855,   418,   699,   819,    83,   282,   820,   847,   151,   150,
-     848,   419,   286,   171,   641,   642,   184,   521,   522,   523,
-     182,   152,   153,   164,   285,   291,   297,   172,   154,   198,
-     385,   386,   298,   299,   183,   300,   387,   301,   216,   312,
-     396,   325,   232,   199,   318,   234,   233,   235,   789,   790,
-     791,   792,   326,   338,   340,   341,   351,   397,   354,   358,
-     350,   265,   360,   364,   359,   362,   363,   369,   372,   374,
-     375,   378,   379,   380,   388,   389,   390,   391,   393,   394,
-     395,   398,   399,   400,   401,   402,   403,   404,   405,   406,
-     407,   408,   409,   410,   412,   411,   413,   415,   425,   426,
-     427,   428,   429,   430,   431,   432,   433,   434,   435,   437,
-     438,   440,   442,   446,   441,   443,   447,   444,   448,   449,
-     450,   451,   453,   454,   455,   456,   457,   458,   461,   459,
-     464,   465,   462,   467,   468,   469,   471,   485,   486,   474,
-     475,   470,   472,   473,   479,   480,   482,   476,   477,   478,
-     483,   484,   487,   488,   489,   490,   491,   492,   493,   494,
-     495,   496,   497,   506,   502,   498,   567,   567,   499,   500,
-     575,   575,   501,   507,   505,   508,   514,   632,   509,   265,
-     510,   511,   512,   513,   417,   515,   516,    28,   418,   583,
-     587,   591,   609,   649,   651,   655,   519,   659,   419,   669,
-     674,   520,   675,   676,   677,   678,   686,   517,   685,   689,
-     688,   691,   534,   663,   692,   695,   524,   525,   526,   701,
-     702,   728,   703,   704,   705,   706,   707,   708,   713,   549,
-     527,   714,   715,   729,   732,   731,   735,   788,   528,   529,
-     734,   738,   740,   737,   741,   742,   743,   541,   749,   530,
-     531,   750,   532,   770,   771,   776,   777,   551,   780,   533,
-     779,   787,   550,   815,   535,   841,   800,   536,   537,   801,
-     813,   833,   837,   548,   839,   856,   843,   723,   555,   601,
-     414,   582,   751,   758,   759,   392,   762,   726,   466,   744,
-     769,   761,   753,   752,   755,   436,   757,   754,   460,   782,
-     781,   756,   439,   463,   746,   745,   784,   783,   794,   747,
-     445,   786,   748,   763,   764,   765,   766,   767,   785,   768,
-     650,   772,   452,   775,   739,   647,   773,   481,   778,   831,
-     840,   852,   774,   795,   796,   857,   797,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   798,   807,     0,   808,
-       0,   809,     0,   810,     0,   814,     0,     0,   849,   567,
-       0,   151,   150,   575,   842,   216,   838,     0,   232,     0,
-       0,   234,   233,   235,   152,   153,   164,     0,   246,     0,
-       0,   154,   858,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   632,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   184,   171,     0,     0,   182,     0,
-       0,   198,     0,     0,     0,     0,     0,     0,     0,   172,
-       0,     0,   183,     0,     0,   199,     0,     0,     0,     0,
+      84,   188,   155,   154,   175,   186,   202,   220,   236,   250,
+     269,   238,   237,   239,   641,   156,   157,   168,   176,   187,
+     203,   615,   158,    34,   611,    27,   142,    28,    79,    29,
+      38,   603,   701,   704,   296,   702,   705,   101,    91,   297,
+     635,    92,    93,   319,   213,   142,    26,   173,   320,   569,
+      94,    95,    96,    97,   174,   101,   214,   101,    94,    95,
+      96,    97,    98,    99,   100,   101,   143,   214,   144,   215,
+     216,    40,   217,   218,   219,   145,   146,   147,   148,   149,
+     150,   706,   101,   424,   707,    76,   151,   152,   214,   102,
+     103,   104,   105,   153,   181,   182,   183,   184,   185,   174,
+     604,   827,   286,   106,   828,   151,   107,   214,   234,   215,
+     216,   235,   287,   108,   636,   637,   638,   639,   248,   249,
+     101,   109,   110,   564,   855,   111,    42,   856,   565,   566,
+     567,   568,   569,   570,   571,   572,   573,   574,    80,    83,
+     811,   812,   813,   323,    81,    82,   214,   196,   324,   136,
+     137,   197,   198,   199,   200,   201,    44,    83,    83,    83,
+      30,    31,    32,    33,    83,   337,    46,    83,    83,   289,
+     338,   829,    48,   830,   831,   621,   622,   623,   624,   625,
+     626,    83,   248,   249,    83,   550,   551,   552,   553,    83,
+      50,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,   268,   341,   348,    52,    83,   373,
+     342,   349,   554,   389,   374,   319,   675,   290,   390,   323,
+     673,   676,    83,   768,   677,   611,   546,   547,   689,    54,
+     689,   641,    83,   690,    84,   691,   717,   724,   728,   389,
+     337,   718,   725,   729,   730,   807,    56,    83,     1,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+     373,   341,    58,   425,   348,   810,   819,   426,   843,   820,
+     288,   862,   356,   844,   155,   154,   863,   427,   295,   175,
+     603,   610,   188,   529,   530,   531,   186,   156,   157,   168,
+     649,   650,   301,   176,   158,   202,   391,   392,   302,   303,
+     187,   365,   304,   305,   220,   316,   322,   331,   236,   203,
+     332,   238,   237,   239,   797,   798,   799,   800,   344,   346,
+     347,   357,   393,   360,   364,   366,   370,   269,   368,   369,
+     375,   378,   380,   381,   384,   385,   386,   394,   395,   396,
+     397,   399,   400,   401,   407,   402,   403,   408,   404,   405,
+     409,   410,   406,   411,   412,   413,   414,   415,   416,   417,
+     418,   419,   421,   422,   433,   434,   435,   436,   437,   438,
+     440,   441,   439,   442,   443,   445,   446,   448,   450,   449,
+     454,   451,   452,   455,   456,   457,   458,   459,   461,   462,
+     463,   464,   465,   466,   467,   469,   470,   472,   473,   475,
+     476,   477,   479,   478,   480,   493,   494,   482,   481,   483,
+     487,   488,   484,   485,   486,   490,   491,   492,   514,   495,
+     496,   497,   498,   499,   500,   501,   502,   503,   504,   505,
+     517,   518,   506,   507,   575,   575,   508,   509,   583,   583,
+     510,   513,   515,   516,   519,   640,   522,   269,   520,   521,
+     523,   524,   425,    28,   591,   595,   426,   527,   599,   617,
+     657,   659,   663,   559,   667,   528,   427,   682,   683,   684,
+     685,   686,   694,   796,   549,   671,   693,   696,   697,   699,
+     700,   532,   542,   711,   533,   534,   703,   709,   535,   710,
+     736,   712,   713,   714,   715,   536,   716,   721,   722,   557,
+     723,   737,   740,   739,   743,   537,   742,   746,   538,   748,
+     745,   749,   750,   751,   757,   539,   758,   540,   541,   778,
+     779,   784,   785,   788,   609,   787,   543,   795,   398,   808,
+     544,   823,   545,   809,   821,   556,   841,   845,   847,   731,
+     849,   734,   864,   752,   851,   525,   558,   753,   590,   754,
+     420,   563,   759,   423,   766,   767,   770,   769,   474,   755,
+     777,   761,   760,   444,   762,   763,   765,   468,   756,   771,
+     764,   790,   772,   773,   789,   774,   792,   775,   791,   793,
+     776,   780,   783,   781,   447,   782,   846,   471,   794,   802,
+     803,   658,   453,   804,   655,   747,   839,   848,   805,   806,
+     815,   816,   817,   460,   786,   857,   860,   865,   489,     0,
+       0,     0,   818,     0,   822,     0,   850,     0,   866,     0,
+       0,     0,     0,     0,     0,     0,     0,   575,     0,   155,
+     154,   583,     0,   220,     0,     0,   236,     0,     0,   238,
+     237,   239,   156,   157,   168,     0,   250,     0,     0,   158,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   640,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   188,   175,     0,     0,   186,     0,     0,   202,
+       0,     0,     0,     0,     0,     0,     0,   176,     0,     0,
+     187,     0,     0,   203,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   824,     0,     0,     0,
-     825,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   824,     0,     0,     0,   825
+       0,     0,     0,     0,   832,     0,     0,     0,   833,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   832,     0,     0,     0,   833
   };
 
   const short int
   Dhcp6Parser::yycheck_[] =
   {
       62,    67,    65,    65,    66,    67,    68,    69,    70,    71,
-      72,    70,    70,    70,   499,    65,    65,    65,    66,    67,
-      68,    14,    65,   496,     5,   495,     7,    10,     9,    37,
-       7,    37,    38,    38,    39,    40,    41,    42,    70,    47,
-      76,    77,    11,    15,    13,    14,    54,    15,    76,    77,
-       0,     7,    24,    30,    31,    32,    33,   112,   113,    65,
-      37,    30,    31,    32,    33,    34,    35,    36,    37,    46,
-      38,    48,    40,    41,     7,    43,    44,    45,    55,    56,
-      57,    58,    59,    60,     3,    37,     3,     6,   139,    66,
-      67,     8,    61,    62,    63,    64,    73,    49,    50,    51,
-      52,    53,    54,    38,    12,     3,    75,   139,     6,    78,
-      66,   139,   115,   116,   117,   118,    85,    89,    90,    91,
-      92,     3,     3,     7,    93,    94,     8,     8,    97,     7,
-       3,   139,     3,   139,   139,     8,   119,     8,     7,   142,
-      15,    37,   125,   126,     7,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,     7,   139,     7,   139,   140,
-     141,   142,   139,    38,     3,    70,    71,   139,    64,     8,
-     139,   139,    68,    69,    70,    71,    72,    79,    80,    81,
-      82,    83,    84,    86,    87,    88,   121,   139,   123,   124,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,     7,     7,   139,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   111,     3,
-       7,     7,     3,     3,     8,   698,   696,     8,     8,     3,
-     292,   716,     3,     3,     8,     3,     3,     8,     8,     3,
-       8,     8,     3,   139,     8,     3,   139,     8,     3,     3,
-       8,     3,     3,     8,     8,     3,     8,   319,     4,     3,
-       8,   319,     6,     3,   139,     6,     6,     3,   331,   331,
-       6,   319,     3,   335,    95,    96,   342,   446,   447,   448,
-     342,   331,   331,   331,     8,     4,     4,   335,   331,   351,
-     283,   284,     4,     4,   342,     4,   139,     4,   360,     4,
-     140,     4,   364,   351,     8,   364,   364,   364,    16,    17,
-      18,    19,     4,     4,     4,     4,     3,   140,     4,     4,
-       8,   383,     3,     3,     8,     4,     8,     4,     4,     4,
+      72,    70,    70,    70,   507,    65,    65,    65,    66,    67,
+      68,   504,    65,    14,   503,     5,     7,     7,    10,     9,
+       7,    71,     3,     3,     3,     6,     6,    38,    11,     8,
+      16,    14,    15,     3,    16,     7,     0,    48,     8,    25,
+      31,    32,    33,    34,    55,    38,    39,    38,    31,    32,
+      33,    34,    35,    36,    37,    38,    47,    39,    49,    41,
+      42,     7,    44,    45,    46,    56,    57,    58,    59,    60,
+      61,     3,    38,    66,     6,   140,    67,    68,    39,    62,
+      63,    64,    65,    74,    50,    51,    52,    53,    54,    55,
+     140,     3,     6,    76,     6,    67,    79,    39,    40,    41,
+      42,    43,     3,    86,    90,    91,    92,    93,    77,    78,
+      38,    94,    95,    16,     3,    98,     7,     6,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,   120,   140,
+      87,    88,    89,     3,   126,   127,    39,    65,     8,    12,
+      13,    69,    70,    71,    72,    73,     7,   140,   140,   140,
+     140,   141,   142,   143,   140,     3,     7,   140,   140,     8,
+       8,   122,     7,   124,   125,    80,    81,    82,    83,    84,
+      85,   140,    77,    78,   140,   116,   117,   118,   119,   140,
+       7,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,     3,     3,     7,   140,     3,
+       8,     8,   143,     3,     8,     3,     3,     3,     8,     3,
+       8,     8,   140,   706,     8,   704,   113,   114,     3,     7,
+       3,   724,   140,     8,   296,     8,     3,     3,     3,     3,
+       3,     8,     8,     8,     8,     8,     7,   140,   128,   129,
+     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+       3,     3,     7,   325,     3,     8,     8,   325,     3,     8,
+       4,     3,     8,     8,   337,   337,     8,   325,     4,   341,
+      71,    72,   348,   454,   455,   456,   348,   337,   337,   337,
+      96,    97,     4,   341,   337,   357,   287,   288,     4,     4,
+     348,     8,     4,     4,   366,     4,     4,     4,   370,   357,
+       4,   370,   370,   370,    17,    18,    19,    20,     4,     4,
+       4,     3,   140,     4,     4,     3,     3,   389,     4,     8,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,   140,   140,   140,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,   140,     4,     4,     4,     4,
-       4,     4,     4,   140,   142,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,   140,   140,     4,   140,     4,     4,
-       4,     4,     4,     4,   140,     4,     4,     4,     4,   142,
-       4,     4,   142,   142,     4,     4,     4,   390,   391,     4,
-       4,   140,   140,   140,     4,     4,     4,   142,   142,   142,
-       7,     7,     7,     7,     7,     5,     5,     5,     5,     5,
-       5,     5,     5,     3,     5,     7,   488,   489,     7,     7,
-     488,   489,     7,     5,     8,     5,     5,   499,   139,   501,
-     139,   139,   139,   139,   506,     7,   139,     7,   506,     7,
-       7,     7,     7,     4,     7,     7,   139,     7,   506,     8,
-       4,   139,     4,     4,     4,     4,     3,   438,     6,     3,
-       6,     6,   465,    74,     3,     6,   139,   139,   139,     6,
-       3,     6,     4,     4,     4,     4,     4,     4,     4,   482,
-     139,     4,     4,     3,     3,     6,     3,     5,   139,   139,
-       6,     4,     4,     8,     4,     4,     4,   114,     4,   139,
-     139,     4,   139,     4,     4,     4,     4,   120,     3,   139,
-       6,     4,   483,     7,   139,     5,     8,   139,   139,     8,
-       8,     4,     4,   139,     4,     4,     7,   139,   487,   494,
-     315,   489,   681,   693,   696,   292,   702,   139,   367,   140,
-     709,   700,   686,   684,   689,   331,   692,   687,   360,   729,
-     727,   690,   335,   364,   140,   142,   732,   730,   139,   142,
-     342,   735,   140,   140,   140,   140,   140,   140,   733,   140,
-     506,   140,   351,   716,   667,   501,   140,   383,   720,   819,
-     835,   847,   140,   139,   139,   854,   139,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   139,   139,    -1,   139,
-      -1,   139,    -1,   139,    -1,   139,    -1,    -1,   122,   681,
-      -1,   684,   684,   681,   139,   687,   140,    -1,   690,    -1,
-      -1,   690,   690,   690,   684,   684,   684,    -1,   700,    -1,
-      -1,   684,   139,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   716,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   730,   727,    -1,    -1,   730,    -1,
-      -1,   733,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   727,
-      -1,    -1,   730,    -1,    -1,   733,    -1,    -1,    -1,    -1,
+       4,     4,     4,     4,     4,   141,   141,     4,   141,   141,
+       4,     4,   141,     4,     4,     4,     4,     4,     4,   141,
+       4,     4,     4,   143,     4,     4,     4,     4,     4,   141,
+       4,     4,   143,     4,     4,     4,     4,     4,     4,   141,
+       4,   141,   141,     4,     4,     4,     4,     4,     4,     4,
+     141,     4,     4,     4,   143,     4,   143,     4,     4,   143,
+       4,     4,     4,   141,   141,   396,   397,     4,   141,     4,
+       4,     4,   143,   143,   143,     4,     7,     7,     3,     7,
+       7,     7,     5,     5,     5,     5,     5,     5,     5,     5,
+     140,   140,     7,     7,   496,   497,     7,     7,   496,   497,
+       5,     8,     5,     5,   140,   507,     5,   509,   140,   140,
+       7,   140,   514,     7,     7,     7,   514,   140,     7,     7,
+       4,     7,     7,   121,     7,   140,   514,     4,     4,     4,
+       4,     4,     3,     5,   115,    75,     6,     6,     3,     6,
+       3,   140,   473,     4,   140,   140,     6,     6,   140,     3,
+       6,     4,     4,     4,     4,   140,     4,     4,     4,   490,
+       4,     3,     3,     6,     3,   140,     6,     4,   140,     4,
+       8,     4,     4,     4,     4,   140,     4,   140,   140,     4,
+       4,     4,     4,     3,   502,     6,   140,     4,   296,     8,
+     140,     7,   140,     8,     8,   140,     4,     4,     4,   140,
+       5,   140,     4,   141,     7,   446,   491,   143,   497,   141,
+     319,   495,   689,   323,   701,   704,   710,   708,   373,   143,
+     717,   694,   692,   337,   695,   697,   700,   366,   141,   141,
+     698,   737,   141,   141,   735,   141,   740,   141,   738,   741,
+     141,   141,   724,   141,   341,   141,   141,   370,   743,   140,
+     140,   514,   348,   140,   509,   675,   827,   843,   140,   140,
+     140,   140,   140,   357,   728,   123,   855,   862,   389,    -1,
+      -1,    -1,   140,    -1,   140,    -1,   140,    -1,   140,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   689,    -1,   692,
+     692,   689,    -1,   695,    -1,    -1,   698,    -1,    -1,   698,
+     698,   698,   692,   692,   692,    -1,   708,    -1,    -1,   692,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   724,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   738,   735,    -1,    -1,   738,    -1,    -1,   741,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   735,    -1,    -1,
+     738,    -1,    -1,   741,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   818,    -1,    -1,    -1,
-     818,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   835,    -1,    -1,    -1,   835
+      -1,    -1,    -1,    -1,   826,    -1,    -1,    -1,   826,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   843,    -1,    -1,    -1,   843
   };
 
   const unsigned short int
   Dhcp6Parser::yystos_[] =
   {
-       0,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,     0,     5,     7,     9,
-     139,   140,   141,   142,   157,   158,   159,   164,     7,   173,
-       7,   179,     7,   190,     7,   263,     7,   326,     7,   340,
-       7,   357,     7,   285,     7,   309,     7,   239,     7,   411,
-     165,   160,   174,   180,   191,   264,   327,   341,   358,   286,
-     310,   240,   412,   157,   166,   167,   139,   162,   163,    10,
-     119,   125,   126,   139,   172,   175,   176,   177,   438,   440,
-     442,    11,    13,    14,    30,    31,    32,    33,    34,    35,
-      36,    37,    61,    62,    63,    64,    75,    78,    85,    93,
-      94,    97,   172,   181,   182,   183,   184,   185,   186,   187,
-     188,   194,   196,   220,   226,   231,   233,   247,   257,   279,
-     303,   378,   388,   400,   401,   409,    12,   192,     7,    46,
-      48,    55,    56,    57,    58,    59,    60,    66,    67,    73,
-     172,   183,   184,   185,   186,   265,   266,   267,   269,   271,
-     273,   275,   277,   278,   303,   320,   334,   351,   374,    47,
-      54,   172,   303,   328,   329,   330,   332,    49,    50,    51,
-      52,    53,   172,   303,   332,   342,   343,   344,   346,   347,
-     349,   350,    64,    68,    69,    70,    71,    72,   172,   303,
-     359,   360,   361,   362,   364,   366,   368,   370,   372,    15,
-      38,    40,    41,    43,    44,    45,   172,   210,   287,   288,
-     289,   290,   291,   292,   293,   295,   297,   299,   300,   302,
-      39,    42,   172,   210,   291,   297,   311,   312,   313,   314,
-     315,   317,   318,   319,    76,    77,   172,   241,   242,   243,
-     245,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   108,   109,   110,   111,   172,   413,   414,   415,   416,
-     418,   420,   421,   423,   424,   425,   428,   430,   431,   432,
-     433,   436,     6,     3,     4,     8,     3,   178,   443,   439,
-     441,     4,     3,     8,   189,   195,   197,     4,     4,     4,
-       4,     4,   258,   280,   304,   221,   232,   227,   379,   234,
-     248,   389,     4,   402,   410,     3,     8,   193,     8,   381,
-     321,   335,   268,   270,   272,     4,     4,   276,   274,   352,
-     375,     3,     8,   331,   333,     3,     8,   345,     4,   348,
-       4,     4,     3,     8,   373,   363,   365,   367,   369,   371,
-       8,     3,   294,   211,     4,   298,   296,   301,     4,     8,
-       3,   316,     4,     8,     3,   244,   246,     3,     8,     4,
-     417,   419,     4,   422,     4,     4,   426,   429,     4,     4,
-       4,   434,   437,     3,     8,   157,   157,   139,     4,     4,
-       4,     4,   176,     4,     4,     4,   140,   140,   140,   140,
-     140,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,   140,     4,     4,   182,     4,    65,   172,   210,   303,
-     382,   383,   384,   385,   386,     4,     4,     4,     4,     4,
-     140,   142,     4,     4,     4,     4,   266,     4,     4,   329,
-       4,   140,     4,   140,   140,   343,     4,     4,     4,     4,
-       4,     4,   361,     4,     4,   140,     4,     4,     4,   142,
-     289,     4,   142,   313,     4,     4,   242,   142,     4,     4,
-     140,     4,   140,   140,     4,     4,   142,   142,   142,     4,
-       4,   414,     4,     7,     7,   157,   157,     7,     7,     7,
-       5,     5,     5,     5,     5,     5,     5,     5,     7,     7,
-       7,     7,     5,   168,   387,     8,     3,     5,     5,   139,
-     139,   139,   139,   139,     5,     7,   139,   159,   161,   139,
-     139,   168,   168,   168,   139,   139,   139,   139,   139,   139,
-     139,   139,   139,   139,   157,   139,   139,   139,   112,   113,
-     427,   114,   115,   116,   117,   118,   142,   435,   139,   157,
-     181,   120,   444,   445,   446,   192,    15,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,   172,   198,   199,
-     200,   203,   205,   207,   209,   210,   212,   213,   214,   215,
-     216,   218,   198,     7,   259,   260,   261,     7,   281,   282,
-     283,     7,   305,   306,   307,    70,   139,   222,   223,   224,
-     225,   166,    71,   224,   228,   229,   230,   273,   380,     7,
-     235,   236,   237,    79,    80,    81,    82,    83,    84,   249,
-     250,   251,   252,   253,   254,   255,   256,    15,    89,    90,
-      91,    92,   172,   212,   390,   391,   392,   395,   396,   398,
-     399,    95,    96,   403,   404,   405,   407,   413,   169,     4,
-     384,     7,   322,   323,   324,     7,   336,   337,   338,     7,
-     353,   354,   355,    74,   376,     8,   447,     3,     8,     8,
-     201,   204,   206,   208,     4,     4,     4,     4,     4,   217,
-     219,     3,     8,     8,   262,     6,     3,   284,     6,     3,
-     308,     6,     3,     3,     6,     6,     3,     6,     3,     6,
-     238,     6,     3,     4,     4,     4,     4,     4,     4,     3,
-       8,   393,   397,     4,     4,     4,     3,     8,   406,   408,
-       3,     8,     8,   139,   170,   171,   139,   325,     6,     3,
-     339,     6,     3,   356,     6,     3,   377,     8,     4,   445,
-       4,     4,     4,     4,   140,   142,   140,   142,   140,     4,
-       4,   199,   265,   261,   287,   283,   311,   307,   223,   229,
-     273,   241,   237,   140,   140,   140,   140,   140,   140,   250,
-       4,     4,   140,   140,   140,   391,     4,     4,   404,     6,
-       3,   328,   324,   342,   338,   359,   355,     4,     5,    16,
-      17,    18,    19,   202,   139,   139,   139,   139,   139,     8,
-       8,     8,     8,    86,    87,    88,   394,   139,   139,   139,
-     139,     8,     8,     8,   139,     7,   448,   449,   450,     3,
-       6,   121,   123,   124,   172,   210,   451,   452,   453,   454,
-     456,   449,   457,     4,   455,     3,     8,     4,   140,     4,
-     452,     5,   139,     7,   458,   459,   460,     3,     6,   122,
-     461,   462,   459,   463,     3,     8,     4,   462,   139
+       0,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,   156,   157,     0,     5,     7,     9,
+     140,   141,   142,   143,   158,   159,   160,   165,     7,   174,
+       7,   180,     7,   191,     7,   267,     7,   330,     7,   344,
+       7,   361,     7,   289,     7,   313,     7,   243,     7,   415,
+     166,   161,   175,   181,   192,   268,   331,   345,   362,   290,
+     314,   244,   416,   158,   167,   168,   140,   163,   164,    10,
+     120,   126,   127,   140,   173,   176,   177,   178,   442,   444,
+     446,    11,    14,    15,    31,    32,    33,    34,    35,    36,
+      37,    38,    62,    63,    64,    65,    76,    79,    86,    94,
+      95,    98,   173,   182,   183,   184,   185,   186,   187,   188,
+     189,   198,   200,   224,   230,   235,   237,   251,   261,   283,
+     307,   382,   392,   404,   405,   413,    12,    13,   193,   194,
+     195,   197,     7,    47,    49,    56,    57,    58,    59,    60,
+      61,    67,    68,    74,   173,   184,   185,   186,   187,   269,
+     270,   271,   273,   275,   277,   279,   281,   282,   307,   324,
+     338,   355,   378,    48,    55,   173,   307,   332,   333,   334,
+     336,    50,    51,    52,    53,    54,   173,   307,   336,   346,
+     347,   348,   350,   351,   353,   354,    65,    69,    70,    71,
+      72,    73,   173,   307,   363,   364,   365,   366,   368,   370,
+     372,   374,   376,    16,    39,    41,    42,    44,    45,    46,
+     173,   214,   291,   292,   293,   294,   295,   296,   297,   299,
+     301,   303,   304,   306,    40,    43,   173,   214,   295,   301,
+     315,   316,   317,   318,   319,   321,   322,   323,    77,    78,
+     173,   245,   246,   247,   249,    99,   100,   101,   102,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,   112,   173,
+     417,   418,   419,   420,   422,   424,   425,   427,   428,   429,
+     432,   434,   435,   436,   437,   440,     6,     3,     4,     8,
+       3,   179,   447,   443,   445,     4,     3,     8,   190,   199,
+     201,     4,     4,     4,     4,     4,   262,   284,   308,   225,
+     236,   231,   383,   238,   252,   393,     4,   406,   414,     3,
+       8,   196,     4,     3,     8,   385,   325,   339,   272,   274,
+     276,     4,     4,   280,   278,   356,   379,     3,     8,   335,
+     337,     3,     8,   349,     4,   352,     4,     4,     3,     8,
+     377,   367,   369,   371,   373,   375,     8,     3,   298,   215,
+       4,   302,   300,   305,     4,     8,     3,   320,     4,     8,
+       3,   248,   250,     3,     8,     4,   421,   423,     4,   426,
+       4,     4,   430,   433,     4,     4,     4,   438,   441,     3,
+       8,   158,   158,   140,     4,     4,     4,     4,   177,     4,
+       4,     4,   141,   141,   141,   141,   141,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,   141,     4,     4,
+     183,     4,   143,   194,    66,   173,   214,   307,   386,   387,
+     388,   389,   390,     4,     4,     4,     4,     4,   141,   143,
+       4,     4,     4,     4,   270,     4,     4,   333,     4,   141,
+       4,   141,   141,   347,     4,     4,     4,     4,     4,     4,
+     365,     4,     4,   141,     4,     4,     4,   143,   293,     4,
+     143,   317,     4,     4,   246,   143,     4,     4,   141,     4,
+     141,   141,     4,     4,   143,   143,   143,     4,     4,   418,
+       4,     7,     7,   158,   158,     7,     7,     7,     5,     5,
+       5,     5,     5,     5,     5,     5,     7,     7,     7,     7,
+       5,   169,   391,     8,     3,     5,     5,   140,   140,   140,
+     140,   140,     5,     7,   140,   160,   162,   140,   140,   169,
+     169,   169,   140,   140,   140,   140,   140,   140,   140,   140,
+     140,   140,   158,   140,   140,   140,   113,   114,   431,   115,
+     116,   117,   118,   119,   143,   439,   140,   158,   182,   121,
+     448,   449,   450,   193,    16,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,   173,   202,   203,   204,   207,
+     209,   211,   213,   214,   216,   217,   218,   219,   220,   222,
+     202,     7,   263,   264,   265,     7,   285,   286,   287,     7,
+     309,   310,   311,    71,   140,   226,   227,   228,   229,   167,
+      72,   228,   232,   233,   234,   277,   384,     7,   239,   240,
+     241,    80,    81,    82,    83,    84,    85,   253,   254,   255,
+     256,   257,   258,   259,   260,    16,    90,    91,    92,    93,
+     173,   216,   394,   395,   396,   399,   400,   402,   403,    96,
+      97,   407,   408,   409,   411,   417,   170,     4,   388,     7,
+     326,   327,   328,     7,   340,   341,   342,     7,   357,   358,
+     359,    75,   380,     8,   451,     3,     8,     8,   205,   208,
+     210,   212,     4,     4,     4,     4,     4,   221,   223,     3,
+       8,     8,   266,     6,     3,   288,     6,     3,   312,     6,
+       3,     3,     6,     6,     3,     6,     3,     6,   242,     6,
+       3,     4,     4,     4,     4,     4,     4,     3,     8,   397,
+     401,     4,     4,     4,     3,     8,   410,   412,     3,     8,
+       8,   140,   171,   172,   140,   329,     6,     3,   343,     6,
+       3,   360,     6,     3,   381,     8,     4,   449,     4,     4,
+       4,     4,   141,   143,   141,   143,   141,     4,     4,   203,
+     269,   265,   291,   287,   315,   311,   227,   233,   277,   245,
+     241,   141,   141,   141,   141,   141,   141,   254,     4,     4,
+     141,   141,   141,   395,     4,     4,   408,     6,     3,   332,
+     328,   346,   342,   363,   359,     4,     5,    17,    18,    19,
+      20,   206,   140,   140,   140,   140,   140,     8,     8,     8,
+       8,    87,    88,    89,   398,   140,   140,   140,   140,     8,
+       8,     8,   140,     7,   452,   453,   454,     3,     6,   122,
+     124,   125,   173,   214,   455,   456,   457,   458,   460,   453,
+     461,     4,   459,     3,     8,     4,   141,     4,   456,     5,
+     140,     7,   462,   463,   464,     3,     6,   123,   465,   466,
+     463,   467,     3,     8,     4,   466,   140
   };
 
   const unsigned short int
   Dhcp6Parser::yyr1_[] =
   {
-       0,   143,   145,   144,   146,   144,   147,   144,   148,   144,
-     149,   144,   150,   144,   151,   144,   152,   144,   153,   144,
-     154,   144,   155,   144,   156,   144,   157,   157,   157,   157,
-     157,   157,   157,   158,   160,   159,   161,   162,   162,   163,
-     163,   165,   164,   166,   166,   167,   167,   169,   168,   170,
-     170,   171,   171,   172,   174,   173,   175,   175,   176,   176,
-     176,   176,   176,   178,   177,   180,   179,   181,   181,   182,
-     182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
-     182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
-     182,   183,   184,   185,   186,   187,   189,   188,   191,   190,
-     193,   192,   195,   194,   197,   196,   198,   198,   199,   199,
-     199,   199,   199,   199,   199,   199,   199,   199,   199,   199,
-     199,   201,   200,   202,   202,   202,   202,   204,   203,   206,
-     205,   208,   207,   209,   211,   210,   212,   213,   214,   215,
-     217,   216,   219,   218,   221,   220,   222,   222,   223,   223,
-     224,   225,   227,   226,   228,   228,   229,   229,   230,   232,
-     231,   234,   233,   235,   235,   236,   236,   238,   237,   240,
-     239,   241,   241,   241,   242,   242,   244,   243,   246,   245,
-     248,   247,   249,   249,   250,   250,   250,   250,   250,   250,
-     251,   252,   253,   254,   255,   256,   258,   257,   259,   259,
-     260,   260,   262,   261,   264,   263,   265,   265,   266,   266,
-     266,   266,   266,   266,   266,   266,   266,   266,   266,   266,
-     266,   266,   266,   266,   266,   268,   267,   270,   269,   272,
-     271,   274,   273,   276,   275,   277,   278,   280,   279,   281,
-     281,   282,   282,   284,   283,   286,   285,   287,   287,   288,
-     288,   289,   289,   289,   289,   289,   289,   289,   289,   290,
-     291,   292,   294,   293,   296,   295,   298,   297,   299,   301,
-     300,   302,   304,   303,   305,   305,   306,   306,   308,   307,
-     310,   309,   311,   311,   312,   312,   313,   313,   313,   313,
-     313,   313,   314,   316,   315,   317,   318,   319,   321,   320,
-     322,   322,   323,   323,   325,   324,   327,   326,   328,   328,
-     329,   329,   329,   329,   331,   330,   333,   332,   335,   334,
-     336,   336,   337,   337,   339,   338,   341,   340,   342,   342,
-     343,   343,   343,   343,   343,   343,   343,   343,   345,   344,
-     346,   348,   347,   349,   350,   352,   351,   353,   353,   354,
-     354,   356,   355,   358,   357,   359,   359,   360,   360,   361,
-     361,   361,   361,   361,   361,   361,   361,   363,   362,   365,
-     364,   367,   366,   369,   368,   371,   370,   373,   372,   375,
-     374,   377,   376,   379,   378,   380,   380,   381,   273,   382,
-     382,   383,   383,   384,   384,   384,   384,   385,   387,   386,
-     389,   388,   390,   390,   391,   391,   391,   391,   391,   391,
-     391,   393,   392,   394,   394,   394,   395,   397,   396,   398,
-     399,   400,   402,   401,   403,   403,   404,   404,   406,   405,
-     408,   407,   410,   409,   412,   411,   413,   413,   414,   414,
-     414,   414,   414,   414,   414,   414,   414,   414,   414,   414,
-     414,   414,   414,   415,   417,   416,   419,   418,   420,   422,
-     421,   423,   424,   426,   425,   427,   427,   429,   428,   430,
-     431,   432,   434,   433,   435,   435,   435,   435,   435,   437,
-     436,   439,   438,   441,   440,   443,   442,   444,   444,   445,
-     447,   446,   448,   448,   450,   449,   451,   451,   452,   452,
-     452,   452,   452,   453,   455,   454,   457,   456,   458,   458,
-     460,   459,   461,   461,   463,   462
+       0,   144,   146,   145,   147,   145,   148,   145,   149,   145,
+     150,   145,   151,   145,   152,   145,   153,   145,   154,   145,
+     155,   145,   156,   145,   157,   145,   158,   158,   158,   158,
+     158,   158,   158,   159,   161,   160,   162,   163,   163,   164,
+     164,   166,   165,   167,   167,   168,   168,   170,   169,   171,
+     171,   172,   172,   173,   175,   174,   176,   176,   177,   177,
+     177,   177,   177,   179,   178,   181,   180,   182,   182,   183,
+     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
+     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
+     183,   184,   185,   186,   187,   188,   190,   189,   192,   191,
+     193,   193,   194,   194,   196,   195,   197,   199,   198,   201,
+     200,   202,   202,   203,   203,   203,   203,   203,   203,   203,
+     203,   203,   203,   203,   203,   203,   205,   204,   206,   206,
+     206,   206,   208,   207,   210,   209,   212,   211,   213,   215,
+     214,   216,   217,   218,   219,   221,   220,   223,   222,   225,
+     224,   226,   226,   227,   227,   228,   229,   231,   230,   232,
+     232,   233,   233,   234,   236,   235,   238,   237,   239,   239,
+     240,   240,   242,   241,   244,   243,   245,   245,   245,   246,
+     246,   248,   247,   250,   249,   252,   251,   253,   253,   254,
+     254,   254,   254,   254,   254,   255,   256,   257,   258,   259,
+     260,   262,   261,   263,   263,   264,   264,   266,   265,   268,
+     267,   269,   269,   270,   270,   270,   270,   270,   270,   270,
+     270,   270,   270,   270,   270,   270,   270,   270,   270,   270,
+     272,   271,   274,   273,   276,   275,   278,   277,   280,   279,
+     281,   282,   284,   283,   285,   285,   286,   286,   288,   287,
+     290,   289,   291,   291,   292,   292,   293,   293,   293,   293,
+     293,   293,   293,   293,   294,   295,   296,   298,   297,   300,
+     299,   302,   301,   303,   305,   304,   306,   308,   307,   309,
+     309,   310,   310,   312,   311,   314,   313,   315,   315,   316,
+     316,   317,   317,   317,   317,   317,   317,   318,   320,   319,
+     321,   322,   323,   325,   324,   326,   326,   327,   327,   329,
+     328,   331,   330,   332,   332,   333,   333,   333,   333,   335,
+     334,   337,   336,   339,   338,   340,   340,   341,   341,   343,
+     342,   345,   344,   346,   346,   347,   347,   347,   347,   347,
+     347,   347,   347,   349,   348,   350,   352,   351,   353,   354,
+     356,   355,   357,   357,   358,   358,   360,   359,   362,   361,
+     363,   363,   364,   364,   365,   365,   365,   365,   365,   365,
+     365,   365,   367,   366,   369,   368,   371,   370,   373,   372,
+     375,   374,   377,   376,   379,   378,   381,   380,   383,   382,
+     384,   384,   385,   277,   386,   386,   387,   387,   388,   388,
+     388,   388,   389,   391,   390,   393,   392,   394,   394,   395,
+     395,   395,   395,   395,   395,   395,   397,   396,   398,   398,
+     398,   399,   401,   400,   402,   403,   404,   406,   405,   407,
+     407,   408,   408,   410,   409,   412,   411,   414,   413,   416,
+     415,   417,   417,   418,   418,   418,   418,   418,   418,   418,
+     418,   418,   418,   418,   418,   418,   418,   418,   419,   421,
+     420,   423,   422,   424,   426,   425,   427,   428,   430,   429,
+     431,   431,   433,   432,   434,   435,   436,   438,   437,   439,
+     439,   439,   439,   439,   441,   440,   443,   442,   445,   444,
+     447,   446,   448,   448,   449,   451,   450,   452,   452,   454,
+     453,   455,   455,   456,   456,   456,   456,   456,   457,   459,
+     458,   461,   460,   462,   462,   464,   463,   465,   465,   467,
+     466
   };
 
   const unsigned char
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     3,     3,     3,     3,     3,     0,     6,     0,     4,
-       0,     4,     0,     6,     0,     6,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     1,     1,     1,     1,     0,     4,     0,
-       4,     0,     4,     3,     0,     4,     3,     3,     3,     3,
-       0,     4,     0,     4,     0,     6,     1,     3,     1,     1,
-       1,     1,     0,     6,     1,     3,     1,     1,     1,     0,
-       6,     0,     6,     0,     1,     1,     3,     0,     4,     0,
-       4,     1,     3,     1,     1,     1,     0,     4,     0,     4,
-       0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
-       3,     3,     3,     3,     3,     3,     0,     6,     0,     1,
+       1,     3,     1,     1,     0,     4,     3,     0,     6,     0,
+       6,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     1,     1,
+       1,     1,     0,     4,     0,     4,     0,     4,     3,     0,
+       4,     3,     3,     3,     3,     0,     4,     0,     4,     0,
+       6,     1,     3,     1,     1,     1,     1,     0,     6,     1,
+       3,     1,     1,     1,     0,     6,     0,     6,     0,     1,
        1,     3,     0,     4,     0,     4,     1,     3,     1,     1,
+       1,     0,     4,     0,     4,     0,     6,     1,     3,     1,
+       1,     1,     1,     1,     1,     3,     3,     3,     3,     3,
+       3,     0,     6,     0,     1,     1,     3,     0,     4,     0,
+       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     3,     3,     0,     6,     0,
-       1,     1,     3,     0,     4,     0,     4,     0,     1,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       3,     1,     0,     4,     0,     4,     0,     4,     1,     0,
-       4,     3,     0,     6,     0,     1,     1,     3,     0,     4,
+       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
+       3,     3,     0,     6,     0,     1,     1,     3,     0,     4,
        0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     1,     1,     3,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
-       1,     1,     1,     1,     0,     4,     0,     4,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       3,     0,     4,     3,     3,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     0,     1,     1,     3,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       6,     0,     4,     0,     6,     1,     3,     0,     4,     0,
-       1,     1,     3,     1,     1,     1,     1,     1,     0,     4,
-       0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     1,     1,     1,     3,     0,     4,     3,
-       3,     3,     0,     6,     1,     3,     1,     1,     0,     4,
-       0,     4,     0,     6,     0,     4,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     3,     0,     4,     0,     4,     3,     0,
-       4,     3,     3,     0,     4,     1,     1,     0,     4,     3,
-       3,     3,     0,     4,     1,     1,     1,     1,     1,     0,
-       4,     0,     4,     0,     4,     0,     6,     1,     3,     1,
-       0,     6,     1,     3,     0,     4,     1,     3,     1,     1,
-       1,     1,     1,     3,     0,     4,     0,     6,     1,     3,
-       0,     4,     1,     3,     0,     4
+       1,     1,     1,     1,     1,     3,     1,     0,     4,     0,
+       4,     0,     4,     1,     0,     4,     3,     0,     6,     0,
+       1,     1,     3,     0,     4,     0,     4,     0,     1,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       1,     1,     3,     0,     6,     0,     1,     1,     3,     0,
+       4,     0,     4,     1,     3,     1,     1,     1,     1,     0,
+       4,     0,     4,     0,     6,     0,     1,     1,     3,     0,
+       4,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     0,     4,     3,     0,     4,     3,     3,
+       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
+       0,     1,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     4,     0,     6,     0,     4,     0,     6,
+       1,     3,     0,     4,     0,     1,     1,     3,     1,     1,
+       1,     1,     1,     0,     4,     0,     6,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     1,     1,
+       1,     3,     0,     4,     3,     3,     3,     0,     6,     1,
+       3,     1,     1,     0,     4,     0,     4,     0,     6,     0,
+       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     3,     0,
+       4,     0,     4,     3,     0,     4,     3,     3,     0,     4,
+       1,     1,     0,     4,     3,     3,     3,     0,     4,     1,
+       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
+       0,     6,     1,     3,     1,     0,     6,     1,     3,     0,
+       4,     1,     3,     1,     1,     1,     1,     1,     3,     0,
+       4,     0,     6,     1,     3,     0,     4,     1,     3,     0,
+       4
   };
 
 
   {
   "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"",
   "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"",
-  "\"interfaces-config\"", "\"interfaces\"", "\"lease-database\"",
-  "\"hosts-database\"", "\"type\"", "\"memfile\"", "\"mysql\"",
-  "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"", "\"host\"",
-  "\"port\"", "\"persist\"", "\"lfc-interval\"", "\"readonly\"",
-  "\"connect-timeout\"", "\"contact-points\"", "\"keyspace\"",
-  "\"preferred-lifetime\"", "\"valid-lifetime\"", "\"renew-timer\"",
-  "\"rebind-timer\"", "\"decline-probation-period\"", "\"subnet6\"",
-  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
-  "\"space\"", "\"csv-format\"", "\"record-types\"", "\"encapsulate\"",
-  "\"array\"", "\"pools\"", "\"pool\"", "\"pd-pools\"", "\"prefix\"",
-  "\"prefix-len\"", "\"excluded-prefix\"", "\"excluded-prefix-len\"",
-  "\"delegated-len\"", "\"user-context\"", "\"subnet\"", "\"interface\"",
-  "\"interface-id\"", "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"",
-  "\"mac-sources\"", "\"relay-supplied-options\"",
-  "\"host-reservation-identifiers\"", "\"client-classes\"", "\"test\"",
-  "\"client-class\"", "\"reservations\"", "\"ip-addresses\"",
-  "\"prefixes\"", "\"duid\"", "\"hw-address\"", "\"hostname\"",
-  "\"relay\"", "\"ip-address\"", "\"hooks-libraries\"", "\"library\"",
-  "\"parameters\"", "\"expired-leases-processing\"",
+  "\"interfaces-config\"", "\"interfaces\"", "\"re-detect\"",
+  "\"lease-database\"", "\"hosts-database\"", "\"type\"", "\"memfile\"",
+  "\"mysql\"", "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"",
+  "\"host\"", "\"port\"", "\"persist\"", "\"lfc-interval\"",
+  "\"readonly\"", "\"connect-timeout\"", "\"contact-points\"",
+  "\"keyspace\"", "\"preferred-lifetime\"", "\"valid-lifetime\"",
+  "\"renew-timer\"", "\"rebind-timer\"", "\"decline-probation-period\"",
+  "\"subnet6\"", "\"option-def\"", "\"option-data\"", "\"name\"",
+  "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"",
+  "\"record-types\"", "\"encapsulate\"", "\"array\"", "\"pools\"",
+  "\"pool\"", "\"pd-pools\"", "\"prefix\"", "\"prefix-len\"",
+  "\"excluded-prefix\"", "\"excluded-prefix-len\"", "\"delegated-len\"",
+  "\"user-context\"", "\"subnet\"", "\"interface\"", "\"interface-id\"",
+  "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"", "\"mac-sources\"",
+  "\"relay-supplied-options\"", "\"host-reservation-identifiers\"",
+  "\"client-classes\"", "\"test\"", "\"client-class\"", "\"reservations\"",
+  "\"ip-addresses\"", "\"prefixes\"", "\"duid\"", "\"hw-address\"",
+  "\"hostname\"", "\"relay\"", "\"ip-address\"", "\"hooks-libraries\"",
+  "\"library\"", "\"parameters\"", "\"expired-leases-processing\"",
   "\"reclaim-timer-wait-time\"", "\"flush-reclaimed-timer-wait-time\"",
   "\"hold-reclaimed-time\"", "\"max-reclaim-leases\"",
   "\"max-reclaim-time\"", "\"unwarned-reclaim-cycles\"", "\"server-id\"",
   "$@18", "global_params", "global_param", "preferred_lifetime",
   "valid_lifetime", "renew_timer", "rebind_timer",
   "decline_probation_period", "interfaces_config", "$@19",
-  "sub_interfaces6", "$@20", "interface_config_map", "$@21",
+  "sub_interfaces6", "$@20", "interfaces_config_params",
+  "interfaces_config_param", "interfaces_list", "$@21", "re_detect",
   "lease_database", "$@22", "hosts_database", "$@23",
   "database_map_params", "database_map_param", "database_type", "$@24",
   "db_type", "user", "$@25", "password", "$@26", "host", "$@27", "port",
   const unsigned short int
   Dhcp6Parser::yyrline_[] =
   {
-       0,   223,   223,   223,   224,   224,   225,   225,   226,   226,
-     227,   227,   228,   228,   229,   229,   230,   230,   231,   231,
-     232,   232,   233,   233,   234,   234,   242,   243,   244,   245,
-     246,   247,   248,   251,   256,   256,   267,   270,   271,   274,
-     278,   285,   285,   292,   293,   296,   300,   307,   307,   314,
-     315,   318,   322,   333,   343,   343,   355,   356,   360,   361,
-     362,   363,   364,   367,   367,   384,   384,   392,   393,   398,
-     399,   400,   401,   402,   403,   404,   405,   406,   407,   408,
-     409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
-     419,   422,   427,   432,   437,   442,   447,   447,   457,   457,
-     465,   465,   475,   475,   485,   485,   495,   496,   499,   500,
-     501,   502,   503,   504,   505,   506,   507,   508,   509,   510,
-     511,   514,   514,   521,   522,   523,   524,   527,   527,   535,
-     535,   543,   543,   551,   556,   556,   564,   569,   574,   579,
-     584,   584,   592,   592,   601,   601,   611,   612,   615,   616,
-     619,   624,   629,   629,   639,   640,   643,   644,   647,   654,
-     654,   664,   664,   674,   675,   678,   679,   682,   682,   690,
-     690,   698,   699,   700,   703,   704,   707,   707,   715,   715,
-     723,   723,   733,   734,   737,   738,   739,   740,   741,   742,
-     745,   750,   755,   760,   765,   770,   778,   778,   791,   792,
-     795,   796,   803,   803,   826,   826,   835,   836,   840,   841,
-     842,   843,   844,   845,   846,   847,   848,   849,   850,   851,
-     852,   853,   854,   855,   856,   859,   859,   867,   867,   875,
-     875,   883,   883,   891,   891,   899,   904,   913,   913,   925,
-     926,   929,   930,   935,   935,   946,   946,   956,   957,   960,
-     961,   964,   965,   966,   967,   968,   969,   970,   971,   974,
-     976,   981,   983,   983,   991,   991,   999,   999,  1007,  1009,
-    1009,  1017,  1026,  1026,  1038,  1039,  1044,  1045,  1050,  1050,
-    1061,  1061,  1072,  1073,  1078,  1079,  1084,  1085,  1086,  1087,
-    1088,  1089,  1092,  1094,  1094,  1102,  1104,  1106,  1114,  1114,
-    1126,  1127,  1130,  1131,  1134,  1134,  1142,  1142,  1150,  1151,
-    1154,  1155,  1156,  1157,  1160,  1160,  1168,  1168,  1178,  1178,
-    1190,  1191,  1194,  1195,  1198,  1198,  1206,  1206,  1214,  1215,
-    1218,  1219,  1220,  1221,  1222,  1223,  1224,  1225,  1228,  1228,
-    1236,  1241,  1241,  1249,  1254,  1262,  1262,  1272,  1273,  1276,
-    1277,  1280,  1280,  1288,  1288,  1296,  1297,  1300,  1301,  1305,
-    1306,  1307,  1308,  1309,  1310,  1311,  1312,  1315,  1315,  1325,
-    1325,  1335,  1335,  1343,  1343,  1351,  1351,  1359,  1359,  1372,
-    1372,  1382,  1382,  1393,  1393,  1403,  1404,  1407,  1407,  1415,
-    1416,  1419,  1420,  1423,  1424,  1425,  1426,  1429,  1431,  1431,
-    1442,  1442,  1452,  1453,  1456,  1457,  1458,  1459,  1460,  1461,
-    1462,  1465,  1465,  1472,  1473,  1474,  1477,  1482,  1482,  1490,
-    1495,  1502,  1509,  1509,  1519,  1520,  1523,  1524,  1527,  1527,
-    1535,  1535,  1545,  1545,  1555,  1555,  1563,  1564,  1567,  1568,
-    1569,  1570,  1571,  1572,  1573,  1574,  1575,  1576,  1577,  1578,
-    1579,  1580,  1581,  1584,  1589,  1589,  1597,  1597,  1605,  1610,
-    1610,  1618,  1623,  1628,  1628,  1636,  1637,  1640,  1640,  1648,
-    1653,  1658,  1663,  1663,  1671,  1674,  1677,  1680,  1683,  1689,
-    1689,  1699,  1699,  1706,  1706,  1718,  1718,  1731,  1732,  1736,
-    1740,  1740,  1752,  1753,  1757,  1757,  1765,  1766,  1769,  1770,
-    1771,  1772,  1773,  1776,  1781,  1781,  1789,  1789,  1799,  1800,
-    1803,  1803,  1811,  1812,  1815,  1815
+       0,   224,   224,   224,   225,   225,   226,   226,   227,   227,
+     228,   228,   229,   229,   230,   230,   231,   231,   232,   232,
+     233,   233,   234,   234,   235,   235,   243,   244,   245,   246,
+     247,   248,   249,   252,   257,   257,   268,   271,   272,   275,
+     279,   286,   286,   293,   294,   297,   301,   308,   308,   315,
+     316,   319,   323,   334,   344,   344,   356,   357,   361,   362,
+     363,   364,   365,   368,   368,   385,   385,   393,   394,   399,
+     400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
+     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
+     420,   423,   428,   433,   438,   443,   448,   448,   458,   458,
+     466,   467,   470,   471,   474,   474,   484,   490,   490,   500,
+     500,   510,   511,   514,   515,   516,   517,   518,   519,   520,
+     521,   522,   523,   524,   525,   526,   529,   529,   536,   537,
+     538,   539,   542,   542,   550,   550,   558,   558,   566,   571,
+     571,   579,   584,   589,   594,   599,   599,   607,   607,   616,
+     616,   626,   627,   630,   631,   634,   639,   644,   644,   654,
+     655,   658,   659,   662,   669,   669,   679,   679,   689,   690,
+     693,   694,   697,   697,   705,   705,   713,   714,   715,   718,
+     719,   722,   722,   730,   730,   738,   738,   748,   749,   752,
+     753,   754,   755,   756,   757,   760,   765,   770,   775,   780,
+     785,   793,   793,   806,   807,   810,   811,   818,   818,   841,
+     841,   850,   851,   855,   856,   857,   858,   859,   860,   861,
+     862,   863,   864,   865,   866,   867,   868,   869,   870,   871,
+     874,   874,   882,   882,   890,   890,   898,   898,   906,   906,
+     914,   919,   928,   928,   940,   941,   944,   945,   950,   950,
+     961,   961,   971,   972,   975,   976,   979,   980,   981,   982,
+     983,   984,   985,   986,   989,   991,   996,   998,   998,  1006,
+    1006,  1014,  1014,  1022,  1024,  1024,  1032,  1041,  1041,  1053,
+    1054,  1059,  1060,  1065,  1065,  1076,  1076,  1087,  1088,  1093,
+    1094,  1099,  1100,  1101,  1102,  1103,  1104,  1107,  1109,  1109,
+    1117,  1119,  1121,  1129,  1129,  1141,  1142,  1145,  1146,  1149,
+    1149,  1157,  1157,  1165,  1166,  1169,  1170,  1171,  1172,  1175,
+    1175,  1183,  1183,  1193,  1193,  1205,  1206,  1209,  1210,  1213,
+    1213,  1221,  1221,  1229,  1230,  1233,  1234,  1235,  1236,  1237,
+    1238,  1239,  1240,  1243,  1243,  1251,  1256,  1256,  1264,  1269,
+    1277,  1277,  1287,  1288,  1291,  1292,  1295,  1295,  1303,  1303,
+    1311,  1312,  1315,  1316,  1320,  1321,  1322,  1323,  1324,  1325,
+    1326,  1327,  1330,  1330,  1340,  1340,  1350,  1350,  1358,  1358,
+    1366,  1366,  1374,  1374,  1387,  1387,  1397,  1397,  1408,  1408,
+    1418,  1419,  1422,  1422,  1430,  1431,  1434,  1435,  1438,  1439,
+    1440,  1441,  1444,  1446,  1446,  1457,  1457,  1467,  1468,  1471,
+    1472,  1473,  1474,  1475,  1476,  1477,  1480,  1480,  1487,  1488,
+    1489,  1492,  1497,  1497,  1505,  1510,  1517,  1524,  1524,  1534,
+    1535,  1538,  1539,  1542,  1542,  1550,  1550,  1560,  1560,  1570,
+    1570,  1578,  1579,  1582,  1583,  1584,  1585,  1586,  1587,  1588,
+    1589,  1590,  1591,  1592,  1593,  1594,  1595,  1596,  1599,  1604,
+    1604,  1612,  1612,  1620,  1625,  1625,  1633,  1638,  1643,  1643,
+    1651,  1652,  1655,  1655,  1663,  1668,  1673,  1678,  1678,  1686,
+    1689,  1692,  1695,  1698,  1704,  1704,  1714,  1714,  1721,  1721,
+    1733,  1733,  1746,  1747,  1751,  1755,  1755,  1767,  1768,  1772,
+    1772,  1780,  1781,  1784,  1785,  1786,  1787,  1788,  1791,  1796,
+    1796,  1804,  1804,  1814,  1815,  1818,  1818,  1826,  1827,  1830,
+    1830
   };
 
   // Print the state stack on the debug stream.
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4175 "dhcp6_parser.cc" // lalr1.cc:1167
-#line 1823 "dhcp6_parser.yy" // lalr1.cc:1168
+#line 4193 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 1838 "dhcp6_parser.yy" // lalr1.cc:1168
 
 
 void
 
         TOKEN_DHCP6 = 265,
         TOKEN_INTERFACES_CONFIG = 266,
         TOKEN_INTERFACES = 267,
-        TOKEN_LEASE_DATABASE = 268,
-        TOKEN_HOSTS_DATABASE = 269,
-        TOKEN_TYPE = 270,
-        TOKEN_MEMFILE = 271,
-        TOKEN_MYSQL = 272,
-        TOKEN_POSTGRESQL = 273,
-        TOKEN_CQL = 274,
-        TOKEN_USER = 275,
-        TOKEN_PASSWORD = 276,
-        TOKEN_HOST = 277,
-        TOKEN_PORT = 278,
-        TOKEN_PERSIST = 279,
-        TOKEN_LFC_INTERVAL = 280,
-        TOKEN_READONLY = 281,
-        TOKEN_CONNECT_TIMEOUT = 282,
-        TOKEN_CONTACT_POINTS = 283,
-        TOKEN_KEYSPACE = 284,
-        TOKEN_PREFERRED_LIFETIME = 285,
-        TOKEN_VALID_LIFETIME = 286,
-        TOKEN_RENEW_TIMER = 287,
-        TOKEN_REBIND_TIMER = 288,
-        TOKEN_DECLINE_PROBATION_PERIOD = 289,
-        TOKEN_SUBNET6 = 290,
-        TOKEN_OPTION_DEF = 291,
-        TOKEN_OPTION_DATA = 292,
-        TOKEN_NAME = 293,
-        TOKEN_DATA = 294,
-        TOKEN_CODE = 295,
-        TOKEN_SPACE = 296,
-        TOKEN_CSV_FORMAT = 297,
-        TOKEN_RECORD_TYPES = 298,
-        TOKEN_ENCAPSULATE = 299,
-        TOKEN_ARRAY = 300,
-        TOKEN_POOLS = 301,
-        TOKEN_POOL = 302,
-        TOKEN_PD_POOLS = 303,
-        TOKEN_PREFIX = 304,
-        TOKEN_PREFIX_LEN = 305,
-        TOKEN_EXCLUDED_PREFIX = 306,
-        TOKEN_EXCLUDED_PREFIX_LEN = 307,
-        TOKEN_DELEGATED_LEN = 308,
-        TOKEN_USER_CONTEXT = 309,
-        TOKEN_SUBNET = 310,
-        TOKEN_INTERFACE = 311,
-        TOKEN_INTERFACE_ID = 312,
-        TOKEN_ID = 313,
-        TOKEN_RAPID_COMMIT = 314,
-        TOKEN_RESERVATION_MODE = 315,
-        TOKEN_MAC_SOURCES = 316,
-        TOKEN_RELAY_SUPPLIED_OPTIONS = 317,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 318,
-        TOKEN_CLIENT_CLASSES = 319,
-        TOKEN_TEST = 320,
-        TOKEN_CLIENT_CLASS = 321,
-        TOKEN_RESERVATIONS = 322,
-        TOKEN_IP_ADDRESSES = 323,
-        TOKEN_PREFIXES = 324,
-        TOKEN_DUID = 325,
-        TOKEN_HW_ADDRESS = 326,
-        TOKEN_HOSTNAME = 327,
-        TOKEN_RELAY = 328,
-        TOKEN_IP_ADDRESS = 329,
-        TOKEN_HOOKS_LIBRARIES = 330,
-        TOKEN_LIBRARY = 331,
-        TOKEN_PARAMETERS = 332,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 333,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 334,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 335,
-        TOKEN_HOLD_RECLAIMED_TIME = 336,
-        TOKEN_MAX_RECLAIM_LEASES = 337,
-        TOKEN_MAX_RECLAIM_TIME = 338,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 339,
-        TOKEN_SERVER_ID = 340,
-        TOKEN_LLT = 341,
-        TOKEN_EN = 342,
-        TOKEN_LL = 343,
-        TOKEN_IDENTIFIER = 344,
-        TOKEN_HTYPE = 345,
-        TOKEN_TIME = 346,
-        TOKEN_ENTERPRISE_ID = 347,
-        TOKEN_DHCP4O6_PORT = 348,
-        TOKEN_CONTROL_SOCKET = 349,
-        TOKEN_SOCKET_TYPE = 350,
-        TOKEN_SOCKET_NAME = 351,
-        TOKEN_DHCP_DDNS = 352,
-        TOKEN_ENABLE_UPDATES = 353,
-        TOKEN_QUALIFYING_SUFFIX = 354,
-        TOKEN_SERVER_IP = 355,
-        TOKEN_SERVER_PORT = 356,
-        TOKEN_SENDER_IP = 357,
-        TOKEN_SENDER_PORT = 358,
-        TOKEN_MAX_QUEUE_SIZE = 359,
-        TOKEN_NCR_PROTOCOL = 360,
-        TOKEN_NCR_FORMAT = 361,
-        TOKEN_ALWAYS_INCLUDE_FQDN = 362,
-        TOKEN_OVERRIDE_NO_UPDATE = 363,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 364,
-        TOKEN_REPLACE_CLIENT_NAME = 365,
-        TOKEN_GENERATED_PREFIX = 366,
-        TOKEN_UDP = 367,
-        TOKEN_TCP = 368,
-        TOKEN_JSON = 369,
-        TOKEN_WHEN_PRESENT = 370,
-        TOKEN_NEVER = 371,
-        TOKEN_ALWAYS = 372,
-        TOKEN_WHEN_NOT_PRESENT = 373,
-        TOKEN_LOGGING = 374,
-        TOKEN_LOGGERS = 375,
-        TOKEN_OUTPUT_OPTIONS = 376,
-        TOKEN_OUTPUT = 377,
-        TOKEN_DEBUGLEVEL = 378,
-        TOKEN_SEVERITY = 379,
-        TOKEN_DHCP4 = 380,
-        TOKEN_DHCPDDNS = 381,
-        TOKEN_TOPLEVEL_JSON = 382,
-        TOKEN_TOPLEVEL_DHCP6 = 383,
-        TOKEN_SUB_DHCP6 = 384,
-        TOKEN_SUB_INTERFACES6 = 385,
-        TOKEN_SUB_SUBNET6 = 386,
-        TOKEN_SUB_POOL6 = 387,
-        TOKEN_SUB_PD_POOL = 388,
-        TOKEN_SUB_RESERVATION = 389,
-        TOKEN_SUB_OPTION_DEF = 390,
-        TOKEN_SUB_OPTION_DATA = 391,
-        TOKEN_SUB_HOOKS_LIBRARY = 392,
-        TOKEN_SUB_DHCP_DDNS = 393,
-        TOKEN_STRING = 394,
-        TOKEN_INTEGER = 395,
-        TOKEN_FLOAT = 396,
-        TOKEN_BOOLEAN = 397
+        TOKEN_RE_DETECT = 268,
+        TOKEN_LEASE_DATABASE = 269,
+        TOKEN_HOSTS_DATABASE = 270,
+        TOKEN_TYPE = 271,
+        TOKEN_MEMFILE = 272,
+        TOKEN_MYSQL = 273,
+        TOKEN_POSTGRESQL = 274,
+        TOKEN_CQL = 275,
+        TOKEN_USER = 276,
+        TOKEN_PASSWORD = 277,
+        TOKEN_HOST = 278,
+        TOKEN_PORT = 279,
+        TOKEN_PERSIST = 280,
+        TOKEN_LFC_INTERVAL = 281,
+        TOKEN_READONLY = 282,
+        TOKEN_CONNECT_TIMEOUT = 283,
+        TOKEN_CONTACT_POINTS = 284,
+        TOKEN_KEYSPACE = 285,
+        TOKEN_PREFERRED_LIFETIME = 286,
+        TOKEN_VALID_LIFETIME = 287,
+        TOKEN_RENEW_TIMER = 288,
+        TOKEN_REBIND_TIMER = 289,
+        TOKEN_DECLINE_PROBATION_PERIOD = 290,
+        TOKEN_SUBNET6 = 291,
+        TOKEN_OPTION_DEF = 292,
+        TOKEN_OPTION_DATA = 293,
+        TOKEN_NAME = 294,
+        TOKEN_DATA = 295,
+        TOKEN_CODE = 296,
+        TOKEN_SPACE = 297,
+        TOKEN_CSV_FORMAT = 298,
+        TOKEN_RECORD_TYPES = 299,
+        TOKEN_ENCAPSULATE = 300,
+        TOKEN_ARRAY = 301,
+        TOKEN_POOLS = 302,
+        TOKEN_POOL = 303,
+        TOKEN_PD_POOLS = 304,
+        TOKEN_PREFIX = 305,
+        TOKEN_PREFIX_LEN = 306,
+        TOKEN_EXCLUDED_PREFIX = 307,
+        TOKEN_EXCLUDED_PREFIX_LEN = 308,
+        TOKEN_DELEGATED_LEN = 309,
+        TOKEN_USER_CONTEXT = 310,
+        TOKEN_SUBNET = 311,
+        TOKEN_INTERFACE = 312,
+        TOKEN_INTERFACE_ID = 313,
+        TOKEN_ID = 314,
+        TOKEN_RAPID_COMMIT = 315,
+        TOKEN_RESERVATION_MODE = 316,
+        TOKEN_MAC_SOURCES = 317,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 318,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 319,
+        TOKEN_CLIENT_CLASSES = 320,
+        TOKEN_TEST = 321,
+        TOKEN_CLIENT_CLASS = 322,
+        TOKEN_RESERVATIONS = 323,
+        TOKEN_IP_ADDRESSES = 324,
+        TOKEN_PREFIXES = 325,
+        TOKEN_DUID = 326,
+        TOKEN_HW_ADDRESS = 327,
+        TOKEN_HOSTNAME = 328,
+        TOKEN_RELAY = 329,
+        TOKEN_IP_ADDRESS = 330,
+        TOKEN_HOOKS_LIBRARIES = 331,
+        TOKEN_LIBRARY = 332,
+        TOKEN_PARAMETERS = 333,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 334,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 335,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 336,
+        TOKEN_HOLD_RECLAIMED_TIME = 337,
+        TOKEN_MAX_RECLAIM_LEASES = 338,
+        TOKEN_MAX_RECLAIM_TIME = 339,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 340,
+        TOKEN_SERVER_ID = 341,
+        TOKEN_LLT = 342,
+        TOKEN_EN = 343,
+        TOKEN_LL = 344,
+        TOKEN_IDENTIFIER = 345,
+        TOKEN_HTYPE = 346,
+        TOKEN_TIME = 347,
+        TOKEN_ENTERPRISE_ID = 348,
+        TOKEN_DHCP4O6_PORT = 349,
+        TOKEN_CONTROL_SOCKET = 350,
+        TOKEN_SOCKET_TYPE = 351,
+        TOKEN_SOCKET_NAME = 352,
+        TOKEN_DHCP_DDNS = 353,
+        TOKEN_ENABLE_UPDATES = 354,
+        TOKEN_QUALIFYING_SUFFIX = 355,
+        TOKEN_SERVER_IP = 356,
+        TOKEN_SERVER_PORT = 357,
+        TOKEN_SENDER_IP = 358,
+        TOKEN_SENDER_PORT = 359,
+        TOKEN_MAX_QUEUE_SIZE = 360,
+        TOKEN_NCR_PROTOCOL = 361,
+        TOKEN_NCR_FORMAT = 362,
+        TOKEN_ALWAYS_INCLUDE_FQDN = 363,
+        TOKEN_OVERRIDE_NO_UPDATE = 364,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 365,
+        TOKEN_REPLACE_CLIENT_NAME = 366,
+        TOKEN_GENERATED_PREFIX = 367,
+        TOKEN_UDP = 368,
+        TOKEN_TCP = 369,
+        TOKEN_JSON = 370,
+        TOKEN_WHEN_PRESENT = 371,
+        TOKEN_NEVER = 372,
+        TOKEN_ALWAYS = 373,
+        TOKEN_WHEN_NOT_PRESENT = 374,
+        TOKEN_LOGGING = 375,
+        TOKEN_LOGGERS = 376,
+        TOKEN_OUTPUT_OPTIONS = 377,
+        TOKEN_OUTPUT = 378,
+        TOKEN_DEBUGLEVEL = 379,
+        TOKEN_SEVERITY = 380,
+        TOKEN_DHCP4 = 381,
+        TOKEN_DHCPDDNS = 382,
+        TOKEN_TOPLEVEL_JSON = 383,
+        TOKEN_TOPLEVEL_DHCP6 = 384,
+        TOKEN_SUB_DHCP6 = 385,
+        TOKEN_SUB_INTERFACES6 = 386,
+        TOKEN_SUB_SUBNET6 = 387,
+        TOKEN_SUB_POOL6 = 388,
+        TOKEN_SUB_PD_POOL = 389,
+        TOKEN_SUB_RESERVATION = 390,
+        TOKEN_SUB_OPTION_DEF = 391,
+        TOKEN_SUB_OPTION_DATA = 392,
+        TOKEN_SUB_HOOKS_LIBRARY = 393,
+        TOKEN_SUB_DHCP_DDNS = 394,
+        TOKEN_STRING = 395,
+        TOKEN_INTEGER = 396,
+        TOKEN_FLOAT = 397,
+        TOKEN_BOOLEAN = 398
       };
     };
 
     symbol_type
     make_INTERFACES (const location_type& l);
 
+    static inline
+    symbol_type
+    make_RE_DETECT (const location_type& l);
+
     static inline
     symbol_type
     make_LEASE_DATABASE (const location_type& l);
     enum
     {
       yyeof_ = 0,
-      yylast_ = 777,     ///< Last index in yytable_.
-      yynnts_ = 321,  ///< Number of nonterminal symbols.
+      yylast_ = 785,     ///< Last index in yytable_.
+      yynnts_ = 324,  ///< Number of nonterminal symbols.
       yyfinal_ = 26, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 143  ///< Number of tokens.
+      yyntokens_ = 144  ///< Number of tokens.
     };
 
 
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142
+     135,   136,   137,   138,   139,   140,   141,   142,   143
     };
-    const unsigned int user_token_number_max_ = 397;
+    const unsigned int user_token_number_max_ = 398;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
   {
       switch (other.type_get ())
     {
-      case 157: // value
-      case 161: // map_value
-      case 202: // db_type
-      case 394: // duid_type
-      case 427: // ncr_protocol_value
-      case 435: // replace_client_name_value
+      case 158: // value
+      case 162: // map_value
+      case 206: // db_type
+      case 398: // duid_type
+      case 431: // ncr_protocol_value
+      case 439: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
     (void) v;
       switch (this->type_get ())
     {
-      case 157: // value
-      case 161: // map_value
-      case 202: // db_type
-      case 394: // duid_type
-      case 427: // ncr_protocol_value
-      case 435: // replace_client_name_value
+      case 158: // value
+      case 162: // map_value
+      case 206: // db_type
+      case 398: // duid_type
+      case 431: // ncr_protocol_value
+      case 439: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.copy< std::string > (v);
         break;
 
     // Type destructor.
     switch (yytype)
     {
-      case 157: // value
-      case 161: // map_value
-      case 202: // db_type
-      case 394: // duid_type
-      case 427: // ncr_protocol_value
-      case 435: // replace_client_name_value
+      case 158: // value
+      case 162: // map_value
+      case 206: // db_type
+      case 398: // duid_type
+      case 431: // ncr_protocol_value
+      case 439: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.template destroy< std::string > ();
         break;
 
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 157: // value
-      case 161: // map_value
-      case 202: // db_type
-      case 394: // duid_type
-      case 427: // ncr_protocol_value
-      case 435: // replace_client_name_value
+      case 158: // value
+      case 162: // map_value
+      case 206: // db_type
+      case 398: // duid_type
+      case 431: // ncr_protocol_value
+      case 439: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 142: // "boolean"
+      case 143: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 141: // "floating point"
+      case 142: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 140: // "integer"
+      case 141: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 139: // "constant string"
+      case 140: // "constant string"
         value.move< std::string > (s.value);
         break;
 
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397
+     395,   396,   397,   398
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
     return symbol_type (token::TOKEN_INTERFACES, l);
   }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RE_DETECT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RE_DETECT, l);
+  }
+
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_LEASE_DATABASE (const location_type& l)
   {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2608 "dhcp6_parser.h" // lalr1.cc:377
+#line 2619 "dhcp6_parser.h" // lalr1.cc:377
 
 
 
 
-// Generated 201703062326
+// Generated 201703162308
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
 
-// Generated 201703062326
+// Generated 201703162308
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
 
-// Generated 201703062326
+// Generated 201703162308
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++